maestro-flow 0.3.7 → 0.3.9

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 (254) hide show
  1. package/.claude/commands/learn-decompose.md +3 -3
  2. package/.claude/commands/learn-follow.md +5 -5
  3. package/.claude/commands/learn-investigate.md +3 -3
  4. package/.claude/commands/learn-retro.md +303 -0
  5. package/.claude/commands/learn-second-opinion.md +3 -3
  6. package/.claude/commands/maestro-analyze.md +123 -99
  7. package/.claude/commands/maestro-brainstorm.md +2 -2
  8. package/.claude/commands/maestro-execute.md +137 -96
  9. package/.claude/commands/maestro-fork.md +111 -0
  10. package/.claude/commands/maestro-init.md +6 -6
  11. package/.claude/commands/maestro-learn.md +74 -298
  12. package/.claude/commands/maestro-merge.md +77 -0
  13. package/.claude/commands/maestro-milestone-audit.md +72 -60
  14. package/.claude/commands/maestro-milestone-complete.md +67 -59
  15. package/.claude/commands/maestro-milestone-release.md +6 -6
  16. package/.claude/commands/maestro-plan.md +151 -130
  17. package/.claude/commands/maestro-quick.md +4 -4
  18. package/.claude/commands/maestro-roadmap.md +5 -5
  19. package/.claude/commands/maestro-spec-generate.md +5 -5
  20. package/.claude/commands/maestro-ui-design.md +3 -3
  21. package/.claude/commands/maestro-verify.md +106 -87
  22. package/.claude/commands/maestro.md +10 -4
  23. package/.claude/commands/manage-codebase-rebuild.md +4 -4
  24. package/.claude/commands/manage-codebase-refresh.md +1 -1
  25. package/.claude/commands/manage-harvest.md +5 -5
  26. package/.claude/commands/manage-issue-discover.md +1 -1
  27. package/.claude/commands/manage-issue-execute.md +6 -6
  28. package/.claude/commands/manage-issue.md +6 -6
  29. package/.claude/commands/manage-learn.md +23 -17
  30. package/.claude/commands/manage-memory-capture.md +15 -17
  31. package/.claude/commands/manage-memory.md +3 -3
  32. package/.claude/commands/manage-status.md +24 -24
  33. package/.claude/commands/quality-business-test.md +5 -5
  34. package/.claude/commands/quality-debug.md +4 -4
  35. package/.claude/commands/quality-integration-test.md +4 -4
  36. package/.claude/commands/quality-refactor.md +3 -3
  37. package/.claude/commands/quality-retrospective.md +7 -7
  38. package/.claude/commands/quality-review.md +4 -4
  39. package/.claude/commands/quality-sync.md +3 -3
  40. package/.claude/commands/quality-test-gen.md +4 -4
  41. package/.claude/commands/quality-test.md +9 -9
  42. package/.claude/commands/spec-add.md +2 -2
  43. package/.claude/commands/spec-load.md +8 -3
  44. package/.claude/commands/spec-setup.md +5 -5
  45. package/.claude/commands/wiki-connect.md +3 -3
  46. package/.claude/commands/wiki-digest.md +30 -5
  47. package/.codex/skills/maestro-analyze/SKILL.md +52 -14
  48. package/.codex/skills/maestro-execute/SKILL.md +27 -26
  49. package/.codex/skills/maestro-milestone-audit/SKILL.md +103 -209
  50. package/.codex/skills/maestro-milestone-complete/SKILL.md +149 -158
  51. package/.codex/skills/maestro-plan/SKILL.md +47 -17
  52. package/.codex/skills/maestro-roadmap/SKILL.md +3 -2
  53. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +2 -2
  54. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +1 -1
  55. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +2 -2
  56. package/.codex/skills/team-lifecycle-v4/specs/knowledge-transfer.md +2 -2
  57. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +1 -1
  58. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +1 -1
  59. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +1 -1
  60. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +1 -1
  61. package/README.md +115 -227
  62. package/README.zh-CN.md +169 -187
  63. package/bin/maestro-mcp.js +1 -1
  64. package/chains/_intent-map.json +21 -9
  65. package/chains/_router.json +30 -77
  66. package/chains/brainstorm-driven.json +17 -6
  67. package/chains/full-lifecycle.json +22 -23
  68. package/chains/milestone-close.json +20 -7
  69. package/chains/milestone-fork-merge.json +50 -0
  70. package/chains/roadmap-driven.json +17 -6
  71. package/chains/spec-driven.json +17 -6
  72. package/dashboard/dist/assets/{ArtifactsPage-A9yzYtpj.js → ArtifactsPage-DZNCi6tn.js} +12 -7
  73. package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +49 -0
  74. package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +22 -0
  75. package/dashboard/dist/assets/CollabPage-B4NAHXS2.js +1 -0
  76. package/dashboard/dist/assets/ExecutionPanel-CFt4LJyq.js +1 -0
  77. package/dashboard/dist/assets/KanbanPage-C8USth6H.js +21 -0
  78. package/dashboard/dist/assets/{MarkdownRenderer-CCXHaut3.js → MarkdownRenderer-X4af_WNb.js} +1 -1
  79. package/dashboard/dist/assets/McpPage-BKfCVIyU.js +21 -0
  80. package/dashboard/dist/assets/OutputPanel-BlBQFJSW.js +1 -0
  81. package/dashboard/dist/assets/ProblemsPanel-De3DLvoI.js +1 -0
  82. package/dashboard/dist/assets/{RequirementBoardPage-CEOvppGn.js → RequirementBoardPage-Bf1trzqs.js} +2 -2
  83. package/dashboard/dist/assets/{RequirementPage-DpnbTEqY.js → RequirementPage-Bllxe2XI.js} +10 -5
  84. package/dashboard/dist/assets/{SpecsPage-CYqOfFkB.js → SpecsPage-9lwxKT27.js} +2 -2
  85. package/dashboard/dist/assets/{SupervisorPage-B2sZwkq8.js → SupervisorPage-SusdfHFq.js} +1 -1
  86. package/dashboard/dist/assets/{TeamsPage-CkZdCAVZ.js → TeamsPage-DsuM6OwC.js} +2 -2
  87. package/dashboard/dist/assets/TreeBrowser-Q12qobZs.js +6 -0
  88. package/dashboard/dist/assets/WorkflowPage-D_Fzdy3_.js +6 -0
  89. package/dashboard/dist/assets/{arrow-left-6fktHyjN.js → arrow-left-Bqtb2hle.js} +1 -1
  90. package/dashboard/dist/assets/{check-Cbxq2l1-.js → check-u6fGOwQO.js} +1 -1
  91. package/dashboard/dist/assets/{chevron-right-Yts3bi8p.js → chevron-right-Csu22t58.js} +1 -1
  92. package/dashboard/dist/assets/{circle-4Ci4Xolf.js → circle-CMrkbRNg.js} +1 -1
  93. package/dashboard/dist/assets/{circle-alert-B25g9BTL.js → circle-alert-c3tH1P4z.js} +1 -1
  94. package/dashboard/dist/assets/{circle-check-big-DzO2BlL7.js → circle-check-big-TDSeWstm.js} +1 -1
  95. package/dashboard/dist/assets/{circle-check-BA5_XqeV.js → circle-check-gYxxSYuH.js} +1 -1
  96. package/dashboard/dist/assets/{code-zxwuybO8.js → code-CFN2uX9V.js} +1 -1
  97. package/dashboard/dist/assets/{columns-3-DV4oeCfU.js → columns-3-38xIDlzy.js} +1 -1
  98. package/dashboard/dist/assets/{download-CXCyQw8M.js → download-DC7KkKyP.js} +1 -1
  99. package/dashboard/dist/assets/{folder-Bvjj8Vn9.js → folder-CWq_lAnf.js} +1 -1
  100. package/dashboard/dist/assets/index-DWG-WrzT.js +231 -0
  101. package/dashboard/dist/assets/{index-BvScJmJM.js → index-Do71weNR.js} +1 -1
  102. package/dashboard/dist/assets/index-GUNJodSR.css +1 -0
  103. package/dashboard/dist/assets/{list-Dj4i9N75.js → list-CgIP_2A-.js} +1 -1
  104. package/dashboard/dist/assets/{minus-DwlFabsT.js → minus-DYoN5UGk.js} +1 -1
  105. package/dashboard/dist/assets/{pen-line-D7UzECt6.js → pen-line-Bh_WKYHm.js} +1 -1
  106. package/dashboard/dist/assets/{proxy-B9XRqHD9.js → proxy-BKxDAKTj.js} +1 -1
  107. package/dashboard/dist/assets/{search-BQbBTIYl.js → search-SieXnOgr.js} +1 -1
  108. package/dashboard/dist/assets/{shallow-Clb1Lyd_.js → shallow-Bme1JY57.js} +1 -1
  109. package/dashboard/dist/assets/{table-BqxCXid2.js → table-llyEtj-7.js} +1 -1
  110. package/dashboard/dist/assets/terminal-BB3Xfuv5.js +6 -0
  111. package/dashboard/dist/assets/{trash-2-6rN9B-EQ.js → trash-2-C8f4vFFM.js} +1 -1
  112. package/dashboard/dist/assets/{zap-DxUhG-gk.js → zap-4uwlzVm0.js} +1 -1
  113. package/dashboard/dist/index.html +2 -2
  114. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.d.ts +1 -1
  115. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -4
  116. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  117. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +8 -4
  118. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  119. package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.d.ts +1 -0
  120. package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.js +2 -1
  121. package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.js.map +1 -1
  122. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js +20 -10
  123. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
  124. package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.d.ts +1 -1
  125. package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.js +3 -4
  126. package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.js.map +1 -1
  127. package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.test.js +4 -4
  128. package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.test.js.map +1 -1
  129. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +4 -3
  130. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
  131. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.test.js +20 -7
  132. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.test.js.map +1 -1
  133. package/dashboard/dist-server/dashboard/src/server/execution/wave-executor.d.ts +1 -1
  134. package/dashboard/dist-server/dashboard/src/server/execution/wave-executor.js +4 -4
  135. package/dashboard/dist-server/dashboard/src/server/execution/wave-executor.js.map +1 -1
  136. package/dashboard/dist-server/dashboard/src/server/index.js +2 -1
  137. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  138. package/dashboard/dist-server/dashboard/src/server/routes/git.d.ts +2 -0
  139. package/dashboard/dist-server/dashboard/src/server/routes/git.js +79 -0
  140. package/dashboard/dist-server/dashboard/src/server/routes/git.js.map +1 -0
  141. package/dashboard/dist-server/dashboard/src/server/routes/index.js +3 -0
  142. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  143. package/dashboard/dist-server/dashboard/src/server/routes/issues.js +14 -14
  144. package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
  145. package/dashboard/dist-server/dashboard/src/server/routes/linear.js +7 -5
  146. package/dashboard/dist-server/dashboard/src/server/routes/linear.js.map +1 -1
  147. package/dashboard/dist-server/dashboard/src/server/routes/workspace.js +43 -0
  148. package/dashboard/dist-server/dashboard/src/server/routes/workspace.js.map +1 -1
  149. package/dashboard/dist-server/dashboard/src/server/state/state-manager.js +186 -25
  150. package/dashboard/dist-server/dashboard/src/server/state/state-manager.js.map +1 -1
  151. package/dashboard/dist-server/dashboard/src/server/utils/issue-store.d.ts +6 -0
  152. package/dashboard/dist-server/dashboard/src/server/utils/issue-store.js +24 -2
  153. package/dashboard/dist-server/dashboard/src/server/utils/issue-store.js.map +1 -1
  154. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +4 -7
  155. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js.map +1 -1
  156. package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -1
  157. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  158. package/dashboard/dist-server/dashboard/src/shared/constants.test.js +5 -5
  159. package/dashboard/dist-server/dashboard/src/shared/constants.test.js.map +1 -1
  160. package/dashboard/dist-server/dashboard/src/shared/issue-types.test.js +4 -4
  161. package/dashboard/dist-server/dashboard/src/shared/issue-types.test.js.map +1 -1
  162. package/dashboard/dist-server/src/commands/delegate.js +7 -1
  163. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  164. package/dashboard/package.json +59 -59
  165. package/dist/src/cli.js +3 -1
  166. package/dist/src/cli.js.map +1 -1
  167. package/dist/src/commands/{team.d.ts → collab.d.ts} +2 -2
  168. package/dist/src/commands/collab.d.ts.map +1 -0
  169. package/dist/src/commands/{team.js → collab.js} +391 -24
  170. package/dist/src/commands/collab.js.map +1 -0
  171. package/dist/src/commands/delegate.d.ts.map +1 -1
  172. package/dist/src/commands/delegate.js +7 -1
  173. package/dist/src/commands/delegate.js.map +1 -1
  174. package/dist/src/commands/msg.d.ts.map +1 -1
  175. package/dist/src/commands/msg.js +4 -3
  176. package/dist/src/commands/msg.js.map +1 -1
  177. package/dist/src/hooks/team-monitor.d.ts.map +1 -1
  178. package/dist/src/hooks/team-monitor.js +16 -0
  179. package/dist/src/hooks/team-monitor.js.map +1 -1
  180. package/dist/src/tools/collab-adapter.d.ts +85 -0
  181. package/dist/src/tools/collab-adapter.d.ts.map +1 -0
  182. package/dist/src/tools/collab-adapter.js +320 -0
  183. package/dist/src/tools/collab-adapter.js.map +1 -0
  184. package/dist/src/tools/namespace-guard.d.ts +2 -0
  185. package/dist/src/tools/namespace-guard.d.ts.map +1 -1
  186. package/dist/src/tools/namespace-guard.js +12 -0
  187. package/dist/src/tools/namespace-guard.js.map +1 -1
  188. package/dist/src/tools/phase-gate-evaluator.d.ts +45 -0
  189. package/dist/src/tools/phase-gate-evaluator.d.ts.map +1 -0
  190. package/dist/src/tools/phase-gate-evaluator.js +42 -0
  191. package/dist/src/tools/phase-gate-evaluator.js.map +1 -0
  192. package/dist/src/tools/team-members.d.ts +18 -0
  193. package/dist/src/tools/team-members.d.ts.map +1 -1
  194. package/dist/src/tools/team-members.js +50 -0
  195. package/dist/src/tools/team-members.js.map +1 -1
  196. package/dist/src/tools/team-tasks.d.ts +120 -0
  197. package/dist/src/tools/team-tasks.d.ts.map +1 -0
  198. package/dist/src/tools/team-tasks.js +365 -0
  199. package/dist/src/tools/team-tasks.js.map +1 -0
  200. package/dist/src/tools/transition-recorder.d.ts +3 -0
  201. package/dist/src/tools/transition-recorder.d.ts.map +1 -1
  202. package/dist/src/tools/transition-recorder.js +52 -1
  203. package/dist/src/tools/transition-recorder.js.map +1 -1
  204. package/dist/src/utils/get-version.d.ts.map +1 -1
  205. package/dist/src/utils/get-version.js +15 -4
  206. package/dist/src/utils/get-version.js.map +1 -1
  207. package/package.json +1 -1
  208. package/templates/config.json +7 -0
  209. package/templates/worktree-scope.json +10 -0
  210. package/templates/worktrees.json +27 -0
  211. package/workflows/analyze.md +86 -36
  212. package/workflows/brainstorm.md +17 -37
  213. package/workflows/delegate-usage.md +39 -41
  214. package/workflows/execute.md +247 -61
  215. package/workflows/fork.md +309 -0
  216. package/workflows/init.md +11 -2
  217. package/workflows/issue.md +66 -7
  218. package/workflows/maestro-coordinate.codex.md +1 -1
  219. package/workflows/maestro-coordinate.md +24 -17
  220. package/workflows/maestro.md +54 -37
  221. package/workflows/memory.md +2 -1
  222. package/workflows/merge.md +285 -0
  223. package/workflows/milestone-audit.md +89 -70
  224. package/workflows/milestone-complete.md +89 -156
  225. package/workflows/plan.md +131 -19
  226. package/workflows/retrospective.md +5 -5
  227. package/workflows/roadmap.md +12 -4
  228. package/workflows/spec-generate.md +9 -0
  229. package/workflows/status.md +76 -27
  230. package/workflows/ui-design.md +14 -12
  231. package/workflows/verify.md +44 -8
  232. package/.claude/commands/learn-retro-decision.md +0 -198
  233. package/.claude/commands/learn-retro-git.md +0 -160
  234. package/.claude/commands/maestro-phase-add.md +0 -63
  235. package/.claude/commands/maestro-phase-transition.md +0 -75
  236. package/.codex/skills/maestro-phase-add/SKILL.md +0 -154
  237. package/.codex/skills/maestro-phase-transition/SKILL.md +0 -173
  238. package/chains/singles/phase-add.json +0 -31
  239. package/chains/singles/phase-transition.json +0 -23
  240. package/dashboard/dist/assets/ChatInput-PuCvZZ3y.js +0 -67
  241. package/dashboard/dist/assets/ChatPage-v19GURYH.js +0 -8
  242. package/dashboard/dist/assets/CollabPage-I5k_mCbG.js +0 -1
  243. package/dashboard/dist/assets/KanbanPage-PDDBv5-9.js +0 -16
  244. package/dashboard/dist/assets/McpPage-CiqXpCHg.js +0 -16
  245. package/dashboard/dist/assets/TreeBrowser-0VIMWclo.js +0 -11
  246. package/dashboard/dist/assets/WorkflowPage-Csm23wUS.js +0 -6
  247. package/dashboard/dist/assets/git-branch-DL8p9kVC.js +0 -6
  248. package/dashboard/dist/assets/index-11DuhKhc.js +0 -231
  249. package/dashboard/dist/assets/index-D2Mtyw7I.css +0 -1
  250. package/dashboard/dist/assets/wrench-BScEJFqC.js +0 -11
  251. package/dist/src/commands/team.d.ts.map +0 -1
  252. package/dist/src/commands/team.js.map +0 -1
  253. package/workflows/phase-add.md +0 -252
  254. package/workflows/phase-transition.md +0 -399
