Project Milestone Retrospective
beta · Family process-docs · Phase iterate · Sizes lean, full · ~5,850 tokens
The document a team writes when a bounded piece of work has ended, for readers who may not have been there: what was in scope and who reads it, the factual record, what worked, what did not, what a stranger should take from it, and what changes with an owner and a date. It is terminal, and that is what separates it from its two siblings: a sprint retrospective looks back on a period, on a cadence, at how a team worked, and an incident postmortem looks back on one failure, triggered by it. Two independent named lineages publish it as a written document, the Army’s after action report and PMBOK’s lessons learned register, and the criticism aimed at it is narrower than it sounds: it attacks the unread repository, not the act of writing.
The short card. Why the document is shaped this way, and the argument behind every rule here, is in
project-milestone-retrospective_companion.md. A fully
worked instance is
project-milestone-retrospective_example.md.
This document looks back on a bounded piece of work that has ended. It is terminal: the work is over,
the team may disperse, and part of the audience was not there. That is the whole design, and it is why the
type travels under the aliases lessons learned, post-project review and after-action review.
When to use
Section titled “When to use”- A bounded piece of work has finished. A project, a migration, a pilot, a milestone with a date on it. Not a period that ended because the calendar said so, and not one thing that broke.
- Part of the audience was not in the room, and some of them never will be. This is the case the document exists for: the team scatters onto new work, and what the group knew together goes with it unless it is written down.
- You can name a reader and say what they decide with this. That is not a cover-page courtesy. In every real filled document this bundle’s research read, the answer changed the content: one federal pilot report relabelled its own findings as opportunities rather than lessons because they fed a specific decision that had not been taken yet.
- A prior review, audit, readiness gate or earlier retrospective covered this same work, and somebody needs
to know what happened to the things it raised. That is the
fullvariant’s reason for existing. - Your organisation keeps a running lessons log or register. This document is written from it at the end, not instead of it. Both major project methodologies split continuous capture from the terminal report, and this is the terminal half.
- The work is being closed formally against a baseline: scope, cost, schedule, safety record. Government
closeout templates are built this way, and
fullfollows them.
When NOT to use
Section titled “When NOT to use”Where a row below describes what you actually have, you need something else, and the something else is specific. The first three rows are the boundary this bundle exists to teach: get them wrong and you have three documents nobody can tell apart.
| What you actually have | What you need instead | Why |
|---|---|---|
| A sprint or iteration ended, on a cadence, and the same team keeps working together | sprint-retrospective-notes |
A cadence retrospective looks back on a period, at how the team worked, and its canonical output is not a document at all: Scrum’s own guide describes the improvements as changes that may travel into the next Sprint Backlog. A retro tool draws the same line from the other side, noting that sprint retrospectives happen repeatedly through a project while the project post-mortem happens once. Cadence retrospectives feed a backlog; terminal retrospectives produce a document. |
| One specific thing failed, and the question is why | incident-postmortem |
A postmortem is event-triggered causal analysis of a failure. Named sources split the two by purpose: postmortems set out to understand what went wrong, while retrospectives serve the team doing the work. Reach for the postmortem even if the project also just ended, and point at it from here rather than analysing the failure twice. |
| Nobody will open it. You cannot name a reader, a decision, or anything downstream of this document | Nothing at all, or go and find the reader first | This is the criticism this document type actually attracts, and it is narrower than it sounds. Every critic behind this bundle attacks one pattern, the repository nobody consults, and every one of them still recommends writing something down: their fix is a different kind of document with a retrieval path, never no document. The opposite failure is equally real and equally documented, engineers at a national space research centre losing failure knowledge to team turnover and fragmented documentation and explicitly wishing for a lessons database they did not have. So look for the reader before you conclude there is none. If there genuinely is none, that is a finding about your organisation, not a formatting problem. |
| Your organisation mandates a formal closeout or end-project report | This document’s content, inside that report | Both PRINCE2’s end project report and the US DOE closeout template carry lessons as one section among baseline, closeout status and archive sections. Where a closeout report is mandated, write these sections as its lessons content rather than as a competing artifact. |
| You need to run the session, not record it | A facilitation guide | The founding project-retrospective handbook describes a multi-day facilitated review, and Derby and Larsen’s five-stage model (set the stage, gather data, generate insights, decide what to do, close) describes a meeting, not a document. This file is the written record that survives the meeting, not the agenda for one. |
Pick a variant
Section titled “Pick a variant”The two sizes are two genuinely different genres, not two lengths of one reader’s need. The corpus behind this bundle split cleanly in half.
Lean (six sections) is the team-authored retrospective: Scope and Period, What Happened, What Worked, What Did Not, Lessons for Others, Actions and Owners. Short, narrative, written by the people who did the work, read by the team, its neighbours and whoever comes next. Use it by default.
Full (seven sections) is the accountability-grade report. It adds Previously Identified Issues in place, and a planned-against-actual quantification table inside What Happened. Nothing is renamed and nothing is reordered, so lean stays a strict ordered subset of full. Reach for full when any of these is true:
- money, safety or a regulator is involved;
- the reader can stop the next thing or fund it;
- a prior review of this same work exists and its findings need checking against what happened;
- the work is being closed formally against a baseline, which is the shape government closeout and post-implementation templates both use.
One honest counter-signal before you commit to either. The strongest worked retrospective this bundle’s research found uses none of these headings. It is organised entirely around the three aims the project set for itself. These sections are what the research found missing from real documents, not proof that no good retrospective was ever written without them.
Quality rubric (self-grade)
Section titled “Quality rubric (self-grade)”Score each 0, 1 or 2. Full below 14 out of 20, or lean below 13 out of 18, and you have produced the document every critic of this type describes: a record filed where nobody has a reason to open it, committing nobody to anything.
| # | Criterion | 0 | 1 | 2 |
|---|---|---|---|---|
| 1 | Checkable boundaries | The work is named but not bounded, so a later reader cannot tell what is inside this review | Dates or deliverables fix the period, but nothing is named as deliberately outside it | Start and end are fixed to dates or deliverables, and at least one thing a reader would reasonably expect is named as deliberately out of scope |
| 2 | Audience and next use named | No reader named, or the reader is an archive, a wiki space, or “the organisation” | A person or body is named, but nothing says what they do with this document | Names the person or body who opens this and the specific decision or next piece of work it feeds, concrete enough that a second person could check that decision is real and still ahead |
| 3 | Circulation settled | Nothing recorded about who can read this | Circulation is recorded, but it was settled after the discussion, or the document does not say when | States who can read this and records that the people who spoke knew it before they spoke, not after |
| 4 | Record before interpretation | What Happened argues why things went the way they did | Mostly factual, but at least one judgement is written as though it were a fact | Every line in What Happened could be checked against a system of record by someone who was not there, and every judgement waits for the two sections built to hold it |
| 5 | Something material counted | No quantity anywhere, or a number with nowhere to check it | A number is present, but in units this work was not judged on, or with no source named | At least one measure the work was actually judged on, planned against actual, with a named place a reader can go and verify it. Currency only where money is how this work was judged; a defect rate or a schedule slip counts just as much |
| 6 | Successes carry mechanism | Entries are compliments, morale words with no practice named | A specific practice is named, with no stated reason it worked | Every entry names the practice, why it worked, and what a different team would have to do to get the same result |
| 7 | Causes, not people | A person is named as the reason something failed, or the entry is too vague to act on | A cause is named, but nothing is said about what would have prevented it | Every entry names what happened, why it happened, and what would have prevented it, aimed at the decision or the system and never at a person |
| 8 | Repeats marked (full) | The section is missing or blank in work that does have a prior review | Prior issues are listed, but what was agreed is not separated from what actually happened | Each row carries the issue as the earlier document worded it, where and when it was raised so a reader can go and look, and the agreed action kept separate from the outcome. Where no prior review exists, “N/A” plus one honest line |
| 9 | Lessons for absent readers | Lessons only parse to people who were in the room | Lessons would travel, but name no audience and no change | Every lesson names who it is for and what they should do differently, and reads correctly to someone with no context on this project |
| 10 | Actions owned and dated | A bulleted intention with no name attached, or an action owned by a team | An owner and a date, but the action exists only inside this document | Every row names one person, a date, and an identifier in the tracker your team already uses, so this document does not quietly become a second, stale tracker |
Which rows apply to what.
| Document | Rows | Maximum | Score against |
|---|---|---|---|
| full | all 10 | 20 | 14 |
| lean | 1-7, 9 and 10 | 18 | 13 |
Row 8 is scored only against full. Lean ships no Previously Identified Issues section, and grading it there would penalise the choice of variant rather than the quality of the document. That row is also the one this bundle is least dogmatic about: repeat-lesson tracking was found specifically in the external-audit genre and not in the team-authored retrospectives read, so the template invites it rather than demanding it.
The test behind every cell above: could someone satisfy it without improving the document? A row that counted lessons, action items or table rows would reward padding, and a threshold that can be cleared by adding items will be cleared by adding items. Every cell instead asks whether a specific piece of evidence exists, and whether a reader who was not there could go and check it.
Named anti-patterns (the usual wrecks)
Section titled “Named anti-patterns (the usual wrecks)”- Deposit and forget. The document is written, filed in a general archive, and never consulted again. This is the single failure that the entire critical literature behind this bundle is actually about, and the named fix is never less writing: it is a retrieval path somebody has a reason to walk. One critic who titled his piece against retrospectives outright still wants them kept in a repository for trend evidence, and wants the most recent one presented at every project kickoff. Decide the retrieval path before you write, not after.
- The sanitised retrospective. A peer-reviewed study of retrospectives in large-scale agile development found that making minutes public can get real critique toned down, or removed before it is ever written down. That failure happens before the document exists, which is why circulation is a Scope and Period decision taken ahead of the discussion rather than a publishing question settled afterwards. If it must be public, say so in advance and accept that the sharpest material may need a narrower channel.
- Writing for an archive instead of a person. A document with no named reader and no next use has already lost, and a naive what-went-well / what-did-not / actions shape has no field to catch it. The opposite, done deliberately, is visible in the real filled reports: findings reframed, and the register of the whole document changed, because a specific decision was pending.
- Not writing it at all. The mirror failure, and it is just as well evidenced. At a national space research centre, engineers reported failure knowledge fragmented across a wiki, a repository and a chat channel, or simply not documented, and wanted a lessons database they did not have. The complaint that nobody reads these is a reason to fix retrieval, not a licence to skip the record when the team is about to disperse.
- Held so late that the memory and the team have both gone. The timing argument runs two ways: memory fades quickly after the outcome, and the people scatter onto new work. A retrospective held when half the contributors have moved on produces the half of the story the survivors remember.
- Corrective actions declared closed, and the same problem met again. A government audit of one agency’s project management found a long history of identifying corrective actions and declaring them successfully resolved, only to meet the same class of problem again. Previously Identified Issues exists to catch exactly this, and it is the easiest section to lose under pressure. If it is dropped, say who dropped it and why in Scope and Period rather than letting it vanish.
- Actions with no owner and no date. The
process-docsfamily’s shared failure, and this document type is where published practice is weakest: of the templates read in full for this bundle, exactly one gives an action both a responsible party and dates, and several prominent ones give neither. An action owned by a team is owned by nobody, and a document that ends in unowned intentions is a feelings log. - Scope that never leaves the team. Even inside a large multi-team programme, retrospective content stays overwhelmingly team-internal. For a cadence retrospective that is a limitation. For a terminal document whose whole point is a reader who was not there, it is fatal: Lessons for Others becomes a second copy of What Did Not, written in the team’s private vocabulary.
- Running the wrong one of the three. A cadence retrospective on work that has ended loses the
handover; a postmortem on ordinary work pathologises it; this document run on a sprint produces a
terminal report about a team that is still there on Monday. Treat this as this library’s own reasoning
rather than received practice: the
process-docsfamily contract’s own change note records that no source read frames the confusion as a documented failure mode, and named organisations deliberately use the words differently, one calling its incident process an incident review and another splitting “retrospective” into an incident type and a post-project type. Name the trigger you actually have before you pick a file.
Pairing with your process
Section titled “Pairing with your process”This bundle is the third member of the process-docs family, and the family is meant to be told apart by
trigger. A sprint retrospective is triggered by the calendar and looks back on a period, at how a team
worked. An incident postmortem is triggered by an event and looks back on one failure, at why. This document
is triggered by an ending and looks back on a bounded piece of work, for readers who may not have been
there. Name the trigger first; the file follows from it.
Around the document, three connections matter. Upstream, if your organisation keeps a running lessons
log or register, write this from it rather than in competition with it. Alongside, if a formal closeout
or end-project report is mandated, these sections are its lessons content. Downstream, every row in
Actions and Owners needs somewhere it is really tracked: the product-backlog, the risk-register or the
raid-log. Of those three, only the product-backlog, the team’s ordinary ticket tracker, reflects
published practice; the other two are this library’s own convention, and the family contract says so.
One last thing, and it is the cheapest fix for the failure this document type is criticised for. Give these documents an index. The one surveyed tool whose native retrospective artifact is a persisted page rather than a board builds that index automatically, listing every retrospective in the space, which is precisely the retrieval affordance the critics say is missing.
The artifacts
Section titled “The artifacts”project-milestone-retrospective_template-lean.md · ~5,850 tokens
---title: "{{retrospective_title}}"doc_type: project-milestone-retrospectivesize: leanproject: "{{project_name}}"author: "{{author}}"facilitator: "{{facilitator}}"status: draftdoc_version: "{{doc_version}}"created: "{{date}}"updated: "{{date}}"related_links: []source_template: project-milestone-retrospectivesource_template_version: 0.1.0---
<!--LEAN PROJECT MILESTONE RETROSPECTIVE. Six sections: what is being looked back on and who reads it, thefactual record, what worked, what did not, what a stranger should take from it, and what changes with anowner and a date. This is the team-authored genre: short, narrative, written by the people who did the work.To carry the accountability-grade depth (a Previously Identified Issues section and a quantification tableinside What Happened, see project-milestone-retrospective_template-full.md), ADD them; never rename orreorder the sections below, because the full variant is a strict superset of this one. Seeproject-milestone-retrospective_companion.md section 4 (Variants and sizing).
WHAT THIS DOCUMENT IS. It is the document a team writes when a bounded piece of work is over, for readerswho may not have been there. It is TERMINAL, and that is the whole design. Kerth's founding handbook statesthe rationale directly: "the collective team wisdom acquired during the previous project is likely to belost as individuals are scattered across the organization to support new undertakings. If, at the end of aproject, the collective wisdom is discussed and documented, it becomes knowledge that survives the breakupof the team." He adds the second reason nobody in the room can supply alone: "no one person knows all thestories, and no one person knows how the pieces fit together to tell the tale of the entire project." Seeproject-milestone-retrospective_companion.md section 1 (Orientation).
THIS IS NOT A SPRINT RETROSPECTIVE, AND IT IS NOT AN INCIDENT POSTMORTEM. Those are the two siblings in thisfamily, and if a reader cannot tell the three apart, this document has failed. - A sprint retrospective looks back on a PERIOD, on a CADENCE, at how a team worked. Its canonical output is not a document at all: the Scrum Guide says the improvements "may even be added to the Sprint Backlog for the next Sprint." A retro tool draws the same line from the other side: "sprint retrospectives take place multiple times at a regular cadence throughout the course of a project. But the project post-mortem only takes place once." If the trigger is the calendar and the audience is a team that keeps working together, use sprint-retrospective-notes instead. - An incident postmortem is EVENT-TRIGGERED learning about one specific failure. As one vendor puts it, "Post-mortems attempt to understand what went wrong," while "Retrospectives, on the other hand, primarily engage and serve the team doing the work." If a specific thing failed and the question is why, use incident-postmortem, even if the project also just ended. See project-milestone-retrospective_companion.md section 8 (Relationships to other artifacts).
WHERE THE WRITTEN DOCUMENT IS ADMITTED, AND ONE CITATION TRAP. Two independent named lineages publish thisas a document. The Center for Army Lessons Learned, the Army's own lessons-learned proponent, names itseparately from the meeting: "After action report: A written report that is typically submitted after atraining, combat operation, or other mission that normally documents a unit's actions for historicalpurposes but also provides key observations and LL." PMI's PMBOK Guide Sixth Edition lists "Lessons learnedregister" as the first named output of process 4.4, Manage Project Knowledge. THE TRAP: the Army's older andbetter known TC 25-20 (1993) defines the AAR as a conversation, "An AAR is a dynamic, candid, professionaldiscussion of training which focuses on unit performance against the Army standard for the tasks beingtrained," and insists "An AAR is not a critique." Anyone citing TC 25-20 for a written after action reportis citing the wrong document. The PMBOK Guide's Eighth Edition restructured away from named artifacts, sothe register is cited here from the Sixth Edition and labelled as such. Seeproject-milestone-retrospective_companion.md sections 2 and 6.
THE CRITICISM OF THIS DOCUMENT TYPE IS REAL, AND NARROWER THAN IT SOUNDS. Every critic in this bundle'sresearch attacks one specific pattern. A PMI congress paper describes lessons that "get lost in some sort of'lessons learned database' - as in, a 'black hole' (Dalton, 2013) - that nobody ever looks at"; aknowledge-management authority reports that "all those repositories of lessons learned that we built in theearly days of KM just didn't work very well and lessons learned took on a bad name within organizations"; aconsultant titles his piece against retrospectives outright. AND EVERY ONE OF THEM STILL RECOMMENDS WRITINGSOMETHING DOWN. That same consultant argues these "should be kept in a repository so they can be used tolook at trends and provide evidence of improvement over time." The discriminator is whether retrieval iswired into somebody's workflow, so the honest framing is anti-deposit-and-forget, not anti-documentation.It is also why Scope and Period asks who reads this and what they decide with it before anything else. Theopposite failure is just as real: a 2026 study of engineers at a national space research centre found"knowledge loss due to team turnover & fragmented documentation," with practitioners reporting of failureknowledge that "I don't think they are documented, pretty much at all." Seeproject-milestone-retrospective_companion.md section 6 (Debates and contested boundaries).
HOW TO FILL THIS IN1. Read the comment under each heading: WHAT it wants, WHY it matters (with a pointer into project-milestone-retrospective_companion.md), guiding questions to ASK, a GOOD and a WEAK example, and the TRAP to avoid. For tables, PRIORITY explains the ordering rule and ROW HINT says what a good row contains.2. Replace each {{placeholder}} with your content. Fill Scope and Period first, and decide the circulation of this document BEFORE the discussion, not after: one peer-reviewed study of retrospectives found that "Having minutes public could also lead to critique being toned down or removed completely," which is a cost you pay before a word is written.3. If a section does not apply, write "N/A" and one line of why, rather than deleting it silently.4. Before you share it: self-grade against project-milestone-retrospective_guide.md, then DELETE every HTML comment. They are guidance, not content.-->
# {{retrospective_title}}
## Scope and Period
<!-- WHAT Two things in one section: what is being looked back on and where its boundaries fall, and who reads this document and what they decide with it. WHY The first half is what stops this document, a sprint retrospective and an incident postmortem blurring into each other, and it has direct template attestation: ITU gives Scope of Review its own numbered section, where "The paragraph provides a clear explanation of the scope of the review," and the VA's after action review template records whether the review ran during the project or after project completion. The second half is this bundle's strongest evidence-driven departure from the obvious shape. Naming the audience changed the CONTENT of every real filled document this research read, not just its cover page: the IRS relabelled its own findings, "We have labeled these lessons opportunities, because they will help both improve the tax filing ecosystem and inform the decision about Direct File's future." A naive what-went-well/what-did-not/actions shape has no field for that at all. Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > Scope and Period). ASK What exactly is being reviewed, as dates and deliverables rather than as a mood, and what is deliberately outside it? Who opens this document, and what are they about to decide with it? Who will be able to read it, and did everyone know that before they spoke? Who contributed, and who had already moved on and could not be reached? GOOD "Work reviewed: the Larkspur payroll migration, contract signature to the first unassisted pay run (2026-01-12 to 2026-09-04), across all nine Northwind depots. Deliberately outside this review: the benefits module, which has not started. Who reads this: Marta Ilves and the programme board. What they decide with it: whether the benefits module reuses this vendor and the depot-by-depot rollout, at the November board. Circulation: the board and the delivery team, agreed before the session." WEAK "A retrospective on the payroll project. All feedback welcome." (no boundary a later reader can check, no named reader, no decision this feeds, and no circulation agreed, so nobody in the room knew how freely they could speak) TRAP Treating the audience line as a cover-page courtesy. If you cannot name a reader or a next use, that is a finding rather than a formatting problem: it is the exact condition every critic of this document type describes, a document written into a repository nobody has a reason to open. Decide whether to find the reader or to stop writing. -->
**Work reviewed:** {{work_reviewed}}**Period:** {{period_start}} to {{period_end}}**Deliberately outside this review:** {{out_of_scope}}**Who reads this:** {{primary_audience}}**What they decide with it:** {{next_use}}**Circulation, agreed before the discussion:** {{circulation}}**Who contributed, and who could not be reached:** {{contributors}}
## What Happened
<!-- WHAT The factual record, kept separate from interpretation, and quantified wherever something material can be counted. WHY Published templates separate fact from judgement structurally: the DOE closeout report holds baseline and closeout status in their own numbered sections and puts narrative lessons in another, and ITU keeps Results Achievement, Financial Status, Findings and Lessons Learned as four separate sections. The Kubernetes Storage SIG retrospective opens by saying the record IS the job: "This document is intended to chronicle the decisions made by the Storage SIG near the end of the Kubernetes 1.3 release with the storage stack that were not well understood by the wider community." Note the limit this research found on quantification. Three government sources lead with money, but the Kubernetes retrospective quantifies engineering quantities instead instead, so the rule is quantify something MATERIAL, not quantify in currency. Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > What Happened). ASK What would a reader be able to verify from a system of record, as distinct from what the team believes about it? What was this work actually judged on, and what is the planned-against-actual number for it? If the only number available is elapsed time, can you say so rather than manufacturing a metric to fill the line? GOOD "Larkspur replaced a fourteen-year-old payroll system for 3,400 staff across nine depots. Planned go-live was 2026-06-30; the first unassisted pay run was 2026-09-04, a slip of nine weeks. Two full parallel pay cycles ran before cutover. Quantified: 41 discrepancies across 6,800 parallel payslips in cycle one and 4 in cycle two, all closed before cutover." WEAK "The migration was hard but we got there in the end, and the team pulled together." (no dates, no counts, nothing a reader could check against a system of record, and the interpretation has already crowded out the facts) TRAP Letting judgement leak into the record. *A key engineer left one week before code freeze* is a fact; *we were under-resourced* is an interpretation, and it belongs in What Did Not. The Kubernetes retrospective is a good model because it keeps the two in separate sentences. -->
{{what_happened}}
**Quantified:** {{material_measure}}
## What Worked
<!-- WHAT What actually went well, why it went well, and how somebody else would do it on purpose. WHY This is the half of the retrospective shape every genre in this research carries. The VA's after action review template pairs a what-went-well-and-why table with a second column asking how to ensure that success in future, and the HSEEP after action report opens its executive summary with major strengths. The third column exists because this document is terminal: a strength with no mechanism attached is a compliment, and a compliment does not transfer to a reader who was not there. Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > What Worked). ASK Is each row a specific practice rather than a mood? Does it say WHY the practice worked, not only that something went well? Could a stranger copy the third column into their own project without asking anyone here a follow-up question? PRIORITY Put the practices most likely to transfer to other work first. Rows that only made sense for this team, this quarter, belong lower or not at all. ROW HINT A good row names one practice, the mechanism that made it work, and a repeatable instruction. A weak row is a compliment with no mechanism behind it. GOOD | Two full parallel pay cycles before cutover | The second cycle caught four discrepancies the first had masked, because cycle one's fixes changed the data cycle two ran on | Budget two parallel cycles rather than one, and treat the second as a fresh test rather than a re-run | WEAK | Great team | Everyone worked really hard | Keep it up | TRAP Writing the mood rather than the practice. "Morale stayed high" is not something a reader who was not there can do anything with; "a daily one-line status went to all nine depot managers" is. -->
| What worked | Why it worked | How someone else repeats it ||---|---|---|| {{worked_item}} | {{worked_reason}} | {{worked_repeat}} |
## What Did Not
<!-- WHAT What went wrong or fell short, with enough analysis that a reader can tell a cause from a symptom. WHY The same cross-genre attestation as What Worked: the VA template pairs a what-can-be-improved table with a recommendations column, and HSEEP asks each observation to be labelled explicitly, "Begin this section with a heading indicating whether the observation is a 'Strength' or an 'Area for Improvement.'" The Kubernetes retrospective shows what a good entry reads like, separating the fact, "Near the end of 1.3 development, on May 13, 2016, approximately one week prior to code freeze, a key engineer for this effort left the project," from the judgement, "In the decision to move forward with coding beyond code freeze, not enough thought was invested in what could go wrong or how to mitigate that." Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > What Did Not). ASK For each row, is the middle column a cause or just a restatement of the symptom? Would the third column actually have prevented this, or does it only describe noticing it sooner? Is anything here softened because of who will read the document? PRIORITY Order by what cost the most, in money, time, or trust, rather than by what the room felt most strongly about. ROW HINT A good row names one shortfall, one cause a reader could act on, and one preventive change. A weak row names a category, a feeling, or a person. GOOD | Depot data cleansing started after the build, not before | Nobody owned data readiness until the first parallel cycle exposed it, because the contract put cleansing in the depots' scope and no depot had capacity for it | Name a single data-readiness owner at contract signature and gate the build start on a sampled record quality check | WEAK | Data was a mess | The depots let us down | Do better next time | TRAP Softening this section because of who will read it. A peer-reviewed study of retrospectives found that "Having minutes public could also lead to critique being toned down or removed completely." That damage happens before the document exists, which is why circulation is a Scope and Period decision rather than a publishing one. If the sharpest material genuinely cannot be circulated, say in Scope and Period that a narrower account exists and who holds it, rather than letting this version imply it is the whole story. -->
| What did not work | Why it happened | What would have prevented it ||---|---|---|| {{shortfall_item}} | {{shortfall_cause}} | {{shortfall_prevention}} |
## Lessons for Others
<!-- WHAT The terminal-handover section. Its entire reason for existing is a reader who was not there. WHY This is where the two admission lineages converge. CALL states that one of the two key purposes of a written after action report is to "provide best practices and lessons in the observation-discussion-recommendation format that can be used to inform the Army's LL program." The VA template adds an explicit sharing step, "Share the AAR report with your project sponsor or other appropriate leader in your facility, VISN or national VHA offices," and says where the value lands: "The greatest benefit of an AAR comes from applying the lessons learned to future work and teams." ITU asks the transferability question on the page: "Could these lessons be utilized as best practices in other Regions?" Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > Lessons for Others). ASK Does each lesson parse for somebody with no context on this project? Who specifically is it for, by role or by team, rather than "the organisation"? Is any of this a lesson your organisation already had and did not act on, and if so, does the row say so plainly? PRIORITY Lead with the lessons that transfer furthest from this project. A lesson only the next team on this same system can use goes lower. ROW HINT A good row is a sentence a stranger could act on, a named audience, and a concrete change. A weak row only parses to people who were in the room. A row that records something the organisation already knew and did not act on is worth writing, and should say so in the lesson itself; the full variant gives that its own section. GOOD | On a phased rollout, source-data quality sets the schedule rather than being a prerequisite to it | Whoever runs the benefits module, and any programme rolling out site by site | Gate each phase's build start on a sampled record quality check owned by one named person | WEAK | Communication could have been better | Everyone | Communicate more | TRAP Letting this section crowd out the part of the exercise that helps the people who lived it. A knowledge-management authority is blunt that "The greatest value of lessons learned is for those who took the action," and transfer to strangers is the harder and weaker claim. Write this section anyway, because it is what makes the document terminal rather than ceremonial, but do not let a lesson get vaguer as it gets more general. -->
| Lesson | Who it is for | What to do differently ||---|---|---|| {{lesson}} | {{lesson_audience}} | {{lesson_action}} |
## Actions and Owners
<!-- WHAT What changes, who owns each change, by when, and where it is tracked. With owners and dates, or it is a feelings log. WHY This is the process-docs family's shared obligation, and it is also the section where published practice is weakest, which this template says out loud. Of the templates this research read in full, exactly one gives an action both an owner and dates: HSEEP's Improvement Plan Matrix, whose columns run "Capability | Observation Title | Recommendation | Corrective Action Description | Capability Element | Primary Responsible Agency | Agency POC | Start Date | Completion Date." The VA template carries no owner or due-date field, ITU's Recommendations section offers only that "Priorities will be identified for the implementation of recommendations," and a reference describing PRINCE2's Lessons Log states the gap directly: "The document does not specify an 'owner' field." So this section is the library's own insistence, backed by one published template and by the family contract, not a majority convention. HSEEP also puts its matrix in an APPENDIX, separate from the narrative, which is a real design signal: the narrative is for readers, the tracker is for tracking. Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > Actions and Owners). ASK Does every row name one person rather than a team? Does every row have a date? Does the work already exist in the tracker your organisation actually uses, and is its identifier in the row? If this project is closing, who inherits an action whose owner is about to move on? PRIORITY List the actions that must survive the team's dispersal first. An action nobody will be around to do needs a new owner, not a lower place in the list. ROW HINT A good row names one checkable change, one named person, one date, and a tracker identifier that lets the tracker own the status. A weak row is an intention with no owner and no destination. GOOD | Name a data-readiness owner in the benefits module statement of work before build start | Tobi Adeyemi | 2026-10-17 | NWL-3312 | WEAK | Improve data quality | The programme team | Soon | (no person, no date and no destination, so nothing here outlives the meeting that produced it) TRAP Letting this document become a second, stale tracker. Put the identifier in the row and let the system own the status. This library's family contract also allows actions to land in the product-backlog, the risk-register or the raid-log; of those, only the ordinary ticket tracker reflects published practice, and the other two are this library's own convention rather than received retrospective practice. -->
| Action | Owner | Due | Tracked in ||---|---|---|---|| {{action}} | {{action_owner}} | {{action_due}} | {{action_tracked_in}} |project-milestone-retrospective_template-full.md · ~7,200 tokens
---title: "{{retrospective_title}}"doc_type: project-milestone-retrospectivesize: fullproject: "{{project_name}}"author: "{{author}}"facilitator: "{{facilitator}}"status: draftdoc_version: "{{doc_version}}"created: "{{date}}"updated: "{{date}}"related_links: []source_template: project-milestone-retrospectivesource_template_version: 0.1.0---
<!--FULL PROJECT MILESTONE RETROSPECTIVE. Everything the lean variant carries, in the same order and under thesame names, plus exactly two additions: a Previously Identified Issues section inserted between What Did Notand Lessons for Others, and a quantification table inside What Happened in place of the lean variant'ssingle quantified line. Nothing is renamed or reordered, so lean remains a strict ordered subset and adocument can grow from lean to full in place: move the lean variant's quantified line into the first row ofthe table, and add the new section. See project-milestone-retrospective_companion.md section 4.
THE TWO SIZES ARE TWO GENUINE GENRES, NOT TWO LENGTHS. The filled and blank documents this bundle's researchread split cleanly. Team-authored retrospectives are short, narrative and internal, written by the peoplewho did the work; accountability-grade reports are long, quantified, addressed to a named recipient, andstructurally track what a previous review already said. Lean serves the first. Full serves the second.REACH FOR FULL when money, safety or a regulator is involved; when the document will be read by someone whocan stop or fund the next thing; when there is a prior review of the same work whose findings need checking;or when the work is being closed formally against a baseline, which is the shape both the DOE closeoutreport and ITU's post implementation review template take. Seeproject-milestone-retrospective_companion.md section 4 (Variants and sizing) and section 9 (Adaptations).
WHAT THIS DOCUMENT IS. It is the document a team writes when a bounded piece of work is over, for readerswho may not have been there. It is TERMINAL, and that is the whole design. Kerth's founding handbook statesthe rationale directly: "the collective team wisdom acquired during the previous project is likely to belost as individuals are scattered across the organization to support new undertakings. If, at the end of aproject, the collective wisdom is discussed and documented, it becomes knowledge that survives the breakupof the team." He adds the second reason nobody in the room can supply alone: "no one person knows all thestories, and no one person knows how the pieces fit together to tell the tale of the entire project." Seeproject-milestone-retrospective_companion.md section 1 (Orientation).
THIS IS NOT A SPRINT RETROSPECTIVE, AND IT IS NOT AN INCIDENT POSTMORTEM. Those are the two siblings in thisfamily, and if a reader cannot tell the three apart, this document has failed. - A sprint retrospective looks back on a PERIOD, on a CADENCE, at how a team worked. Its canonical output is not a document at all: the Scrum Guide says the improvements "may even be added to the Sprint Backlog for the next Sprint." A retro tool draws the same line from the other side: "sprint retrospectives take place multiple times at a regular cadence throughout the course of a project. But the project post-mortem only takes place once." If the trigger is the calendar and the audience is a team that keeps working together, use sprint-retrospective-notes instead. - An incident postmortem is EVENT-TRIGGERED learning about one specific failure. As one vendor puts it, "Post-mortems attempt to understand what went wrong," while "Retrospectives, on the other hand, primarily engage and serve the team doing the work." If a specific thing failed and the question is why, use incident-postmortem, even if the project also just ended. See project-milestone-retrospective_companion.md section 8 (Relationships to other artifacts).
WHERE THE WRITTEN DOCUMENT IS ADMITTED, AND ONE CITATION TRAP. Two independent named lineages publish thisas a document. The Center for Army Lessons Learned, the Army's own lessons-learned proponent, names itseparately from the meeting: "After action report: A written report that is typically submitted after atraining, combat operation, or other mission that normally documents a unit's actions for historicalpurposes but also provides key observations and LL." PMI's PMBOK Guide Sixth Edition lists "Lessons learnedregister" as the first named output of process 4.4, Manage Project Knowledge. THE TRAP: the Army's older andbetter known TC 25-20 (1993) defines the AAR as a conversation, "An AAR is a dynamic, candid, professionaldiscussion of training which focuses on unit performance against the Army standard for the tasks beingtrained," and insists "An AAR is not a critique." Anyone citing TC 25-20 for a written after action reportis citing the wrong document. The PMBOK Guide's Eighth Edition restructured away from named artifacts, sothe register is cited here from the Sixth Edition and labelled as such. Seeproject-milestone-retrospective_companion.md sections 2 and 6.
THE CRITICISM OF THIS DOCUMENT TYPE IS REAL, AND NARROWER THAN IT SOUNDS. Every critic in this bundle'sresearch attacks one specific pattern. A PMI congress paper describes lessons that "get lost in some sort of'lessons learned database' - as in, a 'black hole' (Dalton, 2013) - that nobody ever looks at"; aknowledge-management authority reports that "all those repositories of lessons learned that we built in theearly days of KM just didn't work very well and lessons learned took on a bad name within organizations"; aconsultant titles his piece against retrospectives outright. AND EVERY ONE OF THEM STILL RECOMMENDS WRITINGSOMETHING DOWN. That same consultant argues these "should be kept in a repository so they can be used tolook at trends and provide evidence of improvement over time." The discriminator is whether retrieval iswired into somebody's workflow, so the honest framing is anti-deposit-and-forget, not anti-documentation.It is also why Scope and Period asks who reads this and what they decide with it before anything else. Theopposite failure is just as real: a 2026 study of engineers at a national space research centre found"knowledge loss due to team turnover & fragmented documentation," with practitioners reporting of failureknowledge that "I don't think they are documented, pretty much at all." Seeproject-milestone-retrospective_companion.md section 6 (Debates and contested boundaries).
HOW TO FILL THIS IN1. Read the comment under each heading: WHAT it wants, WHY it matters (with a pointer into project-milestone-retrospective_companion.md), guiding questions to ASK, a GOOD and a WEAK example, and the TRAP to avoid. For tables, PRIORITY explains the ordering rule and ROW HINT says what a good row contains.2. Replace each {{placeholder}} with your content. Fill Scope and Period first, and decide the circulation of this document BEFORE the discussion, not after: one peer-reviewed study of retrospectives found that "Having minutes public could also lead to critique being toned down or removed completely," which is a cost you pay before a word is written.3. If a section does not apply, write "N/A" and one line of why, rather than deleting it silently. That applies squarely to Previously Identified Issues: a genuinely first-of-its-kind project has no prior review to check against, and "N/A, no prior review of this work exists" is a better answer than an invented row.4. Before you share it: self-grade against project-milestone-retrospective_guide.md, then DELETE every HTML comment. They are guidance, not content.-->
# {{retrospective_title}}
## Scope and Period
<!-- WHAT Two things in one section: what is being looked back on and where its boundaries fall, and who reads this document and what they decide with it. WHY The first half is what stops this document, a sprint retrospective and an incident postmortem blurring into each other, and it has direct template attestation: ITU gives Scope of Review its own numbered section, where "The paragraph provides a clear explanation of the scope of the review," and the VA's after action review template records whether the review ran during the project or after project completion. The second half is this bundle's strongest evidence-driven departure from the obvious shape. Naming the audience changed the CONTENT of every real filled document this research read, not just its cover page: the IRS relabelled its own findings, "We have labeled these lessons opportunities, because they will help both improve the tax filing ecosystem and inform the decision about Direct File's future." GAO-19-25 is literally an addressed letter. A naive what-went-well/what-did-not/actions shape has no field for any of this. Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > Scope and Period). ASK What exactly is being reviewed, as dates and deliverables rather than as a mood, and what is deliberately outside it? Who opens this document, and what are they about to decide with it? Who will be able to read it, and did everyone know that before they spoke? Who contributed, and who had already moved on and could not be reached? GOOD "Work reviewed: the Larkspur payroll migration, contract signature to the first unassisted pay run (2026-01-12 to 2026-09-04), across all nine Northwind depots. Deliberately outside this review: the benefits module, which has not started. Who reads this: Marta Ilves and the programme board. What they decide with it: whether the benefits module reuses this vendor and the depot-by-depot rollout, at the November board. Circulation: the board and the delivery team, agreed before the session." WEAK "A retrospective on the payroll project. All feedback welcome." (no boundary a later reader can check, no named reader, no decision this feeds, and no circulation agreed, so nobody in the room knew how freely they could speak) TRAP Treating the audience line as a cover-page courtesy. If you cannot name a reader or a next use, that is a finding rather than a formatting problem: it is the exact condition every critic of this document type describes, a document written into a repository nobody has a reason to open. Decide whether to find the reader or to stop writing. -->
**Work reviewed:** {{work_reviewed}}**Period:** {{period_start}} to {{period_end}}**Deliberately outside this review:** {{out_of_scope}}**Who reads this:** {{primary_audience}}**What they decide with it:** {{next_use}}**Circulation, agreed before the discussion:** {{circulation}}**Who contributed, and who could not be reached:** {{contributors}}
## What Happened
<!-- WHAT The factual record, kept separate from interpretation, plus the quantification table: the two or three measures this work was actually judged on, planned against actual. WHY Published templates separate fact from judgement structurally: the DOE closeout report holds baseline and closeout status in their own numbered sections and puts narrative lessons in another, and ITU keeps Results Achievement, Financial Status, Findings and Lessons Learned as four separate sections. The Kubernetes Storage SIG retrospective opens by saying the record IS the job: "This document is intended to chronicle the decisions made by the Storage SIG near the end of the Kubernetes 1.3 release with the storage stack that were not well understood by the wider community." The table is the full variant's addition because the accountability genre leads with numbers and states plainly what they are for: DOE's closeout template says "The purpose for this request is to allow other projects to use historical cost data of a completed project." Note the limit this research found. Three government sources lead with money, but the Kubernetes retrospective quantifies engineering quantities and not money, and a schedule slip instead, so the rule is quantify something MATERIAL, not quantify in currency; demanding dollars would overfit this document to public-money accountability. Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > What Happened). ASK What would a reader be able to verify from a system of record, as distinct from what the team believes about it? What two or three measures was this work actually judged on? For each, what was the baseline and what actually happened? If the only number available is elapsed time, can you say so rather than manufacturing a metric to fill a row? PRIORITY Put the measure the work was commissioned against first, whether that is cost, date, or a quality threshold. Measures the team found interesting go below the measures the sponsor will check. ROW HINT A good row names one measure, its planned value, its actual value, and the system a reader could open to check it. A weak row has a number with no baseline, or a baseline nobody can locate. GOOD | Parallel-run discrepancy rate | Under 10 per cycle before cutover | 41 in cycle one, 4 in cycle two | Payroll parallel-run log, cycles 1 and 2 | WEAK | Quality | Good | Mostly fine | (no baseline, no actual, and nothing a reader can open) TRAP Letting judgement leak into the record. *A key engineer left one week before code freeze* is a fact; *we were under-resourced* is an interpretation, and it belongs in What Did Not. The Kubernetes retrospective is a good model because it keeps the two in separate sentences. -->
{{what_happened}}
| Measure | Planned | Actual | Where a reader can check it ||---|---|---|---|| {{measure_name}} | {{measure_planned}} | {{measure_actual}} | {{measure_source}} |
## What Worked
<!-- WHAT What actually went well, why it went well, and how somebody else would do it on purpose. WHY This is the half of the retrospective shape every genre in this research carries. The VA's after action review template pairs a what-went-well-and-why table with a second column asking how to ensure that success in future, and the HSEEP after action report opens its executive summary with major strengths. The third column exists because this document is terminal: a strength with no mechanism attached is a compliment, and a compliment does not transfer to a reader who was not there. Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > What Worked). ASK Is each row a specific practice rather than a mood? Does it say WHY the practice worked, not only that something went well? Could a stranger copy the third column into their own project without asking anyone here a follow-up question? PRIORITY Put the practices most likely to transfer to other work first. Rows that only made sense for this team, this quarter, belong lower or not at all. ROW HINT A good row names one practice, the mechanism that made it work, and a repeatable instruction. A weak row is a compliment with no mechanism behind it. GOOD | Two full parallel pay cycles before cutover | The second cycle caught four discrepancies the first had masked, because cycle one's fixes changed the data cycle two ran on | Budget two parallel cycles rather than one, and treat the second as a fresh test rather than a re-run | WEAK | Great team | Everyone worked really hard | Keep it up | TRAP Writing the mood rather than the practice. "Morale stayed high" is not something a reader who was not there can do anything with; "a daily one-line status went to all nine depot managers" is. -->
| What worked | Why it worked | How someone else repeats it ||---|---|---|| {{worked_item}} | {{worked_reason}} | {{worked_repeat}} |
## What Did Not
<!-- WHAT What went wrong or fell short, with enough analysis that a reader can tell a cause from a symptom. WHY The same cross-genre attestation as What Worked: the VA template pairs a what-can-be-improved table with a recommendations column, and HSEEP asks each observation to be labelled explicitly, "Begin this section with a heading indicating whether the observation is a 'Strength' or an 'Area for Improvement.'" The Kubernetes retrospective shows what a good entry reads like, separating the fact, "Near the end of 1.3 development, on May 13, 2016, approximately one week prior to code freeze, a key engineer for this effort left the project," from the judgement, "In the decision to move forward with coding beyond code freeze, not enough thought was invested in what could go wrong or how to mitigate that." Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > What Did Not). ASK For each row, is the middle column a cause or just a restatement of the symptom? Would the third column actually have prevented this, or does it only describe noticing it sooner? Is anything here softened because of who will read the document? PRIORITY Order by what cost the most, in money, time, or trust, rather than by what the room felt most strongly about. ROW HINT A good row names one shortfall, one cause a reader could act on, and one preventive change. A weak row names a category, a feeling, or a person. GOOD | Depot data cleansing started after the build, not before | Nobody owned data readiness until the first parallel cycle exposed it, because the contract put cleansing in the depots' scope and no depot had capacity for it | Name a single data-readiness owner at contract signature and gate the build start on a sampled record quality check | WEAK | Data was a mess | The depots let us down | Do better next time | TRAP Softening this section because of who will read it. A peer-reviewed study of retrospectives found that "Having minutes public could also lead to critique being toned down or removed completely." That damage happens before the document exists, which is why circulation is a Scope and Period decision rather than a publishing one. If the sharpest material genuinely cannot be circulated, say in Scope and Period that a narrower account exists and who holds it, rather than letting this version imply it is the whole story. -->
| What did not work | Why it happened | What would have prevented it ||---|---|---|| {{shortfall_item}} | {{shortfall_cause}} | {{shortfall_prevention}} |
## Previously Identified Issues
<!-- WHAT The things this retrospective is finding AGAIN: problems already named in an earlier review, and what actually happened to the corrective actions that were supposed to close them. WHY This is the defining section of the accountability-grade genre, and it is full-only for an honest reason. GAO-19-25 names the pattern directly, reporting that "NNSA has had a long history of identifying corrective actions and declaring them successfully resolved, only to identify additional" problems of the same kind. The National Audit Office's report on the Emergency Services Network is built on it mechanically, marking the repeat in its own words: "How the ESN service will be governed and managed when it is a live service is still not clear, although we identified this risk in our report in 2016." The IRS does the same inside a self-authored document: "Each of the next three sections reassesses an operational challenge identified in the Report to Congress." THE LIMIT, STATED PLAINLY: this research found repeat-lesson tracking specifically in the external-audit genre and NOT in the team-authored retrospectives it read, which is why this section invites the content rather than demanding it. Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > Previously Identified Issues). ASK Is there a prior retrospective, readiness review, audit or assurance report covering this work? For each thing it raised, what was agreed, and what actually happened? Which of these is being found again right now, and does What Did Not repeat it without saying it is a repeat? If nothing prior exists, have you written "N/A" and one line rather than inventing a row? PRIORITY Put the issues that were declared closed and were not first. An issue everyone knew was still open is a smaller finding than one somebody signed off. ROW HINT A good row quotes the issue as the earlier document actually worded it, says where and when it was raised so a reader can go and look, and separates what was agreed from what happened. A weak row paraphrases the old issue into the new one and hides the fact that it is the same problem. GOOD | "Depot record quality is not baselined and is a delivery risk" | Phase 1 readiness review, 2026-02-20, item 4 | Each depot to sample 200 records before build start | Three of nine depots sampled; the gate was waived in March to hold the go-live date | Recurred, and now reported again in What Did Not | WEAK | Data quality | Earlier | It was looked at | Fixed | (nothing checkable, and "fixed" is the claim the whole section exists to test) TRAP Quietly dropping this section because filling it is uncomfortable. It is the easiest of the seven to lose under pressure, and losing it is precisely the failure GAO describes. If your organisation decides to remove it, say who removed it and why in Scope and Period rather than letting it vanish. -->
| Issue, as it was written then | Where and when it was raised | Action that was agreed | What actually happened | Status now ||---|---|---|---|---|| {{prior_issue}} | {{prior_issue_raised}} | {{prior_issue_action}} | {{prior_issue_outcome}} | {{prior_issue_status}} |
## Lessons for Others
<!-- WHAT The terminal-handover section. Its entire reason for existing is a reader who was not there. WHY This is where the two admission lineages converge. CALL states that one of the two key purposes of a written after action report is to "provide best practices and lessons in the observation-discussion-recommendation format that can be used to inform the Army's LL program." The VA template adds an explicit sharing step, "Share the AAR report with your project sponsor or other appropriate leader in your facility, VISN or national VHA offices," and says where the value lands: "The greatest benefit of an AAR comes from applying the lessons learned to future work and teams." ITU asks the transferability question on the page: "Could these lessons be utilized as best practices in other Regions?" Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > Lessons for Others). ASK Does each lesson parse for somebody with no context on this project? Who specifically is it for, by role or by team, rather than "the organisation"? Where a lesson is one your organisation already had, is it recorded as a repeat in Previously Identified Issues rather than presented here as new? PRIORITY Lead with the lessons that transfer furthest from this project. A lesson only the next team on this same system can use goes lower. ROW HINT A good row is a sentence a stranger could act on, a named audience, and a concrete change. A weak row only parses to people who were in the room, or quietly re-presents a known problem as a discovery; that one belongs in Previously Identified Issues. GOOD | On a phased rollout, source-data quality sets the schedule rather than being a prerequisite to it | Whoever runs the benefits module, and any programme rolling out site by site | Gate each phase's build start on a sampled record quality check owned by one named person | WEAK | Communication could have been better | Everyone | Communicate more | TRAP Letting this section crowd out the part of the exercise that helps the people who lived it. A knowledge-management authority is blunt that "The greatest value of lessons learned is for those who took the action," and transfer to strangers is the harder and weaker claim. Write this section anyway, because it is what makes the document terminal rather than ceremonial, but do not let a lesson get vaguer as it gets more general. -->
| Lesson | Who it is for | What to do differently ||---|---|---|| {{lesson}} | {{lesson_audience}} | {{lesson_action}} |
## Actions and Owners
<!-- WHAT What changes, who owns each change, by when, and where it is tracked. With owners and dates, or it is a feelings log. WHY This is the process-docs family's shared obligation, and it is also the section where published practice is weakest, which this template says out loud. Of the templates this research read in full, exactly one gives an action both an owner and dates: HSEEP's Improvement Plan Matrix, whose columns run "Capability | Observation Title | Recommendation | Corrective Action Description | Capability Element | Primary Responsible Agency | Agency POC | Start Date | Completion Date." The VA template carries no owner or due-date field, ITU's Recommendations section offers only that "Priorities will be identified for the implementation of recommendations," and a reference describing PRINCE2's Lessons Log states the gap directly: "The document does not specify an 'owner' field." So this section is the library's own insistence, backed by one published template and by the family contract, not a majority convention. HSEEP also puts its matrix in an APPENDIX, separate from the narrative, which is a real design signal: the narrative is for readers, the tracker is for tracking. Deep dive: project-milestone-retrospective_companion.md section 3 (Anatomy > Actions and Owners). ASK Does every row name one person rather than a team? Does every row have a date? Does the work already exist in the tracker your organisation actually uses, and is its identifier in the row? If this project is closing, who inherits an action whose owner is about to move on? PRIORITY List the actions that must survive the team's dispersal first. An action nobody will be around to do needs a new owner, not a lower place in the list. ROW HINT A good row names one checkable change, one named person, one date, and a tracker identifier that lets the tracker own the status. A weak row is an intention with no owner and no destination. GOOD | Name a data-readiness owner in the benefits module statement of work before build start | Tobi Adeyemi | 2026-10-17 | NWL-3312 | WEAK | Improve data quality | The programme team | Soon | (no person, no date and no destination, so nothing here outlives the meeting that produced it) TRAP Letting this document become a second, stale tracker. Put the identifier in the row and let the system own the status. This library's family contract also allows actions to land in the product-backlog, the risk-register or the raid-log; of those, only the ordinary ticket tracker reflects published practice, and the other two are this library's own convention rather than received retrospective practice. -->
| Action | Owner | Due | Tracked in ||---|---|---|---|| {{action}} | {{action_owner}} | {{action_due}} | {{action_tracked_in}} |project-milestone-retrospective_example.md
---title: "Reporting Platform Modernization: Close-Out Retrospective"doc_type: project-milestone-retrospectivesize: fullproject: "Reporting Platform Modernization (Acme Analytics)"author: "Marta Reyes (Program Manager)"facilitator: "Ravi Menon (PMO; not a member of the programme)"status: "final"doc_version: "1.0.0"created: "2026-10-09"updated: "2026-10-09"related_links: - "../kpi-dashboard/kpi-dashboard_example.md (programme KPI dashboard; the planned column of every measure below is read from it)" - "../risk-register/risk-register_example.md (programme risk register; R-01, R-02, R-04, R-05, R-06 and the appetite lines this document scores against)" - "../raid-log/raid-log_example.md (programme RAID log; ISS-11, ISS-12, A-02, D-01 and D-02)" - "../status-report/status-report_example.md (the 14-28 July fortnightly report to the same steering group; the last one before close is its successor)" - "../incident-postmortem/incident-postmortem_example.md (DEF-2291; named here as an event and deliberately not re-analysed)" - "../sprint-retrospective-notes/sprint-retrospective-notes_example.md (Sprint 24 retrospective; a cadence review of how one squad worked, which is a different document doing a different job)" - "../product-backlog/product-backlog_example.md (Saved Views product backlog; where two actions below are tracked)"source_template: project-milestone-retrospectivesource_template_version: 0.1.0---
> **Worked example.** A filled `project-milestone-retrospective`, **full** variant, for the> **Reporting Platform Modernization** programme at Acme Analytics, the same programme the> [`kpi-dashboard`](../kpi-dashboard/kpi-dashboard_example.md),> [`risk-register`](../risk-register/risk-register_example.md),> [`raid-log`](../raid-log/raid-log_example.md) and> [`status-report`](../status-report/status-report_example.md) examples already cover while it was running.> Those documents managed the work. This one closes it.>> **Full rather than lean, for the reasons the guide gives:** the readers can fund or stop what comes next,> a prior review of this same system exists and its findings needed checking, and the programme was closed> formally against a baseline. That is why it carries a Previously Identified Issues section and a> planned-against-actual table the lean variant does not have.>> **Read the dates.** The programme closed on 2026-09-30; the session ran on 2026-10-07 and this write-up is> dated 2026-10-09, which is why everything it cites is older than it. The planned values are read from> siblings that already exist, the actuals are this example's own, and **every figure, identifier and date is> illustrative**, as are Ravi Menon, the backfill contractor and the predecessor programme's close-out review.>> **It is deliberately not its two siblings, and says so in its own Scope and Period.** It is not> [Sprint 24's retrospective](../sprint-retrospective-notes/sprint-retrospective-notes_example.md), which> looks back on a two-week period at how one squad worked and feeds that squad's next sprint. It is not> [DEF-2291's postmortem](../incident-postmortem/incident-postmortem_example.md), which is event-triggered> causal analysis of one failure. This document is triggered by an ending, covers eight months of bounded> work, and is written for readers who were not in the room and in some cases were never on the programme.>> One convention to flag: two actions below are tracked in the programme risk register and a successor> programme's RAID log. Per the `process-docs` family contract, the ordinary ticket tracker is the> destination published practice actually names; the register and the log are this library's own convention.
# Reporting Platform Modernization: Close-Out Retrospective
## Scope and Period
**Work reviewed:** the Reporting Platform Modernization programme at Acme Analytics, from programme boardapproval on 2026-02-16 to formal close on 2026-09-30. Three deliverables sat inside it: the Saved Viewscapability, the migration of saved-view configurations from the legacy key-value store onto the new schema,and the query-engine handoff from the Platform team.
**Period:** 2026-02-16 to 2026-09-30.
**Deliberately outside this review:** the causal analysis of DEF-2291, which has its own[postmortem](../incident-postmortem/incident-postmortem_example.md) and is named below as an event ratherthan argued again here; how the Reporting Squad worked sprint to sprint, which belongs to its own cadenceretrospectives; the Recommendations programme's own delivery, which is under way and reports separately; andthe charting vendor's commercial terms, which Legal holds and reviews on its own cycle.
**Who reads this:** the programme steering group, and Priya Nair in her incoming role as product lead of theRecommendations programme, which inherits this system and its telemetry under RAID log dependency D-02.
**What they decide with it:** two decisions, both still ahead of the reader. First, at the 2026-11-06steering review, whether the platform-level entitlement-aggregate control is funded inside theRecommendations programme's scope before saved-view telemetry begins leaving its source workspace, or whetherthe accepted residual stands. Second, on 2026-11-13, when the 60-day launch-success window closes, whetherthe remediation sprint reserved by risk R-04, the adoption risk, is triggered. Both decisions turn onmaterial below, which is why this document leads with measures and boundaries rather than with what the roomfelt.
**Circulation, agreed before the discussion:** settled on 2026-09-28 with the invitation, nine days beforeanyone spoke. This document goes to the steering group, the programme's workstream leads and the PMO library,and any Acme employee may read it. Two things are deliberately not in it: the personnel circumstances behindthe query-engine lead's departure, and the vendor's commercial terms. A narrower note on the first exists andis held by Marta Reyes with HR. Everyone in the room knew all of this before they spoke, which is the point ofsettling it in advance rather than at publication.
**Who contributed, and who could not be reached:** nine of the eleven workstream contributors attended thesession on 2026-10-07, facilitated by Ravi Menon of the PMO, who was not on the programme. The backfillcontractor's engagement ended at close and his account arrived in writing beforehand. The query-engine lead,whose departure is logged as ISS-11, was not approached. That is the largest gap in this record: why thepredecessor programme's handover guide stopped where it did is reconstructed here from the documents and fromcolleagues, and not from the one person who knew.
## What Happened
The programme was approved on 2026-02-16 to cut the median Time to Insight for Recurring Analysts by 30percent by the end of Q3, with Saved Views as the headline deliverable. Saved Views reached generalavailability for all Recurring Analysts on 2026-09-14. The saved-view configuration migration cut over on2026-09-11 and the legacy key-value store was held read-only until 2026-10-11, as the agreed mitigation forrisk R-02, silent configuration loss on migration, specified. The query engine arrived from the Platform teamon 2026-08-21, against the 2026-08-01 date carried on the RAID log as dependency D-01, which is 15 workingdays later. The programme closed on 2026-09-30, its planned date.
Two events during the programme have their own documents. DEF-2291, an aggregate that disclosed data across anentitlement boundary, was found on staging on 2026-07-13 by a planned test, suspended Phase 2 sharing testingfor two days, and was fixed and verified on 2026-07-15; its causes are in the[postmortem](../incident-postmortem/incident-postmortem_example.md) and are not restated here. Thequery-engine lead's departure was logged as ISS-11 on 2026-06-14 with the handover incomplete. The backfillcontractor budget of GBP 45,000 was approved on 2026-08-10, past the issue's own 2026-07-31 resolution targetand past the RAID log's two-week escalation ageing line; the contractor started on 2026-08-17, and Lee Zhangsigned off the handoff on 2026-08-21 covering deployment and the schema, with the query planner recorded asnot covered.
Four tracked items closed or landed during the period. R-05, the entitlement-exposure risk, was escalated to thesteering group on 2026-07-14 and its residual was formally accepted on 2026-08-17, 34 days later, with theplatform-level control deferred rather than funded. R-01 closed on 2026-08-12 when the charting vendor renewedon existing terms; the fallback rendering path the register had budgeted for was never started. ISS-12, theview-list load issue, closed on 2026-09-02 when the production p95 first read under the 500ms budget. Theoutbound telemetry dependency D-02 was delivered to the Recommendations team on 2026-09-23, ahead of its2026-09-30 date.
After cutover, three saved views using the legacy relative-date syntax reconciled clean and rendereddifferently from their pre-cutover form. Their owners reported them within four days and Data Eng repaired allthree from the read-only legacy store by 2026-09-18. No other configuration defect was reported betweencutover and close.
*(All figures illustrative. Planned values are read from the programme KPI dashboard and risk register as theystood at their 2026-07-20 review; actuals are readings taken in the week ending 2026-09-30 unless the row saysotherwise.)*
| Measure | Planned | Actual | Where a reader can check it ||---|---|---|---|| Time to Insight, the outcome the programme was commissioned on | 30 percent faster than the FY26 baseline by end Q3; 25 percent was the separate green line | 26 percent faster at close. It cleared the green line and missed the commitment | [KPI dashboard](../kpi-dashboard/kpi-dashboard_example.md) definition, computed from the product analytics event stream; Looker executive view || Saved Views adoption | 60 percent of Recurring Analysts weekly by end Q3 | 48 percent, read on day 16 of the 60-day launch-success window. The window's own final reading falls on 2026-11-13, after this document and after the team | Entitlements database and event stream, per the dashboard's locked definition || View-list load, p95 | Under 500ms | 430ms in the week to close, from 620ms at the July review | Front-end RUM pipeline; the metric ISS-12 moved || Weekly active analysts, the guardrail | Hold at 480 or more | 502 | Same nightly pipeline as adoption || Migration integrity at cutover | 100 percent of in-scope legacy configurations reconciled | 100 percent, on 14,812 configurations | Output of the R-02 dual-write reconciliation script, cutover run of 2026-09-11 || Configuration defects reported after cutover | None expected once the gate above read 100 percent | 3 views, all repaired by 2026-09-18 | Support queue, tagged to the cutover window || Schedule slip on the critical path | The programme's stated appetite is a slip of up to two weeks, that is 10 working days | 15 working days on D-01. The close date did not move; general availability did | RAID log D-01 against the appetite section of the [risk register](../risk-register/risk-register_example.md) || Unplanned cost | Appetite of GBP 100,000 | GBP 45,000, the backfill contractor, and nothing else | Steering minutes of 2026-08-10; ISS-11 |
## What Worked
| What worked | Why it worked | How someone else repeats it ||---|---|---|| Dual-writing configurations during the transition and holding the legacy store readable for 30 days after cutover | The reconciliation proved the counts matched; the read-only window is what made the three broken views a four-day repair instead of a reconstruction from memory. The mitigation that mattered most was the one that assumed the check could miss something | Keep the source store readable for a fixed window after cutover and say in advance who may read from it. Budget the window as part of the migration, not as contingency, because its value only appears when the gate has already reported success || Paginating and lazy-loading the view list, then load-testing at three times the expected view count before general availability | The test ran against a volume no analyst had yet produced, so the 620ms reading in July became a production problem on paper before it became one in use. p95 read 430ms in the week to close | Load-test against a multiple of expected volume rather than today's volume, and measure the same way the user experiences it. This programme kept a client-side measurement, which includes network time Acme does not control, precisely so the number would not flatter the server || Amending the squad's Definition of Done on 2026-07-24 so that any change touching entitlement logic re-runs the full permission matrix | It moved a check from a risk-tier test that ran once per phase onto every change, so the next occurrence of that defect class is caught by the change that causes it rather than by the calendar | When a defect class is caught by a scheduled test, move the check onto the change rather than adding another scheduled test. The trigger is the thing to fix, not the coverage || Settling circulation before the retrospective session rather than at publication, and naming what a narrower note covers | Contributors knew who would read this before they spoke, so nobody had to guess how frankly to describe the handover failure, and nobody had to discover the constraint afterwards. The one genuinely sensitive topic was fenced by name rather than by omission | Decide who may read the document before the invitation goes out, and where something must stay out, say in the document that a narrower account exists and who holds it. Silence about a gap reads as an absence of findings |
## What Did Not
| What did not work | Why it happened | What would have prevented it ||---|---|---|| The programme closed on 2026-09-30 with its own success window still running. The number it was commissioned on, adoption at 60 percent, will not exist until 2026-11-13, six weeks after the team dispersed | The close date was anchored to the Q3 commitment and the success window was anchored to general availability plus 60 days. When the query-engine dependency D-01 slipped 15 working days, general availability moved and the close date did not, so the gap between them closed to 16 days without anyone deciding it should | Anchoring close-out to general availability plus the measurement window at charter, so a delivery slip moves both dates together. Failing that, a named reader for the final measurement, agreed at charter rather than improvised at close || The decision to fund the backfill contractor sat past the RAID log's own two-week escalation ageing line and past the issue's 2026-07-31 target, and was taken on 2026-08-10. The query-engine handoff, and with it the critical path, waited on it | The ageing line reported the delay and did nothing about it. Escalated items moved at the pace of the monthly steering slot, so an item that missed a slot waited for the next one regardless of how old the log said it was | An automatic consequence on the ageing line: at 14 days an item joins the board's exception list without waiting for a steering slot. The ageing column was accurate throughout and had no effect on anything, which is the problem || The migration gate reported 100 percent and three views still behaved differently after cutover | The migration-integrity metric matches on configuration identifier and field count, not on semantic equivalence of every field. That limitation was written into the dashboard specification when the metric was locked, and it was not carried onto the line where the gate result was reported, so the number was read at close as though it meant every view behaved the same | Printing the limitation beside the result wherever the gate is reported, not only where the metric is defined. Nothing about the gate itself needed to change; what needed to change is what a reader sees next to the number || The design-partner pilot on 2026-08-05 predicted the adoption shortfall and changed nothing before general availability. Six analysts were observed rebuilding filters by hand with a save control visible on screen; the finding reached the backlog and was not funded before launch | No capacity was reserved for acting on the pilot's findings. The pilot was scheduled to test assumption A-02, that analysts want saved views enough to change a habitual workflow, and the plan around it assumed the answer would be yes, so there was room to run the test and no room to respond to it | Reserving build capacity for the pilot's outcome before the pilot runs, sized against the change it could plausibly demand. A test whose only possible consequence is a backlog item is an observation, not a gate |
## Previously Identified Issues
Ordered as the template asks: the issue that was declared closed and recurred comes first, then the one thatis open and leaving this programme, then the one that was knowingly accepted and materialised at the small end.
| Issue, as it was written then | Where and when it was raised | Action that was agreed | What actually happened | Status now ||---|---|---|---|---|| "The query planner has a single maintainer and no written handover. If he leaves, nobody can change it safely" | Close-out retrospective of the Query Engine Consolidation programme, 2026-01-22, lesson 3. Filed in the PMO wiki archive; its page had been opened twice between filing and this programme's planning, both times by its own author | A maintainer guide, and a second engineer paired onto the engine, by 2026-03-31 | The guide was written and covers deployment and schema. The query planner section was never started. The action was closed as complete on 2026-04-02 against the existence of the guide, not against what it covered. The lead's departure was logged on 2026-06-14 with the handover incomplete, as ISS-11 | **Recurred.** It is the cause behind the D-01 slip in What Did Not, and behind the fourth lesson below, on closing an action against coverage rather than against a deliverable. The unwritten section is now action 3 below, the query planner guide || "A shared saved view can disclose data across an entitlement boundary. Fund a platform-level entitlement-aggregate control, or accept the residual formally at board level" | Raised at DEF-2291's triage on 2026-07-13 and escalated to the steering group on 2026-07-14; carried on the register as R-05, above the near-zero appetite line for this risk class | One of two outcomes: funding for the control, or formal acceptance of the residual | Neither happened for 34 days. On 2026-08-17 the residual was formally accepted and the control was deferred to a future programme's scope, where it is currently in nobody's budget | **Open, and transferred.** The residual acceptance stands and the control does not exist. It is action 1 below, funding or re-presenting the control, and the first thing the 2026-11-06 steering review has to settle || "Reconciliation matches on configuration identifier and field count, not semantic equivalence of every field" | Recorded as the migration-integrity metric's own known limitation when the dashboard specification was locked, 2026-07-20 | None. The limitation was accepted knowingly as the price of an automated cutover gate, in preference to a manual check that could not cover every configuration | It materialised at the small end: three views, reported by their owners within four days, repaired from the read-only legacy store by 2026-09-18 | **Closed, and knowingly accepted rather than missed.** The gate is unchanged and should be. What changes is where the limitation is printed, which is action 5 below, the gate report line |
## Lessons for Others
| Lesson | Who it is for | What to do differently ||---|---|---|| A lesson that exists only as a filed document is not a lesson. The handover failure that cost this programme 15 working days on its critical path had already been written down, accurately, eight months earlier, in a document of exactly this type that nobody opened | The PMO, and whoever writes or commissions the next close-out of any Acme system | Present the previous close-out for the same system at the next programme's kickoff, as an agenda item with a named presenter. Add "what did the last close-out of this system say" to the charter checklist, so retrieval is somebody's task rather than an act of initiative by a stranger who does not know the document exists || A close date and a success measure can be anchored to different events, and nobody notices until the close date arrives with the measurement still running | Any programme whose success is a behaviour change measured after launch, in or outside this organisation | At charter, write the close date as launch plus the measurement window, or name in the charter the person who reads the final number after close and what they are expected to do with it. Deciding it at close means deciding it when the people who would act on it have already been assigned elsewhere || A completion gate is only as strong as the comparison underneath it, and the cheapest insurance is keeping the old thing readable | Any team migrating configuration or data between stores | Print the comparison's known limitation next to the gate result, and keep the source readable long enough to repair what the comparison cannot see. In this migration the 30-day read-only window, not the 100 percent reading, is what made the defects cheap || An action closed because a deliverable exists has not been closed. The predecessor's handover guide existed, was signed off, and did not cover the part that mattered | Anyone at Acme who signs off corrective actions: programme boards, the PMO, workstream leads | State the coverage test when the action is agreed, not when it is reviewed, and close against that test. For a handover guide the test is cheap and specific: an engineer who has never touched the component makes a scoped change using only the guide |
## Actions and Owners
Ordered so that the actions which must outlive this programme come first. Every owner below confirmed on2026-10-07 that they hold the row after close; the programme itself no longer exists to chase them, which isthe condition this section is written for.
| Action | Owner | Due | Tracked in ||---|---|---|---|| Put the platform-level entitlement-aggregate control into the Recommendations programme's funded scope before saved-view telemetry begins leaving its source workspace; if it is not funded by then, re-present the accepted residual to the board as a standing exposure rather than a closed item | Sam Okafor | 2026-11-06 | Risk register R-05, mirrored onto the Recommendations programme's RAID log || Take the final Saved Views adoption reading when the 60-day launch-success window closes, and tell the steering group whether the remediation sprint reserved by risk R-04, the adoption risk, is triggered | Priya Nair | 2026-11-13 | Product backlog SV-21, and the KPI dashboard's November review || Write the query planner section of the query-engine maintainer guide, and close it against an agreed coverage test: an engineer who has not worked on the planner makes a scoped change using only the guide | Lee Zhang | 2026-12-04 | Platform team backlog PLAT-207 || Present this retrospective at the Recommendations programme kickoff, and add a "last close-out for this system" line to the PMO charter checklist so the next programme does not have to think of it | Marta Reyes | 2026-10-30 | PMO charter checklist v4 || Print the migration-integrity limitation on the line where the gate result is reported, not only in the metric definition | Lee Zhang | 2026-10-23 | KPI dashboard specification change DE-118 || Propose to the PMO that the escalation ageing line carries an automatic consequence at 14 days, and bring the proposal with this programme's own D-01 evidence attached | Ravi Menon | 2026-11-27 | PMO governance backlog GOV-44 |
*(All identifiers, dates, figures and names above are illustrative.)*Provenance
Section titled “Provenance”The reasoning, the history and every source, in the repository:
- Companion - the long-form argument: why these sections, where the sources disagree, and what the bundle refuses to claim
- History - what changed in this bundle, and when
- Research log - every source consulted, with what each one actually supports
- Catalog metadata - the machine-readable record this page is generated from
Catalog record: 7 sections across 1 format(s), methodology PMBOK/agile, typically owned by PM / PgM.