Postmortem Anti-Pattern: Action Item Overload
Generating dozens of unprioritized action items guarantees none get done. Learn to cut the list to the few that actually prevent the next incident.
- #postmortems
- #incident-response
- #sre
- #troubleshooting
Stuck on this Post Mortems with AI error? Get the free incident triage checklist
A one-page PDF — the exact steps to isolate, fix, and verify a production error like this one. No spam, unsubscribe anytime.
Overview
Action item overload is what happens when a postmortem produces twenty, thirty, or forty action items — every idea anyone raised, every “we could also,” every nice-to-have — dumped into a list with no prioritization. It feels thorough. It looks like diligence. But a list that long is functionally a list of zero, because no team has the capacity to execute forty items against a backlog of feature work, and without prioritization there is no signal about which three actually matter. The postmortem discharges its energy into the writing and none into the doing, and six weeks later the list is untouched while the same class of incident recurs.
This anti-pattern is distinct from vague action items or ones that never ship for lack of ownership. Those are problems of quality and follow-through. Action item overload is a problem of volume and prioritization: the items may be perfectly specific and well-owned, but there are simply too many of them and no ranking, so the critical few drown among the trivial many. The failure mode is counterintuitive because it masquerades as its opposite — the team that generates forty action items looks more rigorous than the team that commits to three, but the team of three will actually be safer, because their three will get done. More action items past a small number does not mean more safety; it means more items that will quietly rot.
Symptoms
- A postmortem with 15, 25, 40+ action items and no indication which are load-bearing.
- No prioritization — every item sits at the same visual weight, as if all are equally urgent.
- A mix of critical fixes and cosmetic nice-to-haves jumbled together with no distinction.
- Items that address the incident and items that are just “good ideas” the discussion surfaced, all captured equally.
- A completion rate that collapses — 40 items filed, 4 done a quarter later, and those 4 not the most important.
- The list is never triaged after the meeting — it’s captured and then abandoned.
- Recurrence of the same incident class while the relevant fix sits at position 27 of 40, never reached.
- Team overwhelm and disengagement — the list is so long nobody knows where to start, so nobody starts.
Common Root Causes
- Capturing every idea as a committed action. Brainstorming during the review is healthy, but every suggestion gets promoted to an action item instead of being triaged.
- No forcing function to prioritize. Nothing in the process makes the team rank or cap the list, so the default is to keep everything.
- Thoroughness mistaken for safety. A longer list feels more responsible, so teams optimize for coverage rather than for what will actually get done.
- Conflating “could improve” with “must fix to prevent recurrence.” Preventive fixes for this incident get mixed with general system improvements that belong in the normal backlog.
- No capacity check against reality. Action items are generated without reference to the team’s actual bandwidth, so the list vastly exceeds what can be executed.
- Fear of leaving something out. Nobody wants to be the one who dropped the item that “would have prevented the next one,” so everything stays in.
- No owner for the list itself. With no one accountable for triaging and tracking the set, it’s easier to file everything than to make hard cuts.
Diagnostic Workflow
The goal is not to capture every possible improvement — it is to identify the small number of changes that most reduce the risk of this incident recurring, and to make sure those get done. Start by separating prevention from improvement.
Two-bucket triage — sort every candidate action item:
BUCKET A "Prevents/mitigates recurrence of THIS incident class"
-> these are true postmortem action items
BUCKET B "General good idea / nice-to-have / unrelated improvement"
-> valid, but goes to the normal backlog, NOT the postmortem
Only Bucket A items are postmortem commitments.
If Bucket A still has >5-7 items, prioritize further (below).
Then rank the Bucket A items by leverage and cap the committed set to what the team can realistically execute soon:
Prioritization pass for Bucket A:
For each item score: IMPACT (how much it reduces recurrence risk)
EFFORT (cost to implement)
Rank by impact-to-effort. Then apply the cap:
Commit to the TOP 3-5 with owner + due date.
Everything below the cap -> backlog, revisit next incident.
Capacity reality check:
"Given the team's actual bandwidth over the next 2-4 weeks,
how many of these will genuinely ship?"
If the committed count > that number -> cut the list further.
Finally, check the follow-through mechanics, because prioritization is worthless without tracking. Does someone own the list? Are the top items tracked to completion like any other committed work? A short, ranked, owned, tracked list of three beats an exhaustive, flat, orphaned list of forty every time — the measure of success is items completed, not items generated.
Example Root Cause Analysis
Incident: A cache-invalidation bug served stale data to a subset of users for two hours. The review meeting was energetic and surfaced a long list.
Overloaded version: a postmortem with 31 action items, flat and unranked, including: fix the invalidation bug; add a cache-freshness metric; rewrite the caching layer; add integration tests for cache paths; write a caching design doc; refactor the config system; add a dashboard; audit all other caches; upgrade the cache library; add rate limiting; improve logging across the service; hold a caching training session; and nineteen more.
Why this list is functionally empty:
- No prioritization: “fix the invalidation bug” (the actual fix) sits at the same weight as “hold a caching training session” (a nice-to-have), so nothing signals what matters.
- Prevention mixed with improvement: the one item that prevents recurrence is buried among broad system-improvement ideas that belong in the backlog, not the postmortem.
- No capacity check: the team can ship maybe 3-4 items in the next sprint against their feature commitments; 31 items is a list nobody can execute.
- Predictable outcome: a quarter later, a handful of the easy, low-impact items are done, the critical fix is still open at position 9, and a stale-cache variant recurs.
Two-bucket triage applied:
- Bucket A (prevents recurrence): fix the invalidation bug; add a cache-freshness/staleness alert so the next occurrence is caught in minutes not hours; add an integration test covering the specific invalidation path that broke.
- Bucket B (good ideas → backlog): rewrite the caching layer, config refactor, library upgrade, training session, broad logging improvements, audit all caches — all legitimate, none a postmortem commitment.
Prioritized, capped result:
Committed postmortem action items (3, each owner + due date):
1. [owner/date] Fix the cache-invalidation bug (high impact, low effort)
2. [owner/date] Add cache-staleness alert (>Xs) (high impact, low effort)
3. [owner/date] Integration test for the broken path (med impact, low effort)
Backlog (tracked separately, not blocking): the other 28 ideas.
The difference: three high-leverage items that will actually ship and genuinely prevent the next stale-cache incident, versus thirty-one that collectively accomplish nothing. The rewrite didn’t lose the good ideas — it moved them to where they belong so they don’t drown the critical fixes.
Prevention Best Practices
- Triage before committing. Sort every candidate into “prevents recurrence” (postmortem action item) versus “general improvement” (backlog); only the former are postmortem commitments.
- Cap the committed list. Commit to the top 3-5 highest-leverage items per postmortem; more than that reliably means none get the attention they need.
- Prioritize by impact-to-effort. Rank Bucket A items so the highest-leverage fixes are unmistakably at the top, not lost in a flat list.
- Check against real capacity. Compare the committed count to what the team can genuinely ship in the next few weeks, and cut until the list fits reality.
- Capture ideas without committing to them. Record every good idea so nothing is lost, but route non-preventive ones to the normal backlog rather than the action item list.
- Give the list an owner. Make one person accountable for triaging, ranking, and tracking the committed items to completion, like any other work.
- Measure completion, not generation. Track the percentage of committed action items actually shipped; a high generation rate with a low completion rate is the signature of overload.
Quick Reference
# Action item overload = too many unprioritized items -> none get done.
# (distinct from vague or never-owned items: this is VOLUME + PRIORITIZATION)
Two-bucket triage:
A = prevents/mitigates recurrence of THIS incident -> postmortem item
B = general good idea / nice-to-have -> normal backlog
Prioritize Bucket A:
score IMPACT (recurrence-risk reduction) vs EFFORT
rank by impact/effort
COMMIT to top 3-5 with owner + due date; rest -> backlog
Capacity reality check:
"how many will genuinely ship in 2-4 weeks?"
committed > that -> cut further
Remember:
- more items past ~5 != more safety; it means more rot
- measure items COMPLETED, not items GENERATED
- 3 ranked/owned/tracked > 40 flat/orphaned
Conclusion
Action item overload is the anti-pattern that punishes apparent diligence: the team that leaves the review with forty items feels more thorough than the team that commits to three, yet it is the team of three that will actually be safer, because their three will ship while the forty rot untouched. The core insight is that a postmortem’s job is not to catalog every conceivable improvement — it is to identify and guarantee the handful of changes that most reduce the odds of this failure recurring. That means triaging prevention from mere improvement, ranking ruthlessly by leverage, capping the committed list to what the team can truly execute, and then tracking those few to completion like any other work. Capture every good idea so none is lost, but do not confuse capturing an idea with committing to it. The only action items that matter are the ones that get done, and the surest way to get the critical few done is to stop drowning them in the trivial many.
Fixed it? Get 500 Post Mortems with AI & DevOps AI prompts — free
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.
Did this fix your issue?
Get 500 Battle-Tested DevOps AI Prompts — Free
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.