@@ -1,6 +1,6 @@
1
1
  # Workflow: milestone-audit
2
2
 
3
- Cross-phase integration audit for milestone completion.
3
+ Cross-phase integration audit for milestone completion. Based on artifact registry.
4
4
 
5
5
  ---
6
6
 
@@ -8,39 +8,73 @@ Cross-phase integration audit for milestone completion.
8
8
 
9
9
  1. Read `.workflow/state.json`:
10
10
  - Determine target milestone (from $ARGUMENTS or current_milestone)
11
- - Get phases_summary
11
+ - Get `artifacts[]` array
12
12
 
13
- 2. Identify all phases belonging to this milestone:
14
- - Read `.workflow/roadmap.md` to map phases to milestones
15
- - Collect phase directories: `.workflow/phases/{NN}-{slug}/`
13
+ 2. Parse `.workflow/roadmap.md` to identify all phases belonging to this milestone
16
14
 
17
- 3. For each phase, read `index.json`:
18
- - Collect: status, goal, success_criteria, verification, validation, uat
19
- - Flag any phase not in "completed" status as a warning
15
+ 3. Group artifacts by type for this milestone:
16
+ ```
17
+ FROM state.json.artifacts
18
+ WHERE milestone = target_milestone
19
+ GROUP BY type
20
+
21
+ → analyze_artifacts: [ANL-001, ANL-002, ...]
22
+ → plan_artifacts: [PLN-001, PLN-002, ...]
23
+ → execute_artifacts: [EXC-001, EXC-002, ...]
24
+ → verify_artifacts: [VRF-001, ...]
25
+ ```
20
26
 
