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.
- package/.claude/commands/learn-decompose.md +3 -3
- package/.claude/commands/learn-follow.md +5 -5
- package/.claude/commands/learn-investigate.md +3 -3
- package/.claude/commands/learn-retro.md +303 -0
- package/.claude/commands/learn-second-opinion.md +3 -3
- package/.claude/commands/maestro-analyze.md +123 -99
- package/.claude/commands/maestro-brainstorm.md +2 -2
- package/.claude/commands/maestro-execute.md +137 -96
- package/.claude/commands/maestro-fork.md +111 -0
- package/.claude/commands/maestro-init.md +6 -6
- package/.claude/commands/maestro-learn.md +74 -298
- package/.claude/commands/maestro-merge.md +77 -0
- package/.claude/commands/maestro-milestone-audit.md +72 -60
- package/.claude/commands/maestro-milestone-complete.md +67 -59
- package/.claude/commands/maestro-milestone-release.md +6 -6
- package/.claude/commands/maestro-plan.md +151 -130
- package/.claude/commands/maestro-quick.md +4 -4
- package/.claude/commands/maestro-roadmap.md +5 -5
- package/.claude/commands/maestro-spec-generate.md +5 -5
- package/.claude/commands/maestro-ui-design.md +3 -3
- package/.claude/commands/maestro-verify.md +106 -87
- package/.claude/commands/maestro.md +10 -4
- package/.claude/commands/manage-codebase-rebuild.md +4 -4
- package/.claude/commands/manage-codebase-refresh.md +1 -1
- package/.claude/commands/manage-harvest.md +5 -5
- package/.claude/commands/manage-issue-discover.md +1 -1
- package/.claude/commands/manage-issue-execute.md +6 -6
- package/.claude/commands/manage-issue.md +6 -6
- package/.claude/commands/manage-learn.md +23 -17
- package/.claude/commands/manage-memory-capture.md +15 -17
- package/.claude/commands/manage-memory.md +3 -3
- package/.claude/commands/manage-status.md +24 -24
- package/.claude/commands/quality-business-test.md +5 -5
- package/.claude/commands/quality-debug.md +4 -4
- package/.claude/commands/quality-integration-test.md +4 -4
- package/.claude/commands/quality-refactor.md +3 -3
- package/.claude/commands/quality-retrospective.md +7 -7
- package/.claude/commands/quality-review.md +4 -4
- package/.claude/commands/quality-sync.md +3 -3
- package/.claude/commands/quality-test-gen.md +4 -4
- package/.claude/commands/quality-test.md +9 -9
- package/.claude/commands/spec-add.md +2 -2
- package/.claude/commands/spec-load.md +8 -3
- package/.claude/commands/spec-setup.md +5 -5
- package/.claude/commands/wiki-connect.md +3 -3
- package/.claude/commands/wiki-digest.md +30 -5
- package/.codex/skills/maestro-analyze/SKILL.md +52 -14
- package/.codex/skills/maestro-execute/SKILL.md +27 -26
- package/.codex/skills/maestro-milestone-audit/SKILL.md +103 -209
- package/.codex/skills/maestro-milestone-complete/SKILL.md +149 -158
- package/.codex/skills/maestro-plan/SKILL.md +47 -17
- package/.codex/skills/maestro-roadmap/SKILL.md +3 -2
- package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +2 -2
- package/.codex/skills/team-executor/roles/executor/commands/monitor.md +1 -1
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +2 -2
- package/.codex/skills/team-lifecycle-v4/specs/knowledge-transfer.md +2 -2
- package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +1 -1
- package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +1 -1
- package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +1 -1
- package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +1 -1
- package/README.md +115 -227
- package/README.zh-CN.md +169 -187
- package/bin/maestro-mcp.js +1 -1
- package/chains/_intent-map.json +21 -9
- package/chains/_router.json +30 -77
- package/chains/brainstorm-driven.json +17 -6
- package/chains/full-lifecycle.json +22 -23
- package/chains/milestone-close.json +20 -7
- package/chains/milestone-fork-merge.json +50 -0
- package/chains/roadmap-driven.json +17 -6
- package/chains/spec-driven.json +17 -6
- package/dashboard/dist/assets/{ArtifactsPage-A9yzYtpj.js → ArtifactsPage-DZNCi6tn.js} +12 -7
- package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +49 -0
- package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +22 -0
- package/dashboard/dist/assets/CollabPage-B4NAHXS2.js +1 -0
- package/dashboard/dist/assets/ExecutionPanel-CFt4LJyq.js +1 -0
- package/dashboard/dist/assets/KanbanPage-C8USth6H.js +21 -0
- package/dashboard/dist/assets/{MarkdownRenderer-CCXHaut3.js → MarkdownRenderer-X4af_WNb.js} +1 -1
- package/dashboard/dist/assets/McpPage-BKfCVIyU.js +21 -0
- package/dashboard/dist/assets/OutputPanel-BlBQFJSW.js +1 -0
- package/dashboard/dist/assets/ProblemsPanel-De3DLvoI.js +1 -0
- package/dashboard/dist/assets/{RequirementBoardPage-CEOvppGn.js → RequirementBoardPage-Bf1trzqs.js} +2 -2
- package/dashboard/dist/assets/{RequirementPage-DpnbTEqY.js → RequirementPage-Bllxe2XI.js} +10 -5
- package/dashboard/dist/assets/{SpecsPage-CYqOfFkB.js → SpecsPage-9lwxKT27.js} +2 -2
- package/dashboard/dist/assets/{SupervisorPage-B2sZwkq8.js → SupervisorPage-SusdfHFq.js} +1 -1
- package/dashboard/dist/assets/{TeamsPage-CkZdCAVZ.js → TeamsPage-DsuM6OwC.js} +2 -2
- package/dashboard/dist/assets/TreeBrowser-Q12qobZs.js +6 -0
- package/dashboard/dist/assets/WorkflowPage-D_Fzdy3_.js +6 -0
- package/dashboard/dist/assets/{arrow-left-6fktHyjN.js → arrow-left-Bqtb2hle.js} +1 -1
- package/dashboard/dist/assets/{check-Cbxq2l1-.js → check-u6fGOwQO.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-Yts3bi8p.js → chevron-right-Csu22t58.js} +1 -1
- package/dashboard/dist/assets/{circle-4Ci4Xolf.js → circle-CMrkbRNg.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-B25g9BTL.js → circle-alert-c3tH1P4z.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-DzO2BlL7.js → circle-check-big-TDSeWstm.js} +1 -1
- package/dashboard/dist/assets/{circle-check-BA5_XqeV.js → circle-check-gYxxSYuH.js} +1 -1
- package/dashboard/dist/assets/{code-zxwuybO8.js → code-CFN2uX9V.js} +1 -1
- package/dashboard/dist/assets/{columns-3-DV4oeCfU.js → columns-3-38xIDlzy.js} +1 -1
- package/dashboard/dist/assets/{download-CXCyQw8M.js → download-DC7KkKyP.js} +1 -1
- package/dashboard/dist/assets/{folder-Bvjj8Vn9.js → folder-CWq_lAnf.js} +1 -1
- package/dashboard/dist/assets/index-DWG-WrzT.js +231 -0
- package/dashboard/dist/assets/{index-BvScJmJM.js → index-Do71weNR.js} +1 -1
- package/dashboard/dist/assets/index-GUNJodSR.css +1 -0
- package/dashboard/dist/assets/{list-Dj4i9N75.js → list-CgIP_2A-.js} +1 -1
- package/dashboard/dist/assets/{minus-DwlFabsT.js → minus-DYoN5UGk.js} +1 -1
- package/dashboard/dist/assets/{pen-line-D7UzECt6.js → pen-line-Bh_WKYHm.js} +1 -1
- package/dashboard/dist/assets/{proxy-B9XRqHD9.js → proxy-BKxDAKTj.js} +1 -1
- package/dashboard/dist/assets/{search-BQbBTIYl.js → search-SieXnOgr.js} +1 -1
- package/dashboard/dist/assets/{shallow-Clb1Lyd_.js → shallow-Bme1JY57.js} +1 -1
- package/dashboard/dist/assets/{table-BqxCXid2.js → table-llyEtj-7.js} +1 -1
- package/dashboard/dist/assets/terminal-BB3Xfuv5.js +6 -0
- package/dashboard/dist/assets/{trash-2-6rN9B-EQ.js → trash-2-C8f4vFFM.js} +1 -1
- package/dashboard/dist/assets/{zap-DxUhG-gk.js → zap-4uwlzVm0.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -4
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +8 -4
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.js +2 -1
- package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js +20 -10
- package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.js +3 -4
- package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.test.js +4 -4
- package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +4 -3
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.test.js +20 -7
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/execution/wave-executor.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/execution/wave-executor.js +4 -4
- package/dashboard/dist-server/dashboard/src/server/execution/wave-executor.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +2 -1
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/git.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/routes/git.js +79 -0
- package/dashboard/dist-server/dashboard/src/server/routes/git.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/index.js +3 -0
- package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/issues.js +14 -14
- package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/linear.js +7 -5
- package/dashboard/dist-server/dashboard/src/server/routes/linear.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/workspace.js +43 -0
- package/dashboard/dist-server/dashboard/src/server/routes/workspace.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/state-manager.js +186 -25
- package/dashboard/dist-server/dashboard/src/server/state/state-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/utils/issue-store.d.ts +6 -0
- package/dashboard/dist-server/dashboard/src/server/utils/issue-store.js +24 -2
- package/dashboard/dist-server/dashboard/src/server/utils/issue-store.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +4 -7
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.test.js +5 -5
- package/dashboard/dist-server/dashboard/src/shared/constants.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/issue-types.test.js +4 -4
- package/dashboard/dist-server/dashboard/src/shared/issue-types.test.js.map +1 -1
- package/dashboard/dist-server/src/commands/delegate.js +7 -1
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dashboard/package.json +59 -59
- package/dist/src/cli.js +3 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/{team.d.ts → collab.d.ts} +2 -2
- package/dist/src/commands/collab.d.ts.map +1 -0
- package/dist/src/commands/{team.js → collab.js} +391 -24
- package/dist/src/commands/collab.js.map +1 -0
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +7 -1
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/msg.d.ts.map +1 -1
- package/dist/src/commands/msg.js +4 -3
- package/dist/src/commands/msg.js.map +1 -1
- package/dist/src/hooks/team-monitor.d.ts.map +1 -1
- package/dist/src/hooks/team-monitor.js +16 -0
- package/dist/src/hooks/team-monitor.js.map +1 -1
- package/dist/src/tools/collab-adapter.d.ts +85 -0
- package/dist/src/tools/collab-adapter.d.ts.map +1 -0
- package/dist/src/tools/collab-adapter.js +320 -0
- package/dist/src/tools/collab-adapter.js.map +1 -0
- package/dist/src/tools/namespace-guard.d.ts +2 -0
- package/dist/src/tools/namespace-guard.d.ts.map +1 -1
- package/dist/src/tools/namespace-guard.js +12 -0
- package/dist/src/tools/namespace-guard.js.map +1 -1
- package/dist/src/tools/phase-gate-evaluator.d.ts +45 -0
- package/dist/src/tools/phase-gate-evaluator.d.ts.map +1 -0
- package/dist/src/tools/phase-gate-evaluator.js +42 -0
- package/dist/src/tools/phase-gate-evaluator.js.map +1 -0
- package/dist/src/tools/team-members.d.ts +18 -0
- package/dist/src/tools/team-members.d.ts.map +1 -1
- package/dist/src/tools/team-members.js +50 -0
- package/dist/src/tools/team-members.js.map +1 -1
- package/dist/src/tools/team-tasks.d.ts +120 -0
- package/dist/src/tools/team-tasks.d.ts.map +1 -0
- package/dist/src/tools/team-tasks.js +365 -0
- package/dist/src/tools/team-tasks.js.map +1 -0
- package/dist/src/tools/transition-recorder.d.ts +3 -0
- package/dist/src/tools/transition-recorder.d.ts.map +1 -1
- package/dist/src/tools/transition-recorder.js +52 -1
- package/dist/src/tools/transition-recorder.js.map +1 -1
- package/dist/src/utils/get-version.d.ts.map +1 -1
- package/dist/src/utils/get-version.js +15 -4
- package/dist/src/utils/get-version.js.map +1 -1
- package/package.json +1 -1
- package/templates/config.json +7 -0
- package/templates/worktree-scope.json +10 -0
- package/templates/worktrees.json +27 -0
- package/workflows/analyze.md +86 -36
- package/workflows/brainstorm.md +17 -37
- package/workflows/delegate-usage.md +39 -41
- package/workflows/execute.md +247 -61
- package/workflows/fork.md +309 -0
- package/workflows/init.md +11 -2
- package/workflows/issue.md +66 -7
- package/workflows/maestro-coordinate.codex.md +1 -1
- package/workflows/maestro-coordinate.md +24 -17
- package/workflows/maestro.md +54 -37
- package/workflows/memory.md +2 -1
- package/workflows/merge.md +285 -0
- package/workflows/milestone-audit.md +89 -70
- package/workflows/milestone-complete.md +89 -156
- package/workflows/plan.md +131 -19
- package/workflows/retrospective.md +5 -5
- package/workflows/roadmap.md +12 -4
- package/workflows/spec-generate.md +9 -0
- package/workflows/status.md +76 -27
- package/workflows/ui-design.md +14 -12
- package/workflows/verify.md +44 -8
- package/.claude/commands/learn-retro-decision.md +0 -198
- package/.claude/commands/learn-retro-git.md +0 -160
- package/.claude/commands/maestro-phase-add.md +0 -63
- package/.claude/commands/maestro-phase-transition.md +0 -75
- package/.codex/skills/maestro-phase-add/SKILL.md +0 -154
- package/.codex/skills/maestro-phase-transition/SKILL.md +0 -173
- package/chains/singles/phase-add.json +0 -31
- package/chains/singles/phase-transition.json +0 -23
- package/dashboard/dist/assets/ChatInput-PuCvZZ3y.js +0 -67
- package/dashboard/dist/assets/ChatPage-v19GURYH.js +0 -8
- package/dashboard/dist/assets/CollabPage-I5k_mCbG.js +0 -1
- package/dashboard/dist/assets/KanbanPage-PDDBv5-9.js +0 -16
- package/dashboard/dist/assets/McpPage-CiqXpCHg.js +0 -16
- package/dashboard/dist/assets/TreeBrowser-0VIMWclo.js +0 -11
- package/dashboard/dist/assets/WorkflowPage-Csm23wUS.js +0 -6
- package/dashboard/dist/assets/git-branch-DL8p9kVC.js +0 -6
- package/dashboard/dist/assets/index-11DuhKhc.js +0 -231
- package/dashboard/dist/assets/index-D2Mtyw7I.css +0 -1
- package/dashboard/dist/assets/wrench-BScEJFqC.js +0 -11
- package/dist/src/commands/team.d.ts.map +0 -1
- package/dist/src/commands/team.js.map +0 -1
- package/workflows/phase-add.md +0 -252
- package/workflows/phase-transition.md +0 -399
|
@@ -1,158 +1,149 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: maestro-milestone-complete
|
|
3
|
-
description: Archive completed milestone
|
|
4
|
-
argument-hint: "[milestone] [--force]"
|
|
5
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Milestone Complete
|
|
9
|
-
|
|
10
|
-
## Usage
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
$maestro-milestone-complete "
|
|
14
|
-
$maestro-milestone-complete # uses current_milestone from state.json
|
|
15
|
-
$maestro-milestone-complete --force "
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
### Step
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## Core Rules
|
|
153
|
-
|
|
154
|
-
- **Never delete** phase directories before archiving -- always copy first
|
|
155
|
-
- **Preserve** `accumulated_context` across milestone boundaries
|
|
156
|
-
- **Learnings dedup** -- check existing entries before appending
|
|
157
|
-
- **Git commit** if in a git repo: `chore: complete milestone {milestone}`
|
|
158
|
-
- **--force** bypasses audit check only, not phase completion check
|
|
1
|
+
---
|
|
2
|
+
name: maestro-milestone-complete
|
|
3
|
+
description: Archive completed milestone scratch artifacts to milestones/ dir, move artifact entries to milestone_history, extract learnings, advance state.
|
|
4
|
+
argument-hint: "[milestone] [--force]"
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Milestone Complete
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
$maestro-milestone-complete "M1"
|
|
14
|
+
$maestro-milestone-complete # uses current_milestone from state.json
|
|
15
|
+
$maestro-milestone-complete --force "M1" # skip audit check
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Output**: `.workflow/milestones/{milestone}/` archive directory
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Overview
|
|
23
|
+
|
|
24
|
+
Sequential milestone archival: validate audit → archive scratch dirs → extract learnings → move artifact entries to milestone_history → advance state → clean scratch.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Implementation
|
|
29
|
+
|
|
30
|
+
### Step 1: Parse & Validate
|
|
31
|
+
|
|
32
|
+
1. Read `.workflow/state.json` to get `current_milestone`, `artifacts[]`, `milestones[]`
|
|
33
|
+
2. Determine target milestone (from args or current_milestone)
|
|
34
|
+
3. Check `--force` flag
|
|
35
|
+
4. If no milestone: **E001**
|
|
36
|
+
5. Check audit report exists at `.workflow/milestones/{milestone}/audit-report.md`
|
|
37
|
+
- Missing + not --force: **E002**
|
|
38
|
+
- Verdict FAIL + not --force: **E002**
|
|
39
|
+
6. Check all milestone artifacts completed:
|
|
40
|
+
- `state.json.artifacts.filter(a => a.milestone == target && a.status != "completed")`
|
|
41
|
+
- If any incomplete + not --force: **E003**
|
|
42
|
+
|
|
43
|
+
### Step 2: Archive Scratch Dirs
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
mkdir -p .workflow/milestones/{milestone}/artifacts/
|
|
47
|
+
|
|
48
|
+
# For each artifact path, copy to archive
|
|
49
|
+
for artifact in milestone_artifacts:
|
|
50
|
+
if dir exists .workflow/{artifact.path}:
|
|
51
|
+
cp -r .workflow/{artifact.path} .workflow/milestones/{milestone}/artifacts/$(basename {artifact.path})/
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Snapshot roadmap:
|
|
55
|
+
```bash
|
|
56
|
+
cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Step 3: Extract Learnings
|
|
60
|
+
|
|
61
|
+
- Read `.summaries/` from each execute artifact's plan dir
|
|
62
|
+
- Read `reflection-log.md` if exists
|
|
63
|
+
- Extract patterns, pitfalls, strategy adjustments
|
|
64
|
+
- Append to `.workflow/specs/learnings.md`
|
|
65
|
+
- Avoid duplicates (check existing entries)
|
|
66
|
+
|
|
67
|
+
### Step 4: Archive Artifact Entries
|
|
68
|
+
|
|
69
|
+
Move artifact entries from `state.json.artifacts[]` to `milestone_history`:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"milestone_history": [
|
|
74
|
+
...existing,
|
|
75
|
+
{
|
|
76
|
+
"id": "{milestone}",
|
|
77
|
+
"name": "{milestone_name}",
|
|
78
|
+
"status": "completed",
|
|
79
|
+
"completed_at": "{now}",
|
|
80
|
+
"archive_path": "milestones/{milestone}/",
|
|
81
|
+
"archived_artifacts": [ ...all milestone artifact entries... ]
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Remove from `artifacts[]`:
|
|
88
|
+
```
|
|
89
|
+
state.json.artifacts = state.json.artifacts.filter(a => a.milestone != target)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Step 5: Advance State
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
next = state.json.milestones.find(m => m.status == "pending")
|
|
96
|
+
if next:
|
|
97
|
+
state.json.current_milestone = next.id
|
|
98
|
+
next.status = "active"
|
|
99
|
+
else:
|
|
100
|
+
state.json.current_milestone = null
|
|
101
|
+
state.json.status = "completed"
|
|
102
|
+
|
|
103
|
+
state.json.last_updated = now()
|
|
104
|
+
Write state.json (atomic)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Step 6: Clean Scratch
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
for artifact in archived_artifacts:
|
|
111
|
+
rm -rf .workflow/{artifact.path}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 7: Generate Summary & Report
|
|
115
|
+
|
|
116
|
+
Write `.workflow/milestones/{milestone}/summary.md` with outcomes and learnings.
|
|
117
|
+
Update `.workflow/project.md` Context section.
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
=== MILESTONE COMPLETE ===
|
|
121
|
+
Milestone: {milestone} ({name})
|
|
122
|
+
Artifacts: {count} archived
|
|
123
|
+
Next: {next_milestone or "Project complete"}
|
|
124
|
+
|
|
125
|
+
Next steps:
|
|
126
|
+
$maestro-milestone-release -- Cut release
|
|
127
|
+
$maestro-analyze -- Start next milestone
|
|
128
|
+
$manage-status -- View state
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Error Handling
|
|
134
|
+
|
|
135
|
+
| Code | Severity | Description | Recovery |
|
|
136
|
+
|------|----------|-------------|----------|
|
|
137
|
+
| E001 | error | Milestone identifier required | Specify milestone |
|
|
138
|
+
| E002 | error | Audit not passed | Run milestone-audit first |
|
|
139
|
+
| E003 | error | Incomplete artifacts remain | Complete work first |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Core Rules
|
|
144
|
+
|
|
145
|
+
1. **Audit before archive** — refuse without passing audit (unless --force)
|
|
146
|
+
2. **Atomic state update** — write state.json via tmp+rename
|
|
147
|
+
3. **Learnings are mandatory** — always extract before archiving
|
|
148
|
+
4. **Clean after archive** — remove scratch dirs only after successful copy
|
|
149
|
+
5. **Advance state** — always set next milestone or mark project complete
|
|
@@ -163,13 +163,48 @@ const phaseArg = $ARGUMENTS
|
|
|
163
163
|
.replace(/--yes|-y|--continue|--concurrency\s+\d+|-c\s+\d+|--auto|--gaps|--parallel|--collab|--dir\s+\S+|--spec\s+\S+/g, '')
|
|
164
164
|
.trim()
|
|
165
165
|
|
|
166
|
+
// Auto-bootstrap state.json if missing
|
|
167
|
+
if (!fileExists('.workflow/state.json')) {
|
|
168
|
+
Bash('mkdir -p .workflow/scratch/')
|
|
169
|
+
writeMinimalStateJson()
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Scope determination (per scratch-milestone-architecture)
|
|
173
|
+
const state = JSON.parse(Read('.workflow/state.json'))
|
|
174
|
+
let scope, phaseNum = null, phaseSlug, contextDir
|
|
175
|
+
|
|
176
|
+
if (dirMatch) {
|
|
177
|
+
contextDir = dirMatch[1]
|
|
178
|
+
phaseSlug = contextDir.split('/').pop()
|
|
179
|
+
// Inherit scope from parent artifact if registered
|
|
180
|
+
const parentArtifact = state.artifacts.find(a => a.path === contextDir)
|
|
181
|
+
scope = parentArtifact?.scope || 'standalone'
|
|
182
|
+
} else if (phaseArg === '') {
|
|
183
|
+
if (state.current_milestone && fileExists('.workflow/roadmap.md')) {
|
|
184
|
+
scope = 'milestone'
|
|
185
|
+
phaseSlug = slugify(state.milestones.find(m => m.id === state.current_milestone)?.name || state.current_milestone)
|
|
186
|
+
// Find latest analyze artifact for this milestone
|
|
187
|
+
contextDir = state.artifacts.filter(a => a.type === 'analyze' && a.milestone === state.current_milestone && a.status === 'completed').pop()?.path
|
|
188
|
+
} else {
|
|
189
|
+
ERROR('E001: No args and no roadmap')
|
|
190
|
+
}
|
|
191
|
+
} else if (/^\d+$/.test(phaseArg)) {
|
|
192
|
+
scope = 'phase'
|
|
193
|
+
phaseNum = parseInt(phaseArg)
|
|
194
|
+
phaseSlug = resolvePhaseSlugFromRoadmap(phaseNum)
|
|
195
|
+
contextDir = state.artifacts.filter(a => a.type === 'analyze' && a.milestone === state.current_milestone && a.phase === phaseNum && a.status === 'completed').pop()?.path
|
|
196
|
+
} else {
|
|
197
|
+
scope = state.current_milestone ? 'adhoc' : 'standalone'
|
|
198
|
+
phaseSlug = phaseArg.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
|
|
199
|
+
}
|
|
200
|
+
|
|
166
201
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
167
|
-
const sessionId =
|
|
168
|
-
? `plan-${dirMatch[1].split('/').pop()}-${dateStr}`
|
|
169
|
-
: `plan-phase${phaseArg}-${dateStr}`
|
|
202
|
+
const sessionId = `plan-${phaseSlug}-${dateStr}`
|
|
170
203
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
204
|
+
const scratchDir = `.workflow/scratch/plan-${phaseSlug}-${dateStr}`
|
|
171
205
|
|
|
172
206
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
207
|
+
Bash(`mkdir -p ${scratchDir}/.task/`)
|
|
173
208
|
```
|
|
174
209
|
|
|
175
210
|
---
|
|
@@ -180,25 +215,20 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
180
215
|
|
|
181
216
|
**Decomposition Rules**:
|
|
182
217
|
|
|
183
|
-
1. **
|
|
184
|
-
|
|
185
|
-
| Condition | Action |
|
|
186
|
-
|-----------|--------|
|
|
187
|
-
| `--dir <path>` provided | Use path directly, set SCRATCH_MODE = true |
|
|
188
|
-
| Number argument | Resolve `.workflow/phases/{NN}-*/` |
|
|
189
|
-
| Slug argument | Resolve `.workflow/phases/*-{slug}/` |
|
|
218
|
+
1. **Scope resolution**: Already determined in Session Initialization (milestone/phase/adhoc/standalone)
|
|
190
219
|
|
|
191
|
-
2. **Context loading
|
|
192
|
-
- Read `{
|
|
193
|
-
- Read
|
|
194
|
-
- Read
|
|
220
|
+
2. **Context loading** (from upstream analyze artifact or --dir):
|
|
221
|
+
- Read `{contextDir}/context.md` (user decisions from analyze) — if contextDir resolved
|
|
222
|
+
- Read `.workflow/project.md` — project vision and constraints
|
|
223
|
+
- Read `.workflow/roadmap.md` — phase structure and dependencies
|
|
224
|
+
- Read spec-ref if `--spec` flag
|
|
195
225
|
- Read `.workflow/codebase/doc-index.json` if exists
|
|
196
|
-
-
|
|
226
|
+
- Find design artifacts from `state.json.artifacts[]` (type=brainstorm with ui-designer) for MASTER.md
|
|
197
227
|
- Load project specs via `maestro spec load --category planning`
|
|
198
228
|
|
|
199
229
|
3. **Upstream analysis check**:
|
|
200
|
-
- If `{
|
|
201
|
-
- If `{
|
|
230
|
+
- If `{contextDir}/conclusions.json` exists and has content: reuse as exploration context, skip wave 1
|
|
231
|
+
- If `{contextDir}/explorations.json` exists: load as additional context
|
|
202
232
|
|
|
203
233
|
4. **Gap mode** (if `--gaps`):
|
|
204
234
|
- Load gaps from `.workflow/issues/issues.jsonl` (primary), `verification.json` (fallback), `uat.md` (additional)
|
|
@@ -73,7 +73,7 @@ $maestro-roadmap --from-brainstorm WFS-001 "Enhance auth system"
|
|
|
73
73
|
| +-- Interactive refinement (max 3 rounds, skip if -y) |
|
|
74
74
|
| +-- Generate context.md with roadmap summary |
|
|
75
75
|
| +-- Write .workflow/roadmap.md |
|
|
76
|
-
| +--
|
|
76
|
+
| +-- Ensure .workflow/scratch/ directory exists |
|
|
77
77
|
| +-- Display summary with next steps |
|
|
78
78
|
| |
|
|
79
79
|
+---------------------------------------------------------------------------+
|
|
@@ -303,7 +303,8 @@ spawn_agents_on_csv({
|
|
|
303
303
|
|
|
304
304
|
5. **Write outputs**:
|
|
305
305
|
- Write `.workflow/roadmap.md` using standard roadmap template structure
|
|
306
|
-
-
|
|
306
|
+
- Ensure `.workflow/scratch/` directory exists (phases are labels, not directories)
|
|
307
|
+
- Update `state.json` milestones array and set `current_milestone`
|
|
307
308
|
- Update `.workflow/state.json` (if exists): set `current_phase: 1`
|
|
308
309
|
|
|
309
310
|
6. Display summary:
|
|
@@ -126,8 +126,8 @@ Read-only status report with progress milestones. No pipeline advancement.
|
|
|
126
126
|
|
|
127
127
|
**CLI equivalent for human monitoring** (works while coordinator is blocked):
|
|
128
128
|
```bash
|
|
129
|
-
maestro msg list -s "<session_id>" --type progress --last 10
|
|
130
|
-
maestro msg list -s "<session_id>" --type blocker
|
|
129
|
+
maestro agent-msg list -s "<session_id>" --type progress --last 10
|
|
130
|
+
maestro agent-msg list -s "<session_id>" --type blocker
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
Then STOP.
|
|
@@ -97,7 +97,7 @@ const blockerMsgs = mcp__maestro-tools__team_msg({
|
|
|
97
97
|
[executor] Commands: 'resume' to advance | 'check' to refresh
|
|
98
98
|
|
|
99
99
|
**CLI monitoring** (works while executor is blocked):
|
|
100
|
-
maestro msg list -s "<session_id>" --type progress --last 10
|
|
100
|
+
maestro agent-msg list -s "<session_id>" --type progress --last 10
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
Then STOP.
|
|
@@ -67,8 +67,8 @@ Read-only status report from tasks.json + team_msg progress, then STOP.
|
|
|
67
67
|
|
|
68
68
|
**CLI equivalent for human monitoring** (no coordinator needed):
|
|
69
69
|
```bash
|
|
70
|
-
maestro msg list -s "<session_id>" --type progress --last 10
|
|
71
|
-
maestro msg list -s "<session_id>" --type blocker
|
|
70
|
+
maestro agent-msg list -s "<session_id>" --type progress --last 10
|
|
71
|
+
maestro agent-msg list -s "<session_id>" --type blocker
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
## handleResume
|
|
@@ -131,7 +131,7 @@ Prevents redundant research across tasks.
|
|
|
131
131
|
## 6. Progress Milestone Protocol
|
|
132
132
|
|
|
133
133
|
Workers report progress during execution via `team_msg`. This provides:
|
|
134
|
-
- **Human CLI monitoring**: `maestro msg list -s <session-id> --type progress` works while coordinator is blocked in `wait_agent`
|
|
134
|
+
- **Human CLI monitoring**: `maestro agent-msg list -s <session-id> --type progress` works while coordinator is blocked in `wait_agent`
|
|
135
135
|
- **Coordinator post-wait trace**: Full execution history for forensics and status display
|
|
136
136
|
- **Blocker awareness**: Coordinator knows where worker got stuck on timeout
|
|
137
137
|
|
|
@@ -169,7 +169,7 @@ mcp__maestro-tools__team_msg({
|
|
|
169
169
|
`wait_agent` is **blocking** — coordinator cannot read team_msg during wait. Progress is only consumed:
|
|
170
170
|
1. On `handleCheck` (user types "check" while coordinator is idle)
|
|
171
171
|
2. On `handleResume` after `wait_agent` returns (drain bus before collecting discoveries)
|
|
172
|
-
3. By human via `maestro msg list` CLI (works anytime, independent of coordinator)
|
|
172
|
+
3. By human via `maestro agent-msg list` CLI (works anytime, independent of coordinator)
|
|
173
173
|
|
|
174
174
|
### Relationship to Discoveries
|
|
175
175
|
|
|
@@ -107,7 +107,7 @@ Output:
|
|
|
107
107
|
[coordinator] Commands: 'resume' to advance | 'check' to refresh
|
|
108
108
|
|
|
109
109
|
**CLI monitoring** (works while coordinator is blocked):
|
|
110
|
-
maestro msg list -s "<session_id>" --type progress --last 10
|
|
110
|
+
maestro agent-msg list -s "<session_id>" --type progress --last 10
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
Then STOP.
|
|
@@ -66,7 +66,7 @@ Output:
|
|
|
66
66
|
[coordinator] Commands: 'resume' to advance | 'check' to refresh
|
|
67
67
|
|
|
68
68
|
**CLI monitoring** (works while coordinator is blocked):
|
|
69
|
-
maestro msg list -s "<session_id>" --type progress --last 10
|
|
69
|
+
maestro agent-msg list -s "<session_id>" --type progress --last 10
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
Then STOP.
|
|
@@ -56,7 +56,7 @@ Session: <session-id>
|
|
|
56
56
|
Commands: 'resume' to advance | 'check' to refresh
|
|
57
57
|
|
|
58
58
|
**CLI monitoring** (works while coordinator is blocked):
|
|
59
|
-
maestro msg list -s "<session_id>" --type progress --last 10
|
|
59
|
+
maestro agent-msg list -s "<session_id>" --type progress --last 10
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
Output status -- do NOT advance pipeline.
|
|
@@ -71,7 +71,7 @@ Output:
|
|
|
71
71
|
[coordinator] Commands: 'resume' to advance | 'check' to refresh
|
|
72
72
|
|
|
73
73
|
**CLI monitoring** (works while coordinator is blocked):
|
|
74
|
-
maestro msg list -s "<session_id>" --type progress --last 10
|
|
74
|
+
maestro agent-msg list -s "<session_id>" --type progress --last 10
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
Then STOP.
|