Repository navigation
feat(web): silence alerts from the hub, a rule or an incident - #2292
Merged
Merged
Maple Review Bot / Maple / review
succeeded
Nov 6, 2026 in 3m 14s
Confidence 9/10 · No issues found
🟢 Confidence 9/10 · safe to merge. Only the four earlier info-level defects remain open; the group label at incident/update.ts:104 is the one that misstates a silence's scope.
4 notes · tests covered · risk medium · 0/1 new units observable −1
Adds a Silences tab to the alerts hub plus a Silence action, badge and shared dialog on the rule and incident pages. The client mirrors the server's matching rules; four earlier info-level defects are still present and no new defects were found.
listSilences/activeSilenceForinshared/silences.tsread active, scheduled and ended silences and re-derive status from the windowSilenceDialogsubmodel computes 1h/4h/next-09:00/custom ends and saves throughcreateSilence- Hub Silences tab lists and ends silences, gated on
alerts:manage - Rule and incident headers show a silence badge and a Silence action scoped to the incident's group
Still open from earlier reviews
- 🔵 Note · F10 · A silence on an incident without a rule row never shows the badge ·
apps/web/src/page/alerts/incident/view.ts:155 - 🔵 Note · F11 · The rule page's group-named badge branch has no test ·
apps/web/src/page/alerts/rule/view.ts:112 - 🔵 Note · F8 · A silence on a deleted rule reads
rule deleted rule·apps/web/src/page/alerts/hub/view-silences.ts:151 - 🔵 Note · F9 · Group label names a scope
matchersForRuledid not apply ·apps/web/src/page/alerts/incident/update.ts:104
Fixed since the last review
- ✅
F7 · Amorningsilence saved after 09:00 lands a day later than the label says
What was checked
matchersForRulemirrors the server'sscopedServices/scopedEnvironmentsinalert-silences.ts:161, so a group silence never hides another servicemorningrolls a month end and a DST change correctly:Date.UTC(year, month-1, 32)overflows inzonedPartsToEpochMsendAlertSilencecollapses a scheduled window (AlertSilencesService.ts:311), so the "Silence cancelled" toast matches the returned silence
Observability coverage: 0 of 1 changes observable
| Change | Kind | Observable | Evidence |
|---|---|---|---|
| alert silence list/create/end calls from the web app | outbound HTTP | no | goes through the existing MapleApiV2Client that every alerts page read already uses; the diff adds no span code |
dc49d67 · Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.
Loading