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,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
|
|
11
|
+
- Get `artifacts[]` array
|
|
12
12
|
|
|
13
|
-
2.
|
|
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.
|
|
18
|
-
|
|
19
|
-
|
|
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:
|
|
29
|
+
## Step 2: Phase Coverage Check
|
|
24
30
|
|
|
25
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
|
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
|
-
|
|
54
|
-
{for each
|
|
87
|
+
Artifacts to audit:
|
|
88
|
+
{for each execute artifact: path, phase, scope}
|
|
55
89
|
|
|
56
90
|
Check:
|
|
57
|
-
1. SHARED INTERFACES -- Do
|
|
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
|
|
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
|
|
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
|
|
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
|
|
112
|
+
## Step 6: Audit Report & Verdict
|
|
79
113
|
|
|
80
114
|
1. Read the audit report generated by the integration checker
|
|
81
|
-
|
|
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
|
-
|
|
124
|
+
MILESTONE AUDIT: {milestone} ({milestone_name})
|
|
125
|
+
ARTIFACTS: {total_count}
|
|
87
126
|
====================================================
|
|
88
127
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
135
|
+
VERIFICATION:
|
|
136
|
+
VRF-001: milestone-level verify ✓ (or "not yet run")
|
|
108
137
|
|
|
109
|
-
|
|
138
|
+
INTEGRATION:
|
|
139
|
+
Shared Interfaces: {passed|N gaps}
|
|
140
|
+
Dependency Chains: {passed|N gaps}
|
|
141
|
+
Data Contracts: {passed|N gaps}
|
|
110
142
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
AUDIT PASSED
|
|
114
|
-
Next: Skill({ skill: "maestro-milestone-complete", args: "{milestone}" })
|
|
143
|
+
VERDICT: PASS | FAIL
|
|
144
|
+
====================================================
|
|
115
145
|
```
|
|
116
146
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
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
|
|
15
|
-
- WARN: "No audit report found. Run `/
|
|
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
|
|
18
|
+
- If NO → exit
|
|
19
|
+
- If verdict is FAIL: ERROR E002
|
|
18
20
|
|
|
19
|
-
3. Verify all
|
|
21
|
+
3. Verify all artifacts completed:
|
|
20
22
|
```
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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/
|
|
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/
|
|
40
|
+
cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
3. Archive
|
|
43
|
+
3. Archive scratch directories:
|
|
44
44
|
```
|
|
45
|
-
|
|
46
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
Read .workflow/project.md
|
|
89
|
+
## Step 4: Update State
|
|
99
90
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
127
|
+
## Step 5: Clean Scratch
|
|
118
128
|
|
|
119
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
146
|
-
|
|
147
|
-
|
|
140
|
+
Write `.workflow/milestones/{milestone}/summary.md`:
|
|
141
|
+
```markdown
|
|
142
|
+
# Milestone: {milestone} — {name}
|
|
148
143
|
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
|
|
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
|
|
213
|
-
|
|
214
|
-
1. If git repo: commit with message `"chore: complete milestone {milestone}"`
|
|
161
|
+
## Step 7: Report
|
|
215
162
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
+
```
|