Repository navigation
feat(slos): multiwindow burn-rate alerts - #2296
Merged
Merged
Maple Review Bot / Maple / review
succeeded
Nov 6, 2026 in 2m 55s
Confidence 10/10 · No issues found
🟢 Confidence 10/10 · safe to merge. Hold semantics ride alerting-core's existing hold tier and the tier/destination pairing is now pinned by scheduler tests; only two info-level copy/flag items remain open.
2 notes · tests covered · risk medium · 1/1 new units observable
Each SLO now owns a hidden slo_burn_rate rule written in the same transaction, whose evaluator judges a critical (1h+5m, 14.4x) and a warning (6h+30m, 6x) tier on their own window pairs through the existing incident engine. The change is safe to merge; the outstanding items are copy and flag-state, not behavior.
sloRuleFields/evaluateSloBurnwrite and judge the hidden per-SLO burn ruleisManagedSignalTypehides uptime and SLO rules from the rule APIs and the active cap- SLO update rewrites its rule and restores one whose row is gone
- Destinations are split per tier and validated against the org
Still open from earlier reviews
- 🔵 Note · F10 · iOS push card reports an SLO page against the rule's 6h window ·
packages/backend/src/services/alerts/alert-formatting.ts:194 - 🔵 Note · F6 ·
alerting.enabledreads false for a missing rule, but any edit restores it on ·packages/backend/src/services/slos/SlosService.ts:228
Fixed since the last review
- ✅
F11 · No test tells thecriticalandwarningdestinations apart, so a swap passes
Production impact
Production traffic of the changed files (last 7 days)
| File | Calls/day | Busiest operations |
|---|---|---|
packages/backend/src/services/alerts/AlertDeliveryDispatch.ts |
26 | test 26/day, 18.5% err |
Telemetry this change adds and removes (1)
- ➕ span name
SloAlertSource.observe·packages/backend/src/services/slos/SloAlertSource.ts:35
What was checked
- A held tier encodes as alerting-core's
holdstatus, which counts as neither breach nor clear (tiers.ts:16,tiers.ts:114) MANAGED_RULE_PLAN.noDataBehaviorisskip, so a skipped SLO tick cannot resolve an open page (AlertRuleModel.ts:250)- Every new SLO and rule read/write filters
orgId, and destination ids are validated per org before use
Observability coverage: 1 of 1 changes observable
| Change | Kind | Observable | Evidence |
|---|---|---|---|
| SLO burn-rate evaluation per rule, on each scheduler tick | background | yes | Effect.fn("SloAlertSource.observe") span under the scheduler tick, with the burn read in the warehouse query context |
fef1f48 · Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.
Loading