Why there is rarely one root cause
A root cause field on a postmortem template produces a shallow answer every time, because there is always a last thing that changed and writing it down feels like completing the analysis.
Key takeaways
- The trigger is the last thing that changed. The causes are what made it an incident.
- Ask what made it possible, what made it worse, and what delayed detection.
- No names in the causal chain. A person’s action is a system that allowed it.
- ’Human error’ is where analysis stops rather than where it should.
- A write-up with one cause and one action is usually incomplete.
Trigger against causes
- Compute
- Security & identity
- Management
- Analytics
Why the distinction matters
The trigger is specific and will not recur in the same form. Somebody will not make that exact configuration mistake again, and a postmortem whose only action is “be more careful with that config” has prevented one incident.
The conditions are general. A config path with no validation will admit a different mistake next time. An alert that points at the wrong component will mislead a different team. A rollback that needs an approval will be slow in every future incident.
The write-up structure
Sections that produce a useful document
- What happened, in two sentences, for somebody who was not there.
- Impact: who was affected, how, and for how long. Specific.
- Timeline, with the belief column from Part 2.
- Contributing conditions, plural, each independently stated.
- What went well. Genuinely, and it is not padding: the things that limited the damage are worth protecting.
- Actions, each tied to a condition rather than to the trigger.
- No section called root cause, because the field creates the answer.
The fifth section is skipped in most templates and it earns its place. An incident that was detected in four minutes because somebody had built a good alert last year is telling you something about what to keep doing, and the alert’s author will otherwise never hear about it.
Blame is an analytical failure
The cultural argument for blameless postmortems is well made and there is a second argument that persuades different people: blame produces worse analysis. “Somebody typed the wrong value” is a complete-sounding explanation that generates one action, and the action is a reminder.
“A production configuration change was possible without validation, review or a gradual rollout” describes the same event and generates three actions, none of which depend on anybody being more careful.
No names in the causal chain
A practical rule that is easy to apply: names appear in the timeline where they are needed for clarity, and never in the contributing conditions. Where a person’s action is part of the story, the condition is stated as the system that permitted it.
This is not a euphemism. It is the more accurate statement, because the same action taken by anybody else would have had the same effect, which means the action is not what distinguishes this incident.
How deep to go
- Compute
- Machine learning
- Management
- Analytics
There is a failure mode at the other end from blame, which is an analysis that arrives at organisational culture, resourcing decisions from three years ago, or the general difficulty of distributed systems. All true, and none of it produces anything anybody can do on Monday.
The stopping rule is practical: keep asking until each condition has an action somebody could actually take, and then stop. If a level produces no actionable finding, the previous level was the right depth.
Next: what happens to those actions.
All posts