Running Reliable Systems · Postmortems & blameless culture

Postmortems & blameless culture

A postmortem is the structured write-up you produce after an incident, and its entire value depends on one design choice: it investigates the conditions that let a failure happen, not the person who triggered it. This page covers why blame is actively counterproductive, what a real postmortem document contains, how to use the five whys to get from a symptom to a systemic cause, and why an incident review is worthless unless its action items actually get done.

☺ Explain it like I'm 10

A commercial pilot who reports a near-miss to the NTSB gets immunity from punishment for that report — the investigators want to know exactly what happened, in full honest detail, so they can fix the airspace procedure or the cockpit instrument that made the mistake possible. If pilots feared losing their license every time they reported an error, they'd stop reporting, and the same design flaw would keep causing near-misses across the whole industry. A blameless postmortem works the same way: the engineer who ran the command that took down production is the single best source of detail about how the systems and defaults let that command do so much damage — and you only get that detail if reporting it costs them nothing.

Blameless means investigating the system, not the person

The blameless principle is not about being nice — it is a deliberate information-gathering strategy. Almost every outage traces back to a human action somewhere in the chain: someone ran a migration, merged a config change, fat-fingered a flag. If a postmortem's conclusion is "engineer X made a mistake," it has stopped investigating exactly where the useful information starts. The real question is never "who did this" but "what let this be possible" — why did the deploy pipeline allow an unreviewed change to reach production, why didn't the monitoring catch the regression before it paged a customer, why was there no dry-run mode on a command that deletes data.

The practical case for this is about what happens to information, not morale. When engineers expect blame, they hedge: they omit the detail that they were tired, that they skipped a step because the runbook was stale, that they'd noticed the same near-miss two weeks earlier and didn't say anything. Punishing the person who happened to be holding the pager when a systemic flaw finally triggered doesn't fix the flaw — it just teaches everyone else to hide the same flaw better, and guarantees it fires again under someone else's watch. John Allspaw's writing on this at Etsy and the SRE discipline's own origins at Google both converge on the same operating rule: the fixes that come out of a postmortem should be things like better defaults, better tooling, better checks in the deploy pipeline — the same category of countermeasure discussed for review gates in release engineering & progressive delivery — not "be more careful next time," which is not a fix at all because it doesn't change what happens the next time someone is tired, rushed, or new.

What triggers a postmortem, and who writes it

Not every page deserves a full postmortem — most teams set a threshold, commonly any incident that breached an SLO, burned a meaningful fraction of the error budget, paged more than a defined severity floor, or involved customer-visible data loss. Below that bar, a lighter incident note is often enough; above it, a full postmortem is mandatory, not optional, regardless of how minor the fix turned out to be. The document is normally drafted by the incident commander or the primary responder from the event covered in incident management & on-call, then reviewed collaboratively in a meeting with everyone who touched the incident — not written unilaterally by a manager after the fact, and not treated as a performance review input.

The standard postmortem template

A useful postmortem is a document, not a narrative essay, and it follows a consistent template so readers can scan for the part they need. The sections that show up across nearly every mature SRE program:

Five whys: drilling from symptom to system

The five whys technique, adapted from Sakichi Toyoda's work at Toyota, forces a postmortem past the first answer, which is almost always superficial. You ask "why" repeatedly, each time treating the previous answer as the new thing to explain, until you hit a cause that is systemic and fixable rather than an individual's action in the moment. Five is a guideline, not a hard rule — some chains resolve in three whys, some need seven — but stopping at the first or second why is the single most common postmortem failure mode, because that's almost always where "an engineer did X" still sits, before you reach the process gap that let X matter.

Symptom: The site was down for 22 minutes.

Why?    Because the database connection pool was exhausted and new
        requests couldn't get a connection.
Why?    Because a deploy introduced a code path that opened a new
        connection per request instead of reusing one from the pool.
Why?    Because the connection-pooling regression wasn't caught by
        the test suite before merge.