21
27
  ---
22
28
 
23
- ## Step 2: Pre-audit Validation
29
+ ## Step 2: Phase Coverage Check
24
30
 
25
- 1. Check all phases are completed:
26
- ```
27
- incomplete = phases.filter(status != "completed")
28
- if incomplete.length > 0:
29
- WARN: "Phases not completed: {list}"
30
- Ask user: "Continue audit anyway? Some phases are incomplete."
31
- if NO → exit with "Complete phases first: /workflow:execute {phase}"
32
- ```
31
+ For each phase defined in roadmap for this milestone:
33
32
 
34
- 2. Check all phases have verification.json with status "passed":
35
- ```
36
- unverified = phases.filter(verification.status != "passed")
37
- if unverified.length > 0:
38
- WARN: "Phases not verified: {list}"
39
- ```
33
+ ```
34
+ phases_from_roadmap = parse roadmap.md → list of { number, slug, title }
35
+
36
+ coverage = {}
37
+ FOR each phase IN phases_from_roadmap:
38
+ has_analyze = artifacts.some(a => a.type == "analyze" && a.phase == phase.number && a.status == "completed")
39
+ has_plan = artifacts.some(a => a.type == "plan" && a.phase == phase.number && a.status == "completed")
40
+ has_execute = artifacts.some(a => a.type == "execute" && a.phase == phase.number && a.status == "completed")
41
+
42
+ coverage[phase.number] = { has_analyze, has_plan, has_execute }
43
+
44
+ IF NOT has_execute:
45
+ WARN: "Phase {phase.number} ({phase.title}) missing execute artifact"
46
+ ```
47
+
48
+ ---
49
+
50
+ ## Step 3: Ad-hoc Completeness Check
51
+
52
+ ```
53
+ adhoc_artifacts = artifacts.filter(a => a.scope == "adhoc" && a.milestone == target_milestone)
54
+
55
+ incomplete_adhoc = adhoc_artifacts.filter(a => a.status != "completed")
56
+ IF incomplete_adhoc.length > 0:
57
+ WARN: "Ad-hoc artifacts incomplete: {list ids}"
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Step 4: Execution Completeness Check
63
+
64
+ For each execute artifact, verify all tasks completed:
65
+
66
+ ```
67
+ FOR each exc IN execute_artifacts:
68
+ plan_dir = exc.path
69
+ tasks = read all ${plan_dir}/.task/TASK-*.json
70
+ incomplete = tasks.filter(t => t.status != "completed" && t.status != "skipped")
71
+ IF incomplete.length > 0:
72
+ WARN: "Plan {plan_dir}: {incomplete.length} tasks not completed"
73
+ ```
40
74
 
41
75
  ---
42
76
 
43
- ## Step 3: Integration Check
77
+ ## Step 5: Integration Check
44
78
 
45
79
  Spawn `workflow-integration-checker` agent:
46
80
 
@@ -50,20 +84,20 @@ Agent({
50
84
  prompt: "
51
85
  Audit cross-phase integration for milestone {milestone}.
52
86
 
53
- Phases to audit:
54
- {for each phase: number, title, goal, success_criteria}
87
+ Artifacts to audit:
88
+ {for each execute artifact: path, phase, scope}
55
89
 
56
90
  Check:
57
- 1. SHARED INTERFACES -- Do phases that share interfaces have compatible types/contracts?
91
+ 1. SHARED INTERFACES -- Do artifacts that share interfaces have compatible types/contracts?
58
92
  2. DEPENDENCY CHAINS -- Are all cross-phase dependencies satisfied?
59
93
  3. DATA CONTRACTS -- Do data models used across phases match?
60
- 4. API CONSISTENCY -- Are API endpoints/interfaces consistent across phases?
94
+ 4. API CONSISTENCY -- Are API endpoints/interfaces consistent?
61
95
  5. CONFIGURATION -- Are shared configs compatible?
62
- 6. ERROR HANDLING -- Do error flows work across phase boundaries?
96
+ 6. ERROR HANDLING -- Do error flows work across boundaries?
63
97
 
64
98
  For each check, report:
65
99
  - Status: passed | gap_found
66
- - If gap: description, affected phases, severity (critical/high/medium/low), fix suggestion
100
+ - If gap: description, affected phases, severity, fix suggestion
67
101
 
68
102
  Ensure directory exists: mkdir -p .workflow/milestones/{milestone}/
69
103
  Write audit report to .workflow/milestones/{milestone}/audit-report.md
@@ -75,56 +109,41 @@ Agent({
75
109
 
76
110
  ---
77
111
 
78
- ## Step 4: Audit Report
112
+ ## Step 6: Audit Report & Verdict
79
113
 
80
114
  1. Read the audit report generated by the integration checker
81
- 2. Display summary:
115
+
116
+ 2. Determine verdict:
117
+ - PASS: all phases have complete artifact chains + no critical integration gaps
118
+ - FAIL: missing execute artifacts OR critical integration gaps
119
+
120
+ 3. Display structured report:
82
121
 
83
122
  ```
