2.4 KiB
Deduplicated alerting
AlertRuleRevision is an immutable, fingerprinted rule containing signal/SLO, condition, pending
duration, severity, bounded labels, cooldown and recovery condition. Changes create a revision.
State machine
clear → PENDING → FIRING → ACKNOWLEDGED
│ │ │
└──────────┴────────────┴→ RESOLVED
bad + maintenance window → SUPPRESSED
SUPPRESSED + window ended + still bad → PENDING
RESOLVED + cooldown elapsed + recurrence → PENDING/FIRING
Acknowledgement records actor/reason but cannot alter the signal or SLO. Resolution is an explicit history event; alerts do not disappear. The deterministic fingerprint uses rule key, subject type and subject reference, so every polling cycle updates one logical alert rather than creating spam.
Severities are INFO, WARNING and CRITICAL. Initial rules cover production node liveness, GPU
pressure, storage reserve, gateway errors, stable capability availability, runtime crash loops,
queue saturation, migration/manual-intervention failure, rollback failure, artifact integrity and
production capability envelope/headroom.
Maintenance windows have bounded matchers (rule_key, alert_type, subject_ref), start/end,
reason and creator. Creation is audited and suppression remains visible. M14 delivers persistent
records, API and UI; it has no mandatory Slack/email dependency and performs no automatic restart,
kill, promotion, rollback or deletion.
M15 recovery rules
Five deduplicated rules extend the same lifecycle to recovery readiness:
BACKUP_STALE WARNING no verified backup inside the policy window
BACKUP_FAILED CRITICAL a backup failed within the window
BACKUP_VERIFICATION_FAILED CRITICAL a backup failed specifically on hash or manifest verification
RESTORE_FAILED CRITICAL a restore failed or needs manual intervention
RECOVERY_READINESS_DEGRADED WARNING an authoritative asset is unprotected
They read the same authoritative records the recovery dashboard reads, so an alert and the dashboard
can never disagree. A CREATED backup that was never verified does not clear BACKUP_STALE.
Live evidence: BACKUP_STALE and RECOVERY_READINESS_DEGRADED fired while no verified backup
existed and resolved once one did, each as a single alert with an occurrence count rather than one
alert per evaluation.