incident · git:20261017.c52b424 · 2026-10-17 · sha256 b2ad0fa9c41916d6
incident git:20261017.c52b424A
Immutable. This exact content never changes and is served at /api/v1/blob/b2ad0fa9c41916d6.
--- name: incident description: "Respond to a production outage: assess severity, mitigate first (roll back/flip a flag/scale), investigate safely, communicate, write a blameless postmortem. Use when prod is down, degraded, or errors spike." license: MIT metadata: reviewed: "2026-10-18" sources: "honey-stack research 2026-10-18 (Google SRE golden signals, SEV levels, blameless postmortems, mitigation-first). Details in references/." --- # incident A live outage is not a debugging session. **Restore service first, understand why later.** Different from the `debug` skill, which is for local, non-urgent root-causing. ## What an AI agent must NOT do An agent **never makes a unilateral risky change to production during an incident.** Mitigations that mutate prod — **rollback, feature-flag flips, scaling, failover, traffic shedding, config changes** — need **explicit human approval** before you run them. You *may* autonomously: read dashboards/logs/traces, correlate "what changed", draft the status update, build the timeline, and *recommend* a specific mitigation with rationale — then wait for a human. Never run a write/mutating query on prod, never restart or flush state on a hunch, never post an external status update without sign-off. ## Lifecycle Detect → Acknowledge (fast, so others know it's owned) → Assess severity → **Mitigate (stop the bleeding)** → Communicate → Resolve → Postmortem. Declare early; under-declaring costs more than over-declaring. ## Severity (classify by user/business impact, not cause) - **SEV1** — major outage / data loss / breach; core function down for most users. Page on-call + IC, exec + comms, external status page. - **SEV2** — significant degradation or a key feature down for many; workaround may exist. Page on-call + IC. - **SEV3** — limited/partial impact, small subset. Business-hours, ticket. - **SEV4** — cosmetic/negligible. Backlog. Define exact thresholds (error %, users, duration) ahead of time so it isn't a mid-incident debate. ## Mitigate first (fastest → safest levers) 1. **Roll back the deploy** if impact started right after a release — usually the single highest-value action. 2. **Disable the feature flag** — instant, targeted, lower blast radius; preferred when the change is flag-gated. 3. **Scale up/out** for resource saturation. **Fail over** to a healthy replica/region. **Shed load** (rate-limit, degraded/read-only mode, circuit-break a failing dependency). Default to **rollback** when a recent deploy correlates with onset and it's safe; **forward-fix** only when rollback is impossible (irreversible migration, data written in a new shape) or clearly riskier. Beware rolling back across incompatible schema migrations. ## Investigate a live system safely "**What changed?**" first — recent deploys, config/flag flips, infra changes, traffic spikes, cert/secret expiry, DNS. Watch the **four golden signals**: latency (split success vs error), traffic, errors, saturation. Correlation ≠ causation — confirm with a second signal, but don't let analysis block mitigation. **Read-only on prod**: query replicas/logs/metrics, never speculative writes/restarts/flushes (they destroy evidence or widen the outage). `references/runbook.md`. ## Communicate Regular updates even when "no change" — SEV1 every ~15–30 min, and always state the next-update time. Internal channel = technical + timeline; external/status page = plain-language impact, what you're doing, next update, no internal hostnames or blame. Use "monitoring", not "fixed", until confident. ## Blameless postmortem Structure: summary; **impact** (duration, users/revenue, SLO/error-budget burn); **timeline** (timestamped); **root cause & contributing factors** (5 Whys, usually multi-cause); detection (how fast, alert gaps); what went well / badly / where we got lucky; **action items** each with an owner + due date + ticket. Blameless — ask "what made this failure possible?", not "who did it?". Turn action items into prevention: regression tests, new alerts, guardrails, runbook updates, automating the manual mitigation; tie repeated error-budget burn to pausing feature work. `references/postmortem.md`. Done when: service is restored (via a human-approved mitigation), impact and timeline are recorded, comms went out, and a blameless postmortem with owned action items is written.