Skip to content
Buy an exerciseBuy

Free, no signup

Write up the incident.

The review is where an incident either teaches you something or quietly becomes a story you tell yourself. This asks for the parts that get skipped, explains why each one matters, and hands back a formatted record. Nothing is uploaded, which matters when the honest version is unflattering.

This produces a self-reported record and says so on the artifact. It reports what happened; it is not an assessment, and it does not state that any control worked. Your auditor or your customer decides what it is worth.

The record

What happened.

How to fill this in

Give the level and, in a few words, what that level means to you. A reader outside your company has no idea what your Sev 1 threshold is, and the grade is meaningless without it.

Strong
Sev 1 (production unavailable to all customers, customer data at risk)
Weak
Sev 1

Why the weak one costs you. Severity labels are internal vocabulary. To an auditor or a customer, an unexplained Sev 1 could be anything from a full outage to a noisy alert, so the grade carries no information and they will ask. Worse, if your written thresholds and your actual grading disagree, this is the document where that shows: a reader who sees three Sev 2s that each read like a Sev 1 concludes your severity scale is decorative.

How to fill this in

Name it by what customers experienced and for how long, not by the internal cause. The cause is often wrong on the first pass and the impact almost never is.

Strong
Checkout unavailable for 3h 41m after a failed migration
Weak
The Postgres incident

Why the weak one costs you. Naming an incident after its suspected cause freezes the first theory into the title, and titles outlive the analysis. Six months on, someone searching for what happened to checkout will not find "the Postgres incident", and if the cause turns out to be the connection pooler rather than the database, the title is now actively misleading in every link that points at it.

How to fill this in

Say what actually told you, and how long after the incident began. If a customer told you, write that a customer told you.

Strong
Customer support ticket, 14 minutes after the first failed checkout. No alert fired.
Weak
The issue was identified and the team responded quickly.

Why the weak one costs you. Whether an alert fired or a customer called is the fact that predicts your next incident, and it is the one people soften hardest, because it is the one that feels like an admission. It is not: every mature team has incidents their monitoring missed. What a reader distrusts is a review where detection is described in the passive voice, because that is where a missing alert is usually being hidden, and once they suspect that, they stop believing the rest of the document too.

How to fill this in

From the first customer-visible effect to the first human who knew, not to the alert that fired later.

Strong
14 minutes (first failed checkout 09:02, support ticket 09:16)
Weak
Quickly

Why the weak one costs you. This is the number you can actually move. Time to mitigate is dominated by the specific problem and varies wildly between incidents, but time to detect is a property of your monitoring, so it is comparable across incidents and improving it shortens every future one. Recording it as a word rather than a number means you can never plot it, and a trend nobody can plot is a trend nobody manages.

How to fill this in

To the point where customer impact stopped, which is usually earlier than the point where you understood the cause. If those are different, say both.

Strong
3h 41m to restore checkout. Cause confirmed a further 2h later.
Weak
Resolved same day

Why the weak one costs you. Mitigation and understanding are different clocks, and conflating them flatters the response. Restoring service by failing over is a good outcome and should be recorded as one, even when the diagnosis took all afternoon. Merging them into one number also hides the case worth knowing about: service restored fast by a change nobody understood, which is a repeat incident waiting for its trigger.

How to fill this in

Quantify what you can. Then state plainly what you cannot determine and why, which is usually a retention limit or a gap in logging.

Strong
All checkout attempts failed for 3h 41m; 1,840 attempts by 612 accounts. No evidence of data access. Request logs retain 7 days, so access before 2026-08-12 cannot be ruled out either way.
Weak
Minimal customer impact; no data was compromised.

Why the weak one costs you. Two different claims are being made in the weak version and only one of them can be supported. "No evidence of access" is a finding. "No data was compromised" is a conclusion your logs cannot support, and asserting it is how a review becomes a liability: if something surfaces later, the document proves you overstated. Stating your retention limit costs you nothing, is the honest position, and is what makes a reader believe the numbers you do assert.

How to fill this in

One line per moment that changed what someone did or believed. Include the theories you pursued and dropped, and name who did what.

Strong
09:41 | Rolled back the deploy on the theory it was the migration; no effect | Priya S.
10:20 | Found the pooler holding stale connections; restarted it | Priya S.
Weak
09:41 | Investigated
10:20 | Fixed the issue

