Context
.env.example's QUEUE_CONCURRENCY documentation block tells an operator raising concurrency to watch two
specific Prometheus series to see if the change helped:
# QUEUE_CONCURRENCY=4 # ...
# # Watch gittensory_queue_live_pending
# # / gittensory_queue_oldest_live_pending_age_seconds after raising it;
# # if those stay high, the bottleneck is elsewhere...
Neither gittensory_queue_live_pending nor gittensory_queue_oldest_live_pending_age_seconds exists as a
metric name anywhere in the codebase (confirmed via a repo-wide grep for the gittensory_ metric prefix —
this is the only place it still appears). The real, currently-registered metrics use the loopover_ prefix
throughout src/selfhost/metrics.ts and prometheus/rules/alerts.yml:
loopover_queue_live_pending (used by prometheus/rules/alerts.yml's LoopoverLiveQueueStuckBehindMaintenance
/ LoopoverLiveQueueStarved alert expressions)
loopover_queue_oldest_live_pending_age_seconds (registered in src/selfhost/metrics.ts)
Practical effect: an operator who raises QUEUE_CONCURRENCY, follows this comment's advice, and searches
Grafana/Prometheus for gittensory_queue_live_pending gets an empty series with no explanation — the same
"comment references a metric that doesn't exist" failure mode as #5816 (filed earlier today for a stale
runbook annotation), just in a different file.
Requirements
- Update both metric names in the
QUEUE_CONCURRENCY comment block from the gittensory_ prefix to the real
loopover_ prefix: loopover_queue_live_pending and loopover_queue_oldest_live_pending_age_seconds.
- No other change to this section's guidance — the advice itself (watch these two series after raising
concurrency) is accurate; only the metric names are stale.
Deliverables
Test Coverage Requirements
.env.example is a config/docs file outside src/** and Codecov's coverage.include, so patch coverage
does not gate this directly. Add a real Vitest test asserting .env.example contains no gittensory_<word>
metric-shaped string (matching the actual registered loopover_* metric families in src/selfhost/metrics.ts),
so this specific drift class — and not just these two instances — is caught going forward.
Expected Outcome
An operator following the QUEUE_CONCURRENCY tuning guidance in .env.example can paste the metric names it
gives directly into Grafana/Prometheus and get real data back.
Links & Resources
Context
.env.example'sQUEUE_CONCURRENCYdocumentation block tells an operator raising concurrency to watch twospecific Prometheus series to see if the change helped:
Neither
gittensory_queue_live_pendingnorgittensory_queue_oldest_live_pending_age_secondsexists as ametric name anywhere in the codebase (confirmed via a repo-wide grep for the
gittensory_metric prefix —this is the only place it still appears). The real, currently-registered metrics use the
loopover_prefixthroughout
src/selfhost/metrics.tsandprometheus/rules/alerts.yml:loopover_queue_live_pending(used byprometheus/rules/alerts.yml'sLoopoverLiveQueueStuckBehindMaintenance/
LoopoverLiveQueueStarvedalert expressions)loopover_queue_oldest_live_pending_age_seconds(registered insrc/selfhost/metrics.ts)Practical effect: an operator who raises
QUEUE_CONCURRENCY, follows this comment's advice, and searchesGrafana/Prometheus for
gittensory_queue_live_pendinggets an empty series with no explanation — the same"comment references a metric that doesn't exist" failure mode as #5816 (filed earlier today for a stale
runbook annotation), just in a different file.
Requirements
QUEUE_CONCURRENCYcomment block from thegittensory_prefix to the realloopover_prefix:loopover_queue_live_pendingandloopover_queue_oldest_live_pending_age_seconds.concurrency) is accurate; only the metric names are stale.
Deliverables
.env.example:QUEUE_CONCURRENCYcomment block updated to referenceloopover_queue_live_pending/loopover_queue_oldest_live_pending_age_seconds.test/unit/) that greps.env.examplefor thegittensory_metricprefix and fails if any match is found, preventing this class of drift from recurring anywhere in the file.
Test Coverage Requirements
.env.exampleis a config/docs file outsidesrc/**and Codecov'scoverage.include, so patch coveragedoes not gate this directly. Add a real Vitest test asserting
.env.examplecontains nogittensory_<word>metric-shaped string (matching the actual registered
loopover_*metric families insrc/selfhost/metrics.ts),so this specific drift class — and not just these two instances — is caught going forward.
Expected Outcome
An operator following the
QUEUE_CONCURRENCYtuning guidance in.env.examplecan paste the metric names itgives directly into Grafana/Prometheus and get real data back.
Links & Resources
src/selfhost/metrics.ts— the canonical list of registeredloopover_*metric names.prometheus/rules/alerts.yml— usesloopover_queue_live_pendingin real alert expressions.(
prometheus/rules/alerts.yml's runbook annotation vs..env.example's tuning comment). Not a duplicate.