Value: There is no metrics surface, yet ConnectionPool::stats() already computes idle/active/waiters explicitly for health endpoints. Add a MetricsPort with counters/histograms for request duration, DB-pool gauges, and job success/retry/dead-letter counts, exported via a /metrics scrape endpoint.
Where: new Port; wrap ExecuteStage/ErrorStage/WorkerLoop.
Effort: M · Impact: High
Value: There is no metrics surface, yet ConnectionPool::stats() already computes idle/active/waiters explicitly for health endpoints. Add a MetricsPort with counters/histograms for request duration, DB-pool gauges, and job success/retry/dead-letter counts, exported via a /metrics scrape endpoint.
Where: new Port; wrap ExecuteStage/ErrorStage/WorkerLoop.
Effort: M · Impact: High