84
123
  ====================================================
85
- MILESTONE AUDIT: {milestone}
86
- PHASES AUDITED: {count}
124
+ MILESTONE AUDIT: {milestone} ({milestone_name})
125
+ ARTIFACTS: {total_count}
87
126
  ====================================================
88
127
 
89
- RESULTS:
90
- Shared Interfaces: {passed|N gaps}
91
- Dependency Chains: {passed|N gaps}
92
- Data Contracts: {passed|N gaps}
93
- API Consistency: {passed|N gaps}
94
- Configuration: {passed|N gaps}
95
- Error Handling: {passed|N gaps}
96
-
97
- TOTAL GAPS: {count}
98
- Critical: {count}
99
- High: {count}
100
- Medium: {count}
101
- Low: {count}
102
- ====================================================
103
- ```
128
+ PHASE COVERAGE:
129
+ Phase 1 ({slug}): ANL-001 → PLN-001 → EXC-001 ✓
130
+ Phase 2 ({slug}): ANL-002 → PLN-002 → EXC-002 ✓
104
131
 
105
- ---
132
+ AD-HOC TASKS:
133
+ {topic}: ANL-003 → PLN-003 → EXC-003 ✓
106
134
 
107
- ## Step 5: Route
135
+ VERIFICATION:
136
+ VRF-001: milestone-level verify ✓ (or "not yet run")
108
137
 
109
- Based on audit results:
138
+ INTEGRATION:
139
+ Shared Interfaces: {passed|N gaps}
140
+ Dependency Chains: {passed|N gaps}
141
+ Data Contracts: {passed|N gaps}
110
142
 
111
- ### All checks passed (0 gaps):
112
- ```
113
- AUDIT PASSED
114
- Next: Skill({ skill: "maestro-milestone-complete", args: "{milestone}" })
143
+ VERDICT: PASS | FAIL
144
+ ====================================================
115
145
  ```
116
146
 
117
- ### Gaps found:
118
- ```
119
- AUDIT FOUND GAPS
120
- {for each gap}
121
- [{severity}] {description}
122
- Affected: Phase {N1}, Phase {N2}
123
- Fix: {suggestion}
124
- {/for}
125
-
126
- Suggested actions:
127
- - Critical/High gaps: Skill({ skill: "quality-debug" }) for each critical gap
128
- - Medium/Low gaps: /workflow:plan --gaps {phase} (add fix tasks)
129
- - Re-audit after fixes: /workflow:milestone-audit {milestone}
130
- ```
147
+ 4. Route next step:
148
+ - PASS → suggest `/maestro-milestone-complete`
149
+ - FAIL → suggest specific fix actions
@@ -1,6 +1,6 @@
1
1
  # Workflow: milestone-complete
2
2
 
3
- Archive completed milestone and prepare for next.
3
+ Archive completed milestone, move artifacts to history, and prepare for next.
4
4
 
5
5
  ---
6
6
 
@@ -8,22 +8,22 @@ Archive completed milestone and prepare for next.
8
8
 
9
9
  1. Read `.workflow/state.json`:
10
10
  - Determine target milestone (from $ARGUMENTS or current_milestone)
11
+ - If no milestone: ERROR E001
11
12
 
12
13
  2. Check milestone audit status:
13
14
  - Read `.workflow/milestones/{milestone}/audit-report.md` if exists
14
- - If no audit report exists:
15
- - WARN: "No audit report found. Run `/workflow:milestone-audit` first."
15
+ - If no audit report:
16
+ - WARN: "No audit report found. Run `/maestro-milestone-audit` first."
16
17
  - Ask user: "Complete without audit?"
17
- - If NO → exit with route to `/workflow:milestone-audit`
18
+ - If NO → exit
19
+ - If verdict is FAIL: ERROR E002
18
20
 
19
- 3. Verify all phases are completed:
21
+ 3. Verify all artifacts completed:
20
22
  ```
