src/bmm-skills/ship/bmad-retrospective/references/acceptance-verdict.md
Phase 4. Turn the consolidated findings into two outputs: routed action items the human can act on, and an honest verdict on whether the epic met its acceptance criteria. This skill proposes; it does not auto-apply fixes or edit the project spec. The human decides what executes.
Give every finding two independent dispositions:
Findings from sub-agents or the team discussion are unverified reports, not established facts. Before an action item relies on one, re-check it against the primary source — reopen the file, the commit, the spec. A finding whose source does not hold up is dropped, not routed.
Compile fix-now findings and process lessons into specific, owned action items. Each names what to change and who owns it. Two kinds are proposed, not applied in this version:
When a prior retro exists, check whether the action items it committed to were completed. Read action_items in {implementation_artifacts}/sprint-status.yaml and, for every entry belonging to an earlier epic that is not already done, record one line in the retrospective document's Previous-retro follow-through section:
id, exactly as the file spells it. Legacy entries written before ids existed have none; for those, record the item's epic (the integer in the file) plus its exact action text, character for character. One or the other is what Phase 5 needs to name the item at all.done for a landed item, in-progress for one demonstrably underway, or nothing. A proposal, never a write.That record is exactly what Phase 5's --set-action-status offer reads: the selector becomes the JSON, the evidence is what the user is asked to confirm, and the proposed status is written only if they confirm it. A run with no prior retro, or one whose sprint-status.yaml is unreadable or carries no action_items, records that there was nothing to follow through on — and which of those it was, so a missing file is never mistaken for "no outstanding items."
Judge the final state against the epic's declared acceptance criteria. If the epic declared none, profile the criteria from the diff and stories and mark the verdict as profiled rather than declared. Weigh verification results (the Phase 2 behavior check) and unresolved findings. Render one of:
done.done.pending_stories is authoritative for this epic's incomplete work, whichever mode produced it: sprint-status story keys in file order from detect-epic, or stories.yaml ids in list order whose artifact status is not done. When that list is non-empty:
pending_stories was non-empty. Interactive runs may still let a human override (rule 1 below) after seeing the list.If the completeness check did not run (no readable sprint-status.yaml), do not render a rejected or accepted verdict from the absence of data — say the check was unavailable and weigh only the criteria and findings you have.
Three hard rules:
pending_stories list makes the machine verdict rejected, including in headless mode.The verdict and its evidence carry into the Phase 5 document.