A postmortem is only worth writing if it is true, and the part of it most likely to be false is the part that looks most solid. Ask anything — a person working from memory, or a model working from a prompt — what happened in what order, and you get a clean sequence of events. Some of them happened. The ones that did not are the same shape, in the same font, in the same table, and there is no way to tell by reading.
That matters more here than almost anywhere else, because the document is used to decide what to fix. An invented rollback attempt at 02:47 sends somebody to harden a code path nobody touched, and the real gap goes unexamined for another quarter.
So the events are not written. They are collected. A deploy, a merged pull request, a failed run, a board column move, a message in the incident thread, the ticket somebody filed at 03:09 — all of these are already stored, each with a timestamp and an id, because this is a product that records what it does. They are merged and ordered in code before any model is asked anything, and what arrives at the drafting step is a fixed table. The model's job is the half that code is bad at: saying why the 22:31 merge and the 01:55 first failure are the same story, and which of the three contributing factors is the one worth leading with. It can explain every row and it cannot add one. A row in the finished document that no record backs is dropped and counted, not quietly corrected.
The other half is the silences, and they are the reason to bother. Somewhere in most incidents there is a stretch — twenty minutes, an hour — with nothing recorded at all. That stretch is usually where the incident was made worse, and it is exactly what a fluent writer removes, because prose does not tolerate a hole. The sentence that fills it is always the same: the team continued investigating. Nobody wrote that down at the time. It is not a fact, it carries no source, and once it is on the page the gap is gone.
Here the silences are measured before anybody writes anything. Every stretch of the incident that no record covers is computed, in minutes, and handed over as a finding the draft has to carry. The stretch before the first record gets a lower bar than the rest, deliberately: that one is not a quiet patch between two things people were doing, it is the time the incident was running and nobody had noticed, and holding it to the same threshold would hide every outage a customer found inside half an hour. "We do not know what happened between 01:55 and 02:14" is not an admission of a weak document. It is the most useful line on the page, and the check that it survived to print is arithmetic rather than a matter of taste.
Blamelessness gets the same treatment, for the same reason: saying it in a prompt is not the same as enforcing it. A postmortem that names a person as a cause is a worse document — the cause is always the system that let a normal mistake through — and it is a worse culture, because the next person who sees something going wrong keeps quiet. People still belong in the document, as the author of a quote and as the owner of an action item, so what is refused is the verdict rather than the name.
Then it ends in work. An enquiry that finishes as a document is an enquiry nobody acted on, and the reason action items die is rarely disagreement — it is that a row in a table is not on anyone's board. On approval each row becomes a ticket, linked to the incident, quoting the factor it answers. The awkward part of doing that automatically is the second run: somebody adds the log line nobody had found and redrafts, which is the tool working, and a naive version files all four follow-ups again. So each action carries a key computed from the incident and its own sentence, recorded on the ticket it created. Two drafts proposing the same action produce the same key and the second files nothing. It is a string comparison, not a model deciding whether two tickets mean the same thing — a judgement that would be made fluently, differently each time, and checkable by nobody.
What it does not do is book the review meeting. It proposes the date and says who should be there, and stops. There is no way yet to read a calendar before writing to one, and an invite sent twice is not something an apology fixes — whereas an invite nobody sent is ten seconds of work for the person who just read the document.