bmad-method 6.10.1-next.34 → 6.10.1-next.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/.claude-plugin/marketplace.json +25 -26
  2. package/package.json +4 -3
  3. package/removals.txt +6 -0
  4. package/src/bmm-skills/{4-implementation → agents}/bmad-agent-dev/customize.toml +1 -1
  5. package/src/bmm-skills/module-help.csv +13 -18
  6. package/src/bmm-skills/module.yaml +0 -7
  7. package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/bmad-manifest.json +1 -1
  8. package/src/bmm-skills/ship/bmad-retrospective/SKILL.md +89 -0
  9. package/src/bmm-skills/{4-implementation → ship}/bmad-retrospective/customize.toml +2 -2
  10. package/src/bmm-skills/ship/bmad-retrospective/references/acceptance-verdict.md +55 -0
  11. package/src/bmm-skills/ship/bmad-retrospective/references/aggregate-views.md +17 -0
  12. package/src/bmm-skills/ship/bmad-retrospective/references/evidence-gathering.md +24 -0
  13. package/src/bmm-skills/ship/bmad-retrospective/references/retro-document.md +84 -0
  14. package/src/bmm-skills/ship/bmad-retrospective/references/team-discussion.md +22 -0
  15. package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
  16. package/src/bmm-skills/ship/bmad-retrospective/scripts/git_evidence.py +304 -0
  17. package/src/bmm-skills/ship/bmad-retrospective/scripts/sprint_status.py +746 -0
  18. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
  19. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
  20. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_git_evidence.py +750 -0
  21. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_sprint_status.py +1580 -0
  22. package/src/core-skills/bmad-help/SKILL.md +2 -2
  23. package/src/core-skills/bmad-party-mode/customize.toml +1 -1
  24. package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
  25. package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
  26. package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
  27. package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
  28. package/tools/installer/ide/shared/path-utils.js +2 -2
  29. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/SKILL.md +0 -76
  30. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/customize.toml +0 -81
  31. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/explain-concept.md +0 -20
  32. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/mermaid-gen.md +0 -20
  33. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/validate-doc.md +0 -19
  34. package/src/bmm-skills/1-analysis/bmad-agent-tech-writer/write-document.md +0 -20
  35. package/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md +0 -1527
  36. /package/src/bmm-skills/{1-analysis → agents}/bmad-agent-analyst/SKILL.md +0 -0
  37. /package/src/bmm-skills/{1-analysis → agents}/bmad-agent-analyst/customize.toml +0 -0
  38. /package/src/bmm-skills/{3-solutioning → agents}/bmad-agent-architect/SKILL.md +0 -0
  39. /package/src/bmm-skills/{3-solutioning → agents}/bmad-agent-architect/customize.toml +0 -0
  40. /package/src/bmm-skills/{4-implementation → agents}/bmad-agent-dev/SKILL.md +0 -0
  41. /package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-pm/SKILL.md +0 -0
  42. /package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-pm/customize.toml +0 -0
  43. /package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-ux-designer/SKILL.md +0 -0
  44. /package/src/bmm-skills/{2-plan-workflows → agents}/bmad-agent-ux-designer/customize.toml +0 -0
  45. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/SKILL.md +0 -0
  46. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/assets/spine-template.md +0 -0
  47. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/customize.toml +0 -0
  48. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/references/headless.md +0 -0
  49. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/references/reviewer-gate.md +0 -0
  50. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/scripts/lint_spine.py +0 -0
  51. /package/src/bmm-skills/{3-solutioning → plan}/bmad-architecture/scripts/tests/test_lint_spine.py +0 -0
  52. /package/src/bmm-skills/{3-solutioning → plan}/bmad-check-implementation-readiness/SKILL.md +0 -0
  53. /package/src/bmm-skills/{3-solutioning → plan}/bmad-check-implementation-readiness/customize.toml +0 -0
  54. /package/src/bmm-skills/{3-solutioning → plan}/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -0
  55. /package/src/bmm-skills/{3-solutioning → plan}/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -0
  56. /package/src/bmm-skills/{3-solutioning → plan}/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -0
  57. /package/src/bmm-skills/{3-solutioning → plan}/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -0
  58. /package/src/bmm-skills/{3-solutioning → plan}/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -0
  59. /package/src/bmm-skills/{3-solutioning → plan}/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -0
  60. /package/src/bmm-skills/{3-solutioning → plan}/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -0
  61. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/SKILL.md +0 -0
  62. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/customize.toml +0 -0
  63. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -0
  64. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -0
  65. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -0
  66. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/steps/step-04-final-validation.md +0 -0
  67. /package/src/bmm-skills/{3-solutioning → plan}/bmad-create-epics-and-stories/templates/epics-template.md +0 -0
  68. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/SKILL.md +0 -0
  69. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/checklist.md +0 -0
  70. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/customize.toml +0 -0
  71. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/documentation-requirements.csv +0 -0
  72. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/instructions.md +0 -0
  73. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/templates/deep-dive-template.md +0 -0
  74. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/templates/index-template.md +0 -0
  75. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/templates/project-overview-template.md +0 -0
  76. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/templates/project-scan-report-schema.json +0 -0
  77. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/templates/source-tree-template.md +0 -0
  78. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/workflows/deep-dive-instructions.md +0 -0
  79. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/workflows/deep-dive-workflow.md +0 -0
  80. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/workflows/full-scan-instructions.md +0 -0
  81. /package/src/bmm-skills/{1-analysis → plan}/bmad-document-project/workflows/full-scan-workflow.md +0 -0
  82. /package/src/bmm-skills/{3-solutioning → plan}/bmad-generate-project-context/SKILL.md +0 -0
  83. /package/src/bmm-skills/{3-solutioning → plan}/bmad-generate-project-context/customize.toml +0 -0
  84. /package/src/bmm-skills/{3-solutioning → plan}/bmad-generate-project-context/project-context-template.md +0 -0
  85. /package/src/bmm-skills/{3-solutioning → plan}/bmad-generate-project-context/steps/step-01-discover.md +0 -0
  86. /package/src/bmm-skills/{3-solutioning → plan}/bmad-generate-project-context/steps/step-02-generate.md +0 -0
  87. /package/src/bmm-skills/{3-solutioning → plan}/bmad-generate-project-context/steps/step-03-complete.md +0 -0
  88. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/SKILL.md +0 -0
  89. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/headless-schemas.md +0 -0
  90. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/prd-template.md +0 -0
  91. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/prd-validation-checklist.md +0 -0
  92. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/assets/validation-report-template.html +0 -0
  93. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/customize.toml +0 -0
  94. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/references/headless.md +0 -0
  95. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-prd/references/validate.md +0 -0
  96. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/SKILL.md +0 -0
  97. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/agents/artifact-analyzer.md +0 -0
  98. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/agents/web-researcher.md +0 -0
  99. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/assets/prfaq-template.md +0 -0
  100. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/customize.toml +0 -0
  101. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/customer-faq.md +0 -0
  102. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/internal-faq.md +0 -0
  103. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/press-release.md +0 -0
  104. /package/src/bmm-skills/{1-analysis → plan}/bmad-prfaq/references/verdict.md +0 -0
  105. /package/src/bmm-skills/{1-analysis → plan}/bmad-product-brief/SKILL.md +0 -0
  106. /package/src/bmm-skills/{1-analysis → plan}/bmad-product-brief/assets/brief-template.md +0 -0
  107. /package/src/bmm-skills/{1-analysis → plan}/bmad-product-brief/customize.toml +0 -0
  108. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-spec/SKILL.md +0 -0
  109. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-spec/assets/headless-schemas.md +0 -0
  110. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-spec/assets/spec-template.md +0 -0
  111. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-spec/assets/stories-schema.md +0 -0
  112. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-spec/customize.toml +0 -0
  113. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/SKILL.md +0 -0
  114. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/color-themes.md +0 -0
  115. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-directions.md +0 -0
  116. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-example-editorial.md +0 -0
  117. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-example-mobile.md +0 -0
  118. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/design-example-shadcn.md +0 -0
  119. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/excalidraw-wireframe.md +0 -0
  120. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/experience-example-mobile.md +0 -0
  121. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/experience-example-shadcn.md +0 -0
  122. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/headless-schemas.md +0 -0
  123. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/key-screens.md +0 -0
  124. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/assets/validation-report-template.html +0 -0
  125. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/customize.toml +0 -0
  126. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/creative-tools.md +0 -0
  127. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/design-md-spec.md +0 -0
  128. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/headless.md +0 -0
  129. /package/src/bmm-skills/{2-plan-workflows → plan}/bmad-ux/references/validate.md +0 -0
  130. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/SKILL.md +0 -0
  131. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/compile-epic-context.md +0 -0
  132. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/customize.toml +0 -0
  133. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/references/deletion-check.md +0 -0
  134. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/render.py +0 -0
  135. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/review-prompts/adversarial.md +0 -0
  136. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/review-prompts/edge-case-hunter.md +0 -0
  137. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/review-prompts/verification-gap.md +0 -0
  138. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/spec-template.md +0 -0
  139. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/step-01-clarify-and-route.md +0 -0
  140. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/step-02-plan.md +0 -0
  141. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/step-03-implement.md +0 -0
  142. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/step-04-review.md +0 -0
  143. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/step-05-present.md +0 -0
  144. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/step-oneshot.md +0 -0
  145. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/sync-sprint-status.md +0 -0
  146. /package/src/bmm-skills/{4-implementation → ship}/bmad-build/workflow.md +0 -0
  147. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/SKILL.md +0 -0
  148. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/compile-epic-context.md +0 -0
  149. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/customize.toml +0 -0
  150. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/references/deletion-check.md +0 -0
  151. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/review-prompts/adversarial.md +0 -0
  152. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/review-prompts/edge-case-hunter.md +0 -0
  153. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/review-prompts/verification-gap.md +0 -0
  154. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/spec-template.md +0 -0
  155. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/step-01-clarify-and-route.md +0 -0
  156. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/step-02-plan.md +0 -0
  157. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/step-03-implement.md +0 -0
  158. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/step-04-review.md +0 -0
  159. /package/src/bmm-skills/{4-implementation → ship}/bmad-build-auto/workflow.md +0 -0
  160. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/SKILL.md +0 -0
  161. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/customize.toml +0 -0
  162. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/generate-trail.md +0 -0
  163. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-01-orientation.md +0 -0
  164. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-02-walkthrough.md +0 -0
  165. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-03-detail-pass.md +0 -0
  166. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-04-testing.md +0 -0
  167. /package/src/bmm-skills/{4-implementation → ship}/bmad-checkpoint-preview/step-05-wrapup.md +0 -0
  168. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/SKILL.md +0 -0
  169. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/customize.toml +0 -0
  170. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/references/deletion-check.md +0 -0
  171. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/review-prompts/adversarial.md +0 -0
  172. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/review-prompts/edge-case-hunter.md +0 -0
  173. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/review-prompts/verification-gap.md +0 -0
  174. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-01-gather-context.md +0 -0
  175. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-02-review.md +0 -0
  176. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-03-triage.md +0 -0
  177. /package/src/bmm-skills/{4-implementation → ship}/bmad-code-review/steps/step-04-present.md +0 -0
  178. /package/src/bmm-skills/{4-implementation → ship}/bmad-correct-course/SKILL.md +0 -0
  179. /package/src/bmm-skills/{4-implementation → ship}/bmad-correct-course/checklist.md +0 -0
  180. /package/src/bmm-skills/{4-implementation → ship}/bmad-correct-course/customize.toml +0 -0
  181. /package/src/bmm-skills/{4-implementation → ship}/bmad-qa-generate-e2e-tests/SKILL.md +0 -0
  182. /package/src/bmm-skills/{4-implementation → ship}/bmad-qa-generate-e2e-tests/checklist.md +0 -0
  183. /package/src/bmm-skills/{4-implementation → ship}/bmad-qa-generate-e2e-tests/customize.toml +0 -0
  184. /package/src/bmm-skills/{4-implementation → ship}/bmad-sprint-planning/SKILL.md +0 -0
  185. /package/src/bmm-skills/{4-implementation → ship}/bmad-sprint-planning/checklist.md +0 -0
  186. /package/src/bmm-skills/{4-implementation → ship}/bmad-sprint-planning/customize.toml +0 -0
  187. /package/src/bmm-skills/{4-implementation → ship}/bmad-sprint-planning/sprint-status-template.yaml +0 -0
  188. /package/src/bmm-skills/{4-implementation → ship}/bmad-sprint-status/SKILL.md +0 -0
  189. /package/src/bmm-skills/{4-implementation → ship}/bmad-sprint-status/customize.toml +0 -0
