maestro-flow 0.5.34 → 0.5.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/agents/cli-explore-agent.md +71 -68
- package/.agents/agents/workflow-analyzer.md +1 -0
- package/.agents/agents/workflow-collab-planner.md +1 -0
- package/.agents/agents/workflow-debugger.md +1 -0
- package/.agents/agents/workflow-executor.md +1 -0
- package/.agents/agents/workflow-planner.md +2 -0
- package/.agents/skills/domain-add/SKILL.md +71 -0
- package/.agents/skills/maestro/SKILL.md +7 -6
- package/.agents/skills/maestro-amend/SKILL.md +0 -2
- package/.agents/skills/maestro-analyze/SKILL.md +9 -0
- package/.agents/skills/maestro-brainstorm/SKILL.md +10 -1
- package/.agents/skills/maestro-collab/SKILL.md +14 -1
- package/.agents/skills/maestro-help/SKILL.md +1 -1
- package/.agents/skills/maestro-help/index/catalog.json +0 -1
- package/.agents/skills/maestro-help/phases/01-parse-intent.md +1 -1
- package/.agents/skills/maestro-next/SKILL.md +15 -4
- package/.agents/skills/maestro-overlay/SKILL.md +4 -3
- package/.agents/skills/maestro-plan/SKILL.md +15 -4
- package/.agents/skills/maestro-ralph/SKILL.md +135 -31
- package/.agents/skills/maestro-ralph-execute/SKILL.md +51 -10
- package/.agents/skills/maestro-tools-register/SKILL.md +0 -6
- package/.agents/skills/maestro-ui-codify/SKILL.md +0 -2
- package/.agents/skills/manage-kg-extractors/SKILL.md +0 -2
- package/.agents/skills/quality-test/SKILL.md +25 -1
- package/.agents/skills/spec-load/SKILL.md +0 -1
- package/.agents/skills/spec-setup/SKILL.md +0 -1
- package/.agents/skills/team-lifecycle-v4/roles/analyst/role.md +13 -7
- package/.agents/skills/team-quality-assurance/roles/scout/role.md +15 -11
- package/.agents/skills/team-tech-debt/roles/scanner/role.md +1 -1
- package/.agents/skills/team-ultra-analyze/roles/explorer/role.md +23 -16
- package/.agy/agents/cli-explore-agent.md +71 -68
- package/.agy/agents/workflow-analyzer.md +1 -0
- package/.agy/agents/workflow-collab-planner.md +1 -0
- package/.agy/agents/workflow-debugger.md +1 -0
- package/.agy/agents/workflow-executor.md +1 -0
- package/.agy/agents/workflow-planner.md +2 -0
- package/.agy/skills/domain-add/SKILL.md +68 -0
- package/.agy/skills/maestro/SKILL.md +7 -6
- package/.agy/skills/maestro-amend/SKILL.md +0 -2
- package/.agy/skills/maestro-analyze/SKILL.md +9 -0
- package/.agy/skills/maestro-brainstorm/SKILL.md +10 -1
- package/.agy/skills/maestro-collab/SKILL.md +14 -1
- package/.agy/skills/maestro-help/SKILL.md +1 -1
- package/.agy/skills/maestro-help/index/catalog.json +0 -1
- package/.agy/skills/maestro-help/phases/01-parse-intent.md +1 -1
- package/.agy/skills/maestro-next/SKILL.md +15 -4
- package/.agy/skills/maestro-overlay/SKILL.md +4 -3
- package/.agy/skills/maestro-plan/SKILL.md +15 -4
- package/.agy/skills/maestro-ralph/SKILL.md +135 -31
- package/.agy/skills/maestro-ralph-execute/SKILL.md +51 -10
- package/.agy/skills/maestro-tools-register/SKILL.md +0 -6
- package/.agy/skills/maestro-ui-codify/SKILL.md +0 -2
- package/.agy/skills/manage-kg-extractors/SKILL.md +0 -2
- package/.agy/skills/quality-test/SKILL.md +25 -1
- package/.agy/skills/spec-load/SKILL.md +0 -1
- package/.agy/skills/spec-setup/SKILL.md +0 -1
- package/.agy/skills/team-lifecycle-v4/roles/analyst/role.md +13 -7
- package/.agy/skills/team-quality-assurance/roles/scout/role.md +15 -11
- package/.agy/skills/team-tech-debt/roles/scanner/role.md +1 -1
- package/.agy/skills/team-ultra-analyze/roles/explorer/role.md +23 -16
- package/.claude/agents/cli-explore-agent.md +71 -68
- package/.claude/agents/workflow-analyzer.md +1 -0
- package/.claude/agents/workflow-collab-planner.md +1 -0
- package/.claude/agents/workflow-debugger.md +1 -0
- package/.claude/agents/workflow-executor.md +1 -0
- package/.claude/agents/workflow-planner.md +2 -0
- package/.claude/commands/domain-add.md +69 -0
- package/.claude/commands/maestro-amend.md +0 -2
- package/.claude/commands/maestro-analyze.md +9 -0
- package/.claude/commands/maestro-brainstorm.md +10 -1
- package/.claude/commands/maestro-collab.md +14 -1
- package/.claude/commands/maestro-next.md +15 -4
- package/.claude/commands/maestro-overlay.md +4 -3
- package/.claude/commands/maestro-plan.md +15 -4
- package/.claude/commands/maestro-ralph-execute.md +51 -10
- package/.claude/commands/maestro-ralph.md +135 -31
- package/.claude/commands/maestro-tools-register.md +0 -6
- package/.claude/commands/maestro-ui-codify.md +0 -2
- package/.claude/commands/maestro.md +7 -6
- package/.claude/commands/manage-kg-extractors.md +0 -2
- package/.claude/commands/quality-test.md +25 -1
- package/.claude/commands/spec-load.md +0 -1
- package/.claude/commands/spec-setup.md +0 -1
- package/.claude/skills/maestro-help/SKILL.md +1 -1
- package/.claude/skills/maestro-help/index/catalog.json +0 -1
- package/.claude/skills/maestro-help/phases/01-parse-intent.md +1 -1
- package/.claude/skills/team-lifecycle-v4/roles/analyst/role.md +13 -7
- package/.claude/skills/team-quality-assurance/roles/scout/role.md +15 -11
- package/.claude/skills/team-tech-debt/roles/scanner/role.md +1 -1
- package/.claude/skills/team-ultra-analyze/roles/explorer/role.md +23 -16
- package/.codex/skills/domain-add/SKILL.md +79 -0
- package/.codex/skills/domain-discover/SKILL.md +43 -0
- package/.codex/skills/domain-list/SKILL.md +38 -0
- package/.codex/skills/learn-follow/SKILL.md +0 -3
- package/.codex/skills/learn-investigate/SKILL.md +0 -3
- package/.codex/skills/learn-retro/SKILL.md +0 -2
- package/.codex/skills/maestro/SKILL.md +34 -13
- package/.codex/skills/maestro-amend/SKILL.md +0 -2
- package/.codex/skills/maestro-analyze/SKILL.md +36 -6
- package/.codex/skills/maestro-blueprint/SKILL.md +0 -4
- package/.codex/skills/maestro-brainstorm/SKILL.md +46 -6
- package/.codex/skills/maestro-collab/SKILL.md +14 -1
- package/.codex/skills/maestro-companion/SKILL.md +0 -2
- package/.codex/skills/maestro-execute/SKILL.md +25 -3
- package/.codex/skills/maestro-fork/SKILL.md +0 -2
- package/.codex/skills/maestro-grill/SKILL.md +9 -1
- package/.codex/skills/maestro-next/SKILL.md +12 -5
- package/.codex/skills/maestro-plan/SKILL.md +43 -5
- package/.codex/skills/maestro-ralph/SKILL.md +10 -3
- package/.codex/skills/maestro-ralph-execute/SKILL.md +51 -10
- package/.codex/skills/maestro-roadmap/SKILL.md +30 -3
- package/.codex/skills/manage-wiki/SKILL.md +0 -2
- package/.codex/skills/odyssey-debug/SKILL.md +0 -2
- package/.codex/skills/odyssey-improve/SKILL.md +0 -6
- package/.codex/skills/odyssey-review-test-fix/SKILL.md +0 -3
- package/.codex/skills/odyssey-ui/SKILL.md +0 -3
- package/.codex/skills/quality-review/SKILL.md +9 -0
- package/.codex/skills/spec-setup/SKILL.md +0 -2
- package/.codex/skills/team-coordinate/SKILL.md +0 -3
- package/.codex/skills/team-lifecycle-v4/instructions/agent-instruction.md +0 -2
- package/README.md +28 -5
- package/README.zh-CN.md +28 -5
- package/chains/_intent-map.json +36 -0
- package/chains/blueprint-driven.json +49 -0
- package/chains/grill-driven.json +51 -0
- package/dashboard/dist-server/dashboard/src/server/agents/adapter-factory.js +4 -0
- package/dashboard/dist-server/dashboard/src/server/agents/adapter-factory.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/api-explore-adapter.d.ts +6 -0
- package/dashboard/dist-server/dashboard/src/server/agents/api-explore-adapter.js +36 -0
- package/dashboard/dist-server/dashboard/src/server/agents/api-explore-adapter.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.d.ts +82 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js +444 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/search.d.ts +47 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js +426 -19
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +16 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.d.ts +11 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +492 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +18 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +192 -9
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +42 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +1 -1
- package/dashboard/dist-server/src/commands/hooks.d.ts +3 -0
- package/dashboard/dist-server/src/commands/hooks.js +60 -9
- package/dashboard/dist-server/src/commands/hooks.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/code/code-extractor.js +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge/domain-extractor.js +4 -2
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge/domain-extractor.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.js +6 -1
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/orchestrator.js +2 -6
- package/dashboard/dist-server/src/graph/kg/extraction/orchestrator.js.map +1 -1
- package/dashboard/dist-server/src/hooks/session-context.js +37 -1
- package/dashboard/dist-server/src/hooks/session-context.js.map +1 -1
- package/dashboard/dist-server/src/search/daemon.d.ts +42 -0
- package/dashboard/dist-server/src/search/daemon.js +180 -0
- package/dashboard/dist-server/src/search/daemon.js.map +1 -0
- package/dashboard/dist-server/src/tools/domain-loader.d.ts +4 -1
- package/dashboard/dist-server/src/tools/domain-loader.js +56 -25
- package/dashboard/dist-server/src/tools/domain-loader.js.map +1 -1
- package/dashboard/dist-server/src/tools/domain-schema.d.ts +1 -1
- package/dashboard/dist-server/src/tools/domain-schema.js +1 -1
- package/dist/shared/agent-types.d.ts +1 -1
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/agents/api-explore/agent-loop.d.ts +14 -0
- package/dist/src/agents/api-explore/agent-loop.d.ts.map +1 -0
- package/dist/src/agents/api-explore/agent-loop.js +86 -0
- package/dist/src/agents/api-explore/agent-loop.js.map +1 -0
- package/dist/src/agents/api-explore/config.d.ts +42 -0
- package/dist/src/agents/api-explore/config.d.ts.map +1 -0
- package/dist/src/agents/api-explore/config.js +99 -0
- package/dist/src/agents/api-explore/config.js.map +1 -0
- package/dist/src/agents/api-explore/index.d.ts +2 -0
- package/dist/src/agents/api-explore/index.d.ts.map +1 -0
- package/dist/src/agents/api-explore/index.js +102 -0
- package/dist/src/agents/api-explore/index.js.map +1 -0
- package/dist/src/agents/api-explore/llm.d.ts +28 -0
- package/dist/src/agents/api-explore/llm.d.ts.map +1 -0
- package/dist/src/agents/api-explore/llm.js +48 -0
- package/dist/src/agents/api-explore/llm.js.map +1 -0
- package/dist/src/agents/api-explore/prompt-parser.d.ts +23 -0
- package/dist/src/agents/api-explore/prompt-parser.d.ts.map +1 -0
- package/dist/src/agents/api-explore/prompt-parser.js +73 -0
- package/dist/src/agents/api-explore/prompt-parser.js.map +1 -0
- package/dist/src/agents/api-explore/runner.d.ts +65 -0
- package/dist/src/agents/api-explore/runner.d.ts.map +1 -0
- package/dist/src/agents/api-explore/runner.js +196 -0
- package/dist/src/agents/api-explore/runner.js.map +1 -0
- package/dist/src/agents/api-explore/session.d.ts +23 -0
- package/dist/src/agents/api-explore/session.d.ts.map +1 -0
- package/dist/src/agents/api-explore/session.js +57 -0
- package/dist/src/agents/api-explore/session.js.map +1 -0
- package/dist/src/agents/api-explore/stream-json-emitter.d.ts +10 -0
- package/dist/src/agents/api-explore/stream-json-emitter.d.ts.map +1 -0
- package/dist/src/agents/api-explore/stream-json-emitter.js +19 -0
- package/dist/src/agents/api-explore/stream-json-emitter.js.map +1 -0
- package/dist/src/agents/api-explore/system-prompt.d.ts +2 -0
- package/dist/src/agents/api-explore/system-prompt.d.ts.map +1 -0
- package/dist/src/agents/api-explore/system-prompt.js +31 -0
- package/dist/src/agents/api-explore/system-prompt.js.map +1 -0
- package/dist/src/agents/api-explore/tools.d.ts +11 -0
- package/dist/src/agents/api-explore/tools.d.ts.map +1 -0
- package/dist/src/agents/api-explore/tools.js +168 -0
- package/dist/src/agents/api-explore/tools.js.map +1 -0
- package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +3 -0
- package/dist/src/agents/cli-agent-runner.js.map +1 -1
- package/dist/src/cli.js +4 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/domain.d.ts.map +1 -1
- package/dist/src/commands/domain.js +5 -4
- package/dist/src/commands/domain.js.map +1 -1
- package/dist/src/commands/explore.d.ts +7 -0
- package/dist/src/commands/explore.d.ts.map +1 -0
- package/dist/src/commands/explore.js +201 -0
- package/dist/src/commands/explore.js.map +1 -0
- package/dist/src/commands/hooks.d.ts +3 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +60 -9
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +42 -9
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/search.d.ts +26 -4
- package/dist/src/commands/search.d.ts.map +1 -1
- package/dist/src/commands/search.js +359 -93
- package/dist/src/commands/search.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +37 -21
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/workspace.d.ts.map +1 -1
- package/dist/src/commands/workspace.js +9 -3
- package/dist/src/commands/workspace.js.map +1 -1
- package/dist/src/config/cli-tools-defaults.json +2 -1
- package/dist/src/core/install-executor.d.ts.map +1 -1
- package/dist/src/core/install-executor.js +6 -3
- package/dist/src/core/install-executor.js.map +1 -1
- package/dist/src/graph/kg/extraction/code/code-extractor.js +1 -1
- package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
- package/dist/src/graph/kg/extraction/knowledge/domain-extractor.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js +4 -2
- package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js.map +1 -1
- package/dist/src/graph/kg/extraction/knowledge-extractor-registry.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/knowledge-extractor-registry.js +6 -1
- package/dist/src/graph/kg/extraction/knowledge-extractor-registry.js.map +1 -1
- package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/orchestrator.js +2 -6
- package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -1
- package/dist/src/graph/kg/surface/cli.d.ts.map +1 -1
- package/dist/src/graph/kg/surface/cli.js +5 -2
- package/dist/src/graph/kg/surface/cli.js.map +1 -1
- package/dist/src/hooks/session-context.d.ts.map +1 -1
- package/dist/src/hooks/session-context.js +37 -1
- package/dist/src/hooks/session-context.js.map +1 -1
- package/dist/src/ralph/cmd-next.d.ts.map +1 -1
- package/dist/src/ralph/cmd-next.js +66 -4
- package/dist/src/ralph/cmd-next.js.map +1 -1
- package/dist/src/ralph/status-schema.d.ts +1 -0
- package/dist/src/ralph/status-schema.d.ts.map +1 -1
- package/dist/src/search/daemon.d.ts +43 -0
- package/dist/src/search/daemon.d.ts.map +1 -0
- package/dist/src/search/daemon.js +180 -0
- package/dist/src/search/daemon.js.map +1 -0
- package/dist/src/tools/__tests__/domain-search-debug.js +3 -1
- package/dist/src/tools/__tests__/domain-search-debug.js.map +1 -1
- package/dist/src/tools/domain-loader.d.ts +4 -1
- package/dist/src/tools/domain-loader.d.ts.map +1 -1
- package/dist/src/tools/domain-loader.js +56 -25
- package/dist/src/tools/domain-loader.js.map +1 -1
- package/dist/src/tools/domain-schema.d.ts +1 -1
- package/dist/src/tools/domain-schema.js +1 -1
- package/dist/src/utils/update-notices.js +12 -0
- package/dist/src/utils/update-notices.js.map +1 -1
- package/package.json +5 -1
- package/shared/agent-types.ts +1 -1
- package/templates/search-tools.md +22 -6
- package/workflows/agy-instructions.md +0 -4
- package/workflows/analyze.md +2 -2
- package/workflows/boundary-grill.md +50 -0
- package/workflows/brainstorm.md +6 -5
- package/workflows/claude-instructions.md +29 -2
- package/workflows/codebase-rebuild.md +0 -1
- package/workflows/codex-instructions.md +97 -14
- package/workflows/command-authoring.md +1 -1
- package/workflows/debug.md +0 -4
- package/workflows/domain-add.md +115 -0
- package/workflows/execute.md +7 -0
- package/workflows/explore-usage.md +128 -0
- package/workflows/finish-work.md +2 -6
- package/workflows/fork.md +0 -4
- package/workflows/grill.md +14 -1
- package/workflows/harvest.md +0 -3
- package/workflows/impeccable/audit.md +0 -2
- package/workflows/impeccable/codex.md +0 -4
- package/workflows/init.md +9 -0
- package/workflows/interview-mechanics.md +3 -2
- package/workflows/issue-analyze.md +0 -5
- package/workflows/issue-gaps-analyze.codex.md +0 -6
- package/workflows/knowledge-audit.md +0 -4
- package/workflows/learn.md +0 -6
- package/workflows/maestro.codex.md +0 -4
- package/workflows/maestro.md +31 -18
- package/workflows/merge.md +0 -4
- package/workflows/milestone-complete.md +0 -4
- package/workflows/overlays.md +0 -10
- package/workflows/plan.md +2 -3
- package/workflows/roadmap-common.md +0 -4
- package/workflows/tdd.md +0 -2
- package/workflows/tools-spec.md +1 -7
- package/workflows/ui-codify-extract.md +0 -2
- package/workflows/ui-codify-package.md +0 -2
- package/.agents/skills/maestro-ralph-beta/SKILL.md +0 -882
- package/.agy/skills/maestro-ralph-beta/SKILL.md +0 -878
- package/.claude/commands/maestro-ralph-beta.md +0 -880
- package/.codex/skills/maestro-ralph-beta/SKILL.md +0 -883
|
@@ -22,7 +22,8 @@ $ARGUMENTS — intent text, flags, or keywords.
|
|
|
22
22
|
|
|
23
23
|
**Parse:**
|
|
24
24
|
```
|
|
25
|
-
-y flag → auto_confirm = true
|
|
25
|
+
-y flag → auto_confirm = true # 唯一来源:用户显式传入;ralph 不内部推断(invariant 14)
|
|
26
|
+
--roadmap → wants_roadmap = true (强制多发布 roadmap 路径;roadmap 默认 opt-in)
|
|
26
27
|
.md/.txt path → input_doc (supplementary context only, NEVER substitutes lifecycle stages)
|
|
27
28
|
Remaining → intent
|
|
28
29
|
```
|
|
@@ -47,6 +48,9 @@ Remaining → intent
|
|
|
47
48
|
11. **task_decomposition 驱动 steps[] 动态生长** — `post-goal-audit` 按 unmet 子目标插入 scoped mini-loop;字段可选/累加,既有字段不删不改
|
|
48
49
|
12. **Invariant violation = BLOCK** — 违反上述任一 invariant 即阻断当前操作。不得以 "效率" 或 "意图明确" 为由绕过。特别是 invariant 1(ralph 不执行 step)和 invariant 6(completion_confirmed 由 CLI 写入)不可隐性违反。
|
|
49
50
|
13. **Delegate fallback 必须标记** — A_DELEGATE_EVALUATE 解析 verdict 失败时 fallback 为 "fix",但 MUST 在 decisions.ndjson 记录 `"parse_failed": true, "confidence_score": 0`,后续 step 继承 LOW CONFIDENCE 标记。
|
|
51
|
+
14. **auto_confirm 单一来源** — `auto_confirm` 仅由用户 `-y` 标志设定;ralph 不得内部推断。`session.auto_mode` 仅反映用户输入。
|
|
52
|
+
15. **分解契约单一所有者** — `boundary_contract` / `task_decomposition` 由 session 创建者拥有(`source=="ralph"` → `decomposition_owner="ralph"`;`source=="maestro"` → `"maestro"`)。contract 已存在时,后续 S_DECOMPOSE MUST 跳过 AskUserQuestion,仅做 shape 校验 + 缺省补齐;goal-audit 只更新 `task_decomposition[*].status/completion_confirmed/completed_at`,禁止改 `goal/done_when/boundary`。
|
|
53
|
+
16. **控制权优先级(范式治理)** — FSM 独占 session 生命周期 + step 排序 + retry/fix/escalate + cross-step decision 节点;Pipeline 命令只拥有自身 artifact GATE(GATE 失败 → `maestro ralph complete <idx> --status BLOCKED|NEEDS_RETRY`,自身 GATE 全过 → DONE);Router 命令不得出现在 FSM step 内。
|
|
50
54
|
</invariants>
|
|
51
55
|
|
|
52
56
|
<state_machine>
|
|
@@ -56,7 +60,7 @@ S_PARSE_ROUTE — 解析参数、路由入口 PERSIST: —
|
|
|
56
60
|
S_STATUS — 显示 session 进度 PERSIST: —
|
|
57
61
|
S_CONTINUE — 恢复执行 PERSIST: —
|
|
58
62
|
S_RESOLVE_PHASE — 解析 phase + phase_is_new + D-007 milestone PERSIST: session.phase, session.phase_is_new, session.milestone
|
|
59
|
-
S_INFER — 基于已解析 phase 推断 lifecycle_position PERSIST: session.lifecycle_position
|
|
63
|
+
S_INFER — 基于已解析 phase 推断 lifecycle_position PERSIST: session.lifecycle_position, session.wants_roadmap
|
|
60
64
|
S_RESOLVE_SCOPE — 读 macro analyze conclusions.scope_verdict PERSIST: session.scope_verdict, session.analyze_macro_id
|
|
61
65
|
S_QUALITY_MODE — 决定质量管线模式 PERSIST: session.quality_mode
|
|
62
66
|
S_PLANNING_MODE — 决定统一/独立规划模式 PERSIST: session.planning_mode
|
|
@@ -128,7 +132,7 @@ S_DISPATCH:
|
|
|
128
132
|
→ END DO: Skill({ skill: "maestro-ralph-execute" })
|
|
129
133
|
|
|
130
134
|
S_DECISION_EVAL: (decision 节点 == `step.decision` 非空,下述 gate 名取自该字段)
|
|
131
|
-
→ S_APPLY_VERDICT WHEN: quality-gate (post-execute, post-business-test, post-review, post-test)
|
|
135
|
+
→ S_APPLY_VERDICT WHEN: quality-gate (post-execute, post-business-test, post-review, post-test, post-frontend-verify)
|
|
132
136
|
DO: A_DELEGATE_EVALUATE
|
|
133
137
|
→ S_APPLY_VERDICT WHEN: goal-gate (post-goal-audit)
|
|
134
138
|
DO: A_GOAL_AUDIT_EVALUATE
|
|
@@ -136,11 +140,14 @@ S_DECISION_EVAL: (decision 节点 == `step.decision` 非空,下述 gate 名取
|
|
|
136
140
|
DO: A_SCOPE_EVALUATE
|
|
137
141
|
→ S_APPLY_VERDICT WHEN: structural (post-milestone, post-debug-escalate)
|
|
138
142
|
DO: A_STRUCTURAL_EVALUATE
|
|
143
|
+
→ S_APPLY_VERDICT WHEN: reground-gate (post-reground)
|
|
144
|
+
DO: A_REGROUND_EVALUATE
|
|
139
145
|
|
|
140
146
|
S_APPLY_VERDICT:
|
|
141
147
|
→ S_DISPATCH WHEN: verdict == "proceed" DO: A_APPLY_PROCEED
|
|
142
|
-
→ S_DISPATCH WHEN: post-goal-audit +
|
|
143
|
-
→ S_DISPATCH WHEN: post-goal-audit +
|
|
148
|
+
→ S_DISPATCH WHEN: post-goal-audit + has_unmet DO: A_APPLY_GOAL_FIX
|
|
149
|
+
→ S_DISPATCH WHEN: post-goal-audit + all_met + INTENT_ALIGNED=true DO: A_APPLY_GOAL_DONE
|
|
150
|
+
→ END WHEN: post-goal-audit + all_met + INTENT_ALIGNED=false DO: A_REGROUND_HALT(尾部漂移熔断)
|
|
144
151
|
→ S_DISPATCH WHEN: post-analyze-scope DO: A_APPLY_SCOPE_VERDICT
|
|
145
152
|
→ S_DISPATCH WHEN: verdict == "fix" DO: A_APPLY_FIX
|
|
146
153
|
→ S_DISPATCH WHEN: verdict == "escalate" DO: A_APPLY_ESCALATE
|
|
@@ -148,11 +155,15 @@ S_APPLY_VERDICT:
|
|
|
148
155
|
→ END WHEN: post-milestone + standard + no next milestone DO: mark completed
|
|
149
156
|
→ END WHEN: post-milestone + adhoc DO: mark completed (adhoc self-contained)
|
|
150
157
|
→ END WHEN: post-debug-escalate (always STOP) DO: A_PAUSE_ESCALATE
|
|
158
|
+
→ END WHEN: post-reground + drifted + confidence_score >= 60 DO: A_REGROUND_HALT
|
|
159
|
+
→ S_DISPATCH WHEN: post-reground + aligned DO: A_APPLY_PROCEED
|
|
160
|
+
→ S_DISPATCH WHEN: post-reground + drifted + confidence_score < 60 DO: A_APPLY_PROCEED (标 LOW CONFIDENCE)
|
|
151
161
|
GUARD: retry_count >= max_retries → force escalate
|
|
152
162
|
GUARD: confidence_score < 60 AND proceed → override to fix
|
|
153
163
|
GUARD: confidence_score > 95 AND fix AND retry > 0 → suggest proceed
|
|
154
164
|
GUARD: auto_confirm → skip user prompt, apply adjusted verdict
|
|
155
165
|
GUARD: not auto_confirm → AskUserQuestion with override options
|
|
166
|
+
GUARD: post-reground + drifted + confidence_score >= 60 → A_REGROUND_HALT(漂移熔断为安全门,auto_confirm 不跳过)
|
|
156
167
|
|
|
157
168
|
S_FALLBACK:
|
|
158
169
|
→ S_PARSE_ROUTE WHEN: user provides input DO: AskUserQuestion
|
|
@@ -210,11 +221,19 @@ resolve_milestone(phase_number):
|
|
|
210
221
|
|
|
211
222
|
| Pattern | Position |
|
|
212
223
|
|---------|----------|
|
|
213
|
-
| 压力测试 / 拷问 / 验证假设 / grill / stress-test | `grill`(**auto_confirm=true
|
|
224
|
+
| 压力测试 / 拷问 / 验证假设 / grill / stress-test | `grill`(**auto_confirm=true 时透传 `-y`,grill 以 Auto mode 代码代答,不跳过**) |
|
|
214
225
|
| brainstorm / 头脑风暴 / 探索 / ideate / 设计思路 | `brainstorm` |
|
|
215
226
|
| blueprint / 规格 / 正式文档 / spec-generate / 7-phase | `blueprint` |
|
|
216
227
|
| broad/medium intent 无数字 phase (重构/全面/重写/迁移/新功能 X) | `analyze-macro` |
|
|
217
228
|
|
|
229
|
+
**Roadmap opt-in detection** (设 `session.wants_roadmap`,缺省 `false`):
|
|
230
|
+
```
|
|
231
|
+
wants_roadmap = (--roadmap flag)
|
|
232
|
+
OR (intent 含多发布信号: 多发布|多版本|分阶段交付|按里程碑发布|v1.*v2|multi-release|roadmap)
|
|
233
|
+
OR (.workflow/roadmap.md 已存在) ← 向后兼容:既有 roadmap 项目行为不变
|
|
234
|
+
```
|
|
235
|
+
默认 `false` → large 项目走单一多波次 `plan --from analyze`,不引入 roadmap 横切层;roadmap 仅多发布场景 opt-in。
|
|
236
|
+
|
|
218
237
|
**Bootstrap detection:**
|
|
219
238
|
|
|
220
239
|
| Condition | Position |
|
|
@@ -229,7 +248,7 @@ resolve_milestone(phase_number):
|
|
|
229
248
|
| Condition | Position |
|
|
230
249
|
|-----------|----------|
|
|
231
250
|
| `phase_is_new == true` (新 phase) | `analyze` |
|
|
232
|
-
| no milestones AND no roadmap.md AND has analyze macro artifact | `roadmap` |
|
|
251
|
+
| no milestones AND no roadmap.md AND has analyze macro artifact | `roadmap` if `wants_roadmap` else `plan` (--from analyze) |
|
|
233
252
|
| no milestones AND no roadmap.md AND no analyze artifact | `analyze-macro` |
|
|
234
253
|
| `phase == null` (grill/brainstorm/blueprint/init/roadmap/analyze-macro override 已定) | n/a |
|
|
235
254
|
| phase 已存在 + 无任何 artifact | `analyze` |
|
|
@@ -250,9 +269,9 @@ resolve_milestone(phase_number):
|
|
|
250
269
|
|
|
251
270
|
| scope_verdict | 链路 |
|
|
252
271
|
|---------------|------|
|
|
253
|
-
| `large` | analyze-macro → roadmap → analyze → plan → execute →
|
|
254
|
-
| `medium` / `small` | analyze-macro → plan --from analyze:{ANL_ID} → execute → ...(跳过 roadmap + analyze-phase
|
|
255
|
-
| `unknown` | 默认走
|
|
272
|
+
| `large` + `wants_roadmap` | analyze-macro → roadmap → analyze → plan → execute → ...(多发布 opt-in) |
|
|
273
|
+
| `large`(默认)/ `medium` / `small` | analyze-macro → plan --from analyze:{ANL_ID} → execute → ...(跳过 roadmap + analyze-phase;单一多波次计划) |
|
|
274
|
+
| `unknown` | 默认走 standalone(plan --from analyze)路径,post-analyze-scope 决策节点再纠正 |
|
|
256
275
|
|
|
257
276
|
**Refine from post-execute results:**
|
|
258
277
|
|
|
@@ -264,7 +283,8 @@ resolve_milestone(phase_number):
|
|
|
264
283
|
| passed==true, no review.json | `business-test` |
|
|
265
284
|
| review.json: verdict=="BLOCK" | `review-failed` |
|
|
266
285
|
| review.json: verdict!="BLOCK" | `test` |
|
|
267
|
-
| uat.md: all passed | `milestone-audit` |
|
|
286
|
+
| uat.md: all passed + `session.milestone` 存在 | `milestone-audit` |
|
|
287
|
+
| uat.md: all passed + `session.milestone=null` (standalone) | 标记 session completed(无 milestone 可审计) |
|
|
268
288
|
| uat.md: has failures | `test-failed` |
|
|
269
289
|
|
|
270
290
|
### A_DETERMINE_QUALITY_MODE
|
|
@@ -309,7 +329,9 @@ options:
|
|
|
309
329
|
|
|
310
330
|
### A_DECOMPOSE_TASKS
|
|
311
331
|
|
|
312
|
-
Runs once before chain build; additive to status.json.
|
|
332
|
+
Runs once before chain build; additive to status.json. 设 `session.decomposition_owner = "ralph"`。
|
|
333
|
+
|
|
334
|
+
**0. Ownership guard** (invariant 15): 若 `session.boundary_contract` 或 `session.task_decomposition` 已非空(上游 maestro 已写入,`decomposition_owner == "maestro"`)→ MUST 跳过下述提问,仅做 shape 校验 + 缺省字段补齐,直接进入步骤 6。
|
|
313
335
|
|
|
314
336
|
**1. Classify intent breadth:**
|
|
315
337
|
|
|
@@ -335,10 +357,10 @@ narrow → derive defaults from intent + codebase, skip questions.
|
|
|
335
357
|
```json
|
|
336
358
|
{ "id": "G1", "goal": "<deliverable>", "boundary": "<in/out note>",
|
|
337
359
|
"done_when": "<objectively checkable condition>",
|
|
338
|
-
"evidence": "verification.json|review.json|uat.md|<test path>",
|
|
360
|
+
"evidence": "verification.json|review.json|uat.md|e2e-results.json|<test path>",
|
|
339
361
|
"lifecycle": ["analyze","execute"], "status": "pending" }
|
|
340
362
|
```
|
|
341
|
-
`done_when` 必须客观可验证,且引用 ralph 已产出的 artifact;`lifecycle` 字段映射到产出 evidence 的生命周期 stage
|
|
363
|
+
`done_when` 必须客观可验证,且引用 ralph 已产出的 artifact;`lifecycle` 字段映射到产出 evidence 的生命周期 stage。涉及前端可用性的子目标,`done_when` 应引用 `e2e-results.json`(frontend-verify 门产出),不得仅以后端 API/build 证据判定可用。
|
|
342
364
|
|
|
343
365
|
**5. Persist** (additive): `boundary_contract`, `execution_criteria`, `task_decomposition`。每个 sub-goal 含 `status: "pending"` + `completion_confirmed: false`。
|
|
344
366
|
|
|
@@ -346,11 +368,11 @@ narrow → derive defaults from intent + codebase, skip questions.
|
|
|
346
368
|
|
|
347
369
|
### A_BUILD_STEPS
|
|
348
370
|
|
|
349
|
-
Generate steps from `session.lifecycle_position` to `milestone-complete
|
|
371
|
+
Generate steps from `session.lifecycle_position` to `milestone-complete`(`session.milestone` 存在时)或最后一个质量门(standalone 时)。
|
|
350
372
|
|
|
351
373
|
| Stage | Skill (independent) | Skill (unified) | Decision after | quality_mode |
|
|
352
374
|
|-------|---------------------|-----------------|----------------|--------------|
|
|
353
|
-
| grill | `maestro-grill "{intent}"` | *(same)* | — | all (**
|
|
375
|
+
| grill | `maestro-grill "{intent}"` | *(same)* | — | all (**auto_confirm → 透传 `-y` 到 grill args,不删除 stage**) |
|
|
354
376
|
| brainstorm | `maestro-brainstorm "{intent}" --from grill:{grill_id}` *(if grill ran)* / `maestro-brainstorm "{intent}"` *(otherwise)* | *(same)* | — | all |
|
|
355
377
|
| blueprint | `maestro-blueprint "{intent}"` | *(same)* | — | all |
|
|
356
378
|
| init | `maestro-init` | *(same)* | — | all |
|
|
@@ -364,6 +386,7 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
|
|
|
364
386
|
| review | `quality-review {phase}` | `quality-review` | `post-review` | all (quick: append `--tier quick`) |
|
|
365
387
|
| test-gen | `quality-auto-test {phase}` | `quality-auto-test` | — | full / standard if coverage<80% |
|
|
366
388
|
| test | `quality-test {phase}` | `quality-test` | `post-test` | full, standard |
|
|
389
|
+
| frontend-verify | `quality-test {phase} --frontend-verify` | `quality-test --frontend-verify` | `post-frontend-verify` | all(**仅当 phase 交付 UI 时插入**:检出 `dashboard/` 或 UI 关键词 `landing\|page\|dashboard\|frontend\|UI\|component\|界面`) |
|
|
367
390
|
| milestone-audit | `maestro-milestone-audit` | *(same)* | — | all |
|
|
368
391
|
| goal-audit | *(decision-only)* | *(same)* | `post-goal-audit` | all (only if decomposed) |
|
|
369
392
|
| milestone-complete | `maestro-milestone-complete` | *(same)* | `post-milestone` | all |
|
|
@@ -377,10 +400,12 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
|
|
|
377
400
|
1. **起点**:从 `session.lifecycle_position` 开始
|
|
378
401
|
2. **跳过已完成**:跳过当前 milestone+phase 下已有 completed artifact 的 stage(按 `session.phase` 过滤);unified 按 milestone 过滤
|
|
379
402
|
3. **quality_mode 过滤**:按 `session.quality_mode` 排除不匹配 stage
|
|
380
|
-
3.5. **grill auto_confirm
|
|
403
|
+
3.5. **grill auto_confirm 透传**:`auto_confirm == true` 时为 `grill` step args 追加 `-y`(grill 自身 Auto mode 用代码代答,见 maestro-grill `<context>` Mode selection);保留 `grill` stage 与 brainstorm 的 `--from grill:*`(grill 仍产出 grill-report/terminology/context-package)
|
|
404
|
+
3.6. **frontend-verify UI 门控**:仅当当前 phase 交付前端(检出 `dashboard/` 目录,或 phase 目标/计划含 UI 关键词 `landing|page|dashboard|frontend|UI|component|界面`)时保留 `frontend-verify` stage + `post-frontend-verify` decision;纯后端 phase 删除该 stage
|
|
381
405
|
4. **决策节点**:每个 Decision after 非空的 stage 之后插入 `{ decision: "<gate>", retry_count: 0, max_retries: 2, command_scope: null, command_path: null }`
|
|
382
406
|
5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(execute/review/test)之后、`milestone-complete` 之前插入 `decision:post-goal-audit`
|
|
383
|
-
|
|
407
|
+
5.5. **re-grounding 插入**:当 `task_decomposition` 存在 **且** 链路含 ≥3 个执行 step(不含 decision 节点)时,从第 3 个执行 step 起每隔 3 个执行 step 后插入 `{ decision: "post-reground", retry_count: 0, max_retries: 0, command_scope: null, command_path: null }`。不在最后一个执行 step 之后插入(由 goal-audit 覆盖);不与已有 quality-gate decision 节点相邻(顺延到下一个 3-step 边界);fix-loop 动态插入的 step(index > 原始 chain 长度)不纳入计数
|
|
408
|
+
6. **终点硬约束**:`session.milestone` 存在时 chain 以 `milestone-complete` 结尾;`session.milestone=null`(standalone)时跳过 `milestone-audit` + `milestone-complete` stage,chain 以最后一个质量门 stage 结尾
|
|
384
409
|
7. **goal_ref 传播**:`task_decomposition` 存在时,每个 step 按 `step.stage ∈ g.lifecycle` 匹配 `step.goal_ref = g.id`(多匹配取字典序最小);decision 节点不打 goal_ref
|
|
385
410
|
8. **占位符**:independent 保留 `{phase}` `{intent}`;unified 不带 `{phase}`
|
|
386
411
|
9. **command_path 解析**(每个执行 step,decision 节点跳过):
|
|
@@ -392,13 +417,16 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
|
|
|
392
417
|
- **不在 build 阶段读取 .md 内容**;`<required_reading>` / `<deferred_reading>` 解析与加载由 `maestro ralph next` CLI 在执行期完成
|
|
393
418
|
10. **每个 step 初始化** `completion_confirmed: false`, `completion_status: null`, `completion_evidence: null`, `deferred_reads: []`, `load: null`(由 `ralph next` 写入)
|
|
394
419
|
11. **scope_verdict gating**(仅当 chain 起点 = `analyze-macro`):
|
|
395
|
-
- `scope_verdict
|
|
396
|
-
- `
|
|
397
|
-
- `scope_verdict == unknown` → 默认
|
|
420
|
+
- `scope_verdict == large` **且** `wants_roadmap` → 保留 `roadmap` + `analyze`;`plan` 选 phase 列(`{phase}`)
|
|
421
|
+
- 其余(`medium` / `small`,或 `large` 但非 `wants_roadmap`)→ 跳过 `roadmap` + `analyze` 两 stage;`plan` 选 standalone 列(`--from analyze:{analyze_macro_id}`),不带 `{phase}`
|
|
422
|
+
- `scope_verdict == unknown` → 默认 standalone(非 roadmap)路径;由 `post-analyze-scope` 决策节点在 macro analyze 完成后纠正(A_APPLY_SCOPE_VERDICT)
|
|
398
423
|
12. **--from 自动注入**:
|
|
399
424
|
- `analyze_macro_id` 存在且当前 step 是 `roadmap` → args 改为 `--from analyze:{analyze_macro_id}`
|
|
400
|
-
- `analyze_macro_id`
|
|
425
|
+
- `analyze_macro_id` 存在且当前 `plan` step 处于 standalone 列(即非 wants_roadmap 路径:`medium`/`small`,或 `large` 但非 `wants_roadmap`)→ args 改为 `--from analyze:{analyze_macro_id}`
|
|
401
426
|
- `blueprint_id` 存在 → 当前 step 是 `plan` → args 改为 `--from blueprint:{blueprint_id}`(优先级低于 phase 数字参数)
|
|
427
|
+
- **phase-level deferred chaining**(独立模式,step 含 `{phase}` 占位符):build 阶段前序 artifact 尚未产出,由 A_RESOLVE_ARGS(ralph-execute)运行时从 state.json 查找同 phase+milestone 最新 completed artifact 注入:
|
|
428
|
+
- `plan` step → `--from analyze:{phase_analyze_id}`,写 `source_artifact_ref`
|
|
429
|
+
- `execute` step → `--dir {plan_path}`(现有逻辑),写 `source_artifact_ref = "plan:{id}"`
|
|
402
430
|
- 写入 `step.source_artifact_ref` 以便审计
|
|
403
431
|
13. **D-007 Milestone-ref 标注**:每个含 `{phase}` 占位符的 step → `step.milestone_id = session.milestone`(由 A_RESOLVE_PHASE 反查得出),禁止读 `current_milestone`
|
|
404
432
|
14. **动态插入步骤**(A_APPLY_*)同样应用规则 7-13
|
|
@@ -421,6 +449,7 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
|
|
|
421
449
|
| post-business-test | .tests/auto-test/report.json |
|
|
422
450
|
| post-review | review.json |
|
|
423
451
|
| post-test | uat.md, .tests/test-results.json |
|
|
452
|
+
| post-frontend-verify | e2e-results.json |
|
|
424
453
|
4. Check artifact for confidence section → include as signal
|
|
425
454
|
5. Execute delegate (run_in_background, STOP, wait for callback):
|
|
426
455
|
```
|
|
@@ -479,14 +508,18 @@ Runs only when `task_decomposition` present.
|
|
|
479
508
|
1. 读取 status.json.task_decomposition 中 status!=done 的子目标
|
|
480
509
|
2. 打开 evidence 产物,对照 done_when 严格判定
|
|
481
510
|
3. 输出 met / unmet,unmet 给出 gap + target_phase
|
|
511
|
+
4. 对照 intent + definition_of_done 判定累积产出是否仍服务原始意图(意图保真检查)
|
|
482
512
|
CONTEXT:
|
|
483
|
-
status.json
|
|
484
|
-
|
|
513
|
+
status.json = {session_dir}/status.json
|
|
514
|
+
intent = {session.intent}
|
|
515
|
+
definition_of_done = {boundary_contract.definition_of_done}
|
|
516
|
+
evidence = {evidence artifacts}
|
|
485
517
|
execution_criteria = {execution_criteria}
|
|
486
518
|
boundary_contract = {boundary_contract}
|
|
487
519
|
EXPECTED:
|
|
488
520
|
---VERDICT---
|
|
489
521
|
STATUS=all_met|has_unmet
|
|
522
|
+
INTENT_ALIGNED=true|false
|
|
490
523
|
UNMET=[{id:G2,gap:'...',target_phase:execute}, ...]
|
|
491
524
|
CONFIDENCE_SCORE=0-100
|
|
492
525
|
---END---
|
|
@@ -499,9 +532,64 @@ Runs only when `task_decomposition` present.
|
|
|
499
532
|
```
|
|
500
533
|
4. On callback: 对每个 met 子目标,set `task_decomposition[i].status="done"` + `completion_confirmed=true` + `completed_at=now`
|
|
501
534
|
5. Append `{session_dir}/decisions.ndjson` with `"type": "goal-gate"`, `unmet_count`, `unmet_ids`
|
|
502
|
-
6. Verdict:
|
|
535
|
+
6. Verdict routing:
|
|
536
|
+
- `all_met` + `INTENT_ALIGNED=true` → A_APPLY_GOAL_DONE
|
|
537
|
+
- `all_met` + `INTENT_ALIGNED=false` → A_REGROUND_HALT(尾部漂移熔断,auto_confirm 不跳过)
|
|
538
|
+
- `has_unmet` → A_APPLY_GOAL_FIX
|
|
503
539
|
GUARD: retry_count >= max_retries AND still unmet → A_APPLY_ESCALATE
|
|
504
540
|
|
|
541
|
+
### A_REGROUND_EVALUATE
|
|
542
|
+
|
|
543
|
+
仅当 `task_decomposition` 存在。周期触发(build rule 5.5)。
|
|
544
|
+
|
|
545
|
+
1. 从 status.json 读取:`session.intent`、`session.boundary_contract`、`steps[]` 中 `status=="completed"` 的 step + `completion_evidence`、`task_decomposition` 中已 done 子目标的 `goal` + `done_when`
|
|
546
|
+
2. Delegate read-only audit (run_in_background, STOP, wait):
|
|
547
|
+
```
|
|
548
|
+
maestro delegate "PURPOSE: 意图保真检查 — 对照 intent 验证累积执行是否漂移
|
|
549
|
+
TASK:
|
|
550
|
+
1. 读取 intent + boundary_contract.definition_of_done
|
|
551
|
+
2. 读取已完成 steps 的 completion_evidence + 已 done 子目标 done_when
|
|
552
|
+
3. 判定累积产出是否仍服务 intent;是否有 step 产出超出 in_scope 或触碰 out_of_scope
|
|
553
|
+
4. 输出 aligned / drifted,drifted 给出 drift_description + corrective_action
|
|
554
|
+
CONTEXT:
|
|
555
|
+
intent = {session.intent}
|
|
556
|
+
definition_of_done = {boundary_contract.definition_of_done}
|
|
557
|
+
in_scope = {boundary_contract.in_scope}
|
|
558
|
+
out_of_scope = {boundary_contract.out_of_scope}
|
|
559
|
+
completed_steps = [{index, skill, stage, completion_evidence}, ...]
|
|
560
|
+
done_goals = [{id, goal, done_when}, ...]
|
|
561
|
+
EXPECTED:
|
|
562
|
+
---VERDICT---
|
|
563
|
+
STATUS=aligned|drifted
|
|
564
|
+
DRIFT_DESCRIPTION=<空或具体描述>
|
|
565
|
+
CORRECTIVE_ACTION=<空或建议>
|
|
566
|
+
CONFIDENCE_SCORE=0-100
|
|
567
|
+
---END---
|
|
568
|
+
CONSTRAINTS:
|
|
569
|
+
- 只评估,不修改文件
|
|
570
|
+
- aligned 阈值:≥80% 已完成产出直接服务 intent
|
|
571
|
+
- 单个 step 触碰 out_of_scope → 直接判 drifted"
|
|
572
|
+
--role analyze --mode analysis
|
|
573
|
+
```
|
|
574
|
+
3. On callback: parse verdict
|
|
575
|
+
4. Append `{session_dir}/decisions.ndjson`:`{ "id": "DEC-{ts}", "type": "reground-gate", "source": "ralph", "node_id": "post-reground", "verdict": "{aligned|drifted}", "confidence_score": {N}, "drift_description": "...", "corrective_action": "..." }`
|
|
576
|
+
5. Verdict routing:`aligned` → A_APPLY_PROCEED;`drifted` + `confidence_score >= 60` → A_REGROUND_HALT;`drifted` + `confidence_score < 60` → A_APPLY_PROCEED(标 LOW CONFIDENCE)
|
|
577
|
+
|
|
578
|
+
### A_REGROUND_HALT
|
|
579
|
+
|
|
580
|
+
漂移熔断(安全门,auto_confirm 不跳过)。
|
|
581
|
+
|
|
582
|
+
1. Set `session.status = "paused"`,write status.json
|
|
583
|
+
2. Display:
|
|
584
|
+
```
|
|
585
|
+
⚠️ Re-grounding 检测失败 — 执行已偏离 intent。
|
|
586
|
+
Intent: {session.intent}
|
|
587
|
+
Drift: {drift_description}
|
|
588
|
+
建议回归: {corrective_action}
|
|
589
|
+
选项:1) /maestro-ralph continue 忽略漂移继续 2) 手动修正后 continue 3) /maestro-ralph status 查看后决定
|
|
590
|
+
```
|
|
591
|
+
3. GUARD: auto_confirm 对本动作无效——漂移熔断不可自动跳过
|
|
592
|
+
|
|
505
593
|
### A_APPLY_PROCEED
|
|
506
594
|
|
|
507
595
|
1. Mark decision completed, write status.json
|
|
@@ -522,14 +610,14 @@ Runs only when `task_decomposition` present.
|
|
|
522
610
|
|
|
523
611
|
由 `post-analyze-scope` 触发,依据 `session.scope_verdict` 重塑下游链路。
|
|
524
612
|
|
|
525
|
-
1. 读 `session.scope_verdict`
|
|
526
|
-
2. 路径 A(`large
|
|
527
|
-
3. 路径 B(`medium` / `small`):
|
|
613
|
+
1. 读 `session.scope_verdict` + `session.wants_roadmap`
|
|
614
|
+
2. 路径 A(`large` 且 `wants_roadmap`):保持当前链(roadmap+analyze);为后续 `roadmap` step 注入 `--from analyze:{analyze_macro_id}`;为后续 `plan` step 选 phase 列;继续推进
|
|
615
|
+
3. 路径 B(`medium` / `small`,或 `large` 但非 `wants_roadmap`):
|
|
528
616
|
- 删除 `goal-audit` 之前所有未完成的 `roadmap` + `analyze` (phase) step
|
|
529
617
|
- 把下一个未完成的 `plan` step 改为 `maestro-plan --from analyze:{analyze_macro_id}`,去掉 `{phase}`,`source_artifact_ref = analyze:{analyze_macro_id}`
|
|
530
618
|
- 后续 `execute` 等沿用同一 standalone scope(不带 `{phase}`,由 plan 写出的 task 列表驱动)
|
|
531
619
|
4. 路径 C(`unknown`):
|
|
532
|
-
- 非 auto_confirm → AskUserQuestion 二选一(
|
|
620
|
+
- 非 auto_confirm → AskUserQuestion 二选一(roadmap 多发布 / 单一计划);auto_confirm → 默认路径 B(单一计划,不引入 roadmap)
|
|
533
621
|
5. Reindex steps,标 decision completed,write status.json
|
|
534
622
|
6. Display: ◆ Scope verdict: {verdict} → {kept|collapsed to standalone via analyze:{ANL_ID}}
|
|
535
623
|
|
|
@@ -576,9 +664,12 @@ Runs only when `task_decomposition` present.
|
|
|
576
664
|
"phase": null, "phase_is_new": false,
|
|
577
665
|
"milestone": "", // D-007 反查结果,禁止读 current_milestone
|
|
578
666
|
"auto_mode": false,
|
|
667
|
+
"decomposition_owner": "ralph", // 分解契约所有者(invariant 15);缺省按 source 推断
|
|
668
|
+
|
|
579
669
|
"quality_mode": "standard", // "full" | "standard" | "quick"
|
|
580
670
|
"planning_mode": "independent", // "unified" | "independent"
|
|
581
671
|
"scope_verdict": null, // "large" | "medium" | "small" | "unknown" | null
|
|
672
|
+
"wants_roadmap": false, // roadmap opt-in:--roadmap | 多发布 intent | roadmap.md 已存在
|
|
582
673
|
"analyze_macro_id": null, // "ANL-xxx" 来自最新 macro analyze
|
|
583
674
|
"blueprint_id": null, // "BLP-xxx" 若存在
|
|
584
675
|
"cli_tool": "claude", "passed_gates": [],
|
|
@@ -670,6 +761,15 @@ quality-test {phase}
|
|
|
670
761
|
decision:post-test {retry+1}
|
|
671
762
|
```
|
|
672
763
|
|
|
764
|
+
**post-frontend-verify:** (UI 写端点未接线/不可用时)
|
|
765
|
+
```
|
|
766
|
+
quality-debug --from-frontend-verify "{gap_summary}"
|
|
767
|
+
maestro-plan --gaps {phase}
|
|
768
|
+
maestro-execute {phase}
|
|
769
|
+
quality-test {phase} --frontend-verify
|
|
770
|
+
decision:post-frontend-verify {retry+1}
|
|
771
|
+
```
|
|
772
|
+
|
|
673
773
|
**post-goal-audit:** (per unmet sub-goal group)
|
|
674
774
|
```
|
|
675
775
|
# for each unmet sub-goal G{n}, scoped to target_phase:
|
|
@@ -716,14 +816,15 @@ decision:post-goal-audit {retry+1}
|
|
|
716
816
|
- [ ] D-007 反查:phase 数字 → `session.milestone`,禁止读 current_milestone;写入 step.milestone_id
|
|
717
817
|
- [ ] phase_is_new=true → lifecycle_position 强制 `analyze`
|
|
718
818
|
- [ ] Intent overrides 识别 grill / brainstorm / blueprint / analyze-macro
|
|
719
|
-
- [ ] auto_confirm=true 时 grill stage
|
|
819
|
+
- [ ] auto_confirm=true 时 grill step args 追加 `-y`(grill 以 Auto mode 执行,stage 不跳过,产出 grill-report/terminology/context-package)
|
|
720
820
|
- [ ] A_RESOLVE_SCOPE_VERDICT 读 macro analyze conclusions.scope_verdict,写入 session.scope_verdict + analyze_macro_id
|
|
721
|
-
- [ ] 链路起点 = analyze-macro 时:large→roadmap+analyze+plan(phase)
|
|
821
|
+
- [ ] 链路起点 = analyze-macro 时:large+wants_roadmap→roadmap+analyze+plan(phase);其余(含 large 默认/medium/small)→直跳 plan --from analyze:{ANL_ID}(跳过 roadmap+analyze)
|
|
722
822
|
- [ ] post-analyze-scope decision 节点在 macro analyze 之后插入;A_SCOPE_EVALUATE/A_APPLY_SCOPE_VERDICT 重塑链路
|
|
723
823
|
- [ ] plan step args 支持三路径:`{phase}` / `--from analyze:{ANL_ID}` / `--from blueprint:{BLP_ID}`,写入 step.source_artifact_ref
|
|
724
824
|
- [ ] roadmap step args 自动注入 `--from analyze:{analyze_macro_id}`(若存在)
|
|
725
825
|
- [ ] artifact 过滤按 session.phase;unified 按 milestone
|
|
726
826
|
- [ ] quality_mode 由 A_DETERMINE_QUALITY_MODE 决定,过滤 build steps
|
|
827
|
+
- [ ] frontend-verify stage 仅在 phase 交付 UI 时插入(test 后、milestone-audit 前);post-frontend-verify 走 quality-gate 评估,evidence=e2e-results.json
|
|
727
828
|
- [ ] Decomposition: broad intent ≤3 question clarify;narrow auto-derive
|
|
728
829
|
- [ ] status.json 唯一真源:boundary_contract + execution_criteria + task_decomposition;无外部清单
|
|
729
830
|
- [ ] 执行 step 含 `command_scope` + `command_path`(通过 `maestro ralph skills --platform claude --json --quiet` 预校验,project 覆盖 global);decision step 通过 `step.decision` 字段标识
|
|
@@ -737,5 +838,8 @@ decision:post-goal-audit {retry+1}
|
|
|
737
838
|
- [ ] Chain 必须以 `milestone-complete` 结尾
|
|
738
839
|
- [ ] Decision nodes 由 maestro delegate --role analyze 评估
|
|
739
840
|
- [ ] Ralph 不执行 step,只 evaluate;Skill("maestro-ralph-execute") handoff
|
|
841
|
+
- [ ] Phase-level deferred chaining:plan/execute step 的 `--from`/`--dir` 注入由 A_RESOLVE_ARGS(ralph-execute)运行时完成;build 阶段标记意图,不预知 artifact ID
|
|
842
|
+
- [ ] Phase-level plan step 运行时获得 `--from analyze:{phase_analyze_id}`(由 ralph-execute 从 state.json 查找注入)
|
|
843
|
+
- [ ] Phase-level execute step 运行时获得 `source_artifact_ref = "plan:{id}"`
|
|
740
844
|
|
|
741
845
|
</appendix>
|
|
@@ -68,12 +68,8 @@ Parse $ARGUMENTS to determine mode:
|
|
|
68
68
|
- Update frontmatter via: `maestro wiki update <id> --frontmatter '{"tool": true, "category": "<cat>", "summary": "<summary>"}'`
|
|
69
69
|
- Do NOT recreate the document — modify in place
|
|
70
70
|
|
|
71
|
-
**For all modes** — identify the usage timing: when should an agent or user invoke this tool? This becomes the first line of the entry description (see Step 5).
|
|
72
|
-
|
|
73
71
|
### Step 3: Determine Category
|
|
74
72
|
|
|
75
|
-
**Core principle**: `category` = **who consumes this tool** (which agent type discovers and uses it), not what the content is about.
|
|
76
|
-
|
|
77
73
|
| Category | Consumer Agent | Decision Question | Signal Words |
|
|
78
74
|
|---|---|---|---|
|
|
79
75
|
| `coding` | code-developer, workflow-executor | 开发者实现时需要这个流程吗? | build, deploy, integrate, configure, setup, migrate, api-contract |
|
|
@@ -87,8 +83,6 @@ Parse $ARGUMENTS to determine mode:
|
|
|
87
83
|
- API verification steps (how to test) → `category: test` (RCP-*, tool: true)
|
|
88
84
|
- Ask user when ambiguous: "This tool content serves both developers and testers. Split into separate documents?"
|
|
89
85
|
|
|
90
|
-
**Ambiguous cases**: Choose the **primary consumer** — the agent that would fail without this knowledge.
|
|
91
|
-
|
|
92
86
|
### Step 4: Decide Inline vs Ref
|
|
93
87
|
|
|
94
88
|
- Steps <10 and no code blocks → **inline mode**
|
|
@@ -43,8 +43,6 @@ Load project UI conventions before extracting design system:
|
|
|
43
43
|
maestro spec load --category ui
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
If specs not initialized, continue without — the workflow still produces valid output.
|
|
47
|
-
|
|
48
46
|
## 2. Execute Workflow
|
|
49
47
|
|
|
50
48
|
Route to `~/.maestro/workflows/ui-codify.md` and follow completely.
|
|
@@ -39,17 +39,18 @@ $ARGUMENTS — user intent text, or special keywords.
|
|
|
39
39
|
1. **All chains dispatch via maestro-ralph-execute** — maestro never executes steps directly
|
|
40
40
|
2. **Session before execution** — status.json created before any step runs
|
|
41
41
|
3. **Auto flag pass-through** — 仅当用户传入 `-y` 时透传 `-y` 到 skill args
|
|
42
|
-
4. **Decomposition contract
|
|
42
|
+
4. **Decomposition contract — maestro owns** — `source=="maestro"` 的 session 由 maestro 拥有分解契约(`decomposition_owner="maestro"`):S_DECOMPOSE 产出 additive block (`boundary_contract`, `execution_criteria`, `task_decomposition`),下游 ralph 只消费不覆盖(ralph A_DECOMPOSE_TASKS step 0 ownership guard 跳过二次提问)。Reference maestro-ralph `A_DECOMPOSE_TASKS`
|
|
43
43
|
5. **status.json 唯一真源** — 不生成 `goal-checklist.md` 或外部清单
|
|
44
44
|
6. **执行步骤统一通过 `maestro ralph next` 加载** — `command_scope`/`command_path` 由 `maestro ralph skills --platform claude --json --quiet` 预校验(project 覆盖 global,限定 `.claude/`);decision 节点不走 CLI,走 `Skill("maestro-ralph")` handoff
|
|
45
45
|
7. **Topology awareness** — chain catalog 含 grill / brainstorm / blueprint / analyze-macro / analyze / roadmap / plan(三路径) / execute / ...;scope_verdict 由 ralph 在 `post-analyze-scope` 决定
|
|
46
|
-
8. **Grill
|
|
46
|
+
8. **Grill `-y` 透传** — `-y` auto mode 透传 `-y` 到 grill args(grill 自身 Auto mode 用代码代答),不删除 grill stage;grill 仍产出 grill-report/terminology/context-package 供下游 brainstorm
|
|
47
47
|
9. **D-007 milestone 反查** — 数字 phase 的 `milestone_id` 由 `state.json.milestones[].phase_slugs` 反查
|
|
48
48
|
10. **每个 step 必须 `completion_confirmed: true`** — 由 `maestro ralph complete N --status DONE|DONE_WITH_CONCERNS` 写入
|
|
49
49
|
11. **schema** — `ralph_protocol_version: "1"` 标记 CLI-driven session;新增字段全部可选
|
|
50
50
|
12. **Invariant violation = BLOCK** — 违反上述任一 invariant 即阻断当前操作,不可绕过。特别是 invariant 1(dispatch via ralph-execute)和 invariant 2(session before execution)和 invariant 10(completion_confirmed 由 CLI 写入)为硬约束。
|
|
51
51
|
14. **禁止以上下文消耗为由中断执行** — harness 自动处理 context compression,以"上下文不足"或"避免 context overflow"为由中断属于 invariant violation
|
|
52
52
|
13. **Classification evidence** — S_CLASSIFY 的 chain 选择决策 MUST 记录到 status.json 的 `classification_rationale` 字段:匹配了哪个 pattern、排除了哪些备选、confidence level。无记录的分类不可进入 S_CREATE。
|
|
53
|
+
15. **控制权优先级(范式治理)** — FSM(maestro/maestro-ralph)独占 session 生命周期 + step 排序 + cross-step decision 节点;Pipeline(plan/execute/analyze)只拥有自身 artifact GATE,由 ralph dispatch 时 GATE 失败 → `complete BLOCKED|NEEDS_RETRY`、自身 GATE 全过 → DONE;Router(maestro-next)只单次推荐,不得出现在 FSM step 内。
|
|
53
54
|
</invariants>
|
|
54
55
|
|
|
55
56
|
<state_machine>
|
|
@@ -128,7 +129,7 @@ S_FALLBACK:
|
|
|
128
129
|
1. Read `~/.maestro/workflows/maestro.md` from deferred_reading
|
|
129
130
|
2. Match intent to task_type via chain catalog (semantic)
|
|
130
131
|
3. Select chain from chainMap,遵循拓扑约束:
|
|
131
|
-
- 压力测试/拷问/验证假设/grill/stress-test → `grill`(**-y
|
|
132
|
+
- 压力测试/拷问/验证假设/grill/stress-test → `grill`(**-y 模式透传 `-y` 到 grill,grill 以 Auto mode 执行,不跳过**)
|
|
132
133
|
- 头脑风暴/探索 → `brainstorm`
|
|
133
134
|
- 学习/阅读代码/跟读/follow → `Skill("learn-follow")`;调查/为什么/investigate → `Skill("learn-investigate")`;分解/模式/decompose → `Skill("learn-decompose")`;评审/挑战/second-opinion → `Skill("learn-second-opinion")`;回顾/retro → `Skill("quality-retrospective")`
|
|
134
135
|
- 正式规格/spec-generate/7-phase → `blueprint`
|
|
@@ -146,7 +147,7 @@ S_FALLBACK:
|
|
|
146
147
|
|
|
147
148
|
### A_DECOMPOSE_TASKS
|
|
148
149
|
|
|
149
|
-
|
|
150
|
+
设 `session.decomposition_owner = "maestro"`。下游 ralph 只消费不二次提问(invariant 4)。Condensed:
|
|
150
151
|
|
|
151
152
|
1. 分类意图广度。narrow / 单步 / `{status,init,quick}` 链跳过
|
|
152
153
|
2. broad/medium → `AskUserQuestion` ≤3 轮:Scope / Constraints / Definition of Done
|
|
@@ -175,7 +176,7 @@ S_FALLBACK:
|
|
|
175
176
|
"ralph_protocol_version": "1", "active_step_index": null,
|
|
176
177
|
"phase", "phase_is_new": false, "milestone": "",
|
|
177
178
|
"scope_verdict": null, "analyze_macro_id": null, "blueprint_id": null,
|
|
178
|
-
"auto_mode": false, "cli_tool": "claude",
|
|
179
|
+
"auto_mode": false, "decomposition_owner": "maestro", "cli_tool": "claude",
|
|
179
180
|
"context": { "scratch_dir": null, "plan_dir": null, "analysis_dir": null,
|
|
180
181
|
"brainstorm_dir": null, "blueprint_dir": null, "issue_id": null },
|
|
181
182
|
"steps": [{
|
|
@@ -220,7 +221,7 @@ S_FALLBACK:
|
|
|
220
221
|
|
|
221
222
|
- [ ] Intent classified with task_type, complexity, clarity_score
|
|
222
223
|
- [ ] Chain catalog 覆盖 grill / brainstorm / blueprint / analyze-macro / analyze / roadmap / plan(三路径) / execute / quality pipeline
|
|
223
|
-
- [ ] `-y`
|
|
224
|
+
- [ ] `-y` 模式透传 `-y` 到 grill(grill 以 Auto mode 代码代答执行,stage 不跳过)
|
|
224
225
|
- [ ] D-007: 数字 phase 步骤的 `milestone_id` 通过 `state.json.milestones[].phase_slugs` 反查
|
|
225
226
|
- [ ] macro analyze 后跟 `decision:post-analyze-scope`(由 ralph 评估 scope_verdict 决定下游链路)
|
|
226
227
|
- [ ] plan 支持 `{phase}` / `--from analyze:{ANL_ID}` / `--from blueprint:{BLP_ID}` 三路径;`source_artifact_ref` 写入 step
|
|
@@ -15,8 +15,6 @@ allowed-tools:
|
|
|
15
15
|
|
|
16
16
|
<purpose>
|
|
17
17
|
Analyze current repository's code patterns to auto-generate `.workflow/kg/extractors.yaml` — a declarative config that teaches MaestroGraph's codegraph extractor to recognize project-specific symbols beyond standard function/class/method declarations.
|
|
18
|
-
|
|
19
|
-
Detects: builder/factory API registrations, domain constant patterns, custom decorator conventions, framework-specific patterns, module-level constants.
|
|
20
18
|
</purpose>
|
|
21
19
|
|
|
22
20
|
<context>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: quality-test
|
|
3
3
|
description: Use when implementation needs user acceptance testing with interactive verification and gap closure
|
|
4
|
-
argument-hint: "[phase] [--smoke] [--auto-fix]"
|
|
4
|
+
argument-hint: "[phase] [--smoke] [--auto-fix] [--frontend-verify]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
@@ -27,6 +27,29 @@ Flags, artifact context resolution, and output directory format defined in workf
|
|
|
27
27
|
</context>
|
|
28
28
|
|
|
29
29
|
<execution>
|
|
30
|
+
**Mode select:** `--frontend-verify` → 走下方 **Frontend Verify Mode**(确定性浏览器 smoke,**不是**对话式 UAT);否则 Follow '~/.maestro/workflows/test.md' completely.
|
|
31
|
+
|
|
32
|
+
### Frontend Verify Mode (`--frontend-verify`)
|
|
33
|
+
|
|
34
|
+
1. **Resolve targets**: 读 phase 的 `plan.json` / `.task/TASK-*.json`,提取所有 `[UI-observable]` convergence.criteria(plan 阶段产出);缺失则枚举后端写端点(POST/PUT/PATCH/DELETE)作为待验证清单。
|
|
35
|
+
2. **Start app**: `next start`(或从 dashboard/package.json 解析的既有启动脚本);启动失败 → E003。
|
|
36
|
+
3. **Drive browser**: 用 chrome-devtools MCP(`mcp__claude_dms3-chrome-devtools__*`:navigate / click / fill / take_snapshot / list_network_requests)逐条执行每个 `[UI-observable]` 流程,断言:UI 入口存在且可触发 → 对应写请求返回 2xx → DOM 出现预期结果。
|
|
37
|
+
4. **Write evidence**: 产出 `e2e-results.json`(结构见下),逐条记 pass/fail + 证据(网络状态码、快照引用)。**确定性断言,禁止"无人应答=全过"**。
|
|
38
|
+
5. **Verdict**: 任一 `[UI-observable]` fail 或写端点无 UI 入口 → STATUS=NEEDS_RETRY(ralph 经 post-frontend-verify 触发 Fix-Loop);全过 → DONE。
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
// e2e-results.json
|
|
42
|
+
{ "phase": "{phase}", "app_url": "http://localhost:3000",
|
|
43
|
+
"checks": [ { "criterion": "[UI-observable] ...", "ui_entry": "<selector/route>",
|
|
44
|
+
"request": "POST /api/notes", "status": 201, "dom_assert": "list shows new item",
|
|
45
|
+
"passed": true } ],
|
|
46
|
+
"summary": { "total": 0, "passed": 0, "failed": 0 }, "verdict": "pass|fail" }
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Ralph-invoked 完成:`maestro ralph complete <idx> --status {STATUS} --evidence e2e-results.json`。
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
30
53
|
Follow '~/.maestro/workflows/test.md' completely.
|
|
31
54
|
|
|
32
55
|
### Phase Gates (MANDATORY, BLOCKING)
|
|
@@ -144,4 +167,5 @@ maestro ralph complete <idx> --status {STATUS} [--evidence {path}]
|
|
|
144
167
|
- [ ] Gaps updated with root_cause, fix_direction, affected_files
|
|
145
168
|
- [ ] Gap-fix loop triggered if --auto-fix (max 2 iterations)
|
|
146
169
|
- [ ] Next step routed (phase-transition if pass, verify if auto-fix success, debug --from-uat if issues, test-gen if low coverage)
|
|
170
|
+
- [ ] `--frontend-verify`: 每条 [UI-observable] criterion 经真实浏览器断言,产出 e2e-results.json;任一 fail → NEEDS_RETRY(不放行)
|
|
147
171
|
</success_criteria>
|
|
@@ -46,4 +46,3 @@ Follow '~/.maestro/workflows/specs-setup.md' completely.
|
|
|
46
46
|
- [ ] Workflow recipe knowhow created in `.workflow/knowhow/` for each detected operational workflow (test / debug / build / dev / lint). Each recipe matches the `recipe` schema in `~/.maestro/workflows/knowhow.md` Part B and contains at least one runnable command.
|
|
47
47
|
- [ ] Report displayed grouped by destination (specs / recipes / skipped / deferred), with `.proposed.md` files surfaced when an existing recipe slug was preserved.
|
|
48
48
|
</success_criteria>
|
|
49
|
-
</output>
|
|
@@ -68,7 +68,6 @@
|
|
|
68
68
|
|
|
69
69
|
{"name": "maestro-ralph", "command": "/maestro-ralph", "category": "ralph", "description": "Ralph 引擎 — 自适应生命周期决策节点管理", "source": "../../commands/maestro-ralph.md"},
|
|
70
70
|
{"name": "maestro-ralph-execute", "command": "/maestro-ralph-execute", "category": "ralph", "description": "Ralph 执行 — 运行自适应决策链", "source": "../../commands/maestro-ralph-execute.md"},
|
|
71
|
-
{"name": "maestro-ralph-beta", "command": "/maestro-ralph-beta", "category": "ralph", "description": "Ralph Beta — 自运行循环控制器,单 skill 完成 build/tick/decide", "source": "../../commands/maestro-ralph-beta.md"},
|
|
72
71
|
|
|
73
72
|
{"name": "maestro-impeccable", "command": "/maestro-impeccable", "category": "ui", "description": "UI 生产 — 设计系统生成 + impeccable 链式编排 + 质量门控", "source": "../../commands/maestro-impeccable.md"},
|
|
74
73
|
{"name": "maestro-ui-codify", "command": "/maestro-ui-codify", "category": "ui", "description": "UI 固化 — 将设计产出转化为知识资产", "source": "../../commands/maestro-ui-codify.md"},
|
|
@@ -61,7 +61,7 @@ const knownCommands = [
|
|
|
61
61
|
"maestro", "analyze", "plan", "execute", "init", "roadmap",
|
|
62
62
|
"brainstorm", "blueprint", "quick", "overlay", "amend", "fork", "merge", "collab",
|
|
63
63
|
"milestone-audit", "milestone-complete", "milestone-release",
|
|
64
|
-
"composer", "guard", "player", "ralph", "ralph-execute",
|
|
64
|
+
"composer", "guard", "player", "ralph", "ralph-execute",
|
|
65
65
|
"grill", "next", "swarm-workflow", "universal-workflow", "companion",
|
|
66
66
|
"impeccable", "ui-codify", "update",
|
|
67
67
|
"tools-register", "tools-execute",
|
|
@@ -50,15 +50,21 @@ Research and codebase exploration for context gathering.
|
|
|
50
50
|
| package.json / Cargo.toml / pyproject.toml / go.mod exists | Explore |
|
|
51
51
|
| No project files | Skip (codebase_context = null) |
|
|
52
52
|
|
|
53
|
-
When project detected:
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
When project detected — prefer `maestro explore` multi-prompt:
|
|
54
|
+
```bash
|
|
55
|
+
maestro explore \
|
|
56
|
+
"FIND: tech stack and framework detection
|
|
57
|
+
SCOPE: package.json, Cargo.toml, pyproject.toml, go.mod, src/
|
|
58
|
+
EXPECTED: tech_stack list with versions" \
|
|
59
|
+
"FIND: architecture patterns and conventions
|
|
60
|
+
SCOPE: src/
|
|
61
|
+
EXCLUDE: tests, node_modules
|
|
62
|
+
EXPECTED: patterns list with file:line evidence" \
|
|
63
|
+
--max-turns 3 --json
|
|
60
64
|
```
|
|
61
65
|
|
|
66
|
+
**Fallback**: `maestro delegate "PURPOSE: Explore codebase for context ..." --tool gemini --mode analysis`
|
|
67
|
+
|
|
62
68
|
### Tech Profile Scan
|
|
63
69
|
|
|
64
70
|
After codebase exploration, scan results for context-aware trigger signals (based on detected codebase characteristics):
|