maestro-flow 0.3.32 → 0.3.34
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-retro.md +1 -1
- package/.claude/commands/maestro-composer.md +2 -2
- package/.claude/commands/maestro-ralph-execute.md +1 -1
- package/.claude/commands/maestro-ralph.md +11 -11
- package/.claude/commands/maestro-verify.md +1 -1
- package/.claude/commands/maestro.md +1 -2
- package/.claude/commands/quality-auto-test.md +124 -0
- package/.claude/commands/quality-refactor.md +1 -1
- package/.claude/commands/quality-test.md +3 -3
- package/.codex/skills/learn-retro/SKILL.md +1 -1
- package/.codex/skills/maestro/SKILL.md +1 -1
- package/.codex/skills/maestro-link-coordinate/SKILL.md +1 -1
- package/.codex/skills/maestro-milestone-audit/SKILL.md +9 -1
- package/.codex/skills/maestro-plan/SKILL.md +72 -6
- package/.codex/skills/maestro-ralph/SKILL.md +159 -159
- package/.codex/skills/maestro-roadmap/SKILL.md +31 -5
- package/.codex/skills/maestro-verify/SKILL.md +1 -1
- package/.codex/skills/quality-auto-test/SKILL.md +547 -0
- package/.codex/skills/quality-debug/SKILL.md +18 -6
- package/.codex/skills/quality-refactor/SKILL.md +8 -1
- package/.codex/skills/quality-sync/SKILL.md +23 -4
- package/.codex/skills/quality-test/SKILL.md +498 -166
- package/dashboard/dist-server/src/config/cli-tools-config.js +5 -20
- package/dashboard/dist-server/src/config/cli-tools-config.js.map +1 -1
- package/dashboard/dist-server/src/config/cli-tools-defaults.json +17 -0
- package/dist/src/commands/config.d.ts.map +1 -1
- package/dist/src/commands/config.js +168 -32
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +9 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +1 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install.js +1 -1
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/overlay.js +1 -1
- package/dist/src/commands/overlay.js.map +1 -1
- package/dist/src/commands/tools.d.ts.map +1 -1
- package/dist/src/commands/tools.js +7 -17
- package/dist/src/commands/tools.js.map +1 -1
- package/dist/src/commands/uninstall.js +1 -1
- package/dist/src/commands/uninstall.js.map +1 -1
- package/dist/src/config/cli-tools-config.d.ts.map +1 -1
- package/dist/src/config/cli-tools-config.js +5 -20
- package/dist/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/config/cli-tools-defaults.json +17 -0
- package/dist/src/tui/config-ui/ConfigHub.d.ts +14 -0
- package/dist/src/tui/config-ui/ConfigHub.d.ts.map +1 -0
- package/dist/src/tui/config-ui/ConfigHub.js +125 -0
- package/dist/src/tui/config-ui/ConfigHub.js.map +1 -0
- package/dist/src/tui/config-ui/ConfigSourcesView.d.ts +6 -0
- package/dist/src/tui/config-ui/ConfigSourcesView.d.ts.map +1 -0
- package/dist/src/tui/config-ui/ConfigSourcesView.js +25 -0
- package/dist/src/tui/config-ui/ConfigSourcesView.js.map +1 -0
- package/dist/src/tui/config-ui/HooksPanel.d.ts +6 -0
- package/dist/src/tui/config-ui/HooksPanel.d.ts.map +1 -0
- package/dist/src/tui/config-ui/HooksPanel.js +92 -0
- package/dist/src/tui/config-ui/HooksPanel.js.map +1 -0
- package/dist/src/tui/config-ui/SkillConfigDashboard.d.ts +9 -0
- package/dist/src/tui/config-ui/SkillConfigDashboard.d.ts.map +1 -0
- package/dist/src/tui/config-ui/SkillConfigDashboard.js +64 -0
- package/dist/src/tui/config-ui/SkillConfigDashboard.js.map +1 -0
- package/dist/src/tui/config-ui/SkillParamEditor.d.ts +12 -0
- package/dist/src/tui/config-ui/SkillParamEditor.d.ts.map +1 -0
- package/dist/src/tui/config-ui/SkillParamEditor.js +162 -0
- package/dist/src/tui/config-ui/SkillParamEditor.js.map +1 -0
- package/dist/src/tui/config-ui/SkillsList.d.ts +12 -0
- package/dist/src/tui/config-ui/SkillsList.d.ts.map +1 -0
- package/dist/src/tui/config-ui/SkillsList.js +91 -0
- package/dist/src/tui/config-ui/SkillsList.js.map +1 -0
- package/dist/src/tui/config-ui/SpecPanel.d.ts +6 -0
- package/dist/src/tui/config-ui/SpecPanel.d.ts.map +1 -0
- package/dist/src/tui/config-ui/SpecPanel.js +79 -0
- package/dist/src/tui/config-ui/SpecPanel.js.map +1 -0
- package/dist/src/tui/config-ui/index.d.ts +23 -0
- package/dist/src/tui/config-ui/index.d.ts.map +1 -0
- package/dist/src/tui/config-ui/index.js +34 -0
- package/dist/src/tui/config-ui/index.js.map +1 -0
- package/dist/src/tui/index.d.ts +7 -0
- package/dist/src/tui/index.d.ts.map +1 -0
- package/dist/src/tui/index.js +10 -0
- package/dist/src/tui/index.js.map +1 -0
- package/dist/src/tui/install-ui/BackupConfig.d.ts +10 -0
- package/dist/src/tui/install-ui/BackupConfig.d.ts.map +1 -0
- package/dist/src/tui/install-ui/BackupConfig.js +46 -0
- package/dist/src/tui/install-ui/BackupConfig.js.map +1 -0
- package/dist/src/tui/install-ui/BlueprintPreview.d.ts +9 -0
- package/dist/src/tui/install-ui/BlueprintPreview.d.ts.map +1 -0
- package/dist/src/tui/install-ui/BlueprintPreview.js +65 -0
- package/dist/src/tui/install-ui/BlueprintPreview.js.map +1 -0
- package/dist/src/tui/install-ui/BlueprintPreview.logic.d.ts +33 -0
- package/dist/src/tui/install-ui/BlueprintPreview.logic.d.ts.map +1 -0
- package/dist/src/tui/install-ui/BlueprintPreview.logic.js +51 -0
- package/dist/src/tui/install-ui/BlueprintPreview.logic.js.map +1 -0
- package/dist/src/tui/install-ui/ComponentGrid.d.ts +13 -0
- package/dist/src/tui/install-ui/ComponentGrid.d.ts.map +1 -0
- package/dist/src/tui/install-ui/ComponentGrid.js +75 -0
- package/dist/src/tui/install-ui/ComponentGrid.js.map +1 -0
- package/dist/src/tui/install-ui/ComponentGrid.logic.d.ts +31 -0
- package/dist/src/tui/install-ui/ComponentGrid.logic.d.ts.map +1 -0
- package/dist/src/tui/install-ui/ComponentGrid.logic.js +58 -0
- package/dist/src/tui/install-ui/ComponentGrid.logic.js.map +1 -0
- package/dist/src/tui/install-ui/ConfigPanel.d.ts +11 -0
- package/dist/src/tui/install-ui/ConfigPanel.d.ts.map +1 -0
- package/dist/src/tui/install-ui/ConfigPanel.js +35 -0
- package/dist/src/tui/install-ui/ConfigPanel.js.map +1 -0
- package/dist/src/tui/install-ui/CyberItem.d.ts +18 -0
- package/dist/src/tui/install-ui/CyberItem.d.ts.map +1 -0
- package/dist/src/tui/install-ui/CyberItem.js +33 -0
- package/dist/src/tui/install-ui/CyberItem.js.map +1 -0
- package/dist/src/tui/install-ui/CyberdeckBlueprint.d.ts +7 -0
- package/dist/src/tui/install-ui/CyberdeckBlueprint.d.ts.map +1 -0
- package/dist/src/tui/install-ui/CyberdeckBlueprint.js +91 -0
- package/dist/src/tui/install-ui/CyberdeckBlueprint.js.map +1 -0
- package/dist/src/tui/install-ui/ExecutionView.d.ts +12 -0
- package/dist/src/tui/install-ui/ExecutionView.d.ts.map +1 -0
- package/dist/src/tui/install-ui/ExecutionView.js +154 -0
- package/dist/src/tui/install-ui/ExecutionView.js.map +1 -0
- package/dist/src/tui/install-ui/GradientHeader.d.ts +8 -0
- package/dist/src/tui/install-ui/GradientHeader.d.ts.map +1 -0
- package/dist/src/tui/install-ui/GradientHeader.js +18 -0
- package/dist/src/tui/install-ui/GradientHeader.js.map +1 -0
- package/dist/src/tui/install-ui/HooksConfig.d.ts +8 -0
- package/dist/src/tui/install-ui/HooksConfig.d.ts.map +1 -0
- package/dist/src/tui/install-ui/HooksConfig.js +35 -0
- package/dist/src/tui/install-ui/HooksConfig.js.map +1 -0
- package/dist/src/tui/install-ui/InstallConfirm.d.ts +27 -0
- package/dist/src/tui/install-ui/InstallConfirm.d.ts.map +1 -0
- package/dist/src/tui/install-ui/InstallConfirm.js +25 -0
- package/dist/src/tui/install-ui/InstallConfirm.js.map +1 -0
- package/dist/src/tui/install-ui/InstallExecution.d.ts +21 -0
- package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -0
- package/dist/src/tui/install-ui/InstallExecution.js +154 -0
- package/dist/src/tui/install-ui/InstallExecution.js.map +1 -0
- package/dist/src/tui/install-ui/InstallFlow.d.ts +14 -0
- package/dist/src/tui/install-ui/InstallFlow.d.ts.map +1 -0
- package/dist/src/tui/install-ui/InstallFlow.js +186 -0
- package/dist/src/tui/install-ui/InstallFlow.js.map +1 -0
- package/dist/src/tui/install-ui/InstallHub.d.ts +33 -0
- package/dist/src/tui/install-ui/InstallHub.d.ts.map +1 -0
- package/dist/src/tui/install-ui/InstallHub.js +97 -0
- package/dist/src/tui/install-ui/InstallHub.js.map +1 -0
- package/dist/src/tui/install-ui/InstallResult.d.ts +7 -0
- package/dist/src/tui/install-ui/InstallResult.d.ts.map +1 -0
- package/dist/src/tui/install-ui/InstallResult.js +15 -0
- package/dist/src/tui/install-ui/InstallResult.js.map +1 -0
- package/dist/src/tui/install-ui/McpConfig.d.ts +12 -0
- package/dist/src/tui/install-ui/McpConfig.d.ts.map +1 -0
- package/dist/src/tui/install-ui/McpConfig.js +69 -0
- package/dist/src/tui/install-ui/McpConfig.js.map +1 -0
- package/dist/src/tui/install-ui/ResultDashboard.d.ts +8 -0
- package/dist/src/tui/install-ui/ResultDashboard.d.ts.map +1 -0
- package/dist/src/tui/install-ui/ResultDashboard.js +17 -0
- package/dist/src/tui/install-ui/ResultDashboard.js.map +1 -0
- package/dist/src/tui/install-ui/ReviewPanel.d.ts +19 -0
- package/dist/src/tui/install-ui/ReviewPanel.d.ts.map +1 -0
- package/dist/src/tui/install-ui/ReviewPanel.js +25 -0
- package/dist/src/tui/install-ui/ReviewPanel.js.map +1 -0
- package/dist/src/tui/install-ui/ShortcutFooter.d.ts +7 -0
- package/dist/src/tui/install-ui/ShortcutFooter.d.ts.map +1 -0
- package/dist/src/tui/install-ui/ShortcutFooter.js +15 -0
- package/dist/src/tui/install-ui/ShortcutFooter.js.map +1 -0
- package/dist/src/tui/install-ui/StatuslineConfig.d.ts +11 -0
- package/dist/src/tui/install-ui/StatuslineConfig.d.ts.map +1 -0
- package/dist/src/tui/install-ui/StatuslineConfig.js +39 -0
- package/dist/src/tui/install-ui/StatuslineConfig.js.map +1 -0
- package/dist/src/tui/install-ui/StepSelector.d.ts +14 -0
- package/dist/src/tui/install-ui/StepSelector.d.ts.map +1 -0
- package/dist/src/tui/install-ui/StepSelector.js +46 -0
- package/dist/src/tui/install-ui/StepSelector.js.map +1 -0
- package/dist/src/tui/install-ui/index.d.ts +8 -0
- package/dist/src/tui/install-ui/index.d.ts.map +1 -0
- package/dist/src/tui/install-ui/index.js +10 -0
- package/dist/src/tui/install-ui/index.js.map +1 -0
- package/dist/src/tui/install-ui/types.d.ts +35 -0
- package/dist/src/tui/install-ui/types.d.ts.map +1 -0
- package/dist/src/tui/install-ui/types.js +25 -0
- package/dist/src/tui/install-ui/types.js.map +1 -0
- package/dist/src/tui/overlay-ui/OverlayList.d.ts +37 -0
- package/dist/src/tui/overlay-ui/OverlayList.d.ts.map +1 -0
- package/dist/src/tui/overlay-ui/OverlayList.js +146 -0
- package/dist/src/tui/overlay-ui/OverlayList.js.map +1 -0
- package/dist/src/tui/overlay-ui/index.d.ts +18 -0
- package/dist/src/tui/overlay-ui/index.d.ts.map +1 -0
- package/dist/src/tui/overlay-ui/index.js +204 -0
- package/dist/src/tui/overlay-ui/index.js.map +1 -0
- package/dist/src/tui/render.d.ts +13 -0
- package/dist/src/tui/render.d.ts.map +1 -0
- package/dist/src/tui/render.js +31 -0
- package/dist/src/tui/render.js.map +1 -0
- package/dist/src/tui/tools-ui/CommandReference.d.ts +7 -0
- package/dist/src/tui/tools-ui/CommandReference.d.ts.map +1 -0
- package/dist/src/tui/tools-ui/CommandReference.js +33 -0
- package/dist/src/tui/tools-ui/CommandReference.js.map +1 -0
- package/dist/src/tui/tools-ui/ConfigSources.d.ts +6 -0
- package/dist/src/tui/tools-ui/ConfigSources.d.ts.map +1 -0
- package/dist/src/tui/tools-ui/ConfigSources.js +27 -0
- package/dist/src/tui/tools-ui/ConfigSources.js.map +1 -0
- package/dist/src/tui/tools-ui/RegisterSettings.d.ts +8 -0
- package/dist/src/tui/tools-ui/RegisterSettings.d.ts.map +1 -0
- package/dist/src/tui/tools-ui/RegisterSettings.js +125 -0
- package/dist/src/tui/tools-ui/RegisterSettings.js.map +1 -0
- package/dist/src/tui/tools-ui/RoleMappings.d.ts +9 -0
- package/dist/src/tui/tools-ui/RoleMappings.d.ts.map +1 -0
- package/dist/src/tui/tools-ui/RoleMappings.js +104 -0
- package/dist/src/tui/tools-ui/RoleMappings.js.map +1 -0
- package/dist/src/tui/tools-ui/ToolsDashboard.d.ts +8 -0
- package/dist/src/tui/tools-ui/ToolsDashboard.d.ts.map +1 -0
- package/dist/src/tui/tools-ui/ToolsDashboard.js +60 -0
- package/dist/src/tui/tools-ui/ToolsDashboard.js.map +1 -0
- package/dist/src/tui/tools-ui/ToolsOverview.d.ts +9 -0
- package/dist/src/tui/tools-ui/ToolsOverview.d.ts.map +1 -0
- package/dist/src/tui/tools-ui/ToolsOverview.js +84 -0
- package/dist/src/tui/tools-ui/ToolsOverview.js.map +1 -0
- package/dist/src/tui/tools-ui/index.d.ts +3 -0
- package/dist/src/tui/tools-ui/index.d.ts.map +1 -0
- package/dist/src/tui/tools-ui/index.js +6 -0
- package/dist/src/tui/tools-ui/index.js.map +1 -0
- package/dist/src/tui/uninstall-ui/UninstallFlow.d.ts +7 -0
- package/dist/src/tui/uninstall-ui/UninstallFlow.d.ts.map +1 -0
- package/dist/src/tui/uninstall-ui/UninstallFlow.js +189 -0
- package/dist/src/tui/uninstall-ui/UninstallFlow.js.map +1 -0
- package/dist/src/tui/uninstall-ui/index.d.ts +3 -0
- package/dist/src/tui/uninstall-ui/index.d.ts.map +1 -0
- package/dist/src/tui/uninstall-ui/index.js +6 -0
- package/dist/src/tui/uninstall-ui/index.js.map +1 -0
- package/package.json +1 -1
- package/workflows/auto-test.md +682 -0
- package/workflows/business-test.md +570 -0
- package/workflows/integration-test.md +1 -1
- package/workflows/maestro.codex.md +4 -3
- package/workflows/maestro.md +5 -4
- package/workflows/status.md +2 -2
- package/workflows/test.md +1 -1
- package/workflows/verify.md +1 -1
- package/.claude/commands/quality-business-test.md +0 -110
- package/.claude/commands/quality-integration-test.md +0 -67
- package/.claude/commands/quality-test-gen.md +0 -68
- package/.codex/skills/maestro-ralph-execute/SKILL.md +0 -219
- package/.codex/skills/quality-business-test/SKILL.md +0 -218
- package/.codex/skills/quality-integration-test/SKILL.md +0 -427
- package/.codex/skills/quality-test-gen/SKILL.md +0 -352
|
@@ -7,21 +7,22 @@ allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUser
|
|
|
7
7
|
|
|
8
8
|
<purpose>
|
|
9
9
|
Closed-loop decision engine for the maestro workflow lifecycle.
|
|
10
|
-
|
|
10
|
+
Coordinator assembles fully-resolved skill calls and spawns them via `spawn_agents_on_csv` —
|
|
11
|
+
never executes skills directly. Uses `functions.update_plan()` for progress tracking.
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
- **`$maestro-ralph
|
|
13
|
+
Entry points:
|
|
14
|
+
- **`$maestro-ralph "intent"`** — Read state → infer position → build chain → execute waves until decision node → STOP
|
|
15
|
+
- **`$maestro-ralph execute`** — Resume from status.json → run next wave(s) until decision node → STOP
|
|
14
16
|
- **`$maestro-ralph status`** — Display session progress
|
|
15
|
-
- **`$maestro-ralph continue`** — Alias for `execute`
|
|
17
|
+
- **`$maestro-ralph continue`** — Alias for `execute`
|
|
16
18
|
|
|
17
19
|
Key difference from maestro coordinator:
|
|
18
20
|
- maestro: static chain → run all waves to completion
|
|
19
21
|
- ralph: living chain → decision nodes pause execution → ralph re-evaluates → chain grows/shrinks dynamically
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
- **
|
|
23
|
-
- **
|
|
24
|
-
- **cli**: Executed via `maestro delegate` (轻量替代,如 quick 模式的 review)。单步执行,不进 CSV wave。
|
|
23
|
+
Two node types:
|
|
24
|
+
- **skill**: Executed via `spawn_agents_on_csv`. Barrier skills run solo; non-barriers can parallel.
|
|
25
|
+
- **decision**: Coordinator evaluates result files, decides whether to expand chain, then STOPs.
|
|
25
26
|
|
|
26
27
|
Session at `.workflow/.maestro/ralph-{YYYYMMDD-HHmmss}/status.json`.
|
|
27
28
|
</purpose>
|
|
@@ -37,13 +38,13 @@ otherwise → handleNew(). Start from Phase 1.
|
|
|
37
38
|
```
|
|
38
39
|
|
|
39
40
|
**Flags:**
|
|
40
|
-
- `-y` / `--yes` — Auto mode: skip confirmation, decision nodes auto-evaluate并继续(不 STOP
|
|
41
|
+
- `-y` / `--yes` — Auto mode: skip confirmation, decision nodes auto-evaluate 并继续(不 STOP),错误自动重试一次后跳过。
|
|
41
42
|
|
|
42
|
-
**`-y`
|
|
43
|
+
**`-y` 传播:**
|
|
43
44
|
```
|
|
44
45
|
ralph -y → session.auto_mode = true
|
|
45
|
-
→
|
|
46
|
-
|
|
46
|
+
→ buildSkillCall() 按传播表直接附加 auto flag 到最终 skill_call
|
|
47
|
+
→ CSV 写入完整命令: $maestro-plan 1 -y
|
|
47
48
|
```
|
|
48
49
|
|
|
49
50
|
**`-y` 下游传播表:**
|
|
@@ -57,10 +58,9 @@ ralph -y → session.auto_mode = true
|
|
|
57
58
|
| maestro-plan | `-y` | 跳过确认和澄清 |
|
|
58
59
|
| maestro-execute | `-y` | 跳过确认,blocked 自动继续 |
|
|
59
60
|
| maestro-verify | *(none)* | 无交互,正常执行 |
|
|
60
|
-
| quality-
|
|
61
|
+
| quality-auto-test | `-y` | 跳过计划确认 |
|
|
61
62
|
| quality-review | *(none)* | 无交互确认,自动检测级别 |
|
|
62
63
|
| quality-test | `-y --auto-fix` | 自动触发 gap-fix loop |
|
|
63
|
-
| quality-test-gen | *(none)* | 无交互,正常生成 |
|
|
64
64
|
| quality-debug | *(none)* | 无交互确认,正常诊断 |
|
|
65
65
|
| maestro-milestone-audit | *(none)* | 无交互,正常执行 |
|
|
66
66
|
| maestro-milestone-complete | `-y` | 跳过 knowledge promotion 交互 |
|
|
@@ -72,16 +72,17 @@ If status.json has a pending decision node as next step → Phase 2b (evaluate),
|
|
|
72
72
|
</context>
|
|
73
73
|
|
|
74
74
|
<invariants>
|
|
75
|
-
1. **
|
|
76
|
-
2. **
|
|
77
|
-
3. **
|
|
78
|
-
4. **
|
|
79
|
-
5. **
|
|
80
|
-
6. **
|
|
81
|
-
7. **
|
|
82
|
-
8. **
|
|
83
|
-
9. **
|
|
84
|
-
10. **
|
|
75
|
+
1. **ALL skills via spawn_agents_on_csv**: Every skill invocation MUST go through `spawn_agents_on_csv`. Coordinator NEVER executes skills directly. No exceptions.
|
|
76
|
+
2. **Coordinator = prompt assembler**: Classify intent → enrich args → build CSV → spawn → read results → assemble next CSV. Never runs skill logic itself.
|
|
77
|
+
3. **Decision nodes STOP execution**: After processing a decision node, coordinator writes status.json and STOPS. User must call `$maestro-ralph execute` to resume. **例外:`-y` 模式下 decision 自动评估后继续,不 STOP(post-debug-escalate 除外)。**
|
|
78
|
+
4. **Barrier = solo wave**: barrier skills (analyze, plan, execute, brainstorm, roadmap) always run alone.
|
|
79
|
+
5. **Non-barriers can parallel**: consecutive non-barrier + non-decision steps grouped into one wave.
|
|
80
|
+
6. **Decision = barrier + conditional stop**: decision node is always solo. 默认 STOP;`-y` 模式自动继续。
|
|
81
|
+
7. **Wave-by-wave**: never start wave N+1 before wave N results are read.
|
|
82
|
+
8. **Coordinator owns context**: sub-agents never read prior results — coordinator assembles full skill_call with resolved args.
|
|
83
|
+
9. **Abort on failure**: failed step → `-y` 模式重试一次后跳过并继续;非 `-y` 模式 mark remaining skipped → pause session.
|
|
84
|
+
10. **Quality mode governs steps**: quality_mode (full/standard/quick) 决定哪些质量步骤被包含。
|
|
85
|
+
11. **passed_gates skip**: 重试循环中已通过的质量门不重复执行(除非代码变更影响了其检查范围)。
|
|
85
86
|
</invariants>
|
|
86
87
|
|
|
87
88
|
<execution>
|
|
@@ -172,7 +173,7 @@ Fallback: glob .workflow/scratch/*-P{phase}-*/ sorted by date DESC, take first
|
|
|
172
173
|
|------|------|----------|
|
|
173
174
|
| `full` | 全量质量管线 | verify → business-test → review → test-gen → test |
|
|
174
175
|
| `standard` | 标准管线(默认) | verify → review → test(跳过 business-test、test-gen 按条件) |
|
|
175
|
-
| `quick` | 轻量验证 | verify →
|
|
176
|
+
| `quick` | 轻量验证 | verify → review --tier quick(跳过 business-test、test-gen、test) |
|
|
176
177
|
|
|
177
178
|
Mode 选择逻辑(Phase 1a 后自动推断,可被用户覆盖):
|
|
178
179
|
```
|
|
@@ -192,31 +193,19 @@ analyze maestro-analyze {phase} yes —
|
|
|
192
193
|
plan maestro-plan {phase} yes — always
|
|
193
194
|
execute maestro-execute {phase} yes — always
|
|
194
195
|
verify maestro-verify {phase} no decision:post-verify always
|
|
195
|
-
business-test quality-
|
|
196
|
-
review quality-review {phase} no decision:post-review
|
|
197
|
-
|
|
198
|
-
test-gen quality-test-gen {phase} no — full; standard 按条件 ③
|
|
196
|
+
business-test quality-auto-test {phase} no decision:post-biz-test full only ①
|
|
197
|
+
review quality-review {phase} no decision:post-review always ②
|
|
198
|
+
test-gen quality-auto-test {phase} no — full; standard 按条件 ③
|
|
199
199
|
test quality-test {phase} no decision:post-test full/standard ④
|
|
200
200
|
milestone-audit maestro-milestone-audit no — always
|
|
201
201
|
milestone-complete maestro-milestone-complete no decision:post-milestone always
|
|
202
202
|
```
|
|
203
203
|
|
|
204
204
|
**条件说明:**
|
|
205
|
-
- ① `business-test`: 仅 full
|
|
206
|
-
- ② `review`:
|
|
207
|
-
- ③ `test-gen`: full 模式始终执行;standard
|
|
208
|
-
- ④ `test`: full/standard 执行;quick
|
|
209
|
-
|
|
210
|
-
**CLI review 替代(quick 模式):**
|
|
211
|
-
```json
|
|
212
|
-
{
|
|
213
|
-
"type": "cli",
|
|
214
|
-
"skill": "maestro delegate",
|
|
215
|
-
"args": "\"review changed files in phase {phase}\" --role review --mode analysis --rule analysis-review-code-quality",
|
|
216
|
-
"output_file": "{artifact_dir}/review.json"
|
|
217
|
-
}
|
|
218
|
-
```
|
|
219
|
-
CLI review 输出需符合 review.json schema(verdict + issues[]),供 post-review 决策节点消费。
|
|
205
|
+
- ① `business-test`: 仅 full 模式
|
|
206
|
+
- ② `review`: 所有模式均通过 skill spawn;quick 模式附加 `--tier quick`
|
|
207
|
+
- ③ `test-gen`: full 模式始终执行;standard 模式仅在覆盖率 < 80% 时执行
|
|
208
|
+
- ④ `test`: full/standard 执行;quick 模式跳过
|
|
220
209
|
|
|
221
210
|
**条件步骤的链构建:**
|
|
222
211
|
```
|
|
@@ -227,11 +216,10 @@ buildSteps(position, target, quality_mode):
|
|
|
227
216
|
if quality_mode != "full":
|
|
228
217
|
remove business-test + decision:post-biz-test
|
|
229
218
|
if quality_mode == "quick":
|
|
230
|
-
|
|
219
|
+
review skill 附加 --tier quick
|
|
231
220
|
remove test-gen
|
|
232
221
|
remove test + decision:post-test
|
|
233
222
|
if quality_mode == "standard":
|
|
234
|
-
# test-gen 延迟决定:在 post-verify 决策后检查覆盖率
|
|
235
223
|
mark test-gen as conditional: "check_coverage"
|
|
236
224
|
|
|
237
225
|
return steps
|
|
@@ -243,7 +231,7 @@ Generate `steps[]` from current position to target. Decision nodes use:
|
|
|
243
231
|
```
|
|
244
232
|
Conditional steps use:
|
|
245
233
|
```json
|
|
246
|
-
{ "type": "skill", "skill": "quality-test
|
|
234
|
+
{ "type": "skill", "skill": "quality-auto-test", "args": "{phase}", "condition": "check_coverage", "threshold": 80 }
|
|
247
235
|
```
|
|
248
236
|
|
|
249
237
|
### 1d: Create session
|
|
@@ -263,7 +251,6 @@ Write `.workflow/.maestro/ralph-{YYYYMMDD-HHmmss}/status.json`:
|
|
|
263
251
|
"phase": null,
|
|
264
252
|
"milestone": null,
|
|
265
253
|
"auto_mode": false,
|
|
266
|
-
"cli_tool": "gemini",
|
|
267
254
|
"quality_mode": "standard",
|
|
268
255
|
"passed_gates": [],
|
|
269
256
|
"context": {
|
|
@@ -282,8 +269,23 @@ Write `.workflow/.maestro/ralph-{YYYYMMDD-HHmmss}/status.json`:
|
|
|
282
269
|
}
|
|
283
270
|
```
|
|
284
271
|
|
|
285
|
-
### 1e:
|
|
272
|
+
### 1e: Initialize plan tracking + confirm
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
functions.update_plan({
|
|
276
|
+
explanation: "Ralph lifecycle: {position} → milestone-complete",
|
|
277
|
+
plan: steps.map((step, i) => ({
|
|
278
|
+
step: stepLabel(step),
|
|
279
|
+
status: "pending"
|
|
280
|
+
}))
|
|
281
|
+
})
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
`stepLabel(step)`:
|
|
285
|
+
- skill: `[{i+1}/{total}] ${step.skill} ${step.args}` + barrier 标 `[BARRIER]`
|
|
286
|
+
- decision: `[{i+1}/{total}] ◆ ${decision_type} [DECISION]`
|
|
286
287
|
|
|
288
|
+
Display plan:
|
|
287
289
|
```
|
|
288
290
|
============================================================
|
|
289
291
|
RALPH DECISION ENGINE
|
|
@@ -297,13 +299,9 @@ Write `.workflow/.maestro/ralph-{YYYYMMDD-HHmmss}/status.json`:
|
|
|
297
299
|
[ ] 1. maestro-execute {phase} [skill/barrier]
|
|
298
300
|
[ ] 2. maestro-verify {phase} [skill]
|
|
299
301
|
[ ] 3. ◆ post-verify [decision] ← STOP
|
|
300
|
-
[ ] 4. quality-review {phase} [skill]
|
|
301
|
-
[ ] 4. quality-review {phase} [cli/delegate] ← quick
|
|
302
|
+
[ ] 4. quality-review {phase} [skill]
|
|
302
303
|
[ ] 5. ◆ post-review [decision] ← STOP
|
|
303
304
|
...
|
|
304
|
-
── skipped (standard mode) ──────────────────────────────
|
|
305
|
-
[~] _. quality-business-test {phase} [skip: standard]
|
|
306
|
-
[?] _. quality-test-gen {phase} [conditional: coverage < 80%]
|
|
307
305
|
============================================================
|
|
308
306
|
```
|
|
309
307
|
|
|
@@ -318,7 +316,8 @@ If auto (`-y`): skip confirmation, proceed directly
|
|
|
318
316
|
|
|
319
317
|
### 2a: Load session
|
|
320
318
|
|
|
321
|
-
Read status.json.
|
|
319
|
+
Read status.json. Rebuild `update_plan` from current step statuses.
|
|
320
|
+
Find first pending step.
|
|
322
321
|
|
|
323
322
|
If first pending step is a decision node → go to Phase 2b.
|
|
324
323
|
Otherwise → go to Phase 2c.
|
|
@@ -355,27 +354,23 @@ Check: gaps[] array and passed field
|
|
|
355
354
|
If gaps found (passed == false or gaps[].length > 0):
|
|
356
355
|
If meta.retry_count >= meta.max_retries:
|
|
357
356
|
→ Insert: [quality-debug "{gap_summary}", decision:post-debug-escalate]
|
|
358
|
-
→ Display: ◆ post-verify: max retries reached, escalating to debug
|
|
359
357
|
Else:
|
|
360
358
|
→ Insert: [quality-debug "{gap_summary}", maestro-plan --gaps {phase},
|
|
361
359
|
maestro-execute {phase}, maestro-verify {phase},
|
|
362
360
|
decision:post-verify(retry+1)]
|
|
363
|
-
→ Display: ◆ post-verify: gaps detected, inserting debug+fix loop (retry {N}/{max})
|
|
364
361
|
|
|
365
362
|
If no gaps (passed == true):
|
|
366
363
|
→ Add "verify" to passed_gates
|
|
367
364
|
→ 条件检查 test-gen(standard 模式):
|
|
368
365
|
Read {artifact_dir}/validation.json
|
|
369
|
-
If coverage < 80% or
|
|
370
|
-
|
|
371
|
-
Else:
|
|
372
|
-
skip test-gen step (set status = "skipped")
|
|
366
|
+
If coverage < 80% or not found → activate conditional test-gen step
|
|
367
|
+
Else → skip test-gen step
|
|
373
368
|
→ No insertion, proceed
|
|
374
369
|
```
|
|
375
370
|
|
|
376
371
|
**post-biz-test (仅 full 模式):**
|
|
377
372
|
```
|
|
378
|
-
Read {artifact_dir}/business-test-results.json
|
|
373
|
+
Read {artifact_dir}/business-test-results.json
|
|
379
374
|
Check: failures[] or passed field
|
|
380
375
|
|
|
381
376
|
If failures found:
|
|
@@ -386,11 +381,10 @@ If failures found:
|
|
|
386
381
|
→ Insert: [quality-debug --from-business-test {phase},
|
|
387
382
|
maestro-plan --gaps {phase}, maestro-execute {phase},
|
|
388
383
|
maestro-verify {phase}, decision:post-verify(retry:0),
|
|
389
|
-
quality-
|
|
384
|
+
quality-auto-test {phase}, decision:post-biz-test(retry+1)]
|
|
390
385
|
|
|
391
386
|
If all pass:
|
|
392
|
-
→ Add "business-test" to passed_gates
|
|
393
|
-
→ No insertion, proceed
|
|
387
|
+
→ Add "business-test" to passed_gates, proceed
|
|
394
388
|
```
|
|
395
389
|
|
|
396
390
|
**post-review:**
|
|
@@ -406,75 +400,47 @@ If verdict == "BLOCK" or any issue.severity == "critical":
|
|
|
406
400
|
→ Insert: [quality-debug "{block_issues}",
|
|
407
401
|
maestro-plan --gaps {phase}, maestro-execute {phase},
|
|
408
402
|
quality-review {phase}, decision:post-review(retry+1)]
|
|
409
|
-
注:review 失败只重跑 review,不回滚到 verify(verify 已通过且代码仅修复 review 问题)
|
|
410
403
|
|
|
411
404
|
If verdict == "PASS" or "WARN":
|
|
412
|
-
→ Add "review" to passed_gates
|
|
413
|
-
→ No insertion, proceed
|
|
405
|
+
→ Add "review" to passed_gates, proceed
|
|
414
406
|
```
|
|
415
407
|
|
|
416
408
|
**post-test (仅 full/standard 模式):**
|
|
417
409
|
```
|
|
418
|
-
Read {artifact_dir}/uat.md
|
|
419
|
-
Read {artifact_dir}/.tests/test-results.json if exists
|
|
410
|
+
Read {artifact_dir}/uat.md + {artifact_dir}/.tests/test-results.json
|
|
420
411
|
|
|
421
|
-
If failures found
|
|
412
|
+
If failures found:
|
|
422
413
|
If meta.retry_count >= meta.max_retries:
|
|
423
414
|
→ Insert: [quality-debug --from-uat {phase}, decision:post-debug-escalate]
|
|
424
415
|
Else:
|
|
425
416
|
→ Clear passed_gates (code will change)
|
|
426
|
-
→ 轻量重试:仅重新执行 verify + 未通过的质量门
|
|
427
417
|
→ Insert: [quality-debug --from-uat {phase},
|
|
428
418
|
maestro-plan --gaps {phase}, maestro-execute {phase},
|
|
429
419
|
maestro-verify {phase}, decision:post-verify(retry:0),
|
|
430
|
-
// 对 passed_gates 中的每个门:对比修改文件列表与该门的检查范围
|
|
431
|
-
// 有交集 → 重新插入该门 + 对应 decision
|
|
432
|
-
// 无交集 → 跳过(不插入)
|
|
433
420
|
quality-test {phase}, decision:post-test(retry+1)]
|
|
434
|
-
注:不再重新插入整条管线。verify 始终重跑(代码已变),其余门按影响范围判断。
|
|
435
421
|
|
|
436
422
|
If all pass:
|
|
437
|
-
→ Add "test" to passed_gates
|
|
438
|
-
→ No insertion, proceed
|
|
423
|
+
→ Add "test" to passed_gates, proceed
|
|
439
424
|
```
|
|
440
425
|
|
|
441
426
|
**post-milestone:**
|
|
442
427
|
```
|
|
443
|
-
Re-read .workflow/state.json
|
|
444
|
-
Check:
|
|
428
|
+
Re-read .workflow/state.json.
|
|
429
|
+
Check: next milestone with status == "pending" or "active"
|
|
445
430
|
|
|
446
431
|
If next milestone found:
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
→ Reset passed_gates = []
|
|
452
|
-
→ Re-infer quality_mode for next milestone (check REQ-*.md existence)
|
|
453
|
-
→ Insert lifecycle for next milestone (按 quality_mode 过滤):
|
|
454
|
-
[maestro-analyze {first_phase} [barrier],
|
|
455
|
-
maestro-plan {first_phase} [barrier],
|
|
456
|
-
maestro-execute {first_phase} [barrier],
|
|
457
|
-
maestro-verify {first_phase},
|
|
458
|
-
decision:post-verify(retry:0),
|
|
459
|
-
...quality steps per quality_mode (see 1c buildSteps)...,
|
|
460
|
-
maestro-milestone-audit,
|
|
461
|
-
maestro-milestone-complete,
|
|
462
|
-
decision:post-milestone]
|
|
463
|
-
注:使用 buildSteps() 按当前 quality_mode 生成质量步骤,不硬编码完整管线
|
|
464
|
-
|
|
465
|
-
→ Display: ◆ post-milestone: {completed_m.name} done → advancing to {next_m.name} Phase {first_phase}
|
|
432
|
+
Update session: milestone, phase, reset passed_gates
|
|
433
|
+
Re-infer quality_mode
|
|
434
|
+
Insert lifecycle via buildSteps() for next milestone
|
|
466
435
|
|
|
467
436
|
If no next milestone:
|
|
468
|
-
→
|
|
469
|
-
→ Display: ◆ post-milestone: all milestones complete!
|
|
437
|
+
→ Session will complete naturally
|
|
470
438
|
```
|
|
471
439
|
|
|
472
440
|
**post-debug-escalate:**
|
|
473
441
|
```
|
|
474
|
-
This is a terminal escalation — debug was run but we exceeded max retries.
|
|
475
442
|
→ Set session status = "paused"
|
|
476
443
|
→ Display: ◆ 已达最大重试次数,debug 已执行。请人工介入检查结果。
|
|
477
|
-
→ Display: 使用 $maestro-ralph execute 在处理后恢复
|
|
478
444
|
→ STOP
|
|
479
445
|
```
|
|
480
446
|
|
|
@@ -482,10 +448,11 @@ After evaluation:
|
|
|
482
448
|
1. Mark decision step as "completed"
|
|
483
449
|
2. Reindex steps if inserted
|
|
484
450
|
3. Write status.json
|
|
485
|
-
4.
|
|
486
|
-
5.
|
|
487
|
-
|
|
488
|
-
- `
|
|
451
|
+
4. Sync `update_plan` with current step statuses
|
|
452
|
+
5. Display: `◆ Decision: {type} → {outcome}`
|
|
453
|
+
6. **STOP 判定:**
|
|
454
|
+
- `post-debug-escalate` → 始终 STOP
|
|
455
|
+
- `auto_mode == true` → 不 STOP,fall through to Phase 2c
|
|
489
456
|
- `auto_mode == false` → STOP。Display: `⏸ 到达决策节点。使用 $maestro-ralph execute 继续。`
|
|
490
457
|
|
|
491
458
|
### 2c: Build and Execute Next Wave
|
|
@@ -496,43 +463,70 @@ After evaluation:
|
|
|
496
463
|
- If conditional step with condition not met → mark "skipped", advance to next
|
|
497
464
|
- If barrier → solo wave
|
|
498
465
|
- If non-barrier → collect consecutive non-barrier, non-decision steps
|
|
499
|
-
- Stop at first decision node
|
|
466
|
+
- Stop at first decision node
|
|
467
|
+
|
|
468
|
+
2. **buildSkillCall(step, ctx)** — Assemble fully-resolved skill_call:
|
|
500
469
|
|
|
501
|
-
|
|
470
|
+
**Placeholder resolution:**
|
|
502
471
|
```
|
|
503
|
-
{phase} →
|
|
504
|
-
{intent} →
|
|
472
|
+
{phase} → ctx.phase
|
|
473
|
+
{intent} → ctx.intent
|
|
505
474
|
{scratch_dir} → from latest artifact path
|
|
506
|
-
{plan_dir} →
|
|
507
|
-
{analysis_dir}→
|
|
475
|
+
{plan_dir} → ctx.plan_dir
|
|
476
|
+
{analysis_dir}→ ctx.analysis_dir
|
|
508
477
|
```
|
|
509
478
|
|
|
510
|
-
|
|
479
|
+
**Per-skill arg enrichment** (coordinator does this, not sub-agent):
|
|
480
|
+
```
|
|
481
|
+
maestro-brainstorm: args empty → '"{intent}"'
|
|
482
|
+
maestro-roadmap: args empty → '"{intent}"'
|
|
483
|
+
maestro-analyze: args empty → '{phase}'
|
|
484
|
+
maestro-plan: needs dir → resolve latest analyze artifact → --dir .workflow/scratch/{path}
|
|
485
|
+
maestro-execute: needs dir → resolve latest plan artifact → --dir .workflow/scratch/{path}
|
|
486
|
+
quality-debug: from verify → append gap summary from verification.json
|
|
487
|
+
from test → append --from-uat {phase}
|
|
488
|
+
from biz → append --from-business-test {phase}
|
|
489
|
+
quality-* (review, test, auto-test): args empty → '{phase}'
|
|
490
|
+
maestro-verify, milestone-*: args empty → '{phase}' or empty
|
|
491
|
+
```
|
|
511
492
|
|
|
512
|
-
**
|
|
513
|
-
Each row spawns a `$maestro-ralph-execute` agent with the target skill_call as argument:
|
|
514
|
-
```csv
|
|
515
|
-
id,skill_call,topic
|
|
516
|
-
"3","$maestro-ralph-execute \"$maestro-verify 1\"","Ralph step 3/14: verify phase 1"
|
|
493
|
+
**Auto flag 附加** (when `session.auto_mode == true`):
|
|
517
494
|
```
|
|
518
|
-
|
|
495
|
+
auto_flag_map = {
|
|
496
|
+
"maestro-init": "-y",
|
|
497
|
+
"maestro-analyze": "-y",
|
|
498
|
+
"maestro-brainstorm": "-y",
|
|
499
|
+
"maestro-roadmap": "-y",
|
|
500
|
+
"maestro-plan": "-y",
|
|
501
|
+
"maestro-execute": "-y",
|
|
502
|
+
"quality-auto-test": "-y",
|
|
503
|
+
"quality-test": "-y --auto-fix",
|
|
504
|
+
"quality-retrospective": "-y",
|
|
505
|
+
"maestro-milestone-complete": "-y"
|
|
506
|
+
}
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
**Result**: `$<skill-name> <enriched-args> [auto-flag]`
|
|
510
|
+
|
|
511
|
+
3. **Write wave CSV**: `{sessionDir}/wave-{N}.csv`
|
|
519
512
|
```csv
|
|
520
|
-
|
|
513
|
+
id,skill_call,topic
|
|
514
|
+
"3","$maestro-verify 1","Ralph step 3/14: verify phase 1"
|
|
515
|
+
"4","$quality-review 1","Ralph step 4/14: review phase 1"
|
|
521
516
|
```
|
|
522
|
-
ralph-execute 解析 `-y` 后,按传播表对目标 skill 附加对应 auto flag。
|
|
523
|
-
The inner `$maestro-verify 1` is the actual skill; `$maestro-ralph-execute` is the worker wrapper.
|
|
524
517
|
|
|
525
|
-
|
|
518
|
+
4. **Update plan** (mark wave steps as in_progress):
|
|
526
519
|
```
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
520
|
+
functions.update_plan({
|
|
521
|
+
explanation: "Wave {N}: executing {skill_names}",
|
|
522
|
+
plan: steps.map((step, i) => ({
|
|
523
|
+
step: stepLabel(step),
|
|
524
|
+
status: mapStatus(step.status) // pending→pending, running→in_progress, completed→completed
|
|
525
|
+
}))
|
|
530
526
|
})
|
|
531
527
|
```
|
|
532
|
-
等待回调 → `maestro delegate output <id>` → 解析输出写入 `{artifact_dir}/{output_file}`
|
|
533
|
-
CLI 步骤始终单步执行,不进 CSV wave。
|
|
534
528
|
|
|
535
|
-
|
|
529
|
+
5. **Spawn**:
|
|
536
530
|
```
|
|
537
531
|
spawn_agents_on_csv({
|
|
538
532
|
csv_path: "{sessionDir}/wave-{N}.csv",
|
|
@@ -545,9 +539,9 @@ After evaluation:
|
|
|
545
539
|
})
|
|
546
540
|
```
|
|
547
541
|
|
|
548
|
-
|
|
542
|
+
6. **Read results**: Update step status from results CSV
|
|
549
543
|
|
|
550
|
-
|
|
544
|
+
7. **Barrier check**: If wave was a barrier skill, read artifacts, update context:
|
|
551
545
|
| Barrier | Read | Update |
|
|
552
546
|
|---------|------|--------|
|
|
553
547
|
| maestro-analyze | context.md, state.json | context.analysis_dir, context.gaps |
|
|
@@ -556,30 +550,33 @@ After evaluation:
|
|
|
556
550
|
| maestro-brainstorm | .brainstorming/ | context.brainstorm_dir |
|
|
557
551
|
| maestro-roadmap | specs/ | context.spec_session_id |
|
|
558
552
|
|
|
559
|
-
|
|
553
|
+
8. **Persist**: Write status.json + sync `update_plan`
|
|
560
554
|
|
|
561
|
-
|
|
555
|
+
9. **Failure check**: Any step failed → mark remaining skipped, pause session, STOP
|
|
562
556
|
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
557
|
+
10. **Decision check**: If next pending step is a decision node:
|
|
558
|
+
- `auto_mode == true` → 进入 Phase 2b 评估,然后继续循环
|
|
559
|
+
- `auto_mode == false` → STOP
|
|
566
560
|
|
|
567
|
-
|
|
561
|
+
11. **Continue**: If next pending is not decision, loop back to step 1
|
|
568
562
|
|
|
569
563
|
### Sub-Agent Instruction Template
|
|
570
564
|
|
|
571
565
|
```
|
|
572
|
-
你是
|
|
566
|
+
你是 CSV job 子 agent。
|
|
567
|
+
|
|
568
|
+
先原样执行这一段技能调用:
|
|
569
|
+
{skill_call}
|
|
573
570
|
|
|
574
|
-
|
|
575
|
-
|
|
571
|
+
然后基于结果完成这一行任务说明:
|
|
572
|
+
{topic}
|
|
576
573
|
|
|
577
574
|
限制:
|
|
578
|
-
- 不要修改 .workflow/.maestro/
|
|
579
|
-
-
|
|
575
|
+
- 不要修改 .workflow/.maestro/ 下的 status 文件
|
|
576
|
+
- skill 内部有自己的 session 管理,按 skill SKILL.md 执行即可
|
|
580
577
|
|
|
581
|
-
|
|
582
|
-
{"status":"completed|failed","skill_call":"{skill_call}","summary":"一句话结果","artifacts":"
|
|
578
|
+
最后必须调用 `report_agent_job_result`,返回 JSON:
|
|
579
|
+
{"status":"completed|failed","skill_call":"{skill_call}","summary":"一句话结果","artifacts":"产物路径或空字符串","error":"失败原因或空字符串"}
|
|
583
580
|
```
|
|
584
581
|
|
|
585
582
|
### Result Schema
|
|
@@ -595,6 +592,14 @@ status.status = "completed"
|
|
|
595
592
|
status.updated_at = now
|
|
596
593
|
Write status.json
|
|
597
594
|
|
|
595
|
+
functions.update_plan({
|
|
596
|
+
explanation: "Ralph lifecycle complete",
|
|
597
|
+
plan: steps.map((step, i) => ({
|
|
598
|
+
step: stepLabel(step),
|
|
599
|
+
status: step.status === "skipped" ? "completed" : "completed"
|
|
600
|
+
}))
|
|
601
|
+
})
|
|
602
|
+
|
|
598
603
|
============================================================
|
|
599
604
|
RALPH COMPLETE
|
|
600
605
|
============================================================
|
|
@@ -608,7 +613,7 @@ Write status.json
|
|
|
608
613
|
[✓] 1. maestro-execute 1 [W2]
|
|
609
614
|
[✓] 2. maestro-verify 1 [W3]
|
|
610
615
|
[✓] 3. ◆ post-verify [decision: no gaps]
|
|
611
|
-
[~] 4. quality-
|
|
616
|
+
[~] 4. quality-auto-test 1 [skipped: standard mode]
|
|
612
617
|
[✓] 5. quality-review 1 [W4]
|
|
613
618
|
...
|
|
614
619
|
|
|
@@ -621,20 +626,19 @@ Write status.json
|
|
|
621
626
|
<csv_schema>
|
|
622
627
|
### wave-{N}.csv
|
|
623
628
|
|
|
624
|
-
|
|
629
|
+
CSV 直接包含目标 skill 调用(coordinator 已完成 arg 组装 + auto flag 附加):
|
|
625
630
|
|
|
626
631
|
```csv
|
|
627
632
|
id,skill_call,topic
|
|
628
|
-
"3","$maestro-
|
|
629
|
-
"4","$
|
|
633
|
+
"3","$maestro-verify 1","Ralph step 3/14: verify phase 1"
|
|
634
|
+
"4","$quality-review 1 --tier quick","Ralph step 4/14: review phase 1"
|
|
630
635
|
```
|
|
631
636
|
|
|
632
|
-
- `skill_call` column:
|
|
637
|
+
- `skill_call` column: 完整的 `$<skill> <args> [auto-flag]`,由 `buildSkillCall()` 组装
|
|
633
638
|
- `topic` column: human-readable step description
|
|
634
639
|
- Non-barrier + non-decision steps can be grouped in one wave CSV with multiple rows
|
|
635
640
|
- Barrier steps always solo (one row per CSV)
|
|
636
641
|
- Decision steps are NEVER in CSV — processed by ralph directly
|
|
637
|
-
- CLI steps (type=="cli") are NEVER in CSV — processed by ralph via maestro delegate
|
|
638
642
|
</csv_schema>
|
|
639
643
|
|
|
640
644
|
<error_codes>
|
|
@@ -653,22 +657,18 @@ id,skill_call,topic
|
|
|
653
657
|
|
|
654
658
|
<success_criteria>
|
|
655
659
|
- [ ] state.json artifacts correctly read with actual schema (type, path, scope, milestone, depends_on)
|
|
656
|
-
- [ ] Lifecycle position inferred from artifacts + result files
|
|
660
|
+
- [ ] Lifecycle position inferred from artifacts + result files
|
|
657
661
|
- [ ] Artifact dir resolved via resolve_artifact_dir() with fallback globs
|
|
658
662
|
- [ ] Quality mode (full/standard/quick) 正确推断并影响步骤生成
|
|
659
|
-
- [ ]
|
|
660
|
-
- [ ] CLI 替代: quick 模式 review 走 delegate 而非 skill spawn
|
|
663
|
+
- [ ] buildSkillCall() 完成 arg enrichment + auto flag 附加,CSV 直接包含完整命令
|
|
661
664
|
- [ ] Decision nodes at: post-verify, post-biz-test (full only), post-review, post-test (full/standard), post-milestone
|
|
662
665
|
- [ ] Every decision failure path starts with quality-debug before plan --gaps
|
|
663
666
|
- [ ] passed_gates[] 正确追踪,重试时跳过已通过的质量门
|
|
664
|
-
- [ ] 重试循环轻量化:post-test 失败不重跑整条管线,仅重跑未通过的门
|
|
665
667
|
- [ ] retry_count tracked per decision node, max_retries enforced
|
|
666
|
-
- [ ]
|
|
667
|
-
- [ ] Skills via spawn_agents_on_csv, CLI via delegate — coordinator never executes directly
|
|
668
|
+
- [ ] ALL skills via spawn_agents_on_csv — coordinator never executes directly
|
|
668
669
|
- [ ] Decision nodes STOP execution — user must call `execute` to resume
|
|
669
670
|
- [ ] Barrier skills run solo, non-barriers grouped in parallel waves
|
|
670
|
-
- [ ]
|
|
671
|
-
- [ ] post-milestone 用 buildSteps() 生成下一个 milestone 的步骤(按 quality_mode)
|
|
671
|
+
- [ ] functions.update_plan() 在 Phase 1e 初始化,每 wave 后同步,Phase 3 完成
|
|
672
672
|
- [ ] status.json persisted after every wave
|
|
673
673
|
- [ ] Command insertion + reindex works correctly after decision expansion
|
|
674
674
|
</success_criteria>
|