@@ -72,33 +72,32 @@
72
72
  "./src/core-skills/bmad-customize",
73
73
  "./src/core-skills/bmad-advanced-elicitation",
74
74
  "./src/core-skills/bmad-review",
75
- "./src/bmm-skills/1-analysis/bmad-product-brief",
76
- "./src/bmm-skills/1-analysis/bmad-prfaq",
77
- "./src/bmm-skills/1-analysis/bmad-agent-analyst",
78
- "./src/bmm-skills/1-analysis/bmad-agent-tech-writer",
79
- "./src/bmm-skills/1-analysis/bmad-document-project",
75
+ "./src/bmm-skills/plan/bmad-product-brief",
76
+ "./src/bmm-skills/plan/bmad-prfaq",
77
+ "./src/bmm-skills/agents/bmad-agent-analyst",
78
+ "./src/bmm-skills/plan/bmad-document-project",
80
79
  "./src/core-skills/bmad-deep-recon",
81
- "./src/bmm-skills/2-plan-workflows/bmad-agent-pm",
82
- "./src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer",
83
- "./src/bmm-skills/2-plan-workflows/bmad-prd",
84
- "./src/bmm-skills/2-plan-workflows/bmad-spec",
85
- "./src/bmm-skills/2-plan-workflows/bmad-ux",
86
- "./src/bmm-skills/3-solutioning/bmad-agent-architect",
87
- "./src/bmm-skills/3-solutioning/bmad-architecture",
88
- "./src/bmm-skills/3-solutioning/bmad-check-implementation-readiness",
89
- "./src/bmm-skills/3-solutioning/bmad-create-epics-and-stories",
90
- "./src/bmm-skills/3-solutioning/bmad-generate-project-context",
91
- "./src/bmm-skills/4-implementation/bmad-agent-dev",
92
- "./src/bmm-skills/4-implementation/bmad-dev-story",
93
- "./src/bmm-skills/4-implementation/bmad-build",
94
- "./src/bmm-skills/4-implementation/bmad-checkpoint-preview",
95
- "./src/bmm-skills/4-implementation/bmad-sprint-planning",
96
- "./src/bmm-skills/4-implementation/bmad-sprint-status",
97
- "./src/bmm-skills/4-implementation/bmad-code-review",
98
- "./src/bmm-skills/4-implementation/bmad-create-story",
99
- "./src/bmm-skills/4-implementation/bmad-correct-course",
100
- "./src/bmm-skills/4-implementation/bmad-retrospective",
101
- "./src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests",
80
+ "./src/bmm-skills/agents/bmad-agent-pm",
81
+ "./src/bmm-skills/agents/bmad-agent-ux-designer",
82
+ "./src/bmm-skills/plan/bmad-prd",
83
+ "./src/bmm-skills/plan/bmad-spec",
84
+ "./src/bmm-skills/plan/bmad-ux",
85
+ "./src/bmm-skills/agents/bmad-agent-architect",
86
+ "./src/bmm-skills/plan/bmad-architecture",
87
+ "./src/bmm-skills/plan/bmad-check-implementation-readiness",
88
+ "./src/bmm-skills/plan/bmad-create-epics-and-stories",
89
+ "./src/bmm-skills/plan/bmad-generate-project-context",
90
+ "./src/bmm-skills/agents/bmad-agent-dev",
91
+ "./src/bmm-skills/v6-shims/bmad-dev-story",
92
+ "./src/bmm-skills/ship/bmad-build",
93
+ "./src/bmm-skills/ship/bmad-checkpoint-preview",
94
+ "./src/bmm-skills/ship/bmad-sprint-planning",
95
+ "./src/bmm-skills/ship/bmad-sprint-status",
96
+ "./src/bmm-skills/ship/bmad-code-review",
97
+ "./src/bmm-skills/v6-shims/bmad-create-story",
98
+ "./src/bmm-skills/ship/bmad-correct-course",
99
+ "./src/bmm-skills/ship/bmad-retrospective",
100
+ "./src/bmm-skills/ship/bmad-qa-generate-e2e-tests",
102
101
  "./src/bmm-skills/v6-shims/bmad-quick-dev"
