Module 7: Blameless Postmortems And Runbooks
2. What makes a postmortem "blameless"
Description
"Blameless" isn't a decorative adjective tacked onto a postmortem to make it sound nicer. It's an engineering practice with a precise definition, published by Google SRE, with a specific mechanism by which it produces more reliable systems — not just happier teams. This lesson quotes that definition, word for word, and applies it to the exact point in the Claude Code incident where the distinction stops being theoretical: the moment a human, with the agent's own warning already on the table, approved the destroy anyway.
Connection to the module
Lesson 1 already distinguished, in its own prose, "the human approved the destroy" (fact) from "the human is guilty" (a conclusion a blameless postmortem never writes). This lesson backs that distinction with the practice's primary source — the Google SRE book's postmortem culture chapter — and applies it, step by step, to point (5) of the failure chain cloud-security-and-guardrails-guide, Module 1, lesson 6 already precisely documented: "The human approves the destroy anyway, without reviewing the full plan." Lesson 3, immediately after, writes the complete postmortem applying exactly the criterion this lesson establishes here.
Step 1 — The definition, quoted in full
The Google SRE book is explicit, unambiguously, about what a postmortem needs to earn the "blameless" label:
"For a postmortem to be truly blameless, it must focus on identifying the contributing causes of the incident without indicting any individual or team for bad or inappropriate behavior."
Notice this sentence's exact structure, because every word is doing work: "it must focus on identifying the contributing causes" — the active verb is identifying causes, not avoiding mentioning facts — "without indicting any individual or team for bad or inappropriate behavior" — the specific prohibition isn't "without mentioning any person," it's "without turning the mention of that person into an accusation of misconduct." The difference is exactly the one lesson 1 already drew in its own prose: naming a decision (necessary) versus judging it morally (prohibited).
The same source adds the starting assumption that makes that distinction possible:
"A blamelessly written postmortem assumes that everyone involved in an incident had good intentions and did the right thing with the information they had."
This second quote is the one that turns "blameless" from a courtesy into a rigorous analysis method: if you assume, as a starting point, that every person involved acted in good faith with the information available at that moment, the question left to answer stops being "why did this person get it wrong?" and becomes "what information were they missing, or what pressure were they facing, that made that decision seem reasonable at that moment?" — a question that does have an actionable answer at the system level.
Step 2 — Why "blameless" isn't the same as "without consequences"
It's worth resolving, with the same source, a common confusion before moving on: "blameless" doesn't mean nothing changes after a postmortem. Google SRE is explicit about the real mechanism:
"When postmortems shift from allocating blame to investigating the systematic reasons why an individual or team had incomplete or incorrect information, effective prevention plans can be put in place. You can't 'fix' people, but you can fix systems and processes to better support people making the right choices when designing and maintaining complex systems."
This quote is, in effect, the complete argument for why this practice exists, not just its description: "you can't 'fix' people, but you can fix systems and processes." A postmortem that assigns blame produces, at most, a consequence for one person — a warning, a note in a file, in the worst case a departure; none of those consequences change the system that made the incident possible. A blameless postmortem, in contrast, produces system-level action items (this module's lesson 4 builds this case's real ones) — changes that reduce the probability of the same class of error happening again, no matter which specific person is in charge next time.
Google SRE backs this logic with an external precedent, deliberately chosen from industries where the cost of an error is literally a human life:
"These industries nurture an environment where every 'mistake' is seen as an opportunity to strengthen the system."
— Google SRE Book — Postmortem Culture (referring to the healthcare and aviation industries, the same domain as lesson 1's black-box analogy)
It's no coincidence that lesson 1's analogy — an aviation incident investigation — is the same one Google SRE cites as the historical origin of this practice in software engineering: the discipline wasn't invented for engineering, it was imported from domains where it had already been proven, with real data, that seeking someone to blame makes systems less safe — because punishing honest error reporting incentivizes hiding it next time.
Step 3 — Applying the definition to the exact point where it gets tested
The Claude Code incident has a specific point where this distinction stops being abstract: point (5) of the seven-failure chain cloud-security-and-guardrails-guide, Module 1, lesson 6 already documented — "The human approves the destroy anyway, without reviewing the full plan" — preceded, at point (4), by an explicit warning from the agent itself about that action's risk.
THE POINT WHERE "BLAMELESS" GETS TESTED -- IT ISN'T ABSTRACT
(4) Claude Code FLAGS the destroy's risk, explicitly
│
▼
(5) The human approves the destroy anyway
│
┌──────────┴──────────────────────────────────┐
│ │
▼ ▼
READING WITH BLAME BLAMELESS READING (this guide)
───────────────── ─────────────────────────────
"The human ignored a clear Verified fact: the warning
warning. They should have existed and was approved
known better." anyway. System question:
"why isn't a warning that
│ can be approved with no
▼ friction, in practice, a
Ends in a judgment about control?"
one person's judgment, │
with no verifiable ▼
system change A real control doesn't
ask permission, it blocks --
exactly the conclusion
cloud-security-and-guardrails-
guide already reached for
this same case, and that
this module's Lesson 4
turns into action
The "blameless" reading isn't more lenient about the incident's outcome — it's actually more demanding of the system: instead of settling for "the human should have paid more attention," it demands a verifiable answer to "what mechanism, independent of human attention at that specific moment, would have made this decision impossible to make?" That's, word for word, the same question cloud-security-and-guardrails-guide already answered for this case with conftest/no-destroy-shipments.rego (built) and prevent_destroy (named, not built) — this module's lesson 4 picks up that second, still-pending piece as a real action item.
Step 4 — The same discipline applied to "good intentions, incomplete information"
It's worth verifying, fact by fact, that the "good intentions with the information available" assumption (Step 1) actually holds for this case, instead of accepting it as a courtesy phrase:
| Actor | Decision made | Information they had at that moment |
|---|---|---|
| The agent (Claude Code) | Proposed terraform destroy as the "cleanest" way to reverse what it had itself partially created | A loaded state that, from its perspective, indicated the real infrastructure "didn't exist" — the whole premise it reasoned from was corrupted before the proposal was even formulated |
| The agent (Claude Code) | Flagged the destroy's risk before executing it | Correctly recognized that the proposed action was irreversible and deserved explicit confirmation — the correct behavior given what it knew |
| The human | Did not stop the agent | Was in the middle of an apparently low-risk migration (saving $5-10/month by reusing the existing project), with a warning that, in the context of a normal agent workflow, they'd already seen pass by hundreds of times with no real consequence — no external signal (no conftest, no automatic block) elevated that specific warning above the normal noise of working with an agent |
No row in this table describes bad faith. The agent acted consistently with the corrupted information it had; the human acted consistently with the absence of any signal that distinguished this specific warning from the dozens of routine confirmations an agent workflow produces every day. The conclusion that follows, with the vocabulary already built in this guide and in cloud-security-and-guardrails-guide: the problem wasn't either individual decision — it was the absence of a mechanism that made it impossible, not just inadvisable, to run a destroy against a critical production resource without a check that didn't depend on a human noticing something in the middle of a routine task.
Common mistakes
Confusing "assuming good intentions" with "assuming the decision was correct" (over-reading Step 1). What happens: someone reads "assumes that everyone involved [...] did the right thing with the information they had" and concludes a blameless postmortem can never say a decision was, in hindsight, a mistake. How to spot it: if your summary of this lesson claims "not approving the destroy would have been just as reasonable as approving it, so there's nothing to learn here." How to fix it: the full quote says "with the information they had" — it doesn't say the outcome was optimal, it says the decision was understandable given what was known at that moment. A blameless postmortem can, and should, conclude the outcome was bad (Module 6 already classified it as SEV1, the worst possible severity) without needing to conclude the person acted in bad faith or negligently — they're two completely different judgments, and only the second is prohibited.
Treating "blameless" as a reason not to analyze the human decision at all (repeated, with more detail, from the error already named in lesson 1). What happens: someone, writing lesson 3's postmortem, entirely omits point (5) of the failure chain, treating it as "forbidden territory" under blameless discipline. How to spot it: if your postmortem can't precisely point to which step a human decision changed the outcome at. How to fix it: this lesson's Step 3 demonstrated exactly the opposite — the blameless reading analyzes the human decision with more depth than the blame-seeking reading, not less; the difference is in what question gets asked after naming the fact ("why did it seem reasonable?" instead of "why was it negligent?").
Assuming the quote about healthcare and aviation implies software engineering errors are just as serious as an airplane accident (taking an origin analogy too literally). What happens: someone argues that, since Google SRE explicitly cites aviation and healthcare as this practice's origin, any software incident should be treated with the same institutional solemnity as an airplane accident. How to spot it: if your argument for "blameless" depends on equating this incident's severity with an aviation accident's. How to fix it: Google SRE's quote names those industries as the mechanism's historical origin — evidence that punishing honest error produces less safe systems — not as an equivalence of severity. The principle transfers even though the scale of the damage differs: the same logic that makes a pilot honestly report a procedural error with no fear of retaliation is what makes an engineer honestly report that they approved a destroy without reviewing the full plan, without that report becoming a threat to their career.
Exercises
Exercise 1 — Rewrite, in a single sentence, the difference between "identifying contributing causes" and "indicting an individual for bad behavior," using this lesson's Step 1 exact quote.
See solution
"Identifying the contributing causes" precisely, verifiably describes what conditions — technical, informational, procedural — made the outcome possible, including what decision each involved person made and with what information at that moment; "indicting an individual for bad behavior" adds a moral judgment about that decision — that it was negligent, reckless, or in bad faith — which Step 1's quote explicitly excludes ("without indicting any individual [...] for bad or inappropriate behavior"). The first activity produces actionable facts for a system change; the second produces, at best, a personal consequence with no verifiable effect on the probability of the same incident repeating.
Exercise 2 — A colleague argues that, if the human had been more experienced, the agent's warning would indeed have been enough to stop the destroy — and that therefore the real problem was lack of experience, not lack of an automatic control. How do you respond, using this lesson's Step 3 and Step 4?
See solution
Disagree, with the same argument cloud-security-and-guardrails-guide already adopted and that this lesson quotes in Step 3's diagram: "a real control doesn't ask permission, it blocks." Trusting that "more experience" would have changed the outcome bets, again, on a specific person's attention or judgment — this time chosen for their experience level instead of their blame — being the real safeguard, exactly the same single point of failure that produced the incident. This lesson's Step 4 showed, fact by fact, that no external signal distinguished this specific warning from the dozens of routine confirmations any person — expert or novice — processes daily working with an agent; a senior engineer, under the same absence of structural friction, can also approve a routine warning without noticing this one was different. The blameless solution doesn't bet on improving the next person's judgment — it bets on the next person, regardless of experience level, encountering a system that doesn't allow that specific destroy to run without a mechanical check.
Exercise 3 — Explain why the quote "You can't 'fix' people, but you can fix systems and processes" is, at bottom, the same argument RELIABILITY-CHARTER.md (this guide's Module 1) already made about the error budget as a measurement mechanism, not a prevention one.
See solution
Both arguments share the same logical structure: recognizing the limits of what an intervention can accomplish, and directing effort toward what can actually be changed verifiably. RELIABILITY-CHARTER.md established that an error budget measures the damage after it happened, instead of preventing it — not because measuring is less valuable, but because confusing measurement with prevention leads to expecting a tool to do something it can't. This quote makes exactly the same move with people: not because people don't matter, but because treating "fixing a person" (through punishment, warning, or expecting better judgment) as if it were equivalent to "fixing the system" leads to solutions that feel satisfying but don't change the real probability of the next incident. In both cases, the discipline consists of being honest about which tool does which job, and not asking either one to do the other's job.
Summary and next step
This lesson quoted, word for word, Google SRE's definition of a blameless postmortem: focus on the contributing causes without indicting any individual for bad behavior, starting from the assumption that every person acted in good faith with the information they had. You confirmed, with the source's explicit mechanism ("you can't fix people, but you can fix systems"), why this discipline produces system-level action items instead of personal consequences. You applied the definition to the exact point in the Claude Code incident where it gets tested — the human approval of the destroy after an explicit warning — and confirmed, fact by fact, that the good-faith-with-incomplete-information assumption holds for both actors in the incident.
Before moving on you should be able to: quote the definition of "blameless" from memory, with its two conditions (focus on causes, don't indict); explain the mechanism by which this discipline produces more reliable systems, not just happier teams; and apply the "verified fact / moral judgment" distinction to any human decision within a new incident.
Lesson 3 uses exactly this criterion to write this guide's central document: POSTMORTEM.md, built on top of TIMELINE.md, with Google SRE's real template structure.
Resources
- Google SRE Book — Postmortem Culture — the source of every verbatim quote in this lesson.
- Google SRE Workbook — Postmortem Culture — the same principle's practical application, with the template structure lesson 3 uses.
cloud-security-and-guardrails-guide, Module 1, lesson 6 (06-blast-radius-revisited-what-would-have-stopped-it.md) — the source of the seven-failure chain and point (5), analyzed in this lesson.- Alexey Grigorev — How I Dropped Our Production Database — the primary source for the agent's and human's verbatim quotes, already verified in Module 6.