Why?    Because there is no load test in CI that exercises connection
        reuse under concurrent traffic — only functional correctness
        is tested, not resource behavior under load.
Why?    Because the team has never had a load-related production
        incident before, so load testing was never prioritized into
        the CI pipeline.

Root cause: CI validates correctness but not resource usage under
concurrent load, so a class of regression like this passes review
and merges undetected until it hits production traffic.

Notice what the chain does not conclude: it never says "the engineer who wrote the connection-handling code should have known better." It lands on a gap in CI coverage — something a fix can actually close, and something that protects the next engineer who writes similar code, not just this one. A five-whys chain that terminates on a person instead of a system or process has gone wrong somewhere upstream; back up and ask why that person was in a position for their individual action to cause an outage-scale failure at all.

⚠ Watch out

Five whys is a single linear chain, and real incidents are usually a tree, not a line — several independent contributing factors, each with its own chain. Don't force every incident into one strand of whys and call it done; if the timeline shows the alert also fired forty minutes late and the runbook step for cache invalidation was wrong, those are separate root causes needing their own five-whys treatment and their own action items, not footnotes on the primary chain.

Closing the loop: the part that makes the whole exercise worth it

An action item that never gets done is worse than not writing a postmortem at all, because it converts real engineering hours into a document that creates the appearance of a fix without the substance of one — and the next time the same failure mode fires, the postmortem archive will show it was already diagnosed and then dropped. Tracking action items to actual completion, in the same issue tracker as normal work, with the same visibility to the same leadership that reviewed the incident, is what separates a functioning postmortem program from theater. Some teams enforce this with a hard SLA on postmortem action items — for example, all items due within one quarter, tracked on a dashboard, escalated if they slip — and periodically audit the completion rate across all postmortems as a reliability metric in its own right, the same way they'd track any other item in measuring & reporting reliability.

The single clearest signal that a postmortem culture has decayed into ritual is a rising stack of postmortems whose action items sit open for months with no owner following up. If that's happening, the fix isn't writing better postmortems — it's fixing the tracking and accountability loop around the ones you already have.

◆ Key idea

Store each action item as a normal ticket linked back to the postmortem doc, not as prose inside it. A prose action item ("we should add a load test") has no owner, no due date, and no way to show up on anyone's sprint board — it will be re-discovered, unfixed, in the next postmortem for the same root cause.

Postmortem review, not postmortem punishment

The review meeting itself sets the tone for everything above it. A well-run review reads the timeline aloud, asks clarifying questions about the systemic conditions, and explicitly avoids phrasing that assigns individual fault — "the deploy lacked a canary step" instead of "you shipped without canarying." Facilitators who let the conversation drift toward who-did-what are undermining the same information flow the blameless principle exists to protect, even if no one in the room intends it that way. The output of a good review is a shared, accurate understanding of the incident and a short list of well-owned action items — not a verdict.

✓ Checkpoint

1. Why does assigning individual blame make a postmortem less effective at preventing future incidents, not more? 2. Name four sections a standard postmortem template includes besides the timeline. 3. In the five whys technique, what's the sign that a chain has gone wrong, and what should you do about it? 4. What makes a postmortem "theater" rather than a real reliability practice?

Check your answers
  1. Blame causes engineers to hide details that would otherwise surface the real systemic cause, since anything they admit could be used against them — this means the next postmortem for a related failure has less information to work with, and the underlying gap in tooling or process never gets fixed, so the same class of failure recurs, possibly against a different person.
  2. Any four of: summary, root cause(s), impact, what went well, what went poorly, action items with owners and due dates.
  3. The chain has gone wrong if it terminates on an individual's action ("the engineer should have been more careful") instead of a systemic or process gap. The fix is to back up a step and ask why that person's individual action was able to cause an outage-scale failure in the first place — that next "why" is usually where the real, fixable cause lives.
  4. A postmortem is theater when its action items are written but never tracked to completion — the document creates the appearance of a fix without the tracking and accountability that would actually close the gap, so the same root cause is free to cause the same outage again.