mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-14 00:00:30 +00:00
b1b35bf093
Phase 2 continued. checkMetric (guest per-disk usage, the legacy metric path) no longer runs its imperative pending/hysteresis logic: the reducer core owns the transition, keyed by the canonical metric spec ID, with the metric name kept for percentage classification. Explicit metric intent policies gate activation in the reducer (replacing the legacy time-threshold branch, with monotonic-tick grace), the minimum-delta spam guard remains a manager-side pre-check, and re-notify/cooldown/critical-escalation logic drives off the core's severity. Existing alerts unknown to the core are adopted as firing. With activation now explicit in both families, the event log's deferred lifecycle events land: fired and refired are recorded at the reducer core's activation events, so persisted restores can never be misreported as firings — closing the last deferred piece of Phase 0. Tests that backdated the legacy pendingAlerts map use the core's ShiftPending seam instead. Full alerts tree and monitoring suites green.