21
- For each phase in milestone:
22
- Read phases/{NN}-{slug}/index.json
23
- if status != "completed":
24
- ERROR: "Phase {NN} ({title}) is not completed (status: {status})"
25
- Route: /workflow:execute {NN} or /workflow:verify {NN}
26
- EXIT
23
+ milestone_artifacts = state.json.artifacts.filter(a => a.milestone == target_milestone)
24
+ incomplete = milestone_artifacts.filter(a => a.status != "completed")
25
+ IF incomplete.length > 0:
26
+ ERROR E003: "Incomplete artifacts: {list ids and statuses}"
27
27
  ```
28
28
 
29
29
  ---
@@ -32,24 +32,21 @@ Archive completed milestone and prepare for next.
32
32
 
33
33
  1. Create archive directory:
34
34
  ```
35
- mkdir -p .workflow/milestones/v{X.Y}/phases/
35
+ mkdir -p .workflow/milestones/{milestone}/artifacts/
36
36
  ```
37
37
 
38
38
  2. Snapshot roadmap:
39
39
  ```
40
- cp .workflow/roadmap.md .workflow/milestones/v{X.Y}/roadmap-snapshot.md
40
+ cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
41
41
  ```
42
42
 
43
- 3. Archive phase directories:
43
+ 3. Archive scratch directories:
44
44
  ```
