Reconciler has no deadman/staleness alert (dead timer → silent fail-open quota) #123
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-infra#123
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "%!s()"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
Severity: HIGH — pre-onboarding infra audit (2026-07-19). Compounds the fail-open quota issue.
The reconciler writes a
last_run_timestampbut nothing alerts on its staleness.ansible/roles/monitoring/templates/alert-rules.yml.j2:156-163has onlyReconcilerFailed: status != 0. A dead timer leaves status at the last-good0→ no alert fires, while new users sit on the fail-open-1quota default undetected.Backups already have
BackupStale; the reconciler has no equivalent deadman.Ask
Add a staleness alert mirroring
BackupStale:time() - gitborg_reconciler_last_run_timestamp_seconds > <threshold>(e.g. 45 min = 3 missed 15-min ticks). Effort S.✅ Resolved — shipped in PR #150 (part of the #120/#121 fail-open work), applied + verified 2026-07-19.
Added exactly the requested deadman: a
ReconcilerStalecritical alert mirroringBackupStale—(time() - gitborg_reconciler_last_run_timestamp_seconds) / 60 > {{ alert_reconciler_stale_minutes }}(default 30 min). The reconciler stamps its timestamp metric on every run (success or fail), so this fires when the timer isn't running at all — the dead-timer / silent fail-open case this issue describes.Verified live:
ReconcilerStalepresent in the deployed vmalert rules on the monitoring VM (loaded cleanly, no parse errors). The reconcile interval was also shortened 15→5 min in the same PR, shrinking the window further. Closing (it was left open only because PR #150 referenced #120/#121, not this issue).