SEV1
Platform Ops SRE Incident Management
Issue #053 · September 2026

INCIDENT MANAGEMENT
& POSTMORTEMS

Detection · Response · Postmortems · Action Items · Culture

3am. PVC stuck in Pending. Multi-attach error. The runbook says "escalate to platform team." You are the platform team. Here's how to detect it fast, run the response without chaos, write a postmortem people actually read, and fix the system instead of blaming a person.

15
Concepts Covered
1st
SRE Series Article
0
Blame Assigned
Detection & Severity3
SEV1-4EscalationGolden Signals
Response & Roles3
Incident CommanderWar RoomStatus Page
Postmortem Writing3
BlamelessTimelineRoot Cause
Action Items3
SMARTFollow-ThroughPrioritization
Culture & Metrics3
BlamelessMTTR/MTTDReview Cadence
SEV1 / SEV2 / SEV3 Incident Commander Blameless Postmortem War Room Root Cause Analysis Five Whys MTTR MTTD Action Items PagerDuty / Opsgenie Status Page Error Budget SEV1 / SEV2 / SEV3 Incident Commander Blameless Postmortem War Room Root Cause Analysis Five Whys MTTR MTTD Action Items PagerDuty / Opsgenie Status Page Error Budget

THE INCIDENT LIFECYCLE

Five stages between "the pager goes off" and "the system is measurably better than before." Skipping any one of them is how the same incident happens twice.

🔴 Detection
Severity Levels (SEV1-4)
Alertmanager / PagerDuty
Escalation Policy
Synthetic Monitoring
Customer Reports
🟠 Response
Incident Commander
Scribe / Comms Lead
War Room Channel
Status Page Updates
SME Paging
🔵 Postmortem
Blameless Template
Timeline Reconstruction
Root Cause vs Trigger
Contributing Factors
Impact Summary
🟢 Action Items
SMART Criteria
Owner + Deadline
Ticket Tracking
Risk-Based Priority
Closure Verification
🟣 Culture
Blameless Norms
MTTR / MTTD Tracking
Monthly Incident Review
Trend Spotting
Leadership Buy-In

ANATOMY OF ONE INCIDENT

The same seven beats, every time — from the first alert to the postmortem going out three days later. Watch the timeline fill as it plays through.

T+0 Alert Fired T+2m Acknowledged T+5m IC Assigned T+8m Investigating T+25m Root Cause Found T+32m Mitigated T+40m Resolved
Postmortem published T+72h · action items filed same day
Deep-Dive

INCIDENT MANAGEMENT REFERENCE

Click any stage to explore concepts, templates, and production-tested guidance.