45
- For each phase in milestone:
46
- cp -r .workflow/phases/{NN}-{slug}/ .workflow/milestones/v{X.Y}/phases/{NN}-{slug}/
45
+ FOR each artifact IN milestone_artifacts:
46
+ IF directory exists at .workflow/{artifact.path}:
47
+ cp -r .workflow/{artifact.path} .workflow/milestones/{milestone}/artifacts/{basename}/
47
48
  ```
48
49
 
49
- 4. Audit report:
50
- - Report already exists at `.workflow/milestones/{milestone}/audit-report.md` (written by milestone-audit)
51
- - No copy needed; verify file is present in archive directory
52
-
53
50
  ---
54
51
 
55
52
  ## Step 2.5: Load Existing Learnings
@@ -64,180 +61,116 @@ Check existing entries to avoid duplicates when appending in Step 3.
64
61
 
65
62
  ## Step 3: Extract Learnings
66
63
 
67
- 1. For each phase in milestone, read `reflection-log.md` if exists:
64
+ 1. For each execute artifact, read `.summaries/` and `reflection-log.md` if exists:
68
65
  - Extract strategy adjustments
69
66
  - Extract patterns discovered
70
67
  - Extract pitfalls encountered
71
68
 
72
- 2. Aggregate learnings and append to `.workflow/specs/learnings.md` under "## Entries", using spec-add entry format for each item:
69
+ 2. Aggregate learnings and append to `.workflow/specs/learnings.md`:
73
70
  ```
