Synthetic demo · no real data · metric-SEV

Metric-SEV console

A documented metric bound, wired to a pager. Press play: a fairness parity gap drifts past its bound, fires a SEV-1, and opens its runbook. The second panel burns a differential-privacy budget until it pages. The dashboard never changes — the on-call does. The third panel is the only part of this page that touches the network: it fires one real test message into a Slack channel you bring.

Panel 1 · Fairness parity gap on an on-call

Day 0 / 40
INSIDE BOUND — no page. Parity gap nominal.
parity gap (TPR delta) documented bound = 0.050 → SEV-1
● SEV-1 · PARITY GAPPAGES ON-CALL
Metric
Subgroup parity gap (TPR delta)
Bound
> 0.050 (absolute)
Observed
Fired
Blast radius
Regulatory / harm-bearing
Response
On-call paged. Rollback considered within 1h.
Runbook RB-PARITY-001 — open

First 5 minutes

  • Acknowledge the page. Confirm the breach is real, not a metrics-pipeline artefact.
  • Pull the per-subgroup breakdown for the last 14 days. Identify which slice moved.
  • Check for a concurrent model push, feature change, or upstream data shift.

Decide: rollback?

  • Model push in last 24h correlates → roll back to last-known-good. Parity is harm-bearing; bias toward rolling back.
  • Drift is data-driven → freeze auto-retrain, escalate to data owner, hold current model.

Escalate to

  • Head of Responsible AI; model owner; on-call EM.
Generated post-mortem template

Panel 2 · DP budget ledger

Budget healthy. ε spend within bound.
Cumulative ε = 0.00 / budget 10.0  ·  exceeding pages SEV-1
● SEV-1 · DP BUDGETPAGES ON-CALL
Metric
DP budget (ε) cumulative spend
Budget
10.0 (hard bound)
Observed
Response
HALT pipeline. Quarantine over-budget model.
Runbook RB-DP-001 — open

First 5 minutes

  • HALT the training pipeline. Do not accrue more ε against an exhausted budget.
  • Pull the ε ledger; confirm cumulative spend vs. documented budget.
  • Identify the run(s) that pushed spend over the bound.

Decide

  • The budget is a hard bound, not a target. Do NOT borrow against next period.
  • Quarantine any model trained by the over-budget run pending privacy review.

Panel 3 · Live page — fire a real Slack message

Everything above is a simulation. This panel isn't: paste a Slack incoming-webhook URL and the button posts the simulator's current SEV state into your channel — one message, tagged synthetic demo. The CLI sibling does the same from a terminal: python3 watcher/watch.py --demo.

No request sent yet.

The URL lives in this page's memory only — not stored (no cookies, no localStorage), not logged, sent nowhere except Slack itself when you click. Reload and it's gone. The message body is the synthetic SEV state above; nothing else leaves this page.