It is 2:14am and the page reads 'quality guardrail below threshold for 18 consecutive runs' — not 'service unavailable,' not '5xx rate above 1%.' Every request the returns-handling agent processed tonight returned a normal response in normal time. The dashboards a traditional on-call runbook checks first — uptime, latency, error rate — are all green, and they will stay green for the entire incident, because the agent is not down. It is confidently executing the wrong decision on every request that matches a pattern its judge score has flagged, and each wrong decision is a tool call that already ran against a real order, a real account, a real dollar amount.
This is the structural difference this lesson is built around: a service incident is measured in requests that failed, and you find out about it because something stopped responding. An agent incident is measured in actions that succeeded when they should not have — refunds issued, emails sent, records changed — and you only find out about it if a quality signal is instrumented and alerting, because nothing about the transport layer ever complains. Detection, triage, and recovery all have to be rebuilt around that difference; running an outage playbook against an agent incident wastes the first, most valuable minutes checking systems that were never broken.
What follows is the on-call procedure for the 2am page: how to stop new damage before you understand the root cause, how to use the trace log to find the first bad run and bound exactly how far the damage extends, how to identify who was affected and what has to be reversed on their behalf, how the postmortem and the customer communication both have to work, and the one non-negotiable step — a new eval case — that has to exist before the incident is considered closed. The code in this lesson runs against a real run log and produces exactly those artifacts: a bounded window, a blast-radius report, and a generated regression case.