DEV Community

Hive80-lab
Hive80-lab

Posted on Originally published at hive80-lab.github.io

"The After-Action Report: Thirty Minutes, Five Sections, and the 48-Hour Deadline"

The After-Action Report: Thirty Minutes, Five Sections, and the 48-Hour Deadline

TL;DR

Every fire ends twice. Once when the alert clears, and once when someone writes down what changed because of it. Most small teams skip the second ending — which is why the same outage comes back every quarter wearing a new timestamp. The fix is not a committee: it's a one-page after-action report, finished within 48 hours, in thirty minutes, with five sections. Here's the template, the policy rules that make it happen, and a worked example.

The two numbers that decide everything

If you wait a week to debrief, the timeline decays into a vibe — people remember the argument, not the sequence. If the debrief has no timebox, it becomes a two-hour blame session nobody schedules twice. So:

  • Within 48 hours, the person who was on call (not the manager) opens the AAR file. They were closest to the facts.
  • Thirty minutes, hard stop. If it needs longer, that's the signal a full postmortem is warranted — separate document, separate session.
  • Blame is a defect. "We didn't have the spare imaged" is fixable. "Dave forgot" is a lawsuit-shaped dead end. Every human error is a system error wearing a name tag.
  • No owner + no date = not an action item. "Improve monitoring" is a wish. "Sarah: add disk alert at 80% — due Friday" is an action.
  • The next AAR starts by reading the last one. Two minutes on the previous fix list. This closing of the loop is the entire difference between a learning organization and one that documents failure professionally.

The five sections

# Section Question Feeds
1 The gap timeline Supposed vs. actual, with times First page of any future postmortem
2 The keep list What worked that isn't written down Edits into runbooks — wins get codified
3 The fix list What failed, owner + date per line, max 5 rows The weekly review chases these
4 Root cause, no blame Why the gap existed at all Stops you fixing symptoms
5 What we're changing Every document touched, linked Proof of life: if nothing changed, nothing was learned

Section 5 is the one teams skip, and it's the proof of life. Even one linked edit — a line added to your first-30-minutes checklist — is the AAR paying rent.

Why "ask why twice" beats five-whys theater

One clause per fix row, written as "the system allowed X," not "person Y did X." Ask "why" twice and stop. No disk alert existedwhy 1: monitoring was scoped during a migration and disk was out of scope → why 2: nothing periodically audits monitoring coverage against the baseline. Now the fix is "quarterly coverage audit," not just "add one alert." If your second why lands on a person's name, you asked it wrong — rephrase until it lands on a process or an absent safeguard.

A worked example

AAR-2026-09-12 — production disk full, 08:40–09:52. Impact: 12 minutes of failed checkouts, 9 tickets, 1 refund.

  • Gap: no alert existed; on-call laptop lacked the VPN profile; failover never rehearsed under real disk pressure; status page posted 12 minutes late.
  • Keep: support texted the on-call directly when tickets spiked — now codified in the escalation row of the severity matrix.
  • Fix (owner, date, lands in): disk alert by Sep 16 → monitoring checklist; VPN provisioning step by Sep 15 → provisioning checklist; load-failover drill by Oct 1 → drill schedule; pre-staged status drafts by Sep 14 → status page templates.
  • Cause, no blame: monitoring coverage never audited; provisioning predates the VPN change; drills only rehearsed the happy path; status drafts don't exist until written live.
  • Changing: four documents, linked, dated. The next AAR opens by checking these four items.

Total effort: about thirty minutes, most of it copy-pasting from the timeline and chat logs. Compare with the alternative — the same incident recurring in December on the payment page instead of the app, with everyone re-deriving the same four conclusions under pressure.

Paste-in starter: the action tracker

Keep each AAR as aar-YYYY-MM-DD-shortname.md next to your other ops docs. The only table that must stay machine-readable is the fix list:

id,area,failure,root_cause,fix,owner,due,lands_in,status
1,monitoring,"no disk alert; 500s were first signal","coverage never audited vs baseline","add 80% warn / 90% crit alert",sarah,2026-09-16,server-monitoring-checklist,open
2,access,"on-call laptop lacked VPN profile","provisioning predates VPN change","add VPN step + quarterly spot-check",mo,2026-09-15,new-laptop-provisioning-checklist,open
3,drills,"failover unrehearsed under load","drills test happy path only","Q4 drill runs failover with disk pressure",ana,2026-10-01,drill-schedule,open
4,comms,"status page 12 min late","drafts written live","pre-stage investigating+mitigating drafts",sarah,2026-09-14,status-page-communication-template,open
Enter fullscreen mode Exit fullscreen mode

One CSV per AAR, four lines, statuses flipped to done by the Friday review. Organizations that seem eerily calm during emergencies aren't luckier — they've done thirty honest minutes after every fire, for longer than you have.

AAR vs. postmortem vs. weekly review

  • AAR (this): any fire, drill, flop, or scramble → 30 minutes, one page → keep/fix lists + linked edits.
  • Postmortem: Sev-1, customer data, revenue impact → half a day, evidence-first → root-cause chain, owner-signed actions.
  • Tabletop retro: after each drill → 20 minutes on the drill script → scenario edits that feed the next AAR.
  • Weekly review: every Friday, 15 minutes → chases the AAR's open items; adds nothing new.

If your team writes beautiful postmortems for major incidents but nothing for small fires, you're capturing maybe 10% of the learning. The 90% lives in the thirty-minute reports nobody wrote.


The full template — including the gap-timeline table, the worked example, and the AAR-vs-postmortem line — lives on the After-Action Report Template page in the HIVE80lab ops-notes collection, alongside the incident timeline, postmortem, and drill-schedule templates it plugs into.

Top comments (0)