74
71
  For each strategy adjustment:
75
72
  ### [YYYY-MM-DD HH:mm] decision: {summary}
76
-
77
73
  {content}
78
74
  Milestone: {milestone} | Source: milestone-complete
79
75
 
80
- For each pattern discovered:
76
+ For each pattern:
81
77
  ### [YYYY-MM-DD HH:mm] pattern: {summary}
82
-
83
78
  {content}
84
79
  Milestone: {milestone} | Source: milestone-complete
85
80
 
86
- For each pitfall encountered:
81
+ For each pitfall:
87
82
  ### [YYYY-MM-DD HH:mm] bug: {summary}
88
-
89
83
  {content}
90
84
  Milestone: {milestone} | Source: milestone-complete
91
85
  ```
92
86
 
93
87
  ---
94
88
 
95
- ## Step 3.5: Update project.md Context
96
-
97
- ```
98
- Read .workflow/project.md
89
+ ## Step 4: Update State
99
90
 
100
- a. Append milestone summary to "## Context" section:
101
- - Milestone version, completion date
102
- - Key learnings summary (top 3 from Step 3 aggregated learnings)
103
- - Significant strategy adjustments that affect future work
91
+ 1. Archive artifact entries to milestone_history:
92
+ ```json
93
+ {
94
+ "milestone_history": [
95
+ {
96
+ "id": "{milestone}",
97
+ "name": "{milestone_name}",
98
+ "status": "completed",
99
+ "completed_at": "{now}",
100
+ "archive_path": "milestones/{milestone}/",
101
+ "archived_artifacts": [ ...all milestone artifacts entries... ]
102
+ }
103
+ ]
104
+ }
105
+ ```
104
106
 
105
- Format:
106
- **Milestone {milestone} ({date})**: {1-2 sentence summary of what was accomplished
107
- and key insights that inform future work.}
107
+ 2. Clear artifacts array (remove milestone-affiliated entries):
108
+ ```
109
+ state.json.artifacts = state.json.artifacts.filter(a => a.milestone != target_milestone)
110
+ ```
108
111
 
109
- b. Update "Last updated" footer timestamp
112
+ 3. Advance to next milestone:
113
+ ```
114
+ next_milestone = state.json.milestones.find(m => m.status == "pending")
115
+ IF next_milestone:
116
+ state.json.current_milestone = next_milestone.id
117
+ next_milestone.status = "active"
118
+ ELSE:
119
+ state.json.current_milestone = null
120
+ state.json.status = "completed"
121
+ ```
110
122
 
