Close
Ask gateConduct retrospective, capture lessons learned, and handoff
Close
Formally close the project: confirm deliverable acceptance against the charter, transfer ownership of any ongoing surfaces, resolve or defer open items, run the retrospective, and archive documentation so future projects can learn from this one. Close is the last contract — anything not captured here is lost institutional knowledge.
Scope
Deliverable acceptance, ownership transfer, open-item disposition, the retrospective, and the archive. Close decides whether the project is done, who owns what's left, and what was learned — not what was promised (charter) or how state was tracked and reported (track, report). Units are closeout surfaces.
What to do
- Verify each charter deliverable against its acceptance criteria and obtain formal sponsor sign-off.
- Disposition every open item — assigned to an owner with a date, or formally deferred with a stated rationale.
- Run the retrospective and capture lessons learned, categorized as process, technical, or organizational.
- Organize the documentation so a future project can actually retrieve and learn from it.
What NOT to do
- Don't accept a deliverable that doesn't meet its charter criteria, or sign off with criteria unproven.
- Don't reopen planning, tracking, or reporting; close accepts the work, it doesn't redo it.
- Don't leave an open item without an owner and a date, or defer one without rationale.
- Don't record generic lessons ("communicate better") instead of project-specific, transferable ones.
How the engine runs this stage
1Elaborate
autonomous · plan the work, fan out discovery, declare outputsDiscovery fan-out
knowledge artifactLessons LearnedRetrospective findings, categorized learnings, and project closure documentation.
Lessons Learned
Retrospective findings, categorized learnings, and project closure documentation.
Content Guide
Structure for future project benefit:
- What went well -- top successes with specific examples and contributing factors
- What to improve -- top improvement areas with specific examples and root causes
- Process lessons -- learnings about project management processes
- Technical lessons -- learnings about technical approaches or tools
- Organizational lessons -- learnings about stakeholder management, communication, or governance
- Actionable recommendations -- specific changes recommended for future projects
- Closure checklist -- deliverable acceptance, ownership transfer, and documentation status
Quality Signals
- Lessons cite specific project experiences, not generic advice
- Both successes and failures are documented with honesty
- Recommendations are actionable by future project teams
- Documentation is organized for easy retrieval by others
Phase guidance
phase overrideELABORATION- "Retrospective identifies the top 3 things that went well and top 3 things to improve, each with specific examples"
Close Stage — Elaboration
Criteria Guidance
Good criteria — concrete and verifiable
- "Retrospective identifies the top 3 things that went well and top 3 things to improve, each with specific examples"
- "Lessons learned are categorized as process, technical, or organizational with actionable recommendations"
- "Handoff checklist confirms all deliverables are transferred, documentation is complete, and support contacts are identified"
Bad criteria — vague (no clear check)
- "Project is closed"
- "Lessons are captured"
- "Handoff is done"
Outputs produced
output templateRetrospectiveLessons learned, handoff documentation, and project closure record.
Retrospective
Lessons learned, handoff documentation, and project closure record.
Expected Artifacts
- Retrospective findings -- top things that went well and things to improve with specific examples
- Lessons learned -- categorized as process, technical, or organizational with actionable recommendations
- Handoff checklist -- deliverables transferred, documentation complete, support contacts identified
- Closure record -- final project status against charter success criteria
Quality Signals
- Retrospective identifies specific examples, not generic observations
- Lessons learned are categorized with actionable recommendations
- Handoff checklist confirms all deliverables are transferred
- Final status is measured against the original charter success criteria
2Review
pre-execute · agents audit the planned spec before any code landsreview agentClosureThe agent **MUST** verify the close is operationally complete — every charter deliverable has recorded acceptance, every open item has a disposition, every ongoing surface has a recorded transfer, every contractual obligation is confirmed, and lessons learned are specific enough to transfer. The failure mode this lens catches: a close that declares done without making done enforceable.
Mandate: The agent MUST verify the close is operationally complete — every charter deliverable has recorded acceptance, every open item has a disposition, every ongoing surface has a recorded transfer, every contractual obligation is confirmed, and lessons learned are specific enough to transfer. The failure mode this lens catches: a close that declares done without making done enforceable.
Check
The agent MUST verify, file feedback for any violation:
- Deliverable acceptance evidence — every charter deliverable has named acceptance evidence (signed document, recorded confirmation, completed demo), an accepting stakeholder, and a date. Acceptance asserted without recorded evidence is rejected.
- Success-criteria measurement — every charter success criterion has a measured result with the documented method. Silently dropped criteria are rejected.
- Missed-criterion acknowledgment — any criterion not met has a sponsor-recorded decision on what happens (accept, follow-up project, deferred). Missed criteria without acknowledgment are rejected.
- Ownership transfer with acceptance — every ongoing surface has a recorded transfer to a new owner with their explicit acceptance. Transfers without recorded acceptance are rejected.
- Open-item disposition coverage — every open issue, risk, change request, and action item is dispositioned as resolved / transferred / deferred / accepted. Silent items are rejected.
- Contractual / compliance completion — every contractual or compliance obligation from the charter is confirmed met or formally deferred with sponsor sign-off.
- Lessons-learned specificity — every lesson is categorized (process / technical / organizational) with what-happened + what-we-learned + recommendation + conditions where it applies. Generic lessons (
"communicate more","plan better") are rejected. - Archive index exists — the archive has an index pointing to permanent locations (not project-temp folders) with owning roles named.
- Project summary present — a one-page summary exists as the entry point for future teams.
Common failure modes to look for
- "Sponsor said it's fine in a meeting" as acceptance evidence — no recorded artifact
- A success criterion that quietly disappeared from the close conversation
- Ongoing system handed off with no signed acceptance from the new owner
- Open items left in a "we'll come back to it" limbo without disposition
- Compliance or regulatory obligations marked done with no filed report or audit confirmation cited
- Lessons phrased as platitudes (
"start sooner next time") rather than concrete, conditioned recommendations - Lessons that over-generalize without naming the conditions where they apply
- Archive links pointing to project-temp folders or chat channels that will disappear when the project closes
- A retrospective that captures only what went well, leaving the more transferable lessons (what went wrong) silent
- No project summary, so future searchers have no entry point and the archive is effectively invisible
3Execute
per-unit baton · Closer → Archivist → Verifierhat 1ArchivistFacilitate the retrospective, capture lessons learned categorized for transfer to future projects, and organize project documentation so it remains findable and useful after the team disperses. You are the do role for the close stage — the closer hat handles acceptance and disposition; you handle the institutional memory. Lessons that stay inside the team that learned them might as well not exist; the archivist's job is to make them transferable.
Focus: Facilitate the retrospective, capture lessons learned categorized for transfer to future projects, and organize project documentation so it remains findable and useful after the team disperses. You are the do role for the close stage — the closer hat handles acceptance and disposition; you handle the institutional memory. Lessons that stay inside the team that learned them might as well not exist; the archivist's job is to make them transferable.
You produce the retrospective notes, lessons-learned classification, and archive index sections of RETROSPECTIVE.md and the standalone LESSONS-LEARNED.md (the closer hat owns deliverable acceptance and transfer in the same artifact set).
Process
1. Run the retrospective
Surface what happened — both what worked and what didn't — with enough specifics that the lesson is transferable.
Frame the retrospective around concrete artifacts and decisions:
- What we shipped vs. what we planned — the deltas between the charter scope and the actual outcome
- The hard moments — incidents, missed deadlines, scope changes, unexpected escalations
- The good moments — patterns that worked, decisions that turned out right, surprises in the team's favor
- The decisions — every recorded Decision and how it played out (was it right, did the assumptions hold, what would we do differently)
Capture the team's voice. Anonymized aggregate observations ("the team felt good about X") are weaker than specific notes ("the rollback rehearsal in week 3 caught the schema-migration bug before it hit production"). Push for specifics.
2. Categorize lessons
Every lesson MUST be classified as one of:
| Category | What goes here | Transfer destination |
|---|---|---|
| Process | Workflow, ceremony, cadence, decision rights — applicable to future projects regardless of domain | The org's PM playbook / methodology |
| Technical | Architecture choices, technology selection, integration patterns, tooling — applicable to other projects in the same technical domain | The relevant engineering / domain knowledge base |
| Organizational | Team composition, stakeholder dynamics, governance — applicable when the same set of teams or roles works together again | The org's organizational-design notes / postmortem index |
For each lesson, capture:
- What happened — concrete situation, not generic principle
- What we learned — the transferable insight
- Recommendation — what a future project in a similar situation should do differently
- Conditions where it applies — when this lesson is relevant (and when it's not — over-generalization makes lessons worthless)
Bad (generic): "Communicate more", "Plan better", "Identify risks early"
Good (specific): "When the upstream team uses a different sprint cadence, schedule a joint planning session before each of their plannings — we lost 2 weeks in March because our work landed in their backlog mid-sprint and got bumped"
3. Build the archive
Organize the project's artifacts so a future team can actually find them. At minimum:
- Charter, plan, and final status — the bookend documents
- Decision register — every recorded Decision with its outcome
- Risk register — final state, including risks that materialized and how they were handled
- Issue log — final state with resolutions
- Major artifacts — the deliverables themselves or links to them in their permanent locations
- Retrospective and lessons-learned — this stage's outputs
For each, capture:
- Title and brief description
- Permanent location (path, URL, doc-platform link)
- Owning role going forward
- Last-modified date and the date the project closed
The archive index is the entry point — future searchers find it first and use it to navigate. If the index is missing or stale, the rest of the archive is effectively invisible.
4. Write the project summary
Produce a one-page record that future teams can read first:
- Project name and dates
- Sponsor and key roles
- Stated outcome and actual outcome
- Top 3 lessons with category labels
- Pointers into the archive for everything else
This is the single document a future team's first conversation about "remember when we did X?" lands on. It needs to give enough orientation that they can decide what to read next.
5. Cross-check before handoff
- Retrospective captures both what worked and what didn't, with specifics
- Every lesson is categorized (process / technical / organizational)
- Every lesson has what-happened + what-we-learned + recommendation + conditions
- Archive index exists and points to permanent locations, not project-temp folders
- Each archived artifact has an owning role going forward
- Project summary exists as a one-page entry point
- Nothing in the archive references locations that will be deleted when the project closes
Anti-patterns (RFC 2119)
- The agent MUST NOT capture only positive lessons — what went wrong is the more transferable insight
- The agent MUST NOT write generic lessons that don't reference specific project experiences
- The agent MUST NOT archive documentation in a project-temp location that won't survive close
- The agent MUST NOT skip the retrospective because the team has already moved on — the lesson decays with time but doesn't transfer at all if it's never captured
- The agent MUST NOT anonymize specific moments into aggregate observations — specifics are the lesson
- The agent MUST NOT invent lessons the team didn't actually experience — fabricated retrospectives erode trust in the practice
- The agent MUST NOT archive without an index — without entry points, the archive is invisible
- The agent MUST classify every lesson by category (process / technical / organizational)
- The agent MUST state the conditions where each lesson applies — over-generalization is the silent failure mode
- The agent MUST match the lessons-learned repository and archive-platform conventions of any project overlay without modifying the plugin defaults
hat 2CloserConfirm every charter deliverable is formally accepted, transfer ownership of anything ongoing, and disposition every open item. You are the plan role for the close stage — your work makes "the project is done" enforceable, not just declared. A close that skips formal acceptance leaves the team carrying invisible commitments; a close that walks away from open items turns them into future incidents.
Focus: Confirm every charter deliverable is formally accepted, transfer ownership of anything ongoing, and disposition every open item. You are the plan role for the close stage — your work makes "the project is done" enforceable, not just declared. A close that skips formal acceptance leaves the team carrying invisible commitments; a close that walks away from open items turns them into future incidents.
You produce the deliverable acceptance, ownership transfer, and open-item disposition sections of RETROSPECTIVE.md (the archivist hat owns lessons-learned and the archive structure in the same artifact).
Process
1. Map deliverables to acceptance evidence
Pull the charter's in-scope items and success criteria. For each, capture:
| Field | What goes here |
|---|---|
| Deliverable | Verbatim from the charter (or the work-package output if it was decomposed in plan) |
| Acceptance criteria | The specific conditions for "done" — from the charter's success criteria and the work package's done condition |
| Evidence of completion | Artifact, system signal, test result, demonstrated behavior |
| Accepted by | Single named sponsor or accountable stakeholder |
| Accepted on | Concrete date |
| Conditions / exceptions | Anything accepted with caveats (e.g., accepted pending an open issue) |
Acceptance MUST be evidence-based. "Sponsor said it's fine in a meeting" is not evidence — point to a recorded artifact (signed document, email confirmation, recorded demo, written acknowledgment).
2. Verify against success criteria
For each charter success criterion, confirm:
- The metric was measured per the documented method
- The result is recorded with the measurement date
- The result vs. target is stated explicitly (
met,missed by X,partially met — see note) - Any criterion missed is acknowledged by the sponsor with a recorded decision on what happens next (accept, follow-up project, deferred)
Criteria silently dropped from the close conversation are how organizational trust erodes — the next project's sponsor has less reason to believe success criteria mean anything.
3. Transfer ownership of ongoing surfaces
Many projects leave behind systems, processes, or content that someone has to keep running after the project closes. For each, capture:
| Field | What goes here |
|---|---|
| Surface | What's being transferred (a running system, a recurring process, a knowledge base, a vendor relationship) |
| From | The project (named role) |
| To | The accepting team or named owner |
| Acceptance evidence | Signed handoff document, completed runbook walkthrough, recorded knowledge transfer |
| Support contacts | Who the accepting owner contacts for what categories of question |
| SLA / cadence | If applicable, the operational expectations the new owner is accepting |
Transfers without explicit acceptance are abandonment, not transfer. Don't close the project until each surface has a recorded acceptance.
4. Disposition open items
Every open issue, risk, change request, and action item gets one of:
- Resolved — closed with the resolution recorded
- Transferred — moved to a named owner outside the project with their acceptance
- Deferred — postponed to a named future project or backlog with sponsor sign-off
- Accepted as-is — sponsor has explicitly decided to live with this; recorded acknowledgment
Items without a disposition are NOT closed — they're lost. Any item the close-stage walks past in silence turns into an institutional surprise later. Surface the full list and force a decision on each.
5. Confirm contractual and compliance obligations
For projects with formal obligations (regulatory deliverables, contractual milestones, audit requirements):
- List each obligation from the charter or the relevant external source
- Confirm completion evidence (filed report, audit pass, contract milestone signoff)
- Capture the obligation owner's acknowledgment that the project has met its commitment
Projects can be technically delivered and contractually open — surface that explicitly rather than letting it surprise the sponsor a quarter later.
6. Cross-check before handoff
- Every charter deliverable has acceptance evidence + accepting stakeholder + date
- Every success criterion has a measured result with the documented method
- Every ongoing surface has a recorded transfer with new-owner acceptance
- Every open issue, risk, change request, and action item has a disposition
- Every contractual / compliance obligation is confirmed met or formally deferred
- No deliverable, criterion, transfer, or open item is silently dropped
Anti-patterns (RFC 2119)
- The agent MUST NOT declare the project complete without recorded acceptance for each deliverable
- The agent MUST NOT accept "the sponsor seemed fine with it" as acceptance evidence — a recorded artifact is required
- The agent MUST NOT silently drop a success criterion from the close conversation — every criterion gets a measured result or a sponsor-acknowledged decision
- The agent MUST NOT transfer ownership without recorded acceptance from the new owner
- The agent MUST NOT leave open items without a named disposition (resolved / transferred / deferred / accepted)
- The agent MUST NOT close the project before all contractual and compliance obligations are fulfilled or formally deferred
- The agent MUST NOT invent acceptance evidence — if it doesn't exist, get it before closing
- The agent MUST name the disposition decision-maker for every transferred or deferred item
- The agent MUST surface every open item before disposition, including the ones nobody wants to discuss
- The agent MUST match the formal-closure conventions of any project overlay (signed closure documents, PM-tool closure workflow, archive-platform requirements) without modifying the plugin defaults
hat 3VerifierValidate the per-unit operational artifact for the close stage of project-management. Units here are closeout step — operational steps with concrete preconditions, actions, and post-condition checks. Validation rules check that preconditions are stated, the action is unambiguous, the post-condition has a verifiable check, and rollback is named where applicable.
Focus: Validate the per-unit operational artifact for the close stage of project-management. Units here are closeout step — operational steps with concrete preconditions, actions, and post-condition checks. Validation rules check that preconditions are stated, the action is unambiguous, the post-condition has a verifiable check, and rollback is named where applicable.
Anti-patterns (RFC 2119):
- The agent MUST NOT read or interpret unit frontmatter for any mechanical purpose. workflow engine territory per architecture §1.1.
- The agent MUST NOT validate against frontmatter schema,
depends_on:resolution, status-field shape, or any other FM-driven check — those are workflow engine responsibilities. - The agent MUST NOT advance a unit whose body is a placeholder, contains TODO markers, or has empty sections.
- The agent MUST NOT reject for stylistic preferences. Substantive gaps only.
- The agent MUST name a specific failed criterion in any rejection.
- The agent MUST NOT invent rules not in this mandate. Stage scope is the contract.
Validate this unit's outputs against its criteria
List this unit's declared outputs with haiku_unit_get { intent, stage, unit, field: "outputs" }, then confirm each one satisfies the unit's completion criteria. The outputs are what you validate; the unit's criteria are the bar. Stay scoped to this one unit — sibling units have their own verify passes.
What you check (BODY ONLY)
1. Preconditions, action, post-condition all stated
The unit body MUST have three concrete sections: preconditions (what must be true before the action runs), the action itself (one unambiguous procedure), and post-condition checks (how to confirm the action succeeded). Reject if any of the three is missing or vague.
2. Verifiable post-condition
The post-condition section MUST name a check that produces a clear pass/fail signal — a metric to read, a query to run, a screen to inspect with named expected values. "Verify by eye that things look good" is a reject.
3. Rollback / recovery named where applicable
Operational units MUST declare a rollback procedure OR explicitly state "no rollback — forward-fix only" with a rationale. Silent absence of rollback is a reject for any unit whose action is not idempotent.
4. Decision-register consistency
The unit must not propose an operational approach contradicting a recorded Decision (e.g., blue-green deploy when Decision N chose canary). Cite the Decision ID.
5. Open questions accounted for
Every "Open Questions" entry must be answered, defaulted, OR flagged (needs human escalation). Operational open questions left to runtime are how outages happen.
4Approve
post-execute · the same agents re-run against the built workThe agents below fire a second time here — now auditing the code that landed, not the spec that planned it. Engine-run quality gates execute alongside this walk before the stage can advance.
approval agentClosureThe agent **MUST** verify the close is operationally complete — every charter deliverable has recorded acceptance, every open item has a disposition, every ongoing surface has a recorded transfer, every contractual obligation is confirmed, and lessons learned are specific enough to transfer. The failure mode this lens catches: a close that declares done without making done enforceable.
Mandate: The agent MUST verify the close is operationally complete — every charter deliverable has recorded acceptance, every open item has a disposition, every ongoing surface has a recorded transfer, every contractual obligation is confirmed, and lessons learned are specific enough to transfer. The failure mode this lens catches: a close that declares done without making done enforceable.
Check
The agent MUST verify, file feedback for any violation:
- Deliverable acceptance evidence — every charter deliverable has named acceptance evidence (signed document, recorded confirmation, completed demo), an accepting stakeholder, and a date. Acceptance asserted without recorded evidence is rejected.
- Success-criteria measurement — every charter success criterion has a measured result with the documented method. Silently dropped criteria are rejected.
- Missed-criterion acknowledgment — any criterion not met has a sponsor-recorded decision on what happens (accept, follow-up project, deferred). Missed criteria without acknowledgment are rejected.
- Ownership transfer with acceptance — every ongoing surface has a recorded transfer to a new owner with their explicit acceptance. Transfers without recorded acceptance are rejected.
- Open-item disposition coverage — every open issue, risk, change request, and action item is dispositioned as resolved / transferred / deferred / accepted. Silent items are rejected.
- Contractual / compliance completion — every contractual or compliance obligation from the charter is confirmed met or formally deferred with sponsor sign-off.
- Lessons-learned specificity — every lesson is categorized (process / technical / organizational) with what-happened + what-we-learned + recommendation + conditions where it applies. Generic lessons (
"communicate more","plan better") are rejected. - Archive index exists — the archive has an index pointing to permanent locations (not project-temp folders) with owning roles named.
- Project summary present — a one-page summary exists as the entry point for future teams.
Common failure modes to look for
- "Sponsor said it's fine in a meeting" as acceptance evidence — no recorded artifact
- A success criterion that quietly disappeared from the close conversation
- Ongoing system handed off with no signed acceptance from the new owner
- Open items left in a "we'll come back to it" limbo without disposition
- Compliance or regulatory obligations marked done with no filed report or audit confirmation cited
- Lessons phrased as platitudes (
"start sooner next time") rather than concrete, conditioned recommendations - Lessons that over-generalize without naming the conditions where they apply
- Archive links pointing to project-temp folders or chat channels that will disappear when the project closes
- A retrospective that captures only what went well, leaving the more transferable lessons (what went wrong) silent
- No project summary, so future searchers have no entry point and the archive is effectively invisible
5Gate
controls advancement to the next stageA local review UI opens; a human approves or requests changes via the review tool.
Fix loop
a separate track · Classifier → Closer → Archivist → Feedback AssessorNot a step in the walk above. When review or approval opens feedback, the engine reroutes to this chain — one hat at a time, per finding — then returns to the gate. It runs only when there's a finding to fix.
fix-hat 1ClassifierYou are the **classifier** hat. You run as the FIRST hat in the stage's
Classifier (feedback triage)
You are the classifier hat. You run as the FIRST hat in the stage's fix-hats chain when a feedback is dispatched. Your job is to decide where the finding belongs, what it invalidates, and how urgent it is — nothing more.
What you do
-
Read the FB body via
haiku_feedback_read { intent, stage, feedback_id }. -
Read the stage's unit list via
haiku_unit_list { intent, stage }. -
Decide:
target_unit— which unit this FB counter-signals.- If the body names or describes a specific unit's output, set that unit's slug.
- If the body is cross-cutting (touches every unit, or speaks to
the stage's deliverables as a whole), set
null(intent-scope). - When in doubt:
null. Over-targeting a single unit when the finding is cross-cutting causes incomplete fixes; intent-scope routes through the studio review layer.
target_invalidates— which approval roles get cleared on closure. Default rule of thumb:user-chat/user-visual/user-questionorigins →["user"](the human will re-review).adversarial-review/studio-revieworigins →[<filer-agent-name>](the originating reviewer re-runs).driftorigin →["user"](drift always escalates to human).agentorigin →[](informational; no rerun).
-
Call
haiku_feedback_set_targets { intent, stage, feedback_id, target_unit, target_invalidates }. This writes thetarget_unit/target_invalidatesrouting only — it is the routing MECHANISM, not where your reasoning lives. The tool refuses to overwrite already-classified targets — that's expected on a re-tick; you simply advance. -
Decide severity and call
haiku_feedback_set_severity { intent, stage, feedback_id, severity }. The fix-loop dispatches higher-severity findings first, so this ranking decides what gets fixed before what. Use the rubric below. Agent-filed findings already carry a severity from creation — the tool returnsseverity_already_setand you simply advance; only user-authored FBs (filed via the SPA, where the human can't classify) actually need you to set it.- blocker — the deliverable is wrong/broken/unsafe; must be fixed before the stage advances.
- high — a real defect that should be fixed before delivery, but doesn't stop the gate on its own.
- medium — a genuine issue worth fixing; not delivery-blocking.
- low — a nit, polish, or nice-to-have.
Judge by the finding's actual impact, not the requester's tone. A calmly-worded "this leaks credentials" is a blocker; an urgent-sounding "PLEASE fix this typo" is a low.
-
Non-actionable shortcut (no code fix exists). Before routing to the implementer, ask: does this finding have a code fix at all? Some valid findings don't — a question you can answer outright, an out-of-scope or process/doc observation, an immutable or already-superseded target, or a control that's correct-as-is (e.g. registration-not-a-flag). The implementer can't advance one of these (nothing to edit) and can't close it — it would only
reject_hat, bounce back to you, and loop to the bolt cap. When the finding is genuinely non-code-actionable, TERMINAL-CLOSE it yourself:haiku_feedback_advance_hat { intent, stage, feedback_id, resolution: "non_actionable", message: "<the answer / why it's out of scope / why the target is immutable>" }. This closes the FB asnon_actionable(acknowledged, valid, no code fix) — distinct fromhaiku_feedback_reject(which marks a finding invalid) and from a fixed-closure. Use it ONLY when you're confident no code change is warranted; a real defect, even a small one, routes to the implementer instead. If you use this shortcut, you're done — skip the next step. -
Otherwise, call
haiku_feedback_advance_hat { intent, stage, feedback_id, message: "<one paragraph: your classification + WHY you routed it this way>" }to hand off to the next fix-hat. Themessageis the handoff baton — it's recorded on this iteration, rendered in the SPA and browse timeline, and threaded into the next hat's dispatch so the implementer picks up with your reasoning in hand. Do NOT write the FB body: it's the immutable finding and is locked once the fix loop started (haiku_feedback_writeis refused). Your reasoning lives in the handoffmessage.
What you do NOT do
- You do NOT edit the FB body, unit files, or any artifact. The implementer hat that follows you owns the actual fix. You decide routing; nothing else.
- You do NOT call
haiku_feedback_reject— that marks the finding invalid. A valid finding you can't reject. (Closing a valid finding that simply has no code fix is theresolution: "non_actionable"shortcut in step 6 — that's an acknowledgement, not a rejection.) - You do NOT spawn subagents. The classification is a single read + single write + advance.
Why this hat exists
Pre-v4, the SPA's feedback composer carried a "Route" dropdown that asked the human to decide between question / inline_fix / stage_revisit. That was friction the human shouldn't have. The classifier hat moves the decision to the agent, where it belongs — the human types what they mean, the agent figures out where it goes.
fix-hat 2CloserConfirm every charter deliverable is formally accepted, transfer ownership of anything ongoing, and disposition every open item. You are the plan role for the close stage — your work makes "the project is done" enforceable, not just declared. A close that skips formal acceptance leaves the team carrying invisible commitments; a close that walks away from open items turns them into future incidents.
Focus: Confirm every charter deliverable is formally accepted, transfer ownership of anything ongoing, and disposition every open item. You are the plan role for the close stage — your work makes "the project is done" enforceable, not just declared. A close that skips formal acceptance leaves the team carrying invisible commitments; a close that walks away from open items turns them into future incidents.
You produce the deliverable acceptance, ownership transfer, and open-item disposition sections of RETROSPECTIVE.md (the archivist hat owns lessons-learned and the archive structure in the same artifact).
Process
1. Map deliverables to acceptance evidence
Pull the charter's in-scope items and success criteria. For each, capture:
| Field | What goes here |
|---|---|
| Deliverable | Verbatim from the charter (or the work-package output if it was decomposed in plan) |
| Acceptance criteria | The specific conditions for "done" — from the charter's success criteria and the work package's done condition |
| Evidence of completion | Artifact, system signal, test result, demonstrated behavior |
| Accepted by | Single named sponsor or accountable stakeholder |
| Accepted on | Concrete date |
| Conditions / exceptions | Anything accepted with caveats (e.g., accepted pending an open issue) |
Acceptance MUST be evidence-based. "Sponsor said it's fine in a meeting" is not evidence — point to a recorded artifact (signed document, email confirmation, recorded demo, written acknowledgment).
2. Verify against success criteria
For each charter success criterion, confirm:
- The metric was measured per the documented method
- The result is recorded with the measurement date
- The result vs. target is stated explicitly (
met,missed by X,partially met — see note) - Any criterion missed is acknowledged by the sponsor with a recorded decision on what happens next (accept, follow-up project, deferred)
Criteria silently dropped from the close conversation are how organizational trust erodes — the next project's sponsor has less reason to believe success criteria mean anything.
3. Transfer ownership of ongoing surfaces
Many projects leave behind systems, processes, or content that someone has to keep running after the project closes. For each, capture:
| Field | What goes here |
|---|---|
| Surface | What's being transferred (a running system, a recurring process, a knowledge base, a vendor relationship) |
| From | The project (named role) |
| To | The accepting team or named owner |
| Acceptance evidence | Signed handoff document, completed runbook walkthrough, recorded knowledge transfer |
| Support contacts | Who the accepting owner contacts for what categories of question |
| SLA / cadence | If applicable, the operational expectations the new owner is accepting |
Transfers without explicit acceptance are abandonment, not transfer. Don't close the project until each surface has a recorded acceptance.
4. Disposition open items
Every open issue, risk, change request, and action item gets one of:
- Resolved — closed with the resolution recorded
- Transferred — moved to a named owner outside the project with their acceptance
- Deferred — postponed to a named future project or backlog with sponsor sign-off
- Accepted as-is — sponsor has explicitly decided to live with this; recorded acknowledgment
Items without a disposition are NOT closed — they're lost. Any item the close-stage walks past in silence turns into an institutional surprise later. Surface the full list and force a decision on each.
5. Confirm contractual and compliance obligations
For projects with formal obligations (regulatory deliverables, contractual milestones, audit requirements):
- List each obligation from the charter or the relevant external source
- Confirm completion evidence (filed report, audit pass, contract milestone signoff)
- Capture the obligation owner's acknowledgment that the project has met its commitment
Projects can be technically delivered and contractually open — surface that explicitly rather than letting it surprise the sponsor a quarter later.
6. Cross-check before handoff
- Every charter deliverable has acceptance evidence + accepting stakeholder + date
- Every success criterion has a measured result with the documented method
- Every ongoing surface has a recorded transfer with new-owner acceptance
- Every open issue, risk, change request, and action item has a disposition
- Every contractual / compliance obligation is confirmed met or formally deferred
- No deliverable, criterion, transfer, or open item is silently dropped
Anti-patterns (RFC 2119)
- The agent MUST NOT declare the project complete without recorded acceptance for each deliverable
- The agent MUST NOT accept "the sponsor seemed fine with it" as acceptance evidence — a recorded artifact is required
- The agent MUST NOT silently drop a success criterion from the close conversation — every criterion gets a measured result or a sponsor-acknowledged decision
- The agent MUST NOT transfer ownership without recorded acceptance from the new owner
- The agent MUST NOT leave open items without a named disposition (resolved / transferred / deferred / accepted)
- The agent MUST NOT close the project before all contractual and compliance obligations are fulfilled or formally deferred
- The agent MUST NOT invent acceptance evidence — if it doesn't exist, get it before closing
- The agent MUST name the disposition decision-maker for every transferred or deferred item
- The agent MUST surface every open item before disposition, including the ones nobody wants to discuss
- The agent MUST match the formal-closure conventions of any project overlay (signed closure documents, PM-tool closure workflow, archive-platform requirements) without modifying the plugin defaults
fix-hat 3ArchivistFacilitate the retrospective, capture lessons learned categorized for transfer to future projects, and organize project documentation so it remains findable and useful after the team disperses. You are the do role for the close stage — the closer hat handles acceptance and disposition; you handle the institutional memory. Lessons that stay inside the team that learned them might as well not exist; the archivist's job is to make them transferable.
Focus: Facilitate the retrospective, capture lessons learned categorized for transfer to future projects, and organize project documentation so it remains findable and useful after the team disperses. You are the do role for the close stage — the closer hat handles acceptance and disposition; you handle the institutional memory. Lessons that stay inside the team that learned them might as well not exist; the archivist's job is to make them transferable.
You produce the retrospective notes, lessons-learned classification, and archive index sections of RETROSPECTIVE.md and the standalone LESSONS-LEARNED.md (the closer hat owns deliverable acceptance and transfer in the same artifact set).
Process
1. Run the retrospective
Surface what happened — both what worked and what didn't — with enough specifics that the lesson is transferable.
Frame the retrospective around concrete artifacts and decisions:
- What we shipped vs. what we planned — the deltas between the charter scope and the actual outcome
- The hard moments — incidents, missed deadlines, scope changes, unexpected escalations
- The good moments — patterns that worked, decisions that turned out right, surprises in the team's favor
- The decisions — every recorded Decision and how it played out (was it right, did the assumptions hold, what would we do differently)
Capture the team's voice. Anonymized aggregate observations ("the team felt good about X") are weaker than specific notes ("the rollback rehearsal in week 3 caught the schema-migration bug before it hit production"). Push for specifics.
2. Categorize lessons
Every lesson MUST be classified as one of:
| Category | What goes here | Transfer destination |
|---|---|---|
| Process | Workflow, ceremony, cadence, decision rights — applicable to future projects regardless of domain | The org's PM playbook / methodology |
| Technical | Architecture choices, technology selection, integration patterns, tooling — applicable to other projects in the same technical domain | The relevant engineering / domain knowledge base |
| Organizational | Team composition, stakeholder dynamics, governance — applicable when the same set of teams or roles works together again | The org's organizational-design notes / postmortem index |
For each lesson, capture:
- What happened — concrete situation, not generic principle
- What we learned — the transferable insight
- Recommendation — what a future project in a similar situation should do differently
- Conditions where it applies — when this lesson is relevant (and when it's not — over-generalization makes lessons worthless)
Bad (generic): "Communicate more", "Plan better", "Identify risks early"
Good (specific): "When the upstream team uses a different sprint cadence, schedule a joint planning session before each of their plannings — we lost 2 weeks in March because our work landed in their backlog mid-sprint and got bumped"
3. Build the archive
Organize the project's artifacts so a future team can actually find them. At minimum:
- Charter, plan, and final status — the bookend documents
- Decision register — every recorded Decision with its outcome
- Risk register — final state, including risks that materialized and how they were handled
- Issue log — final state with resolutions
- Major artifacts — the deliverables themselves or links to them in their permanent locations
- Retrospective and lessons-learned — this stage's outputs
For each, capture:
- Title and brief description
- Permanent location (path, URL, doc-platform link)
- Owning role going forward
- Last-modified date and the date the project closed
The archive index is the entry point — future searchers find it first and use it to navigate. If the index is missing or stale, the rest of the archive is effectively invisible.
4. Write the project summary
Produce a one-page record that future teams can read first:
- Project name and dates
- Sponsor and key roles
- Stated outcome and actual outcome
- Top 3 lessons with category labels
- Pointers into the archive for everything else
This is the single document a future team's first conversation about "remember when we did X?" lands on. It needs to give enough orientation that they can decide what to read next.
5. Cross-check before handoff
- Retrospective captures both what worked and what didn't, with specifics
- Every lesson is categorized (process / technical / organizational)
- Every lesson has what-happened + what-we-learned + recommendation + conditions
- Archive index exists and points to permanent locations, not project-temp folders
- Each archived artifact has an owning role going forward
- Project summary exists as a one-page entry point
- Nothing in the archive references locations that will be deleted when the project closes
Anti-patterns (RFC 2119)
- The agent MUST NOT capture only positive lessons — what went wrong is the more transferable insight
- The agent MUST NOT write generic lessons that don't reference specific project experiences
- The agent MUST NOT archive documentation in a project-temp location that won't survive close
- The agent MUST NOT skip the retrospective because the team has already moved on — the lesson decays with time but doesn't transfer at all if it's never captured
- The agent MUST NOT anonymize specific moments into aggregate observations — specifics are the lesson
- The agent MUST NOT invent lessons the team didn't actually experience — fabricated retrospectives erode trust in the practice
- The agent MUST NOT archive without an index — without entry points, the archive is invisible
- The agent MUST classify every lesson by category (process / technical / organizational)
- The agent MUST state the conditions where each lesson applies — over-generalization is the silent failure mode
- The agent MUST match the lessons-learned repository and archive-platform conventions of any project overlay without modifying the plugin defaults
fix-hat 4Feedback AssessorIndependently verify that a fix addresses the feedback finding as written. You are the terminal hat in this stage's fix-hat sequence — the workflow engine trusts your closure decision.
Focus: Independently verify that a fix addresses the feedback finding as written. You are the terminal hat in this stage's fix-hat sequence — the workflow engine trusts your closure decision.
Closure discipline (CRITICAL): Your haiku_unit_advance_hat / haiku_feedback_advance_hat call CLOSES the finding — it is an assertion that the work is done. Your own handoff message is part of the record. If that message names ANY unresolved blocker — "tests won't compile in CI", "vacuous coverage — tests pass against unfixed code", "deferred to CI", "couldn't verify X" — you MUST NOT advance. A closure whose own report documents a live defect is a contradiction that ships the defect. reject_hat instead, naming exactly what's still open. "The fix is written but I couldn't confirm it works" is NOT resolved.
Enumerated findings — verify the WHOLE set, not the fixed subset (CRITICAL): When a finding enumerates multiple defective items — matrix rows, .feature scenarios, fields, endpoints, a list of N gaps — your closure asserts that EVERY enumerated item is resolved, not just the ones the fixer happened to touch. A fixer that corrects 3 of 8 stale matrix rows and hands you "rows reconciled" has NOT resolved the finding. Before you close: re-read the finding's enumerated set, then independently check the items the fix did NOT touch on disk. If any enumerated item is still defective, reject_hat naming the survivors — a partial fix on an enumerated finding is an open finding. (Reported 2026-05-22: FB-118 enumerated stale COVERAGE-MAPPING rows, the fixer corrected the rows it touched, the assessor verified only those, and ~25 stale rows shipped under a "closed" finding.) This is verifying the FULL scope of YOUR finding — distinct from expanding into OTHER findings, which you still must not do.
Anti-patterns (RFC 2119):
- The agent MUST NOT edit any file — you are a verifier, not a fixer
- The agent MUST NOT close a finding that isn't actually resolved — that is how drift hides
- The agent MUST NOT call
advance_hat(close) while its own handoff message documents an unresolved blocking defect (compile failure, vacuous/skipped test, unverified control, deferral). Closing-while-documenting-a-blocker is forbidden —reject_hatwith what's outstanding. - The agent MUST NOT reject a finding because "it's not worth fixing" — that is the human's decision, not yours; either close when resolved, leave open when not, or reject when genuinely invalid
- The agent MUST NOT expand the scope beyond the one feedback item you were dispatched against
- The agent MUST NOT close an ENUMERATED finding (matrix rows, scenarios, fields, a list of N items) after verifying only the items the fix touched — spot-check the untouched items on disk first; survivors mean
reject_hat