Why the weak one costs you. A timeline containing only correct actions is a press release, and everyone reading it knows real incidents do not go that way. The dropped theory is the most useful line in the document: it is where the 40 minutes went, and it tells the next responder which plausible-looking answer to skip. Naming who did what is not about blame, it is what lets someone ask a follow-up question later, and a record where every action is passive is one nobody can learn from.

How to fill this in

List several, each with the evidence a reader could check. Favour the conditions that were already true before the trigger, because those are the ones still present tomorrow.

Strong
Pooler config not covered by the migration checklist | Checklist v3 has no pooler step
No alert on checkout success rate | Alert catalog has latency and 5xx only
Weak
Root cause: engineer ran the migration without checking the pooler.

Why the weak one costs you. Singular root causes are almost always an artifact of stopping the search at the first plausible answer, and when that answer is a person, the search stopped early and pointed at the least changeable part of the system. The useful factors are the latent ones: the missing checklist step and the missing alert were both true the day before, will still be true next week, and each is fixable. Requiring evidence next to every factor is what keeps this from becoming a list of opinions, and it lets a reader weigh your analysis rather than take it on trust.

How to fill this in

Name the things that worked, especially the ones you would have expected to fail.

Strong
Failover to the replica worked first time, unrehearsed since Q1
Weak
(left blank)

Why the weak one costs you. Two reasons this is not padding. Internally, a review that only ever lists failures teaches people that raising an incident is a punishment, and under-reporting is a far more expensive problem than any single outage. Externally, a control that demonstrably worked under real conditions is evidence in its own right, and this is usually the only place it is ever written down. Leaving this blank throws away the strongest material in the document.

How to fill this in

One line per decision, with the clock it was made against and where that clock comes from. Record the decisions not to notify the same way.

Strong
Affected customers | 2026-08-19 18:00 | MSA 24h clock from confirmed impact
Regulator | Not notified | No personal data involved; assessed by Dana K. 2026-08-19
Weak
Customers were notified.

Why the weak one costs you. The decision not to notify is the one that gets questioned later, and it is the one almost nobody writes down, because at the time it feels like a non-event. Recorded with its basis and its assessor, it is a defensible judgement made on the facts available. Reconstructed a year later under scrutiny, it is indistinguishable from an oversight. This single field is the reason a lawyer will want this document to exist.

How to fill this in

One named person per action, never a team, and a real date. Put at least one detection improvement in the list, not only the fix for this specific fault.

Strong
Add checkout success-rate alert | Priya S. | 2026-09-05
Weak
Improve monitoring | Platform team | ASAP

Why the weak one costs you. An action owned by a team is owned by nobody, and "ASAP" sorts to the bottom of every backlog, so the weak version reliably produces no change at all and the same incident recurs. Note also which action was chosen: fixing this specific fault stops this specific fault, while the detection improvement shortens every future incident of any cause. Reviews that only ever produce fault-specific fixes are why time to detect never improves.

Generated in your browser. Nothing is sent anywhere and there is nothing to sign up for.

Preview

What downloads.

Common mistakes

What to leave out.

These get added by people trying to be thorough, and each one makes the record weaker.

A single root cause
Complex systems fail for several reasons at once. Naming one cause means the search stopped at the first plausible answer, and the factors you did not look for are still in production.
A person as the cause
If the answer is that someone made a mistake, the real finding is the system that let a single mistake reach customers. Naming the person also guarantees the next person delays raising an incident.
Speculation about an attacker
Motive and identity are almost never determinable from your own logs, and a guess written down here will be quoted back to you as a finding. Record what you observed.
Customer data or credentials
Reviews get circulated far more widely than the incident channel did, including to auditors and customers. Reference the affected records, never their contents.
A verdict on your own compliance
Whether this satisfies a control is not your call to record. State the facts and let the person assessing you weigh them.

The limits of a write-up

Two things this record cannot honestly claim.

These are left visibly empty in the download rather than quietly dropped, because a record that hides what it is missing is worse than one that admits it.

What responders believed at the time
Once you know the answer, the reasons a wrong decision looked right at 09:41 are almost impossible to recover. Unless someone wrote it down live, treat any account of it as shaped by hindsight.
Time spent on the wrong hypothesis
Usually the largest single block of the response, and almost never logged, because nobody timestamps a theory while they are still testing it.

Where this stops

The gap this review keeps finding.

Almost every review lands on the same two actions: a missing alert, and a decision path nobody had walked before. The first is monitoring work. The second is what a tabletop is for, and it is cheaper to find the unwalked path in an exercise than in a real 09:02. ControlDrill runs that exercise on your systems and your plan, and the record is written by the time you finish, with every decision already attributed.