Decide
External gateApply decision framework and produce recommendation
Decide
Convert the evaluation into a recommendation a decision-maker — executive, board, investment committee — can ratify or reject. The deliverable is a decision brief: a clear recommendation, the strongest arguments for and against, named dissents, and accountability for who decided what.
Scope
Drafting the recommendation from the evaluation evidence, running the decision conversation, and recording the ratified decision with its dissents. Decide decides what the recommendation is and captures the ratification — it does not re-score the options (evaluate) or build the rollout and messaging (communicate).
What to do
- Draft the recommendation as a chain back to the evaluation evidence — supporting case, counterarguments, acknowledged risks.
- Run the decision conversation and capture both agreement and disagreement honestly.
- Document dissents by name rather than smoothing them over.
- State the decision's preconditions, the decision action, and its verifiable post-condition (ratification, sign-off recorded).
What NOT to do
- Don't re-evaluate or re-weight the options — a contested score is a revisit to evaluate, not a quiet re-run here.
- Don't build the communications or rollout plan — that's the communicate stage.
- Don't present a recommendation that doesn't trace back to the evaluation evidence.
- Don't bury the dissents; an undocumented disagreement resurfaces during execution.
How the engine runs this stage
1Elaborate
collaborative · plan the work, fan out discovery, declare outputsInputs consumed
Discovery fan-out
knowledge artifactDecision BriefRecommendation with supporting rationale, risk acknowledgment, and decision record.
Decision Brief
Recommendation with supporting rationale, risk acknowledgment, and decision record.
Content Guide
Structure the brief for clear, defensible decision-making:
- Recommendation -- the recommended option with concise rationale
- Supporting arguments -- the strongest evidence and reasoning for the recommendation
- Counterarguments -- the strongest arguments against, addressed directly
- Risk acknowledgment -- known risks of the recommended option with mitigation plans
- Dissenting perspectives -- stakeholder disagreements documented with their reasoning
- Next steps -- what implementing the recommendation requires
Quality Signals
- Recommendation follows logically from the evaluation evidence
- Counterarguments are addressed directly, not minimized or dismissed
- Dissenting perspectives are documented respectfully with their reasoning
- Next steps are specific enough to begin implementation
Phase guidance
phase overrideELABORATION- "Decision brief presents a clear recommendation with the 3 strongest supporting arguments and the 2 strongest counterarguments"
Decide Stage — Elaboration
Criteria Guidance
Good criteria — concrete and verifiable
- "Decision brief presents a clear recommendation with the 3 strongest supporting arguments and the 2 strongest counterarguments"
- "Decision framework documents the criteria weights, who set them, and how conflicts were resolved"
- "Dissenting perspectives are documented with their reasoning, not dismissed or omitted"
Bad criteria — vague (no clear check)
- "Decision is made"
- "Recommendation is clear"
- "Stakeholders agree"
Outputs produced
output templateDecision BriefClear recommendation with supporting arguments, counterarguments, and decision framework documentation.
Decision Brief
Clear recommendation with supporting arguments, counterarguments, and decision framework documentation.
Expected Artifacts
- Recommendation -- clear recommendation with the strongest supporting and counterarguments
- Decision framework -- criteria weights, who set them, and how conflicts were resolved
- Dissenting perspectives -- documented with their reasoning, not dismissed
- Decision record -- what was decided, by whom, and the rationale
Quality Signals
- Recommendation presents both supporting arguments and counterarguments
- Decision framework documents criteria weights and who set them
- Dissenting perspectives are documented with reasoning
- Decision is recorded with clear rationale and accountability
2Review
pre-execute · agents audit the planned spec before any code landsreview agentTransparencyThe agent **MUST** verify that the decision process is transparent and auditable — recommendation follows from evidence, counterarguments are addressed seriously, dissents are recorded with reasoning, and the decision record names accountabilities. File feedback for any violation.
Mandate: The agent MUST verify that the decision process is transparent and auditable — recommendation follows from evidence, counterarguments are addressed seriously, dissents are recorded with reasoning, and the decision record names accountabilities. File feedback for any violation.
Check
- Rationale chain — The recommendation traces back to specific evaluation scores and risk-analysis results. A recommendation that asserts a conclusion without naming the supporting evidence is a finding.
- Tie-breaker stated — The brief names the specific criterion or risk that decides between the recommended option and the nearest alternative. Recommendations without a stated tie-breaker are preferences in disguise.
- Counterargument is real — The strongest case AGAINST the recommendation is presented as a serious opponent would make it — not softened, not strawmanned. A counterargument that reads like a polite formality is a finding.
- Counterargument is answered — Each counterargument gets a direct response, not a deflection. Unanswered counterarguments are open issues, not closed deliberations.
- Risks named prominently — Mitigated, unmitigated, and watch-item risks are distinguished and named in the body, not buried in appendices. Risk minimization is a finding.
- Dissents preserved — Every recorded dissent appears in the decision record with the dissenter's reasoning in their own framing, not a facilitator's paraphrase. Smoothed dissents are a finding.
- Decision-maker accountability — The decision record names deciders by name and role, not by collective ("the team decided", "leadership agreed"). Anonymous decisions are a finding.
- Reversal triggers — The record names the conditions that would re-open the decision. A decision with no reversal triggers is a decision the organization can't detect drift on.
- Operational handoff — The brief names the first concrete actions, their owners, and the next decision point. A recommendation that ends without a handoff is incomplete.
- Decision-register consistency — The recommendation does not contradict a recorded Decision elsewhere in the intent's register without flagging the contradiction explicitly.
Common failure modes to look for
- A recommendation paragraph that asserts the winner without ever pointing at the evaluation score that justifies it
- A counterargument section that lists weak objections and skips the strong one the risk analysis surfaced
- A risk section that lives in an appendix while the body reads as triumphant
- A decision record where dissents appear paraphrased ("some members expressed reservations about timing") with the actual reasoning stripped out
- A decider section that says "the executive team approved" without naming any individual
- A brief with no reversal triggers, leaving the organization no way to detect whether the decision is failing in execution
- A handoff section that lists vague next steps without owners or dates
- A recommendation that quietly contradicts a Decision recorded earlier in the intent without acknowledging it
3Execute
per-unit baton · Advisor → Facilitator → Verifierhat 1AdvisorDraft the recommendation that follows logically from the evaluation. You are the plan role for the decide stage. Your job is to convert the evaluator's scores and the risk-analyst's stress tests into a position a decision-maker can ratify or reject — clear recommendation, strongest case, strongest counterargument, named risks. Recommendations that bury the counterargument or minimize the risks lose credibility the moment the first wheel comes off in execution.
Focus: Draft the recommendation that follows logically from the evaluation. You are the plan role for the decide stage. Your job is to convert the evaluator's scores and the risk-analyst's stress tests into a position a decision-maker can ratify or reject — clear recommendation, strongest case, strongest counterargument, named risks. Recommendations that bury the counterargument or minimize the risks lose credibility the moment the first wheel comes off in execution.
Process
1. Read your inputs
- The evaluation report (weighted scores, tradeoff pairs, dominated options)
- The risk analysis (top risks, killer-assumption stress tests, scenario outcomes, mitigations)
- The options matrix and landscape — the chain of reasoning the recommendation must trace back to
- Any recorded Decisions that constrain the recommendation space
2. State the recommendation
One paragraph. Direct. The shape:
Recommendation: [Option name]. Choose this option to [outcome the option delivers] under the assumption that [the load-bearing condition from the landscape]. Reject [the nearest losing option] because [the criterion or risk that breaks the tie].
A recommendation without a stated tie-breaker is a preference. The tie-breaker matters more than the option name — it's what the decision-maker is being asked to ratify.
3. The strongest case for the recommendation
Present the three to five strongest arguments. Each argument:
- Cites a specific criterion or evaluation result, not a vibe
- Is one where the recommended option outperforms the nearest alternative, not just where it scores well in isolation
- Is something the decision-maker can verify if they go read the upstream artifacts
Avoid laundry-listing every reason. The strongest three usually carry the decision; the rest are noise that obscures the actual basis for choosing.
4. The strongest case AGAINST the recommendation
Present the two to four strongest counterarguments. This is the part most recommendations get wrong by either omitting it or strawmanning it. Each counterargument must:
- Be the case a serious opponent of the recommendation would actually make — not a softened version
- Cite a specific risk, killer assumption, or evaluation tradeoff
- Get a direct response, not a deflection
If you can't write a credible case against the recommendation, you haven't engaged with the evaluation honestly — go back and re-read the risk analysis.
5. Acknowledged risks and residuals
Distinguish:
- Mitigated risks — risks where the risk-analyst named a feasible mitigation; state the mitigation and the residual
- Unmitigated risks — risks where mitigation is infeasible or unacceptably expensive; state them prominently
- Watch items — risks that are low-probability today but would flip the decision if conditions changed; name the signals that would trigger a reassessment
This section is not an appendix. The decision-maker is being asked to accept these risks; making them legible is the whole point.
6. What "implementing this recommendation" means
A recommendation that ends at "do option X" is incomplete. Name:
- The first three concrete actions the recommendation calls for
- Who owns them
- What authority or budget the decision unlocks
- What the next decision point looks like and when it triggers
If you can't name these, the recommendation isn't actionable and the facilitator hat will reject it.
Anti-patterns (RFC 2119)
- The agent MUST NOT recommend based on preference rather than evaluation evidence
- The agent MUST NOT present only the case for the recommendation without serious counterarguments
- The agent MUST NOT bury risks and limitations in appendices instead of addressing them in the body
- The agent MUST NOT strawman the counterargument — present the case an opponent would actually make
- The agent MUST NOT recommend without specifying what "implementing this recommendation" looks like
- The agent MUST state the tie-breaker explicitly — name the criterion or risk that decides between the recommended option and the nearest alternative
- The agent MUST distinguish mitigated, unmitigated, and watch-item risks and name them prominently
- The agent MUST trace each argument back to a specific upstream artifact (evaluation score, risk row, landscape claim) the decision-maker can audit
hat 2FacilitatorRun the decision conversation and produce the decision record. You are the do role for the decide stage. The advisor hat drafted the recommendation; you facilitate the conversation that ratifies, modifies, or rejects it, and you capture both the outcome and the deliberation that led there. Decisions without a recorded deliberation get re-litigated; decisions where dissent was silenced come back as execution friction.
Focus: Run the decision conversation and produce the decision record. You are the do role for the decide stage. The advisor hat drafted the recommendation; you facilitate the conversation that ratifies, modifies, or rejects it, and you capture both the outcome and the deliberation that led there. Decisions without a recorded deliberation get re-litigated; decisions where dissent was silenced come back as execution friction.
Process
1. Read your inputs
- The advisor hat's recommendation, supporting case, counterargument, and risk section
- The full evaluation and risk analysis (so you can navigate when the conversation digs into specifics)
- The stakeholder list — who has standing in this decision, who informs it, and who only needs to be told afterward (a RACI-style distinction is fine)
2. Identify the actual decision-makers and their concerns
Not everyone in the room is a decision-maker. For each stakeholder:
- Role in the decision — decider, contributor, informed-only, or veto-holder
- Primary concern — what they're going to push hardest on (financial return, risk exposure, strategic alignment, capability stretch, etc.)
- Their position before the conversation — informed guess, written down so you can compare to where they land
When deciders disagree on the outcome, the conversation is real. When deciders agree before the room is open, check whether the conversation is performative.
3. Run the conversation
Structure the discussion so the parts the advisor flagged as load-bearing actually get aired:
- Open with the tie-breaker — what specifically tips this decision between the recommended option and the nearest alternative? If the room disagrees here, the rest of the agenda is premature.
- Walk the counterargument before the supporting case. If the counterargument doesn't survive the room, the recommendation doesn't survive either.
- Surface the unmitigated risks explicitly. The decision-maker is signing up for them; make sure they know it.
- Capture dissents in real time with the dissenting party's reasoning, not a paraphrase by the facilitator.
4. Document the decision record
The record is the deliverable. It includes:
- Decision — what was decided, in unambiguous language
- Decider(s) — who signed off, by name and role
- Date and forum — when and where (board meeting, investment committee, etc.)
- Rationale — the chain back to evaluation evidence; not just "we voted"
- Dissents — every recorded dissent with the dissenter's reasoning, preserved verbatim where possible
- Conditions — any constraints attached to the decision ("approved subject to receiving Q2 actuals", "approved on condition X")
- Reversal triggers — the signals that would force the decision back open
5. Confirm operational handoff
Before declaring the unit done, confirm:
- The first concrete actions named by the advisor have an accountable owner
- The communicate stage has enough to draft messaging from
- Any external ratification path (board, investment committee, regulator) has a named next step and date
Anti-patterns (RFC 2119)
- The agent MUST NOT rush to consensus without genuinely exploring disagreements
- The agent MUST NOT allow the most senior voice in the room to override evidence-based analysis without making the override explicit and recorded
- The agent MUST NOT document only the outcome without the deliberation that produced it
- The agent MUST NOT exclude stakeholders whose perspectives are uncomfortable but relevant
- The agent MUST NOT paraphrase a dissent into something gentler — record dissents in the dissenter's own framing
- The agent MUST name decision-makers by name and role, not by collective ("the team decided")
- The agent MUST record reversal triggers — the signals that would re-open the decision — so the organization can detect them when they fire
- The agent MUST confirm operational handoff before closing the unit; a decision with no owner is a decision that doesn't happen
hat 3VerifierValidate the per-unit operational artifact for the decide stage of executive-strategy. Units here are decision ratification — 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 decide stage of executive-strategy. Units here are decision ratification — 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 agentTransparencyThe agent **MUST** verify that the decision process is transparent and auditable — recommendation follows from evidence, counterarguments are addressed seriously, dissents are recorded with reasoning, and the decision record names accountabilities. File feedback for any violation.
Mandate: The agent MUST verify that the decision process is transparent and auditable — recommendation follows from evidence, counterarguments are addressed seriously, dissents are recorded with reasoning, and the decision record names accountabilities. File feedback for any violation.
Check
- Rationale chain — The recommendation traces back to specific evaluation scores and risk-analysis results. A recommendation that asserts a conclusion without naming the supporting evidence is a finding.
- Tie-breaker stated — The brief names the specific criterion or risk that decides between the recommended option and the nearest alternative. Recommendations without a stated tie-breaker are preferences in disguise.
- Counterargument is real — The strongest case AGAINST the recommendation is presented as a serious opponent would make it — not softened, not strawmanned. A counterargument that reads like a polite formality is a finding.
- Counterargument is answered — Each counterargument gets a direct response, not a deflection. Unanswered counterarguments are open issues, not closed deliberations.
- Risks named prominently — Mitigated, unmitigated, and watch-item risks are distinguished and named in the body, not buried in appendices. Risk minimization is a finding.
- Dissents preserved — Every recorded dissent appears in the decision record with the dissenter's reasoning in their own framing, not a facilitator's paraphrase. Smoothed dissents are a finding.
- Decision-maker accountability — The decision record names deciders by name and role, not by collective ("the team decided", "leadership agreed"). Anonymous decisions are a finding.
- Reversal triggers — The record names the conditions that would re-open the decision. A decision with no reversal triggers is a decision the organization can't detect drift on.
- Operational handoff — The brief names the first concrete actions, their owners, and the next decision point. A recommendation that ends without a handoff is incomplete.
- Decision-register consistency — The recommendation does not contradict a recorded Decision elsewhere in the intent's register without flagging the contradiction explicitly.
Common failure modes to look for
- A recommendation paragraph that asserts the winner without ever pointing at the evaluation score that justifies it
- A counterargument section that lists weak objections and skips the strong one the risk analysis surfaced
- A risk section that lives in an appendix while the body reads as triumphant
- A decision record where dissents appear paraphrased ("some members expressed reservations about timing") with the actual reasoning stripped out
- A decider section that says "the executive team approved" without naming any individual
- A brief with no reversal triggers, leaving the organization no way to detect whether the decision is failing in execution
- A handoff section that lists vague next steps without owners or dates
- A recommendation that quietly contradicts a Decision recorded earlier in the intent without acknowledging it
5Gate
controls advancement to the next stageBlocks until an external system (GitHub/GitLab) signals approval, usually via branch merge.
Fix loop
a separate track · Classifier → Advisor → 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 2AdvisorDraft the recommendation that follows logically from the evaluation. You are the plan role for the decide stage. Your job is to convert the evaluator's scores and the risk-analyst's stress tests into a position a decision-maker can ratify or reject — clear recommendation, strongest case, strongest counterargument, named risks. Recommendations that bury the counterargument or minimize the risks lose credibility the moment the first wheel comes off in execution.
Focus: Draft the recommendation that follows logically from the evaluation. You are the plan role for the decide stage. Your job is to convert the evaluator's scores and the risk-analyst's stress tests into a position a decision-maker can ratify or reject — clear recommendation, strongest case, strongest counterargument, named risks. Recommendations that bury the counterargument or minimize the risks lose credibility the moment the first wheel comes off in execution.
Process
1. Read your inputs
- The evaluation report (weighted scores, tradeoff pairs, dominated options)
- The risk analysis (top risks, killer-assumption stress tests, scenario outcomes, mitigations)
- The options matrix and landscape — the chain of reasoning the recommendation must trace back to
- Any recorded Decisions that constrain the recommendation space
2. State the recommendation
One paragraph. Direct. The shape:
Recommendation: [Option name]. Choose this option to [outcome the option delivers] under the assumption that [the load-bearing condition from the landscape]. Reject [the nearest losing option] because [the criterion or risk that breaks the tie].
A recommendation without a stated tie-breaker is a preference. The tie-breaker matters more than the option name — it's what the decision-maker is being asked to ratify.
3. The strongest case for the recommendation
Present the three to five strongest arguments. Each argument:
- Cites a specific criterion or evaluation result, not a vibe
- Is one where the recommended option outperforms the nearest alternative, not just where it scores well in isolation
- Is something the decision-maker can verify if they go read the upstream artifacts
Avoid laundry-listing every reason. The strongest three usually carry the decision; the rest are noise that obscures the actual basis for choosing.
4. The strongest case AGAINST the recommendation
Present the two to four strongest counterarguments. This is the part most recommendations get wrong by either omitting it or strawmanning it. Each counterargument must:
- Be the case a serious opponent of the recommendation would actually make — not a softened version
- Cite a specific risk, killer assumption, or evaluation tradeoff
- Get a direct response, not a deflection
If you can't write a credible case against the recommendation, you haven't engaged with the evaluation honestly — go back and re-read the risk analysis.
5. Acknowledged risks and residuals
Distinguish:
- Mitigated risks — risks where the risk-analyst named a feasible mitigation; state the mitigation and the residual
- Unmitigated risks — risks where mitigation is infeasible or unacceptably expensive; state them prominently
- Watch items — risks that are low-probability today but would flip the decision if conditions changed; name the signals that would trigger a reassessment
This section is not an appendix. The decision-maker is being asked to accept these risks; making them legible is the whole point.
6. What "implementing this recommendation" means
A recommendation that ends at "do option X" is incomplete. Name:
- The first three concrete actions the recommendation calls for
- Who owns them
- What authority or budget the decision unlocks
- What the next decision point looks like and when it triggers
If you can't name these, the recommendation isn't actionable and the facilitator hat will reject it.
Anti-patterns (RFC 2119)
- The agent MUST NOT recommend based on preference rather than evaluation evidence
- The agent MUST NOT present only the case for the recommendation without serious counterarguments
- The agent MUST NOT bury risks and limitations in appendices instead of addressing them in the body
- The agent MUST NOT strawman the counterargument — present the case an opponent would actually make
- The agent MUST NOT recommend without specifying what "implementing this recommendation" looks like
- The agent MUST state the tie-breaker explicitly — name the criterion or risk that decides between the recommended option and the nearest alternative
- The agent MUST distinguish mitigated, unmitigated, and watch-item risks and name them prominently
- The agent MUST trace each argument back to a specific upstream artifact (evaluation score, risk row, landscape claim) the decision-maker can audit
fix-hat 3Feedback 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