Repository navigation
feat(slos): SLI, error budget and burn rates - #2295
Merged
Merged
Maple Review Bot / Maple / review
succeeded
Nov 6, 2026 in 1m 10s
Confidence 10/10 · No issues found
🟢 Confidence 10/10 · safe to merge. This pass read only the parity e2e change; its ground truth matches the query semantics and the earlier budgetHistory slot duplication (F2) is unchanged and still open.
1 note · tests covered · risk medium · 1/1 new units observable
Adds the spliced SLO reads (window totals, hour/minute buckets, burn windows, budget history), the status/history service paths and endpoints, and a raw-vs-rollup parity e2e plus benchmark suite. The CodeQL escaping fix in the parity test is correct; nothing new blocks merge.
sloTotalsQuery/sloBucketsQuerytile a window from raw spans, minutely and hourly rollupsreadStatusesreads every SLO's totals and burn windows in batched, org-scoped queries- New
GET /v2/slos/:id/statusand/historyendpoints - Parity e2e compares the splice against a flat scan on 6 window alignments
Still open from earlier reviews
- 🔵 Note · F2 · Budget-chart read window re-derives the slots
budgetHistoryassumes ·packages/backend/src/services/slos/slo-reads.ts:100
Production impact
Telemetry this change adds and removes (10)
- ➕ span name
SlosService.status·packages/backend/src/services/slos/SlosService.ts:334 - ➕ attribute
maple.slo.id·packages/backend/src/services/slos/SlosService.ts:335 - ➕ span name
SlosService.statuses·packages/backend/src/services/slos/SlosService.ts:352 - ➕ span name
SlosService.history·packages/backend/src/services/slos/SlosService.ts:374 - ➕ span name
SloReads.windowTotals·packages/backend/src/services/slos/slo-reads.ts:49 - ➕ span name
SloReads.burnWindows·packages/backend/src/services/slos/slo-reads.ts:69 - ➕ span name
SloReads.budgetHistory·packages/backend/src/services/slos/slo-reads.ts:89 - ➕ span name
SloReads.statuses·packages/backend/src/services/slos/slo-reads.ts:143 - ➕ attribute
maple.slo.count·packages/backend/src/services/slos/slo-reads.ts:155 - ➕ attribute
maple.slo.reads·packages/backend/src/services/slos/slo-reads.ts:156
What was checked
- Parity test's burn ground truth uses the same bucket-start bounds as
inLastMinutes(queries/slos.ts:271) quoteescapes backslash and single quote in one pass; every other interpolated seed value is a numeric constant (slo-parity.clickhouse.e2e.test.ts:145)- Legacy-row expectation (10:40 minute, 12:00 hour, not 12:10) matches the edge-tier conditions (
queries/slos.ts:157)
Observability coverage: 1 of 1 changes observable
| Change | Kind | Observable | Evidence |
|---|---|---|---|
| SLO warehouse reads (totals, buckets, burn windows, budget history, batch statuses) | outbound query | yes | Named Effect.fn spans (SloReads.windowTotals, burnWindows, budgetHistory, statuses) plus maple.slo.count / maple.slo.reads annotations in slo-reads.ts:49,69,89,143 |
12cbb1d · Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.
Loading