feat(alerts): backup-offline deferral in the reducer intent gate, completing Phase 1 characterization

The last uncharacterized behavior: while Pulse has fresh evidence a
Proxmox backup caused an offline state, activation defers — bounded by
the max-deferral cap on total condition-active time — and after the
backup ends the grace extends to the backup's end plus the post-grace,
still capped. The discrete activation path is unified so the gate always
operates on a tracked pending incident, and the shadow feed now models
the deferral independently from the manager's decision instead of
echoing its hold as operator suppression.

Unit tests cover deferral, post-grace release, the never-ending-backup
cap, and post-grace capping; parity runs the real
LoadIntentPolicies/IntentBackup composition with simulated clocks.
Fourth consecutive parity slice with no manager defect. Every
discrete-family and metric-family behavior is now pinned.
This commit is contained in:
rcourtman 2026-08-26 23:54:12 +01:00
parent bfc1a81867
commit ee35d178b5
6 changed files with 366 additions and 78 deletions

View file

@ -106,6 +106,12 @@ unhooked mutations). Enabled by the monitoring bootstrap next to the
event log. The divergence rate is the go/no-go evidence for each Phase 2
family cutover.
Remaining: the backup-offline deferral sub-policy (the shadow feed maps
its hold to operator suppression, which is behavior-equivalent while
uncharacterized), and Phase 2 itself.
Backup-offline deferral (2026-08-26): characterized — deferral while the
backup runs bounded by the max-deferral cap on total condition-active
time, post-grace from the backup's end still bounded by the cap — with
unit tests and parity against the real LoadIntentPolicies/IntentBackup
composition. The shadow feed now models the deferral independently
instead of echoing the manager's hold. Phase 1 characterization is
complete: every discrete-family and metric-family behavior is pinned.
Remaining: Phase 2 itself.