INCIDENT DETECTION & SEVERITY
Knowing something's wrong fast, and knowing exactly how loud to yell about it
3 Concepts
🚨
Severity Levels (SEV1–4)
A shared vocabulary for "how bad is this" that decides who gets paged, how fast, and whether the CEO needs to know before breakfast.
Must Know
Must Know
LevelDefinitionResponse
SEV1Full outage or major data loss risk, all users affectedPage immediately, IC assigned, exec comms
SEV2Significant degradation, subset of users/features affectedPage on-call, IC assigned, internal status updates
SEV3Minor degradation, workaround exists, low user impactTicket + async investigation, no page
SEV4Cosmetic or negligible impactBacklog, next sprint
Getting Severity Wrong
🔴Under-declaring: calling a full checkout-flow outage a SEV3 because "it's probably fine" — the single most common way response gets delayed
🟠Over-declaring: every SEV1 trains the team to stop trusting the page — reserve it for what actually meets the bar
📟
Alert Routing & Escalation
An alert nobody sees isn't detection — it's a log line. Routing and escalation policy is what turns a Prometheus rule into a phone ringing.
Important
Important
Escalation policy (Grafana OnCall style)
yaml
escalation_chain: billing-ops-primary
steps:
- {notify: on-call-primary, wait: 5m}
- {notify: on-call-secondary, wait: 5m}
- {notify: team-lead, wait: 10m}
- {notify: engineering-manager}
Common Tools
🔵PagerDuty / Opsgenie: commercial, mature escalation + scheduling
🔵Grafana OnCall: open-source, integrates natively with Grafana/Alertmanager
🎯
Golden Signals & Detection Sources
Where the first sign of trouble actually comes from — and why "a customer tweeted" is a detection-gap incident all by itself.
Monitoring
Recommended
Detection Sources, Ranked
🟢Golden-signal alerting (latency, traffic, errors, saturation) — fastest, cheapest
🔵Synthetic monitoring — catches issues before real users hit them
🟠Customer reports / support tickets — means every automated layer above already failed
Closing the Gap
1
Every postmortem should log which of these three caught it
2
A customer-report-first incident is itself an action item: add the missing alert
INCIDENT RESPONSE & ROLES
Chaos is what happens when nobody's job is to make the decisions
3 Concepts
🎖️
The Incident Commander Role
One person owns the call. Not the smartest engineer in the room — the person coordinating everyone else so the smartest engineer can actually think.
Must Know
Must Know
What the IC Does (and Doesn't Do)
🔴Owns the decision to declare, escalate, or resolve — even without full information
🔴Coordinates who's investigating what — prevents three people debugging the same log line
🟠Doesn't have to be the one typing the fix — IC is a coordination role, not the top debugger
💬
War Room Practice
A dedicated channel, a scribe capturing the timeline in real time, and clear roles — so the postmortem writes itself instead of being reconstructed from memory three days later.
Important
Important
Slack incident bot pattern
slack
/incident declare "Billing API 5xx spike" --sev2
# creates #inc-2026-09-14-billing-api, pages IC, opens status doc
/incident timeline "root cause identified: bad config push"
# auto-logs a timestamped entry — becomes the postmortem timeline
Core Roles
🔵Incident Commander — coordinates, decides
🔵Scribe — logs every action and timestamp in real time
🔵Comms Lead — owns status page and stakeholder updates, frees the IC to coordinate
📢
Status Pages & Stakeholder Communication
Internal Slack updates and the public status page are different audiences with different needs — conflating them causes either panic or silence.
Communication
Recommended
Internal vs External
🔵Internal: technical detail, real-time, in the war room channel
🔵External: plain language, impact-focused, on a fixed cadence (e.g. every 30 min for SEV1)
Cadence Rule of Thumb
1
SEV1: update every 30 minutes even if the update is "still investigating"
2
Silence reads as "nobody's working on it" — say something even with nothing new
POSTMORTEM WRITING
Blameless doesn't mean toothless — it means the system gets the scrutiny, not the person
3 Concepts
📝
Blameless Postmortem Structure
A consistent template that separates what happened from who was on call — every incident, same shape, so nobody re-invents the format at 2am.
Must Know
Must Know
postmortem-template.md
markdown
# Incident: Billing API 5xx Spike (SEV2)
## Summary — 2 sentences, plain language
## Impact — who/what, how long, how many requests
## Timeline — timestamped, from alert to resolution
## Root Cause & Contributing Factors
## What Went Well / What Didn't
## Action Items — owner, deadline, ticket link
🕰️
Timeline Reconstruction
The single most valuable — and most skipped — section. A vague timeline produces a vague root cause.
Important
Important
Sources to Reconcile
sources
1. Alertmanager fired-alert history (exact timestamps)
2. War-room chat log (what people said, when)
3. Deploy/change history (what changed right before)
4. Metrics dashboards (when the graph actually bent)
Rule
1
Every timeline entry needs a source — "we think" doesn't belong in a timeline
2
Write it within 24 hours, while chat logs and memory are both still fresh
🔍
Root Cause vs Contributing Factors
"The engineer pushed a bad config" is a trigger, not a root cause. The five-whys trap is stopping at the first human action instead of the systemic gap that let it ship.
Analysis
Recommended
Five Whys, Done Right
🔵Why did billing go down? → Bad config pushed
🔵Why did the bad config ship? → No validation step in the pipeline
🔵Why no validation step? → Never prioritized against feature work
🔴Stop at the systemic gap (missing validation), not at "the engineer made a mistake"
ACTION ITEMS & FOLLOW-THROUGH
A postmortem with no completed action items is just a well-formatted story
3 Concepts
Writing Actionable Action Items
"Improve monitoring" is not an action item — it's a wish. An action item has an owner, a deadline, and a definition of done.
Must Know
Must Know
Vague vs Actionable
🔴❌ "Improve alerting for the billing service"
🟢✅ "Add a p99 latency alert on /checkout at 800ms — @priya, due Sep 20, JIRA-4521"
SMART Check
1
Specific, Measurable, Assigned, Realistic, Time-boxed
2
If you can't tell when it's "done," rewrite it before the meeting ends
📉
Tracking to Closure
Action items don't die in a dramatic way — they die quietly in a backlog nobody re-opens. This is where most postmortem processes actually fail.
Important
Important
1
Every action item gets a real ticket, linked from the postmortem doc — not just a bullet point
2
Track a single metric: % of action items closed within 30 days — report it monthly
3
An action item still open after 2 quarters is a decision to accept the risk — make that explicit, don't let it just fade
⚖️
Risk-Based Prioritization
Not every action item deserves the same urgency as the incident that spawned it — prioritize by recurrence risk and blast radius, not by how memorable the incident was.
Planning
Recommended
Prioritize By
🔴High recurrence risk + high blast radius → this sprint
🟠High recurrence, low blast radius (or vice versa) → next sprint
🟢Low + low → backlog, revisit if it recurs
CULTURE & METRICS
The process only works if the room believes it isn't secretly about blame
3 Concepts
🤝
Blameless Culture in Practice
Blameless doesn't mean nobody's accountable — it means the postmortem's job is fixing the system, and accountability conversations (if any) happen somewhere else entirely.
Must Know
Must Know
Signs It's Actually Blameless
🔵Names are in the timeline for context, not in the "root cause" section
🔵The engineer who caused it is comfortable presenting the postmortem themselves
Common Failure Mode
1
Leadership says "blameless" but asks "whose change was this" in the review meeting — culture is what leaders do, not what the template says
📊
MTTR / MTTD / MTBF
The standard reliability metrics — useful in aggregate over quarters, dangerous the moment someone's bonus depends on them.
Important
Important
MetricMeaningWatch Out For
MTTDMean Time To Detect — alert fired vs. issue startedGamed by lowering alert thresholds, not fixing detection
MTTRMean Time To Resolve — alert fired vs. resolvedGamed by declaring "mitigated" early, before truly fixed
MTBFMean Time Between Failures — how often incidents recurSkewed hard by one outlier month — track median too
🗓️
Postmortem Review Cadence
One postmortem is a data point. A monthly review of all of them is where the actual patterns — the same root cause wearing a different costume — become visible.
Process
Recommended
1
Monthly incident review: read every postmortem from the last 30 days side by side
2
Look for repeated root causes across different incidents — that's your real priority list
3
Report action-item closure rate and MTTR trend to leadership — this is what earns the team time to do the work
📄 Copy-Paste Postmortem Template
01Summary — two sentences, plain language, no jargon
02Impact — who was affected, for how long, quantified (requests, revenue, users)
03Timeline — every entry timestamped and sourced (alert log, chat, deploy history)
04Root Cause & Contributing Factors — stop at the systemic gap, not the first human action
05What Went Well / What Didn't — detection speed, comms quality, tooling gaps
06Action Items — owner, deadline, linked ticket, SMART-checked
Decision Guide

WHAT SEVERITY IS THIS?

A quick lookup for the call that has to happen in the first 60 seconds.

SituationSeverityWhy
Checkout completely down, all regionsSEV1Full revenue-impacting outage, every user affected
One region degraded, others fineSEV2Significant but partial — subset of users, no full outage
Non-critical feature broken, workaround existsSEV3Real bug, low urgency — ticket, not a page
Typo in an internal dashboard labelSEV4Cosmetic, zero user impact
Uncertain — could be either SEV1 or SEV2Declare SEV1Downgrading later is easy; upgrading a slow response isn't

RESPONSE CHEATSHEET

Declare & Detect
/incident declare "<title>" --sev1
amtool alert query severity=critical
curl $PAGERDUTY_API/incidents -H "Authorization: Token $TOKEN"
War Room
/incident timeline "<entry>"
/incident status "<update>"
/incident resolve
Postmortem
cp postmortem-template.md incidents/2026-09-14-billing.md
git log --since="2026-09-14 09:00" --until="2026-09-14 10:00"
Action Items
jira create --project OPS --type "Action Item" --due 2026-09-28
jira query "project=OPS AND type='Action Item' AND status!=Done"
Metrics
promql: avg_over_time(incident_ttr_minutes[30d])
promql: count(incidents{severity="sev1"}) by (month)
Status Page
statuspage-cli update --status "investigating"
statuspage-cli update --status "resolved"
VA
Vishal Abhinav
Platform Ops Engineer · Ops Newsletter — Issue #053