103
102
  ]
104
103
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method",
4
- "version": "6.10.1-next.34",
4
+ "version": "6.10.1-next.36",
5
5
  "description": "Breakthrough Method of Agile AI-driven Development",
6
6
  "keywords": [
7
7
  "agile",
@@ -40,14 +40,15 @@
40
40
  "lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix",
41
41
  "lint:md": "markdownlint-cli2 \"**/*.md\"",
42
42
  "prepare": "command -v husky >/dev/null 2>&1 && husky || exit 0",
43
- "quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:site-url && npm run test:install && npm run test:urls && npm run test:renderer && npm run test:build-auto-contract && npm run validate:refs && npm run validate:skills && npm run docs:validate-sidebar",
43
+ "quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:site-url && npm run test:install && npm run test:urls && npm run test:renderer && npm run test:retrospective && npm run test:build-auto-contract && npm run validate:refs && npm run validate:skills && npm run docs:validate-sidebar",
44
44
  "rebundle": "node tools/installer/bundlers/bundle-web.js rebundle",
45
- "test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:site-url && npm run test:channels && npm run test:renderer && npm run test:build-auto-contract && npm run test:skills && npm run lint && npm run lint:md && npm run format:check",
45
+ "test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:site-url && npm run test:channels && npm run test:renderer && npm run test:retrospective && npm run test:build-auto-contract && npm run test:skills && npm run lint && npm run lint:md && npm run format:check",
46
46
  "test:build-auto-contract": "node test/test-build-auto-contract.js",
47
47
  "test:channels": "node test/test-installer-channels.js",
48
48
  "test:install": "node test/test-installation-components.js",
49
49
  "test:refs": "node test/test-file-refs-csv.js",
50
50
  "test:renderer": "uv run --python 3.11 python -m unittest src/scripts/tests/test_config_utils.py src/scripts/tests/test_resolve_config.py src/scripts/tests/test_resolve_customization.py && node test/test-build-renderer.js && node test/test-build-auto-renderer.js",
51
+ "test:retrospective": "uv run --python 3.11 src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_git_evidence.py && uv run --python 3.11 src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_sprint_status.py",
51
52
  "test:site-url": "node test/test-site-url.mjs",
52
53
  "test:skills": "node test/test-validate-skills.js",
53
54
  "test:urls": "node test/test-parse-source-urls.js",
package/removals.txt CHANGED
@@ -73,3 +73,9 @@ bmad-auto-setup
73
73
  # bmad-index-docs, bmad-shard-doc: retired outright.
74
74
  bmad-index-docs
75
75
  bmad-shard-doc
76
+
77
+ # Removed agents (bmm reorg)
78
+ # bmad-agent-tech-writer (Paige): retired — capabilities were generic LLM
79
+ # defaults; document-project remains directly invocable. Paige is on hiatus
80
+ # and will return in the future far more capable.
81
+ bmad-agent-tech-writer
@@ -79,5 +79,5 @@ skill = "bmad-sprint-planning"
79
79
 
80
80
  [[agent.menu]]
81
81
  code = "ER"
82
- description = "Party mode review of all work completed across an epic"
82
+ description = "Evidence-based review of a completed epic against its acceptance criteria"
83
83
  skill = "bmad-retrospective"
@@ -2,25 +2,20 @@ module,skill,display-name,menu-code,description,action,args,phase,preceded-by,fo
2
2
  BMad Method,_meta,,,,,,,,,false,https://docs.bmad-method.org/llms.txt,
3
3
  BMad Method,bmad-document-project,Document Project,DP,Analyze an existing project to produce useful documentation.,,,anytime,,,false,project-knowledge,*
4
4
  BMad Method,bmad-generate-project-context,Generate Project Context,GPC,Scan existing codebase to generate a lean LLM-optimized project-context.md. Essential for brownfield projects.,,,anytime,,,false,output_folder,project context
5
- BMad Method,bmad-build,Build,BD,Official Phase 4 implementation loop: clarify intent plan implement review and present.,,,4-implementation,bmad-sprint-planning,bmad-code-review,true,implementation_artifacts,spec and project implementation
5
+ BMad Method,bmad-build,Build,BD,Official Phase 4 implementation loop: clarify intent plan implement review and present.,,,ship,bmad-sprint-planning,bmad-code-review,true,implementation_artifacts,spec and project implementation
6
6
  BMad Method,bmad-spec,Spec,SPC,"Use to distill any intent input (brief, PRD, transcript, brain dump, design folder, mixed multi-source) into a succinct, no-fluff SPEC.md contract + companions that downstream work derives from. Locks the WHAT before the HOW. Works for software, game design, research, editorial, policy, business, anything intent-bearing. Validation mode also available.",,[path],anytime,,,false,{output_folder}/specs/spec-{slug},SPEC.md + companion files
7
7
  BMad Method,bmad-correct-course,Correct Course,CC,Navigate significant changes. May recommend start over update PRD redo architecture sprint planning or correct epics and stories.,,,anytime,,,false,planning_artifacts,change proposal
8
- BMad Method,bmad-agent-tech-writer,Write Document,WD,"Describe in detail what you want, and the agent will follow documentation best practices. Multi-turn conversation with subprocess for research/review.",write,,anytime,,,false,project-knowledge,document
9
- BMad Method,bmad-agent-tech-writer,Update Standards,US,Update agent memory documentation-standards.md with your specific preferences if you discover missing document conventions.,update-standards,,anytime,,,false,_bmad/_memory/tech-writer-sidecar,standards
10
- BMad Method,bmad-agent-tech-writer,Mermaid Generate,MG,Create a Mermaid diagram based on user description. Will suggest diagram types if not specified.,mermaid,,anytime,,,false,planning_artifacts,mermaid diagram
11
- BMad Method,bmad-agent-tech-writer,Validate Document,VD,Review the specified document against documentation standards and best practices. Returns specific actionable improvement suggestions organized by priority.,validate,[path],anytime,,,false,planning_artifacts,validation report
12
- BMad Method,bmad-agent-tech-writer,Explain Concept,EC,Create clear technical explanations with examples and diagrams for complex concepts.,explain,[topic],anytime,,,false,project_knowledge,explanation
13
- BMad Method,bmad-brainstorming,Brainstorm Project,BP,Expert guided facilitation through a single or multiple techniques.,,,1-analysis,,,false,{output_folder}/brainstorming,brainstorming session
14
- BMad Method,bmad-product-brief,Create Brief,CB,An expert guided experience to nail down your product idea in a brief. a gentler approach than PRFAQ when you are already sure of your concept and nothing will sway you.,,-A,1-analysis,,,false,planning_artifacts,product brief
15
- BMad Method,bmad-prfaq,PRFAQ Challenge,WB,Working Backwards guided experience to forge and stress-test your product concept to ensure you have a great product that users will love and need through the PRFAQ gauntlet to determine feasibility and alignment with user needs. alternative to product brief.,,-H,1-analysis,,,false,planning_artifacts,prfaq document
8
+ BMad Method,bmad-brainstorming,Brainstorm Project,BP,Expert guided facilitation through a single or multiple techniques.,,,plan,,,false,{output_folder}/brainstorming,brainstorming session
9
+ BMad Method,bmad-product-brief,Create Brief,CB,An expert guided experience to nail down your product idea in a brief. a gentler approach than PRFAQ when you are already sure of your concept and nothing will sway you.,,-A,plan,,,false,planning_artifacts,product brief
10
+ BMad Method,bmad-prfaq,PRFAQ Challenge,WB,Working Backwards guided experience to forge and stress-test your product concept to ensure you have a great product that users will love and need through the PRFAQ gauntlet to determine feasibility and alignment with user needs. alternative to product brief.,,-H,plan,,,false,planning_artifacts,prfaq document
16
11
  BMad Method,bmad-prd,Create Edit and Review PRD,PRD,"Facilitated PRD workflow — create a new PRD via coached discovery, update an existing one against a change signal, or validate a finished PRD against a checklist with an HTML findings report.",,,2-planning,bmad-product-brief,,true,planning_artifacts,prd
17
12
  BMad Method,bmad-ux,Create UX,CU,"Guidance through realizing the plan for your UX, strongly recommended if a UI is a primary piece of the proposed project.",,,2-planning,bmad-prd,,false,planning_artifacts,ux design
18
- BMad Method,bmad-architecture,Architecture,CA,Offer once requirements exist (a PRD or spec; plus UX if present) and the user is ready to move from what to how. Also offer any time independently-built parts risk diverging. Produces the architecture spine: the invariants that keep features epics and stories consistent. Comes before epics and stories and scales from a quick spine to a full architecture (brownfield: ratifies the existing codebase).,,,3-solutioning,,,true,planning_artifacts,architecture
19
- BMad Method,bmad-create-epics-and-stories,Create Epics and Stories,CE,,,,3-solutioning,bmad-architecture,,true,planning_artifacts,epics and stories
20
- BMad Method,bmad-check-implementation-readiness,Check Implementation Readiness,IR,Ensure PRD UX Architecture and Epics Stories are aligned.,,,3-solutioning,bmad-create-epics-and-stories,,true,planning_artifacts,readiness report
21
- BMad Method,bmad-sprint-planning,Sprint Planning,SP,Kicks off implementation by producing a plan the implementation agents will follow in sequence for every story.,,,4-implementation,,,true,implementation_artifacts,sprint status
22
- BMad Method,bmad-sprint-status,Sprint Status,SS,Anytime: Summarize sprint status and route to next workflow.,,,4-implementation,bmad-sprint-planning,,false,,
23
- BMad Method,bmad-code-review,Code Review,CR,Ad hoc review of any code change. Optional extra layer after Build's built-in review.,,,4-implementation,bmad-build,,false,,
24
- BMad Method,bmad-checkpoint-preview,Checkpoint,CK,Guided walkthrough of a change from purpose and context into details. Use for human review of commits branches or PRs.,,,4-implementation,,,false,,
25
- BMad Method,bmad-qa-generate-e2e-tests,QA Automation Test,QA,Generate automated API and E2E tests for implemented code. NOT for code review or story validation — use CR for that.,,,4-implementation,bmad-build,,false,implementation_artifacts,test suite
26
- BMad Method,bmad-retrospective,Retrospective,ER,Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC.,,,4-implementation,bmad-code-review,,false,implementation_artifacts,retrospective
13
+ BMad Method,bmad-architecture,Architecture,CA,Offer once requirements exist (a PRD or spec; plus UX if present) and the user is ready to move from what to how. Also offer any time independently-built parts risk diverging. Produces the architecture spine: the invariants that keep features epics and stories consistent. Comes before epics and stories and scales from a quick spine to a full architecture (brownfield: ratifies the existing codebase).,,,plan,,,true,planning_artifacts,architecture
14
+ BMad Method,bmad-create-epics-and-stories,Create Epics and Stories,CE,,,,plan,bmad-architecture,,true,planning_artifacts,epics and stories
15
+ BMad Method,bmad-check-implementation-readiness,Check Implementation Readiness,IR,Ensure PRD UX Architecture and Epics Stories are aligned.,,,plan,bmad-create-epics-and-stories,,true,planning_artifacts,readiness report
16
+ BMad Method,bmad-sprint-planning,Sprint Planning,SP,Kicks off implementation by producing a plan the implementation agents will follow in sequence for every story.,,,ship,,,true,implementation_artifacts,sprint status
17
+ BMad Method,bmad-sprint-status,Sprint Status,SS,Anytime: Summarize sprint status and route to next workflow.,,,ship,bmad-sprint-planning,,false,,
18
+ BMad Method,bmad-code-review,Code Review,CR,Ad hoc review of any code change. Optional extra layer after Build's built-in review.,,,ship,bmad-build,,false,,
19
+ BMad Method,bmad-checkpoint-preview,Checkpoint,CK,Guided walkthrough of a change from purpose and context into details. Use for human review of commits branches or PRs.,,,ship,,,false,,
20
+ BMad Method,bmad-qa-generate-e2e-tests,QA Automation Test,QA,Generate automated API and E2E tests for implemented code. NOT for code review or story validation — use CR for that.,,,ship,bmad-build,,false,implementation_artifacts,test suite
21
+ BMad Method,bmad-retrospective,Retrospective,ER,Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC.,,,ship,bmad-code-review,,false,implementation_artifacts,retrospective
@@ -56,13 +56,6 @@ agents:
56
56
  team: software-development
57
57
  description: "Channels Porter's strategic rigor and Minto's Pyramid Principle, grounds every finding in verifiable evidence, represents every stakeholder voice. Speaks like a treasure hunter narrating the find: thrilled by every clue, precise once the pattern emerges."
58
58
 
59
- - code: bmad-agent-tech-writer
60
- name: Paige
61
- title: Technical Writer
62
- icon: "📚"
63
- team: software-development
64
- description: "Master of CommonMark, DITA, and OpenAPI; turns complex concepts into accessible structured docs, favors diagrams over walls of text, every word earning its place. Speaks like the patient teacher you wish you'd had, using analogies that make complex things feel simple."
65
-
66
59
  - code: bmad-agent-pm
67
60
  name: John
68
61
  title: Product Manager
@@ -6,7 +6,7 @@
6
6
  "menu-code": "WB",
7
7
  "description": "Produces battle-tested PRFAQ document and optional LLM distillate for PRD input.",
8
8
  "supports-headless": true,
9
- "phase-name": "1-analysis",
9
+ "phase-name": "plan",
10
10
  "preceded-by": ["brainstorming", "perform-research"],
11
11
  "followed-by": ["create-prd"],
12
12
  "is-required": false,
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: bmad-retrospective
3
+ description: 'Evidence-based epic retrospective — collect what the epic produced, verify findings against sources, render an acceptance verdict. Use when the user says "run a retrospective" or "lets retro the epic [epic]". Supports -H/--headless.'
4
+ ---
5
+
6
+ # Retrospective
7
+
8
+ Review a completed epic by reading the evidence it left — the epic spec, story files, the full diff, per-story commits, sprint status, and session logs when they exist. An unattended epic run leaves a record; this skill reads that record, surfaces the defects no single story could show, and judges the epic against the criteria it set for itself.
9
+
10
+ Every finding you report carries a source reference (file, line, commit, or log). A claim you cannot point at — an invented root cause, a pattern the diff does not actually show — is not a finding. Drop it.
11
+
12
+ ## Resolution rules
13
+
14
+ - Bare paths and `{skill-root}` (e.g. `references/aggregate-views.md`, `scripts/sprint_status.py`) resolve from this skill's installed directory.
15
+ - `{project-root}` → the project working directory.
16
+ - `{skill-name}` → the skill directory's basename.
17
+
18
+ ## Modes
19
+
20
+ Interactive by default. With `-H`/`--headless`: skip every confirmation, take the epic from the invocation (falling back to detection only if none was supplied), never open the team discussion, render the verdict on the evidence alone, and record each assumption made without the user (which epic was selected, the machine verdict, each proposed item) into the retrospective document's Assumptions section so the audit trail survives. The Phase 4 acceptance fail-safe still applies in headless runs.
21
+
22
+ For automation, `-H <epic>` — an explicit epic in headless mode — is the stable orchestrator-facing interface. Pass the same number to `detect-epic --epic <N>` so the unfinished-story gate is script-backed (see Inputs). Epic auto-detection is a human convenience, not an automation contract: unflagged `detect-epic` returns the highest epic with *any* `done` story, and stories-mode projects have no `sprint-status.yaml` to detect from.
23
+
24
+ ## On Activation
25
+
26
+ Run these in order before the retrospective begins:
27
+
28
+ 1. **Resolve the workflow block.** Run `uv run --no-cache {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. If it fails, resolve `{workflow.*}` yourself by reading `{skill-root}/customize.toml`, then `{project-root}/_bmad/custom/{skill-name}.toml`, then `.user.toml` in that order, merging base → team → user (scalars override, keyed arrays-of-tables merge by `code`/`id`, other arrays append).
29
+ 2. **Run prepend steps** — execute each entry in `{workflow.activation_steps_prepend}` in order.
30
+ 3. **Load persistent facts** — treat every `{workflow.persistent_facts}` entry as standing context. `file:` entries are paths/globs under `{project-root}` whose contents load as facts; all others are literal facts.
31
+ 4. **Load config** from `{project-root}/_bmad/bmm/config.yaml`: `project_name`, `user_name`, `communication_language`, `document_output_language`, `user_skill_level`, `planning_artifacts`, `implementation_artifacts`, and `date` (system datetime). Speak all output in `{communication_language}`; write all documents in `{document_output_language}`. Never state time estimates — AI has changed development speed, so hour/day/week predictions are noise.
32
+ 5. **Greet and orient** (interactive only). Greet `{user_name}`, name the epic you are about to retro, and optionally invite their going-in concerns ("anything you want weighted — a story that felt rushed, a risky interaction between two stories?"). Use any answer to focus the Phase 1–2 analysis; it directs attention but never becomes a finding without a source.
33
+ 6. **Run append steps** — execute each entry in `{workflow.activation_steps_append}` in order.
34
+
35
+ ## Inputs
36
+
37
+ | Input | Where | Use |
38
+ |-------|-------|-----|
39
+ | epic | invocation argument, or detected from sprint status | which epic to retro |
40
+ | sprint status | `{implementation_artifacts}/sprint-status.yaml` | epic detection + final status update |
41
+ | architecture / prd | `{planning_artifacts}/*architecture*`, `*prd*` | context for judging as-built vs intended |
42
+ | previous retro (optional) | `{implementation_artifacts}/**/epic-{{prev}}-retro-*.md` | check whether last epic's actions landed |
43
+ | session logs (optional) | conversation/session records for the epic's stories | process lessons; record the gap when absent |
44
+
45
+ Determine the epic and its unfinished-story list from `sprint_status.py detect-epic` whenever `{implementation_artifacts}/sprint-status.yaml` is available:
46
+
47
+ - **Epic supplied** (including the stable `-H <epic>` orchestrator path): run `uv run --no-cache {skill-root}/scripts/sprint_status.py detect-epic --file {implementation_artifacts}/sprint-status.yaml --epic <N>`. The script scopes `pending_stories` to that number even when auto-detect would have picked a different epic, and even when the epic has no `done` story yet. `story_count` is that same scoped count of the epic's story keys: `0` means the file has no such epic at all — a nonexistent epic returns the same empty `pending_stories` as a finished one, so treat `story_count: 0` as a likely mistyped epic number, confirm with the user, and headless, stop and report rather than proceeding.
48
+ - **No epic supplied**: run the same command without `--epic` (returns the highest epic with a `done` story). Confirm the detected epic with the user and let them override; in headless mode accept it and record the assumption. If detection returns none, ask the user — or, headless, stop and report.
49
+
50
+ If the script exits non-zero it emits `{"ok": false, "error": ...}` instead of a detection — the normal path for a stories-mode project with no `sprint-status.yaml`, and for a file that does not parse: surface that error verbatim — or, if the script produced no JSON at all, whatever it wrote to stderr — and ask the user which epic to retro; headless, stop and report. Without a readable sprint-status file there is no `pending_stories` list; record that the completeness check did not run and continue only if the user (or headless Assumptions trail) accepts proceeding without it.
51
+
52
+ Then check the epic is actually finished before Phase 1. A successful detect carries `pending_stories` — the selected epic's story keys whose status is not `done`, in file order, scoped to that epic alone (an unfinished story in some *other* epic is out of scope for this retrospective). When the list is non-empty, interactively list those stories and ask whether to retro an unfinished epic: if the user declines, stop and report — do not enter Phase 1; if they accept, record the stories they accepted proceeding over in the document's Epic summary. Headless, proceed and record the same list in the Assumptions section — do not invent a confirmation. Either way the list sits in the document, and Phase 4's machine verdict is **rejected** when any story remained unfinished (see `references/acceptance-verdict.md`); a human may override interactively.
53
+
54
+ ## Working state and resumption
55
+
56
+ The retrospective document is the working artifact, not only the final output. Once the epic is fixed, create it as a skeleton (`references/retro-document.md` names the sections) and write each phase's result into it as you finish — inventory, then findings with sources, then dispositions and verdict. Continuity is re-reading the file.
57
+
58
+ If a retrospective document for this epic already exists, load it, reconcile its recorded state against the current evidence — the current evidence wins, since commits may have landed and questions may have been answered since — and resume at the first incomplete phase instead of redoing finished ones.
59
+
60
+ ## Flow
61
+
62
+ Run the phases in order. A default run stops at a written evidence report and verdict; the team discussion in Phase 3 is opt-in.
63
+
64
+ ### Phase 1 — Gather
65
+
66
+ Enumerate what the epic actually produced and record what is missing. Load `references/evidence-gathering.md` for the inventory checklist, the `git_evidence.py` pre-pass that derives the diff range and per-story commits, and the missing-evidence rule: each later analysis declares what it needs and records a narrowed scope when the evidence is absent, so a reader can always tell "checked and clean" from "never checked."
67
+
68
+ ### Phase 2 — Analyze
69
+
70
+ Produce findings, each with a source reference, from three angles:
71
+
72
+ - **Aggregate views** — the defects no single diff hunk shows: architecture delta, duplication map, god-class growth, pattern divergence, spec-to-implementation reconciliation. Load `references/aggregate-views.md` for the catalog and how to derive each (deterministic scripts first).
73
+ - **Diff-scope review** — do not reimplement review. Invoke **`bmad-review`** on the epic's diff for the code lenses (adversarial, edge-case, verification-gap), weighting the boundaries between stories, where no single session ever saw both sides. Fold its findings in. If `bmad-review` is unavailable, run those lenses inline over the diff on a narrowed scope and record the narrowing.
74
+ - **Behavior check (when the epic changed runtime behavior)** — exercise the changed flows end to end and record what you observed. Passing tests do not substitute for running the system.
75
+
76
+ Consolidate: merge, dedupe, and provenance-link findings. Drop any finding you cannot tie to a source.
77
+
78
+ ### Phase 3 — Team Discussion (opt-in)
79
+
80
+ Skip by default; never runs headless. When the user asks to "discuss it as a team," "run party mode," or similar, invoke the skill `bmad-party-mode` seeded with the Phase 2 findings so the installed agents react to real evidence — the god class the diff really grew, the verification gap that is actually there, the wins the evidence confirms. Load `references/team-discussion.md` for how to seed it and keep it grounded. If `bmad-party-mode` is unavailable, run the discussion inline over the Phase 2 findings and record the narrowing. The rule: agents speak only to findings with sources.
81
+
82
+ ### Phase 4 — Decide
83
+
84
+ - **Action items** — compile fix-now findings and process lessons into specific, owned action items. Fixes and spec reconciliations are *proposed here*, not auto-applied; the human decides what to execute.
85
+ - **Acceptance verdict** — judge the final state against the epic's declared acceptance criteria (profile it from the diff and stories if none were declared): **accepted**, **accepted-with-open-items**, or **rejected** — one spelling, everywhere a machine reads it. Unfinished stories in `pending_stories` force the machine verdict to **rejected**. A human decision always overrides. An epic that fails its criteria with no human decision is recorded as *not accepted* — never as silently accepted. Load `references/acceptance-verdict.md` for the rubric, the finding-routing dispositions, and the previous-retro follow-through record — the per-item evidence Phase 5's status offer reads.
86
+
87
+ ### Phase 5 — Finalize
88
+
89
+ Finalize the retrospective document and update sprint status. Load `references/retro-document.md` for the document's sections and the exact `sprint_status.py update` invocation that marks the retro key `done`, appends the action items, and validates the write. Where the Phase 4 follow-through has evidence a *previous* epic's action item landed, offer `--set-action-status` and pass only the transitions the user confirms — the evidence justifies proposing a transition, and only the user's confirmation justifies writing it; a headless run records the transitions it would have proposed and does not pass the flag at all. Then, if `{workflow.on_complete}` is non-empty, follow it as the final instruction.
@@ -34,8 +34,8 @@ persistent_facts = [
34
34
  "file:{project-root}/**/project-context.md",
35
35
  ]
36
36
 
37
- # Scalar: executed when the workflow reaches Step 13 (Final Summary and Handoff),
38
- # after the retrospective document is saved and sprint-status is updated. Override wins.
37
+ # Scalar: executed at the end of Phase 5 (Close), after the retrospective
38
+ # document is saved and sprint-status is updated. Override wins.
39
39
  # Leave empty for no custom post-completion behavior.
40
40
 
41
41
  on_complete = ""
@@ -0,0 +1,55 @@
1
+ # Decide: Routing and the Acceptance Verdict
2
+
3
+ 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.
4
+
5
+ ## Route each finding
6
+
7
+ Give every finding two independent dispositions:
8
+
9
+ - **What to do about this instance** — *fix now*, *defer*, or *accept as-is*. Fix-now findings become action items. Deferred findings carry enough context to be acted on later without re-investigation. Accepted deviations are recorded so later retros stop re-flagging them.
10
+ - **What would prevent the next one** — the upstream lesson: spec wording, story sizing, a missing convention or gate, or nothing. This is where a recurring finding becomes a process change rather than a one-off fix.
11
+
12
+ 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.
13
+
14
+ ## Action items
15
+
16
+ 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:
17
+
18
+ - **Remediation** — code fixes are written up as action items (or story-shaped work) for the normal dev loop to execute later. The retrospective does not run the dev loop itself.
19
+ - **Spec reconciliation** — where the as-built diverges from the spec, propose the reconciliation as an action item with the evidence attached. The human applies it to the project contract; an uncertain interpretation is never written into the spec automatically.
20
+
21
+ ## Previous-retro follow-through
22
+
23
+ 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:
24
+
25
+ - **How to address the item** — its `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.
26
+ - **Whether it landed** — with the source that shows it: the commit, the file and line, the test. An item you cannot point at is "no evidence found", not "not done" — the reader must be able to tell a checked item from an unchecked one.
27
+ - **The status it argues for** — `done` for a landed item, `in-progress` for one demonstrably underway, or nothing. A proposal, never a write.
28
+
29
+ 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."
30
+
31
+ ## The verdict
32
+
33
+ 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:
34
+
35
+ - **Accepted** — criteria demonstrably met in the evidence, no blocking findings open, and **no unfinished stories** for this epic.
36
+ - **Accepted-with-open-items** — criteria met, but named findings remain deferred and tracked — still only when every story of this epic is `done`.
37
+ - **Rejected** — criteria not met, a blocking finding stands unresolved, **or any of this epic's stories is still not `done`**.
38
+
39
+ ### Unfinished stories
40
+
41
+ `pending_stories` from `detect-epic` (with or without `--epic`) is authoritative for this epic's story keys. When that list is non-empty:
42
+
43
+ - The **machine** verdict is **rejected**. Name every unfinished story key in the Acceptance verdict section as the evidence. Do not soften this to accepted-with-open-items: unfinished delivery is not an open finding about a finished epic — the epic itself is incomplete.
44
+ - Record the unfinished keys in Epic summary (interactive) or Assumptions (headless) as the Inputs section already requires.
45
+ - Headless runs have no human at the console: the document's verdict is **rejected** when `pending_stories` was non-empty. Interactive runs may still let a human override (rule 1 below) after seeing the list.
46
+
47
+ 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.
48
+
49
+ Three hard rules:
50
+
51
+ 1. A human decision always overrides the machine verdict.
52
+ 2. An epic that fails its criteria with **no** human decision is recorded as **not accepted** — never as silently accepted.
53
+ 3. A non-empty `pending_stories` list makes the machine verdict **rejected**, including in headless mode.
54
+
55
+ The verdict and its evidence carry into the Phase 5 document.
@@ -0,0 +1,17 @@
1
+ # Aggregate Views
2
+
3
+ Phase 2. An epic is many coding sessions, each validated in isolation; the defects that matter are the ones no single session — and no single diff hunk — could see. Nine sessions each added three hundred lines and none ever saw the 3,000-line class they collectively built. These views are properties of the *whole* change, derived across the full diff range from Phase 1.
4
+
5
+ Prefer deterministic derivation: a script that measures the codebase is evidence; a model's impression is not. Where you compute a view inline instead of by script, record the narrowed scope. Every observation that becomes a finding carries a source reference — the file, the symbol, the commits. `references/evidence-gathering.md` is authoritative for what every `git_evidence.py` key means, including the commit-level `is_merge` and `stories` (every story id a subject names, so a commit spanning two counts for both) — read it there before deriving anything from the numbers.
6
+
7
+ ## The catalog
8
+
9
+ - **Architecture delta** — how the dependency structure changed across the epic. Where a language-native dependency tool exists (dependency-cruiser, madge, pydeps, and the like), run it before and after the range and diff the graphs; otherwise derive the module/import graph from the changed files. Look for new cross-cutting dependencies, layering violations, and cycles introduced — structure the code's own conventions would forbid but no single story tripped.
10
+ - **Duplication map** — the same problem solved more than one way across stories. Two sessions independently writing near-identical logic, or a helper reimplemented because the second session did not know the first existed.
11
+ - **God-class / size growth** — files that grew past a healthy size *over the epic*, invisible per-commit because each session added only a little. The `git_evidence.py` pre-pass (Phase 1) reports `added` / `deleted` / `net` per path in `files` — *change volume*, not a file's absolute size or a per-commit growth rate. Those sums cover the range's **non-merge** commits only, and they are always integers: an unmeasurable revision is left out of them rather than nulling them. Rank on `files`, then open the top of the ranking and read each file's real current size and structure before calling anything a god-class — high net churn makes a file a candidate to inspect, not a verdict on its own. Three qualifiers say how far the ranking can be trusted: `binary_revisions` counts that path's revisions whose churn could not be measured, so its true volume is *at least* what the sums report; `merges_measured` short of `merge_count` means some merges were never measured at all, which caps how complete the ranking can be; and `merge_files` mostly restates churn `files` already counted, so summing the two double counts — but it is not redundant, because a merge's first-parent diff also carries whatever the conflict resolution itself added, code that lives in no non-merge commit and therefore appears in `files` nowhere. So read `merge_files` separately, for the paths whose churn shows up only there, rather than discarding it as double counting. Whether a flagged file is genuinely a god-class or legitimately large stays your judgment.
12
+ - **Pattern divergence** — where the epic's code diverges from the conventions the surrounding codebase already established: naming, error handling, test structure, module boundaries. Agents learn conventions by pattern-matching the code, so divergence compounds.
13
+ - **Spec-to-implementation reconciliation** — where the as-built diverges from what the epic spec and PRD/architecture described. Requirements silently dropped, added behavior nobody specified, intent reinterpreted between stories. Each divergence is either a defect (fix), an accepted deviation (record so later runs stop re-flagging it), or a spec that should be reconciled to reality (propose in Phase 4).
14
+
15
+ ## Delegation
16
+
17
+ When sub-agents are available, delegate the derivation: each returns evidence with source refs and checked scope, never a verdict — the parent consolidates and decides. Give each a narrow view and an explicit return format. When sub-agents are unavailable, compute the highest-value views inline (architecture delta and spec reconciliation first) and record which views were narrowed or skipped.
@@ -0,0 +1,24 @@
1
+ # Evidence Gathering
2
+
3
+ Phase 1 of the retrospective. Enumerate what the completed epic produced, so every later analysis works from real artifacts instead of memory. Output is an inventory: what exists, what is missing, and the diff range the rest of the retro will read.
4
+
5
+ ## Inventory checklist
6
+
7
+ Collect what the epic produced and note the source path or range of each:
8
+
9
+ - **Epic spec** — the epic file under `{planning_artifacts}`, including any declared acceptance criteria. If the spec declares how the epic will be judged, that governs Phase 4; if not, note that the verdict will be profiled from the diff.
10
+ - **Story files** — the story specs implemented under this epic (`{implementation_artifacts}`), each carrying its intent and context. These mark the boundaries between coding sessions.
11
+ - **Diff range and commits** — the full set of changes the epic introduced. Establish the range from the first and last story commits (or ask the user for it). The range must *include* the first story commit: `A..B` excludes `A`, so use the parent of the first commit as the left endpoint — `<first-commit>^..<last-commit>` — or the whole first story disappears from the diff, the commit attribution, and the verdict evidence. Then run `uv run --no-cache {skill-root}/scripts/git_evidence.py --repo {project-root} --range <range> --stories <story-ids>` to get, as JSON, the per-story commit attribution and the per-file change volume — added / deleted / net across the range — that Phase 2 reads. Record the range explicitly; Phase 2's aggregate views and the `bmad-review` pass both read it. When the range cannot be established, say so and narrow the scope rather than guessing. Read the output keys precisely: each commit carries `is_merge` and `stories` — *every* id its subject names, so a commit spanning two stories counts for both. `files` sums non-merge commits only. `merge_files` is each measured merge's diff against its first parent, so it *restates* the churn that merge brought in plus whatever the conflict resolution added — never add it into `files`, and never read it as merge-introduced work on its own. `merges_measured` counts the merges on the range head's first-parent spine; `merge_count` counts every merge in the range, so a gap between the two means merges went unmeasured. `binary_revisions` is unmeasured churn, not zero churn.
12
+ - **Sprint status** — `{implementation_artifacts}/sprint-status.yaml`, for which stories are `done` and the current retro-key state.
13
+ - **Previous retrospective** — the prior epic's retro doc, if one exists, so Phase 4 can check whether last epic's action items landed.
14
+ - **Session logs** — conversation or session records for the epic's stories, when available. They are the only record of *why* a session took an unexpected turn — what was tried and abandoned. They are also the evidence most likely to be deleted or expire, so capture references now.
15
+
16
+ ## Missing evidence
17
+
18
+ Evidence availability varies; never hide a gap. Each later analysis declares what it needs and, when that input is absent, records a narrowed scope rather than guessing. A reader of the final retro must always be able to tell **"checked and clean"** from **"never checked."**
19
+
20
+ - Missing session logs → process-lesson analysis is skipped, and the retro says so.
21
+ - No declared acceptance criteria → the verdict is profiled from the diff and stories, flagged as profiled rather than declared.
22
+ - Sub-agents unavailable → analyses that would delegate run inline over a narrowed scope, and the narrowing is recorded.
23
+
24
+ Carry the inventory forward into Phase 2 as the authoritative list of what is available to read.
@@ -0,0 +1,84 @@
1
+ # Finalize: Retrospective Document and Sprint Status
2
+
3
+ Phase 5. Finalize the retrospective and update sprint tracking. Two writes: the retrospective document, and the `sprint-status.yaml` update.
4
+
5
+ ## The retrospective document
6
+
7
+ This document is the run's working artifact: it is created as a skeleton once the epic is fixed and filled as each phase completes, so Phase 5 finalizes rather than writes it from scratch. It lives at `{implementation_artifacts}/epic-{{epic_number}}-retro-{date}.md`, in `{document_output_language}`, as readable markdown; ensure `{implementation_artifacts}` exists.
8
+
9
+ Open the document with YAML frontmatter a machine can read without parsing the prose — an epic gate or orchestrator keys off `verdict` to decide whether to hold the next epic:
10
+
11
+ ```
12
+ ---
13
+ epic: {{epic_number}}
14
+ date: {date}
15
+ verdict: accepted | accepted-with-open-items | rejected
16
+ criteria: declared | profiled
17
+ headless: true | false
18
+ ---
19
+ ```
20
+
21
+ Keep `verdict` in sync with the Acceptance verdict section below. Do not encode the verdict in the sprint-status retro key — that key's value stays `done` so the existing lifecycle consumers (sprint planning's `optional ↔ done` transition, status TUIs) keep working unchanged.
22
+
23
+ That holds for a **rejected** epic too: the update below marks the retro key `done` whichever way the verdict went, because `done` there means *the retrospective ran*, not *the epic passed*. The script writes no verdict of any kind into `sprint-status.yaml` — there is no `retro_verdict` key and `--verdict` is only echoed back in the result JSON — so a gate or orchestrator that acts on the verdict **must** read this document's frontmatter. Reading sprint-status alone cannot tell a rejected epic from an accepted one.
24
+
25
+ Sections:
26
+
27
+ - **Epic summary** — which epic, the diff range, stories completed, any stories still unfinished (`pending_stories`) that the user accepted retro-ing over, the evidence inventory (what was available, what was missing). Unfinished stories force the machine acceptance verdict to **rejected** (see `references/acceptance-verdict.md`).
28
+ - **Findings** — grouped by aggregate view and by lens, each with its source reference and disposition (fix now / defer / accept). This is the record; do not summarize away the provenance.
29
+ - **Behavior verification** — what was exercised end to end and what was observed, or an explicit note that runtime behavior was not exercised.
30
+ - **Previous-retro follow-through** — if a prior retro exists, whether its action items landed, with evidence, and the selector Phase 5 would need to act on each (`references/acceptance-verdict.md` specifies what to record).
31
+ - **Action items** — the routed fix-now items and process lessons, each with an owner. Note which are proposed remediation or spec reconciliations awaiting human application.
32
+ - **Acceptance verdict** — accepted / accepted-with-open-items / rejected, whether the criteria were declared or profiled, and the evidence behind the call.
33
+ - **Open questions** — what a human answer would materially change, and anything the analyses could not resolve.
34
+ - **Assumptions** — in headless runs, every choice made without the user: which epic was selected (invocation or auto-detect), the `detect-epic --epic <N>` (or unflagged) result including any non-empty `pending_stories`, a machine **rejected** verdict forced by unfinished stories or rendered with no human decision, each proposed item. Omit in interactive runs — an interactive run records the same facts where the user confirmed them, in Epic summary.
35
+
36
+ Do not state time estimates anywhere in the document.
37
+
38
+ ## Sprint-status update
39
+
40
+ Do not hand-edit `sprint-status.yaml` — its comment blocks and quoting are exactly the write that most often corrupts the file. Use the bundled script, which round-trips through a comment-preserving YAML parser, force-quotes values so punctuation (a leading `#`, a colon) cannot break parsing, and validates the result — restoring the original file untouched if the write does not verify:
41
+
42
+ ```
43
+ uv run --no-cache {skill-root}/scripts/sprint_status.py update \
44
+ --file "{implementation_artifacts}/sprint-status.yaml" \
45
+ --epic {{epic_number}} --set-retro-done \
46
+ --add-action '[{"action":"...","owner":"..."}, ...]' \
47
+ --ref "{implementation_artifacts}/epic-{{epic_number}}-retro-{date}.md" \
48
+ --verdict "<accepted | accepted-with-open-items | rejected>" \
49
+ --date "{date}"
50
+ ```
51
+
52
+ Keep every value quoted. `--date` is parsed as `MM-DD-YYYY HH:MM` and nothing else — unpadded spellings like `1-2-2026 9:05` are accepted and normalized to the padded form, but a value that does not parse is rejected with `ok: false`, `restored: true` and exit 1, before the file is touched, and the whole update is a no-op. So pass `{date}` only if it is already in that form; otherwise reformat it, or omit the flag entirely and let the script stamp the current time itself. That format carries a space, which is why the flag must be quoted: unquoted, `--date 07-28-2026 14:23` splits into two argv words and dies at argparse (`{"ok": false, "error": "argument error: unrecognized arguments: 14:23"}`, exit 2). `--file` and `--ref` are quoted for the same reason — an `{implementation_artifacts}` path containing a space breaks them exactly the same way.
53
+
54
+ It sets `development_status["epic-{{epic_number}}-retrospective"]` to `done`, appends one `action_items` entry per proposed item, and bumps `last_updated`. Each appended item carries `status: open`, a stable `id` (`epic-<N>-retro-item-<n>-<slug>` derived from the action text, or the `id` you supply in the JSON), and a `ref` back to this retro document (from `--ref`, or a per-item `ref` in the JSON) — so an orchestrator can dedupe items across re-runs and dispatch each one to its full, sourced finding. `--verdict` is not written into the file; it is echoed back in the result JSON as a signal for consumers. It accepts exactly the frontmatter vocabulary — `accepted`, `accepted-with-open-items`, `rejected` — and any other spelling is rejected (`ok: false`, `restored: true`, exit 1) before the file is touched. Read the JSON it returns:
55
+
56
+ - `ok: true` → report the retro-key transition, `action_items_added`, `action_items_updated`, and the echoed `verdict`.
57
+ - `ok: false` → the file was left untouched (`restored: true`); surface the error, do not hand-edit. `restored: false` means the rollback write also failed and the file may be incomplete — warn the user explicitly.
58
+ - `restored` speaks only for a command that may have written. Every `update` failure carries it; `detect-epic` never emits it, because it never writes; and an invocation the parser itself rejects (`argument error: ...`, exit 2) carries neither the key nor a file to speak about. Read a missing `restored` as "nothing was at risk", never as `false`.
59
+ - `retro_key_found: false` → the retro key was absent, so nothing was marked done; the document still saved, but tell the user sprint-status needs a manual retro entry.
60
+ - `retro_key_found: null` → `--set-retro-done` was not passed, so the key was never looked for. Distinct from `false`, which is a real absence the user needs to be told about.
61
+
62
+ Moving a *previous* epic's action items off `open` is recorded in the retro document either way. When the Phase 4 follow-through has evidence an item landed, or the user says one did, offer to update the sprint-status entries too and run `--set-action-status` with exactly what the user confirms — that flag is the only supported way to change a status; hand-editing never is. It can be passed in the same invocation as the update above, or run on its own:
63
+
64
+ ```
65
+ uv run --no-cache {skill-root}/scripts/sprint_status.py update \
66
+ --file "{implementation_artifacts}/sprint-status.yaml" \
67
+ --epic {{epic_number}} \
68
+ --set-action-status '[{"id":"epic-1-retro-item-1-add-error-handling","status":"done"},{"epic":1,"action":"Exact action text","status":"in-progress"}]'
69
+ ```
70
+
71
+ Rules:
72
+
73
+ - Select an item by its `id`, or — for legacy entries written before ids existed — by `epic` plus the item's exact `action` text. An entry carrying both uses the `id`. Matching is exact: no trimming, no case folding, and `epic` must be a JSON integer. The `--epic` flag does not scope selectors; it only names the retro key and the epic recorded on appended items, so items from any epic are addressable in one call.
74
+ - The only statuses are `open`, `in-progress`, and `done`. `bmad-sprint-status` counts both `open` and `in-progress` as open action items, so only `done` retires an item from the surfaced list — moving something to `in-progress` records progress, it does not quiet the dashboard.
75
+ - Every selector must resolve to exactly one item already in the file. Matching nothing, matching more than one, or colliding with another entry in the same array aborts the whole invocation — `ok: false`, `restored: true`, the file byte-identical and nothing partially applied. "Whole invocation" includes any `--set-retro-done` and `--add-action` passed in the same call: one mistyped selector drops the entire update, so re-run the full command after fixing it rather than assuming the retro key was set.
76
+ - Items appended by `--add-action` in the same run are not addressable in that run; they are always written as `open`.
77
+ - Only ever apply a status the user confirmed, and in a headless run do not pass this flag at all.
78
+ - Success reports `action_items_updated`.
79
+
80
+ Only ever apply a status the user confirmed: the evidence justifies proposing a transition, and only the user's confirmation justifies writing it. In a headless run do not use this flag at all — record the transitions you would have proposed in the Previous-retro follow-through section and leave the prior items' statuses alone.
81
+
82
+ ## Finish
83
+
84
+ Report where the document was saved, the verdict, and the action-item count. Then, if `{workflow.on_complete}` is non-empty, follow it as the final terminal instruction before exiting.
@@ -0,0 +1,22 @@
1
+ # Team Discussion (opt-in)
2
+
3
+ An optional discussion layer over Phase 2's findings, off by default. It exists for users who want the retrospective discussed from multiple perspectives, the way a team would. One rule: **the team discusses evidence, never invention.** Agents speak only to findings that carry source references. No agent may describe an event that did not happen or report a pattern the diff does not show.
4
+
5
+ ## When to run it
6
+
7
+ Only when asked — "discuss it as a team," "run party mode," or similar. A default run never enters this phase.
8
+
9
+ ## How to run it
10
+
11
+ Invoke **`bmad-party-mode`**, seeded with the consolidated Phase 2 findings and the epic context, so the installed agents react as real subagents with independent thinking rather than a scripted dialogue. Seed it with:
12
+
13
+ - The findings, each with its source reference, grouped by the aggregate view or lens that produced it.
14
+ - The improvements the evidence confirms — real gains, patterns that worked — so positive observations are grounded in fact.
15
+ - The epic's acceptance criteria (or the profiled stand-in), so the discussion can weigh the verdict.
16
+ - The previous epic's action items and whether they landed, when a prior retro exists, so accountability is grounded in fact.
17
+
18
+ If `bmad-party-mode` is unavailable, a discussion the user asked for must not silently fail to happen. Run it inline over the same seed — take each perspective yourself, hold every perspective to sourced findings — and record in the retrospective document that the discussion ran inline rather than through the installed agents. Record it as the narrowing it is: one model playing every role loses the independent disagreement that surfaces missed findings. State that in the document rather than omitting it.
19
+
20
+ Facilitate in `{communication_language}`, keep the user an active participant, and steer toward systemic understanding over blame — the point is which process or convention would have prevented a finding, not who wrote the line. Capture anything the discussion surfaces that the analyses missed; a genuinely new observation becomes a finding only once you can tie it to a source, otherwise it is a question for Phase 4, not a conclusion.
21
+
22
+ The discussion does not replace Phase 4. Its output feeds the action items and the verdict; it does not render them.