111
- Write updated project.md
112
- Display: "project.md: Context updated with milestone {milestone} summary"
113
- ```
123
+ 4. Write state.json (atomic)
114
124
 
115
125
  ---
116
126
 
117
- ## Step 4: Update State
127
+ ## Step 5: Clean Scratch
118
128
 
119
- 1. Read existing `.workflow/state.json` to preserve accumulated values.
129
+ Remove archived scratch directories:
130
+ ```
131
+ FOR each artifact IN archived_artifacts:
132
+ IF directory exists at .workflow/{artifact.path}:
133
+ rm -rf .workflow/{artifact.path}
134
+ ```
120
135
 
121
- 2. Determine next milestone from roadmap (read BEFORE any delete):
122
- ```
123
- a. Read .workflow/roadmap.md
124
- b. Scan for all milestone headings (e.g. ## Milestone: vX.Y, ## v1.0, etc.)
125
- c. Locate the current milestone heading in the list
126
- d. next_milestone = the milestone heading immediately after current
127
- (If no next milestone exists in roadmap, next_milestone = null)
128
- e. If next_milestone is not null:
129
- Scan for phases belonging to next_milestone
130
- next_phase_count = count of phases in next milestone
131
- Else:
132
- next_phase_count = 0
133
- ```
136
+ ---
134
137
 
135
- 3. Calculate updated phases_summary (derived pending):
136
- ```
137
- new_phases_summary = {
138
- "total": next_phase_count,
139
- "completed": 0,
140
- "in_progress": 0,
141
- "pending": next_phase_count - 0 - 0 // total - completed - in_progress
142
- }
143
- ```
138
+ ## Step 6: Generate Summary
144
139
 
145
- 4. Clean up completed phase directories:
146
- - Remove `.workflow/phases/{NN}-{slug}/` for archived phases
147
- - Keep `.workflow/phases/` directory (empty, ready for new milestone)
140
+ Write `.workflow/milestones/{milestone}/summary.md`:
141
+ ```markdown
142
+ # Milestone: {milestone} {name}
148
143
 
149
- 5. Remove stale roadmap:
150
- - Delete `.workflow/roadmap.md` (already archived as `milestones/v{X.Y}/roadmap-snapshot.md`)
151
- - This creates a clear "no roadmap" state that the maestro coordinator detects for next-milestone routing
144
+ **Completed**: {date}
145
+ **Artifacts**: {count} (analyze: {n}, plan: {n}, execute: {n}, verify: {n})
152
146
 
153
- 6. Update milestone_history entry for completed milestone:
154
- ```
155
- FOR each entry IN existing_state.milestone_history:
156
- IF entry.name == completed_milestone OR entry.slug == completed_milestone:
157
- entry.status = "completed"
158
- entry.completed_at = "{timestamp}"
159
- entry.archive_path = ".workflow/milestones/{completed_milestone}/"
160
- BREAK
161
- ```
147
+ ## Key Outcomes
148
+ {extracted from audit report + learnings}
162
149
 
163
- 7. Record milestone transition in history:
164
- ```
165
- Append to state.transition_history[] (create array if absent):
166
- {
167
- "type": "milestone",
168
- "from_phase": null,
169
- "to_phase": null,
170
- "milestone": completed_milestone,
171
- "transitioned_at": "{timestamp}",
172
- "trigger": "milestone-complete",
173
- "force": was --force used (boolean),
174
- "snapshot": {
175
- "phases_completed": phases in this milestone,
176
- "phases_total": existing_state.phases_summary.total,
177
- "deferred_count": existing_state.accumulated_context.deferred.length,
178
- "verification_status": "completed",
179
- "learnings_count": retrospective learnings count (from Step 3)
180
- }
181
- }
182
- ```
150
+ ## Learnings
151
+ {top patterns and pitfalls}
183
152
 
184
- 8. Write updated `.workflow/state.json`:
185
- ```json
186
- // If next_milestone exists:
187
- {
188
- "current_milestone": "{next_milestone}",
189
- "current_phase": 1,
190
- "status": "idle",
191
- "phases_summary": new_phases_summary,
192
- "accumulated_context": existing_state.accumulated_context,
193
- "milestone_history": existing_state.milestone_history,
194
- "last_updated": "{timestamp}"
195
- }
153
+ ## Next Milestone
154
+ {next milestone name and first phase, or "Project complete"}
155
+ ```
196
156
 
197
- // If next_milestone is null (project complete):
198
- {
199
- "current_milestone": "{completed_milestone}",
200
- "current_phase": null,
201
- "status": "completed",
202
- "phases_summary": new_phases_summary,
203
- "accumulated_context": existing_state.accumulated_context,
204
- "milestone_history": existing_state.milestone_history,
205
- "last_updated": "{timestamp}"
206
- }
207
- ```
208
- Preserve `accumulated_context` and `milestone_history` -- decisions, deferred items, and milestone history carry forward.
157
+ Update `.workflow/project.md` Context section with milestone summary.
209
158
 
210
159
  ---
211
160
 
212
- ## Step 5: Commit and Route
213
-
214
- 1. If git repo: commit with message `"chore: complete milestone {milestone}"`
161
+ ## Step 7: Report
215
162
 
216
- 2. Display completion summary:
217
- ```
218
- ====================================================
219
- MILESTONE COMPLETED: {milestone}
220
- ====================================================
221
-
222
- Archived:
223
- - {N} phases archived to .workflow/milestones/v{X.Y}/
224
- - Roadmap snapshot saved
225
- - Audit report archived
226
- - {M} learnings extracted to specs/learnings.md
227
-
228
- State reset:
229
- - Current milestone: {next_milestone or completed_milestone}
230
- - Current phase: {1 or null}
231
- - Status: {idle or completed}
232
-
233
- ====================================================
234
- ```
235
-
236
- 3. Route next steps:
237
- - If next_milestone exists:
238
- - Ask user: "Start planning next milestone?"
239
- - YES → Suggest Skill({ skill: "maestro", args: "continue" }) — coordinator auto-detects post-milestone state, loads deferred items from accumulated_context, and routes to roadmap creation
240
- - NO → "Project is idle." Suggest Skill({ skill: "manage-status" }) to check state anytime.
241
- - If next_milestone is null (project complete):
242
- - Display: "All milestones completed. Project is done."
243
- - Suggest Skill({ skill: "manage-status" }) to review final state.
163
+ ```
164
+ === MILESTONE COMPLETE ===
165
+ Milestone: {milestone} ({name})
166
+ Artifacts: {count} archived
167
+ Learnings: {learnings_count} extracted
168
+
169
+ Archive: .workflow/milestones/{milestone}/
170
+ Next: {next_milestone or "Project complete"}
171
+
172
+ Next steps:
173
+ /maestro-milestone-release -- Cut a release
174
+ /maestro-analyze -- Start next milestone
175
+ /manage-status -- View project state
176
+ ```