maestro-flow 0.5.38 → 0.5.40
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/skills/odyssey-debug/SKILL.md +90 -269
- package/.agents/skills/odyssey-improve/SKILL.md +39 -240
- package/.agents/skills/odyssey-planex/SKILL.md +21 -105
- package/.agents/skills/odyssey-review-test-fix/SKILL.md +98 -318
- package/.agents/skills/odyssey-ui/SKILL.md +82 -265
- package/.agy/skills/odyssey-debug/SKILL.md +90 -269
- package/.agy/skills/odyssey-improve/SKILL.md +39 -240
- package/.agy/skills/odyssey-planex/SKILL.md +21 -105
- package/.agy/skills/odyssey-review-test-fix/SKILL.md +98 -318
- package/.agy/skills/odyssey-ui/SKILL.md +82 -265
- package/.claude/commands/odyssey-debug.md +90 -269
- package/.claude/commands/odyssey-improve.md +39 -240
- package/.claude/commands/odyssey-planex.md +21 -105
- package/.claude/commands/odyssey-review-test-fix.md +98 -318
- package/.claude/commands/odyssey-ui.md +82 -265
- package/.codex/agents/cli-explore-agent.toml +181 -0
- package/.codex/agents/cross-role-reviewer.toml +165 -0
- package/.codex/agents/impeccable-agent.toml +89 -0
- package/.codex/agents/role-design-author.toml +213 -0
- package/.codex/agents/team-worker.toml +4 -7
- package/.codex/agents/ui-design-agent.toml +260 -0
- package/.codex/agents/workflow-analyzer.toml +106 -0
- package/.codex/agents/workflow-codebase-mapper.toml +69 -0
- package/.codex/agents/workflow-collab-planner.toml +140 -0
- package/.codex/agents/workflow-debugger.toml +95 -0
- package/.codex/agents/workflow-executor.toml +124 -0
- package/.codex/agents/workflow-external-researcher.toml +80 -0
- package/.codex/agents/workflow-integration-checker.toml +76 -0
- package/.codex/agents/workflow-nyquist-auditor.toml +77 -0
- package/.codex/agents/workflow-phase-researcher.toml +76 -0
- package/.codex/agents/workflow-plan-checker.toml +93 -0
- package/.codex/agents/workflow-planner.toml +192 -0
- package/.codex/agents/workflow-project-researcher.toml +65 -0
- package/.codex/agents/workflow-research-synthesizer.toml +65 -0
- package/.codex/agents/workflow-reviewer.toml +75 -0
- package/.codex/agents/workflow-roadmapper.toml +75 -0
- package/.codex/agents/workflow-verifier.toml +113 -0
- package/.codex/skills/maestro/SKILL.md +1 -0
- package/.codex/skills/maestro-analyze/SKILL.md +33 -15
- package/.codex/skills/maestro-brainstorm/SKILL.md +13 -10
- package/.codex/skills/maestro-collab/SKILL.md +30 -75
- package/.codex/skills/maestro-execute/SKILL.md +19 -12
- package/.codex/skills/maestro-grill/SKILL.md +12 -11
- package/.codex/skills/maestro-next/SKILL.md +3 -3
- package/.codex/skills/maestro-overlay/SKILL.md +1 -1
- package/.codex/skills/maestro-plan/SKILL.md +17 -8
- package/.codex/skills/maestro-ralph/SKILL.md +3 -0
- package/.codex/skills/maestro-ralph-execute/SKILL.md +1 -0
- package/.codex/skills/maestro-roadmap/SKILL.md +14 -8
- package/.codex/skills/manage-learn/SKILL.md +1 -1
- package/.codex/skills/odyssey-debug/SKILL.md +185 -275
- package/.codex/skills/odyssey-improve/SKILL.md +216 -308
- package/.codex/skills/odyssey-planex/SKILL.md +317 -159
- package/.codex/skills/odyssey-review-test-fix/SKILL.md +137 -255
- package/.codex/skills/odyssey-ui/SKILL.md +183 -247
- package/.codex/skills/quality-review/SKILL.md +17 -10
- package/.codex/skills/team-lifecycle-v4/instructions/agent-instruction.md +6 -12
- package/.codex/skills/team-lifecycle-v4/roles/analyst/role.md +6 -14
- package/.codex/skills/team-lifecycle-v4/roles/executor/commands/implement.md +2 -6
- package/.codex/skills/team-lifecycle-v4/roles/planner/role.md +6 -14
- package/.codex/skills/team-lifecycle-v4/roles/writer/role.md +3 -7
- package/.codex/skills/team-quality-assurance/roles/scout/role.md +2 -5
- package/.codex/skills/team-review/roles/reviewer/role.md +2 -5
- package/.codex/skills/team-review/roles/scanner/role.md +2 -5
- package/.codex/skills/team-tech-debt/roles/executor/role.md +3 -7
- package/.codex/skills/team-tech-debt/roles/scanner/role.md +2 -5
- package/.codex/skills/team-tech-debt/roles/validator/role.md +3 -7
- package/.codex/skills/team-testing/roles/executor/role.md +3 -7
- package/.codex/skills/team-testing/roles/generator/role.md +3 -7
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.d.ts +23 -2
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js +242 -26
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +92 -29
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/src/commands/hooks.d.ts +2 -1
- package/dashboard/dist-server/src/commands/hooks.js +16 -9
- package/dashboard/dist-server/src/commands/hooks.js.map +1 -1
- package/dashboard/dist-server/src/commands/install-backend.js +19 -0
- package/dashboard/dist-server/src/commands/install-backend.js.map +1 -1
- package/dashboard/dist-server/src/core/manifest.d.ts +5 -0
- package/dashboard/dist-server/src/core/manifest.js.map +1 -1
- package/dashboard/dist-server/src/core/plugin-bridge.d.ts +59 -0
- package/dashboard/dist-server/src/core/plugin-bridge.js +355 -0
- package/dashboard/dist-server/src/core/plugin-bridge.js.map +1 -0
- package/dashboard/dist-server/src/hooks/kg-sync-hook.js +5 -0
- package/dashboard/dist-server/src/hooks/kg-sync-hook.js.map +1 -1
- package/dashboard/dist-server/src/hooks/session-context.js +276 -3
- package/dashboard/dist-server/src/hooks/session-context.js.map +1 -1
- package/dashboard/dist-server/src/search/daemon-client.d.ts +8 -3
- package/dashboard/dist-server/src/search/daemon-client.js +20 -0
- package/dashboard/dist-server/src/search/daemon-client.js.map +1 -1
- package/dist/src/cli.js +19 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/domain.d.ts.map +1 -1
- package/dist/src/commands/domain.js +12 -3
- package/dist/src/commands/domain.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +2 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +16 -9
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +19 -0
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +50 -3
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/plugin.d.ts +3 -0
- package/dist/src/commands/plugin.d.ts.map +1 -0
- package/dist/src/commands/plugin.js +137 -0
- package/dist/src/commands/plugin.js.map +1 -0
- package/dist/src/commands/search.d.ts.map +1 -1
- package/dist/src/commands/search.js +59 -6
- package/dist/src/commands/search.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +15 -0
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +23 -0
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/core/install-executor.d.ts +1 -1
- package/dist/src/core/install-executor.d.ts.map +1 -1
- package/dist/src/core/install-executor.js +27 -0
- package/dist/src/core/install-executor.js.map +1 -1
- package/dist/src/core/install-profile.d.ts +5 -0
- package/dist/src/core/install-profile.d.ts.map +1 -1
- package/dist/src/core/install-profile.js +8 -0
- package/dist/src/core/install-profile.js.map +1 -1
- package/dist/src/core/manifest.d.ts +5 -0
- package/dist/src/core/manifest.d.ts.map +1 -1
- package/dist/src/core/manifest.js.map +1 -1
- package/dist/src/core/plugin-bridge.d.ts +60 -0
- package/dist/src/core/plugin-bridge.d.ts.map +1 -0
- package/dist/src/core/plugin-bridge.js +355 -0
- package/dist/src/core/plugin-bridge.js.map +1 -0
- package/dist/src/hooks/kg-sync-hook.d.ts.map +1 -1
- package/dist/src/hooks/kg-sync-hook.js +5 -0
- package/dist/src/hooks/kg-sync-hook.js.map +1 -1
- package/dist/src/hooks/session-context.d.ts.map +1 -1
- package/dist/src/hooks/session-context.js +276 -3
- package/dist/src/hooks/session-context.js.map +1 -1
- package/dist/src/search/daemon-client.d.ts +8 -3
- package/dist/src/search/daemon-client.d.ts.map +1 -1
- package/dist/src/search/daemon-client.js +20 -0
- package/dist/src/search/daemon-client.js.map +1 -1
- package/dist/src/search/daemon.d.ts +3 -3
- package/dist/src/search/daemon.d.ts.map +1 -1
- package/dist/src/search/daemon.js +9 -3
- package/dist/src/search/daemon.js.map +1 -1
- package/dist/src/tui/install-ui/InstallFlow.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallFlow.js +43 -14
- package/dist/src/tui/install-ui/InstallFlow.js.map +1 -1
- package/dist/src/tui/install-ui/types.d.ts +2 -0
- package/dist/src/tui/install-ui/types.d.ts.map +1 -1
- package/dist/src/tui/install-ui/types.js.map +1 -1
- package/dist/src/tui/install-ui/useInstallFlowState.d.ts.map +1 -1
- package/dist/src/tui/install-ui/useInstallFlowState.js +13 -1
- package/dist/src/tui/install-ui/useInstallFlowState.js.map +1 -1
- package/dist/src/utils/update-notices.js +11 -0
- package/dist/src/utils/update-notices.js.map +1 -1
- package/package.json +1 -1
- package/workflows/odyssey-base.md +258 -0
- package/workflows/shell-exec-protocol.md +30 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: odyssey-debug
|
|
3
3
|
description: Long-running debug cycle — archaeology, diagnosis, fix, confirmation, generalization, discovery, and knowledge persistence
|
|
4
|
-
argument-hint: "<issue> [--skip-fix] [--skip-generalize] [--auto] [-y] [-c]"
|
|
4
|
+
argument-hint: "<issue> [--skip-fix] [--skip-generalize] [--auto] [-y] [-c] [--heartbeat]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
@@ -12,6 +12,8 @@ allowed-tools:
|
|
|
12
12
|
- Agent
|
|
13
13
|
- AskUserQuestion
|
|
14
14
|
---
|
|
15
|
+
<base>@~/.maestro/workflows/odyssey-base.md</base>
|
|
16
|
+
|
|
15
17
|
<purpose>
|
|
16
18
|
Closed-loop deep debugging: archaeology → explore → diagnose → fix & confirm → generalize → discover siblings → persist.
|
|
17
19
|
Treats every bug as a learning signal with exhaustive iteration until root cause confirmed or INCONCLUSIVE.
|
|
@@ -21,8 +23,8 @@ Treats every bug as a learning signal with exhaustive iteration until root cause
|
|
|
21
23
|
**范围内:** 单一 bug/issue 的完整闭环 — 考古 → 探索 → 诊断 → 修复 → 确认 → 泛化同类 → 沉淀
|
|
22
24
|
**范围外:** 新功能开发 → `/odyssey-planex` | 代码质量审查 → `/odyssey-review-test-fix` | UI 视觉优化 → `/odyssey-ui` | 架构重设计 → `/maestro-plan`
|
|
23
25
|
**探索自由度:** 边界内自由探索 — 可追踪任意调用链、分析任意历史、测试任意假设。泛化阶段可扫描全项目寻找同类问题。
|
|
24
|
-
**Zero-residual principle:** Every finding MUST have a concrete action (fix / issue / decision). "
|
|
25
|
-
**模板支持:** `--template <name>`
|
|
26
|
+
**Zero-residual principle:** Every finding MUST have a concrete action (fix / issue / decision). "Pre-existing issue" is not a valid skip reason.
|
|
27
|
+
**模板支持:** `--template <name>` 从预定义调查策略启动:
|
|
26
28
|
|
|
27
29
|
| Template | 调查策略 | 适用场景 |
|
|
28
30
|
|----------|---------|---------|
|
|
@@ -33,156 +35,74 @@ Treats every bug as a learning signal with exhaustive iteration until root cause
|
|
|
33
35
|
| `crash` | stack trace → null chain → error propagation | 崩溃/异常 |
|
|
34
36
|
</boundary>
|
|
35
37
|
|
|
36
|
-
<execution_discipline>
|
|
37
|
-
**三条铁律(所有阶段适用):**
|
|
38
|
-
|
|
39
|
-
1. **Phase auto-commit** — 每个阶段完成后**自动** `git commit`,无需用户确认
|
|
40
|
-
- 代码变更 + understanding.md → `git add` → `git commit -m "odyssey-debug({slug}): {phase} — {摘要}"`
|
|
41
|
-
- session.json / evidence.ndjson 为运行时状态,不纳入 commit
|
|
42
|
-
- 确保每个阶段的进展可回溯、可恢复
|
|
43
|
-
|
|
44
|
-
2. **Confident edits only, but must attempt** — only modify what you're confident about; record decisions only when genuinely requiring human judgment
|
|
45
|
-
- Confident → edit code directly, commit
|
|
46
|
-
- Needs decision → record `evidence.ndjson {"phase":"decision","status":"pending"}`, don't touch code
|
|
47
|
-
- No speculative changes
|
|
48
|
-
- ⚠️ **Decision gate** — ONLY these qualify as decisions (not fixes):
|
|
49
|
-
- Cross-module architectural tradeoffs requiring human direction
|
|
50
|
-
- Ambiguous business semantics where the fix could alter intended behavior
|
|
51
|
-
- Requires new dependency or breaking API change
|
|
52
|
-
- ❌ "Unsure how to fix", "Large scope", "Pre-existing issue" are NOT valid decision reasons — either fix it, or explain specifically why it's unfixable
|
|
53
|
-
|
|
54
|
-
3. **多 CLI 辅助** — 利用 `maestro delegate` 调用多个 CLI 工具交叉验证
|
|
55
|
-
- 关键判断用不同 `--role`(analyze / review / explore)获取多视角
|
|
56
|
-
- 修复前后各做一次 CLI review 确认
|
|
57
|
-
- 不同阶段可调用不同工具,综合多方意见再行动
|
|
58
|
-
|
|
59
|
-
4. **禁止以上下文消耗为由中断** — harness 自动处理 context compression,以"上下文不足"或"已执行 N 个阶段"为由中断属于纪律违反;必须完整走完状态机直到 S_RECORD → END
|
|
60
|
-
</execution_discipline>
|
|
61
|
-
|
|
62
38
|
<context>
|
|
63
39
|
$ARGUMENTS — issue description and optional flags.
|
|
64
40
|
|
|
65
|
-
**Flags:** `--skip-fix` analysis-only | `--skip-generalize` quick fix | `--template <name>` 预定义策略 | `--auto` no delegate confirmation | `-y` auto-confirm all decisions | `-c` resume last session
|
|
41
|
+
**Flags:** `--skip-fix` analysis-only | `--skip-generalize` quick fix | `--template <name>` 预定义策略 | `--auto` no delegate confirmation | `-y` auto-confirm all decisions | `-c` resume last session | `--heartbeat` enable /loop heartbeat
|
|
66
42
|
|
|
67
43
|
**Session**: `SESSION_DIR = .workflow/scratch/{YYYYMMDD}-debug-odyssey-{slug}/`
|
|
44
|
+
**Output**: `session.json` | `evidence.ndjson` | `explore.json` | `understanding.md`
|
|
68
45
|
|
|
69
|
-
**
|
|
70
|
-
```
|
|
71
|
-
SESSION_DIR/
|
|
72
|
-
├── session.json # state + confirmation + patterns + phase_goals
|
|
73
|
-
├── evidence.ndjson # append-only evidence trail (phase field distinguishes origin)
|
|
74
|
-
├── explore.json # structured CLI exploration snapshot
|
|
75
|
-
└── understanding.md # evolving narrative — 9 sections
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
**session.json schema:**
|
|
46
|
+
**session.json unique fields:**
|
|
79
47
|
```json
|
|
80
|
-
{
|
|
81
|
-
"
|
|
82
|
-
"flags": { "skip_fix": false, "skip_generalize": false, "auto": false, "auto_confirm": false },
|
|
83
|
-
"current_state": "S_INTAKE", "diagnosis_retries": 0,
|
|
84
|
-
"root_cause": null, "patterns": [], "confirmation": null,
|
|
85
|
-
"phase_goals": [], "phase_goals_all_done": false, "self_iteration_log": [],
|
|
86
|
-
"generalization_stats": null,
|
|
87
|
-
"cross_phase_loops": 0, "max_loops": 5,
|
|
88
|
-
"created_at": "", "updated_at": ""
|
|
89
|
-
}
|
|
48
|
+
{ "issue": "", "diagnosis_retries": 0, "root_cause": null, "confirmation": null,
|
|
49
|
+
"patterns": [], "generalization_stats": null, "cross_phase_loops": 0, "max_loops": 5 }
|
|
90
50
|
```
|
|
51
|
+
共有字段(`progress_metrics`, `directions_tried` 等)见 base。
|
|
91
52
|
|
|
92
|
-
**evidence.ndjson
|
|
93
|
-
|
|
94
|
-
{"ts":"","phase":"archaeology|explore|diagnosis|discovery|decision|self-iteration","type":"","source":"","content":"","note":""}
|
|
95
|
-
```
|
|
96
|
-
Phase-specific fields:
|
|
97
|
-
- `archaeology`: `sha`, `author`, `date`, `message`, `relevance` (high|medium|low)
|
|
53
|
+
**evidence.ndjson phases:** `archaeology|explore|diagnosis|discovery|decision|self-iteration`
|
|
54
|
+
- `archaeology`: `sha`, `author`, `date`, `message`, `relevance`
|
|
98
55
|
- `explore`: `category` (call_chain|recent_change|error_gap|similar_pattern), `detail`
|
|
99
56
|
- `diagnosis`: `hypothesis`, `result` (confirmed|disproved|inconclusive)
|
|
100
57
|
- `discovery`: `file`, `line`, `classification` (safe|risk|bug), `action` (fix|issue|decision|skip)
|
|
101
|
-
- `decision`: `question`, `options`, `context`, `status
|
|
58
|
+
- `decision`: `question`, `options`, `context`, `status`, `resolution`
|
|
102
59
|
- `self-iteration`: `stage`, `round`, `assessment`, `expansion`
|
|
103
60
|
|
|
104
|
-
**explore.json
|
|
105
|
-
```json
|
|
106
|
-
{
|
|
107
|
-
"call_chains": [{"entry":"","chain":["file:line"]}],
|
|
108
|
-
"recent_changes": [{"file":"","commits":[{"sha":"","message":"","date":""}]}],
|
|
109
|
-
"error_gaps": [{"file":"","line":0,"description":""}],
|
|
110
|
-
"similar_patterns": [{"file":"","line":0,"description":""}],
|
|
111
|
-
"cli_tool": "", "timestamp": ""
|
|
112
|
-
}
|
|
113
|
-
```
|
|
61
|
+
**explore.json**: `{call_chains, recent_changes, error_gaps, similar_patterns, cli_tool, timestamp}`
|
|
114
62
|
|
|
115
|
-
**phase_goals[]
|
|
63
|
+
**phase_goals[]:**
|
|
116
64
|
|
|
117
65
|
| ID | Goal | done_when | phase | skip_when |
|
|
118
66
|
|----|------|-----------|-------|-----------|
|
|
119
|
-
| G1 | Root cause identified |
|
|
120
|
-
| G2 | Explore context gathered | explore.json ≥1 category
|
|
67
|
+
| G1 | Root cause identified | phase=diagnosis result=confirmed | S_DIAGNOSE | — |
|
|
68
|
+
| G2 | Explore context gathered | explore.json ≥1 category | S_EXPLORE | — |
|
|
121
69
|
| G3 | Fix applied and confirmed | confirmation.overall == confirmed | S_CONFIRM | skip_fix |
|
|
122
70
|
| G4 | Pattern generalized | patterns[] ≥1 entry | S_GENERALIZE | skip_generalize |
|
|
123
71
|
| G5 | Discoveries triaged | all scan hits classified | S_DISCOVER | skip_generalize |
|
|
124
|
-
| G6 | Learnings persisted | spec entries created OR
|
|
125
|
-
|
|
126
|
-
When `flags[skip_when] == true` → auto set `status: "skipped"`, `completion_confirmed: true`.
|
|
72
|
+
| G6 | Learnings persisted | spec entries created OR none actionable | S_RECORD | — |
|
|
127
73
|
|
|
128
|
-
**understanding.md — 9 sections
|
|
129
|
-
1. Issue & Scope ← S_INTAKE | 2. Archaeology
|
|
130
|
-
4. Hypotheses
|
|
131
|
-
7. Generalization ← S_GENERALIZE | 8. Discoveries
|
|
74
|
+
**understanding.md — 9 sections:**
|
|
75
|
+
1. Issue & Scope ← S_INTAKE | 2. Archaeology ← S_ARCHAEOLOGY | 3. Exploration ← S_EXPLORE
|
|
76
|
+
4. Hypotheses ← S_DIAGNOSE | 5. Root Cause ← S_DIAGNOSE | 6. Fix & Confirmation ← S_FIX+S_CONFIRM
|
|
77
|
+
7. Generalization ← S_GENERALIZE | 8. Discoveries ← S_DISCOVER | 9. Learnings ← S_RECORD
|
|
132
78
|
|
|
133
79
|
### Pre-load(可选,缺失不阻塞)
|
|
134
80
|
|
|
135
|
-
|
|
|
136
|
-
|
|
137
|
-
|
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
|
148
|
-
|
|
149
|
-
|
|
|
150
|
-
| 非显而易见 workaround | 问题场景 + 解决方案 + 适用范围 | `/spec-add learning "..."` |
|
|
151
|
-
| 架构边界违反 | 违反描述 + 正确边界 + 检查方法 | `/spec-add arch "..."` |
|
|
152
|
-
| 可复用泛化 pattern | pattern 签名 + 风险说明 + fix 模板 | `/spec-add coding "..."` |
|
|
153
|
-
|
|
154
|
-
**两步模式:** 执行中写入产出文件(临时记录)→ 任务完成后用户通过 next_step_routing 沉淀为永久知识。执行过程中不调用外部 Skill。
|
|
81
|
+
| 命令 | 作用 |
|
|
82
|
+
|------|------|
|
|
83
|
+
| Read `.workflow/codebase/ARCHITECTURE.md` | 模块边界 |
|
|
84
|
+
| `maestro search "<issue keywords>" --json` | 先前调查(top 5) |
|
|
85
|
+
| `maestro load --type spec --category debug --keyword "<symptom>"` | 已知 issue/workaround |
|
|
86
|
+
| `Glob(".workflow/scratch/*-debug-odyssey-*")` | 相关 odyssey 会话 |
|
|
87
|
+
|
|
88
|
+
### Knowledge Persistence(S_RECORD → understanding.md §9)
|
|
89
|
+
|
|
90
|
+
| 分类 | 后续建议命令 |
|
|
91
|
+
|------|-------------|
|
|
92
|
+
| 反复根因模式 | `/spec-add debug "..."` |
|
|
93
|
+
| 非显而易见 workaround | `/spec-add learning "..."` |
|
|
94
|
+
| 架构边界违反 | `/spec-add arch "..."` |
|
|
95
|
+
| 可复用泛化 pattern | `/spec-add coding "..."` |
|
|
155
96
|
</context>
|
|
156
97
|
|
|
157
98
|
<self_iteration>
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
| 维度 | sufficient | insufficient |
|
|
161
|
-
|------|-----------|-------------|
|
|
162
|
-
| Coverage | 已知相关文件/模块均已分析 | 遗漏 grep/git log 可发现的目标 |
|
|
163
|
-
| Depth | ≥80% 发现有 file:line 级证据 | 多数仅泛泛描述 |
|
|
164
|
-
| Actionability | 每条结论有具体后续动作 | 仅"建议关注"类无操作性结论 |
|
|
165
|
-
|
|
166
|
-
**Rules:** phase complete → evaluate 3 dimensions → any insufficient → re-enter (max **3 rounds** per stage).
|
|
167
|
-
- Round 1: widen scope — more dirs, git log depth ×2, extra delegate angles
|
|
168
|
-
- Round 2: shift perspective — different CLI tool, reverse trace, manual code reading
|
|
169
|
-
- Round 3: combine both + targeted deep-dive on remaining gaps
|
|
170
|
-
|
|
171
|
-
**Exit:** all sufficient → advance | 3-round cap → log remaining gaps and continue. Record to `evidence.ndjson` + `session.json.self_iteration_log[]`.
|
|
99
|
+
适用阶段: S_ARCHAEOLOGY, S_EXPLORE, S_DIAGNOSE, S_GENERALIZE
|
|
172
100
|
</self_iteration>
|
|
173
101
|
|
|
174
102
|
<state_machine>
|
|
175
103
|
|
|
176
104
|
<states>
|
|
177
|
-
S_INTAKE
|
|
178
|
-
S_ARCHAEOLOGY — 考古:git history + CLI 分析 PERSIST: evidence.ndjson (archaeology) + understanding.md §2
|
|
179
|
-
S_EXPLORE — CLI 探索:调用链、错误间隙、相似模式 PERSIST: explore.json + evidence.ndjson (explore) + understanding.md §3
|
|
180
|
-
S_DIAGNOSE — 假设驱动根因分析 PERSIST: evidence.ndjson (diagnosis|decision) + understanding.md §4-5
|
|
181
|
-
S_FIX — 实现修复 (skip_fix 时跳过) PERSIST: code changes + evidence.ndjson (decision)
|
|
182
|
-
S_CONFIRM — 测试 + CLI review 双重确认 (skip_fix 时跳过) PERSIST: session.json.confirmation + understanding.md §6
|
|
183
|
-
S_GENERALIZE — 举一反三:提取 pattern,扫描相似代码 PERSIST: session.json.patterns + understanding.md §7
|
|
184
|
-
S_DISCOVER — 评估发现,创建 issue / 记录决策 PERSIST: evidence.ndjson (discovery|decision) + understanding.md §8
|
|
185
|
-
S_RECORD — 知识沉淀 + 目标审计 PERSIST: understanding.md §9 + spec entries
|
|
105
|
+
S_INTAKE → S_ARCHAEOLOGY → S_EXPLORE → S_DIAGNOSE → S_FIX → S_CONFIRM → S_GENERALIZE → S_DISCOVER → S_RECORD → END
|
|
186
106
|
</states>
|
|
187
107
|
|
|
188
108
|
<transitions>
|
|
@@ -197,7 +117,7 @@ S_DIAGNOSE → S_FIX : root cause confirmed, !skip_fix
|
|
|
197
117
|
S_DIAGNOSE → S_GENERALIZE : root cause confirmed, skip_fix, !skip_generalize
|
|
198
118
|
S_DIAGNOSE → S_RECORD : root cause confirmed, skip_fix, skip_generalize
|
|
199
119
|
S_DIAGNOSE → S_DIAGNOSE : all hypotheses failed, retries < 3 → A_ESCALATE_DIAGNOSIS
|
|
200
|
-
S_DIAGNOSE → S_RECORD :
|
|
120
|
+
S_DIAGNOSE → S_RECORD : retries >= 3 → mark INCONCLUSIVE
|
|
201
121
|
|
|
202
122
|
S_FIX → S_CONFIRM : fix implemented
|
|
203
123
|
S_CONFIRM → S_GENERALIZE : confirmed, !skip_generalize
|
|
@@ -207,10 +127,10 @@ S_CONFIRM → S_FIX : needs_rework
|
|
|
207
127
|
S_GENERALIZE → S_DISCOVER : similar code found
|
|
208
128
|
S_GENERALIZE → S_RECORD : no similar code
|
|
209
129
|
|
|
210
|
-
S_DISCOVER → S_DIAGNOSE :
|
|
211
|
-
S_DISCOVER → S_FIX :
|
|
212
|
-
S_DISCOVER → S_RECORD : triage complete
|
|
213
|
-
S_DISCOVER → S_RECORD : loops >= max_loops →
|
|
130
|
+
S_DISCOVER → S_DIAGNOSE : new bug worth investigating → cross_phase_loops++
|
|
131
|
+
S_DISCOVER → S_FIX : same-pattern bug, fix template applies, !skip_fix → cross_phase_loops++
|
|
132
|
+
S_DISCOVER → S_RECORD : triage complete, remaining_actionable == 0
|
|
133
|
+
S_DISCOVER → S_RECORD : loops >= max_loops → log each unfixed item with specific reason
|
|
214
134
|
|
|
215
135
|
S_RECORD → END : A_RECORD complete
|
|
216
136
|
</transitions>
|
|
@@ -218,12 +138,10 @@ S_RECORD → END : A_RECORD complete
|
|
|
218
138
|
<actions>
|
|
219
139
|
|
|
220
140
|
### A_INTAKE
|
|
221
|
-
1. Parse arguments
|
|
222
|
-
2.
|
|
223
|
-
3.
|
|
224
|
-
4.
|
|
225
|
-
5. Write `session.json` + `understanding.md` §1
|
|
226
|
-
6. Emit Goal Prompt (see Appendix)
|
|
141
|
+
1. Parse arguments, generate slug, create `SESSION_DIR`
|
|
142
|
+
2. Search: `maestro search "<keywords>"` + Glob prior sessions + ARCHITECTURE.md + Grep keywords
|
|
143
|
+
3. Derive `phase_goals[]` from flags (apply `skip_when`)
|
|
144
|
+
4. Write `session.json` + `understanding.md` §1, emit Goal Prompt
|
|
227
145
|
|
|
228
146
|
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): INTAKE — 目标解析与上下文加载"`
|
|
229
147
|
|
|
@@ -231,139 +149,68 @@ S_RECORD → END : A_RECORD complete
|
|
|
231
149
|
Find latest session via Glob → read `session.json` → display summary → jump to `current_state`.
|
|
232
150
|
|
|
233
151
|
### A_ARCHAEOLOGY
|
|
234
|
-
**
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
| Blame | Top 3 suspicious files: `git blame -L {region}` → critical paths |
|
|
240
|
-
|
|
241
|
-
Append findings to `evidence.ndjson` (phase: "archaeology").
|
|
242
|
-
|
|
243
|
-
**CLI-assisted change review:**
|
|
244
|
-
```bash
|
|
245
|
-
maestro delegate "PURPOSE: Review recent modifications related to: {issue}
|
|
246
|
-
TASK: Analyze intent behind changes | Identify risky modifications | Flag potential bug sources
|
|
247
|
-
MODE: analysis
|
|
248
|
-
CONTEXT: @{relevant_files} | Git log: {top_10_commits}
|
|
249
|
-
EXPECTED: JSON [{commit_sha, risk_level, analysis, could_cause_issue, explanation}]
|
|
250
|
-
CONSTRAINTS: Focus on behavioral changes, not formatting
|
|
251
|
-
" --role analyze --mode analysis
|
|
252
|
-
```
|
|
253
|
-
Execute with `run_in_background: true`, then wait for callback (do NOT halt the Odyssey flow). Append results to evidence.
|
|
152
|
+
**2 parallel Agents:** Timeline (`git log --oneline -20 -- {files}`) + Blame (top 3 suspicious files `git blame -L {region}`). Append evidence (phase: "archaeology").
|
|
153
|
+
|
|
154
|
+
**CLI change review** via `maestro delegate --role analyze --mode analysis` (`run_in_background: true`):
|
|
155
|
+
- PURPOSE: Review recent modifications related to {issue}
|
|
156
|
+
- EXPECTED: JSON [{commit_sha, risk_level, analysis, could_cause_issue, explanation}]
|
|
254
157
|
|
|
255
|
-
Update
|
|
158
|
+
Update §2.
|
|
256
159
|
|
|
257
160
|
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): ARCHAEOLOGY — git 考古分析"`
|
|
258
161
|
|
|
259
162
|
### A_EXPLORE
|
|
260
163
|
Skip if no enabled CLI tools (W006).
|
|
261
164
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
MODE: analysis
|
|
266
|
-
CONTEXT: @**/*
|
|
267
|
-
EXPECTED: JSON {call_chains, recent_changes, error_gaps, similar_patterns}
|
|
268
|
-
CONSTRAINTS: Max 20 entries/category | Symptom-related code paths
|
|
269
|
-
Symptoms: {issue} Archaeology hints: {suspicious_commits}
|
|
270
|
-
" --role explore --mode analysis
|
|
271
|
-
```
|
|
272
|
-
Execute with `run_in_background: true`, then wait for callback (do NOT halt the Odyssey flow).
|
|
165
|
+
`maestro delegate --role explore --mode analysis` (`run_in_background: true`):
|
|
166
|
+
- PURPOSE: Gather codebase evidence — call chains, recent changes, error gaps, similar patterns
|
|
167
|
+
- EXPECTED: JSON {call_chains, recent_changes, error_gaps, similar_patterns}
|
|
273
168
|
|
|
274
|
-
Parse → write `explore.json` +
|
|
169
|
+
Parse → write `explore.json` + evidence (phase: "explore"). Update §3. Mark G2 done.
|
|
275
170
|
|
|
276
171
|
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): EXPLORE — 代码探索完成"`
|
|
277
172
|
|
|
278
173
|
### A_DIAGNOSE
|
|
279
|
-
1.
|
|
280
|
-
2.
|
|
281
|
-
3.
|
|
282
|
-
4.
|
|
174
|
+
1. Form hypotheses from evidence, ranked [HIGH]/[MEDIUM]/[LOW] → §4
|
|
175
|
+
2. Test each: design test → execute → evidence (phase: "diagnosis")
|
|
176
|
+
3. Decision journal: ambiguity → evidence (phase: "decision"); Normal: AskUserQuestion | `-y`: defer
|
|
177
|
+
4. Root cause confirmed → `session.json.root_cause` + §5. Mark G1 done.
|
|
283
178
|
|
|
284
179
|
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): DIAGNOSE — 根因确认"`
|
|
285
180
|
|
|
286
181
|
### A_ESCALATE_DIAGNOSIS
|
|
287
|
-
Increment `diagnosis_retries`.
|
|
182
|
+
Increment `diagnosis_retries`. < 3: broaden via `maestro delegate --role analyze`, new hypotheses, return S_DIAGNOSE. >= 3: Normal → AskUserQuestion | `-y` → auto INCONCLUSIVE → S_RECORD.
|
|
288
183
|
|
|
289
184
|
### A_FIX
|
|
290
|
-
1. Present root cause + proposed fix. Normal: AskUserQuestion | `-y`: auto proceed
|
|
291
|
-
2. Implement fix
|
|
292
|
-
3. Record in evidence (phase: "decision")
|
|
185
|
+
1. Present root cause + proposed fix. Normal: AskUserQuestion | `-y`: auto proceed
|
|
186
|
+
2. Implement fix, record evidence (phase: "decision")
|
|
293
187
|
|
|
294
188
|
📌 **Auto-commit**: `git add -A && git commit -m "odyssey-debug({slug}): FIX — {修复摘要}"`
|
|
295
189
|
|
|
296
190
|
### A_CONFIRM
|
|
297
|
-
1.
|
|
298
|
-
2.
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
MODE: analysis
|
|
303
|
-
CONTEXT: @{modified_files} | Root cause: {summary} | Diff: {git_diff}
|
|
304
|
-
EXPECTED: JSON {verdict, findings [{severity, description, suggestion}], regression_risk}
|
|
305
|
-
CONSTRAINTS: Focus on correctness, not style
|
|
306
|
-
" --role review --mode analysis
|
|
307
|
-
```
|
|
308
|
-
Execute with `run_in_background: true`, then wait for callback (do NOT halt the Odyssey flow).
|
|
309
|
-
|
|
310
|
-
3. Write `session.json.confirmation`: `{test_result, cli_review, overall: "confirmed|needs_rework", timestamp}`
|
|
311
|
-
4. Update §6. `needs_rework` → S_FIX. `confirmed` → mark G3 done, advance.
|
|
191
|
+
1. Run covering tests (auto-detect framework)
|
|
192
|
+
2. CLI fix review via `maestro delegate --role review --mode analysis` (`run_in_background: true`):
|
|
193
|
+
- EXPECTED: JSON {verdict, findings [{severity, description, suggestion}], regression_risk}
|
|
194
|
+
3. Write `session.json.confirmation`: `{test_result, cli_review, overall: "confirmed|needs_rework"}`
|
|
195
|
+
4. Update §6. `needs_rework` → S_FIX. `confirmed` → mark G3 done.
|
|
312
196
|
|
|
313
197
|
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): CONFIRM — 修复验证"`
|
|
314
198
|
|
|
315
199
|
### A_GENERALIZE
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
**Pattern extraction** from root cause + fix:
|
|
319
|
-
|
|
320
|
-
| Layer | Method | Example |
|
|
321
|
-
|-------|--------|---------|
|
|
322
|
-
| Syntax | Regex patterns (direct Grep) | `eval(`, missing `await`, unclosed resource |
|
|
323
|
-
| Semantic | Anti-pattern description (Agent-driven) | Unhandled async errors, unvalidated input |
|
|
324
|
-
| Structural | Architecture-level (file/module similarity) | Same import structure, missing override |
|
|
325
|
-
|
|
326
|
-
Write `session.json.patterns[]`: `[{id, source, layer, signature, description, risk, fix_template}]`
|
|
327
|
-
|
|
328
|
-
**4-agent parallel codebase scan:**
|
|
329
|
-
|
|
330
|
-
| Agent | Strategy | Input | Scope |
|
|
331
|
-
|-------|----------|-------|-------|
|
|
332
|
-
| Syntax grep | Grep syntax-layer regex | P*.signature | Full project |
|
|
333
|
-
| Semantic scan | Understand + check anti-pattern | P*.description | Related modules |
|
|
334
|
-
| Structural match | Find structurally similar files | Buggy file structure | Full project |
|
|
335
|
-
| Historical grep | `git log -S "{pattern}"` | P*.signature | Full git history |
|
|
336
|
-
|
|
337
|
-
Returns: `[{pattern_id, file, line, context, risk_level, layer, confidence}]`
|
|
338
|
-
|
|
339
|
-
**Cross-layer dedup**: same file:line multi-layer hit → boost confidence | single-layer → `needs_review` | historical hit on fixed record → `regression_risk`
|
|
340
|
-
|
|
341
|
-
**Iterative deepening**: module with ≥3 hits → targeted deep scan (max 1 round).
|
|
342
|
-
|
|
343
|
-
**Quality Gate** (self-iteration) → if insufficient, expand and re-scan.
|
|
344
|
-
|
|
345
|
-
Write §7 + `session.json.generalization_stats`: `{patterns_extracted, total_hits, cross_layer_confirmed, regression_risks, by_layer, deepening_triggered}`. Mark G4 done.
|
|
200
|
+
按 base A_GENERALIZE 执行。Pattern 来源: root cause + fix。统计写入 `session.json.generalization_stats`。Mark G4 done.
|
|
346
201
|
|
|
347
202
|
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): GENERALIZE — 泛化扫描完成"`
|
|
348
203
|
|
|
349
204
|
### A_DISCOVER
|
|
350
|
-
|
|
351
|
-
2. **Route**:
|
|
352
|
-
- `bug` + directly fixable → **fix immediately** (not just log an issue) → back to S_FIX
|
|
353
|
-
- `bug` + requires cross-module/architectural decision → create issue (with fix suggestion + impact analysis)
|
|
354
|
-
- `risk` → evaluate if guard/validation can mitigate directly; if yes, fix it
|
|
355
|
-
- `safe` → mark skip
|
|
356
|
-
See Appendix `-y` behavior table. Append evidence (phase: "discovery" + "decision")
|
|
357
|
-
3. Update §8. Mark G5 done.
|
|
205
|
+
按 base A_DISCOVER 执行。Mark G5 done.
|
|
358
206
|
|
|
359
207
|
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): DISCOVER — 发现分类完成"`
|
|
360
208
|
|
|
361
209
|
### A_RECORD
|
|
362
|
-
1. Finalize `understanding.md` §9
|
|
363
|
-
2.
|
|
364
|
-
3.
|
|
365
|
-
4. **
|
|
366
|
-
5. **Completion**: `current_state = "COMPLETED"`, emit summary:
|
|
210
|
+
1. Finalize `understanding.md` §9,按 Knowledge Persistence 表分类记录
|
|
211
|
+
2. Mark G6 done. Pending decisions: Normal → AskUserQuestion | `-y` → skip (show deferred count)
|
|
212
|
+
3. 其余按 base A_RECORD 执行
|
|
213
|
+
4. **Completion summary**:
|
|
367
214
|
```
|
|
368
215
|
--- DEBUG ODYSSEY COMPLETE ---
|
|
369
216
|
Issue: {issue}
|
|
@@ -387,7 +234,7 @@ Goals: {done}/{total} confirmed ({skipped} skipped)
|
|
|
387
234
|
|
|
388
235
|
### Goal Prompt Template
|
|
389
236
|
|
|
390
|
-
**时机守卫:仅在 A_INTAKE
|
|
237
|
+
**时机守卫:仅在 A_INTAKE 完成后显示一次。** 机制见 base。
|
|
391
238
|
|
|
392
239
|
```
|
|
393
240
|
📋 Debug Odyssey 会话已创建。可随时复制以下 /goal 设定终止条件:
|
|
@@ -397,34 +244,23 @@ Goals: {done}/{total} confirmed ({skipped} skipped)
|
|
|
397
244
|
- {G.id}: {G.goal} — 完成条件: {G.done_when}
|
|
398
245
|
{end for}
|
|
399
246
|
穷尽迭代:直到根因确认(或明确 INCONCLUSIVE)且修复验证通过
|
|
400
|
-
|
|
401
|
-
假设失败时扩范围→换视角→升级工具,不轻易放弃。
|
|
247
|
+
且泛化扫描穷尽且 phase_goals_all_done=true 才停。
|
|
402
248
|
泛化发现的同类 bug 全部修复或创建 issue,不允许遗留。
|
|
403
249
|
遇到 phase=decision 的 pending 必须 AskUserQuestion,不得自行 resolve。
|
|
404
250
|
```
|
|
405
251
|
|
|
406
|
-
Odyssey 输出提示词后继续执行不阻塞。`/goal` 由用户任意时刻输入。
|
|
407
|
-
|
|
408
252
|
### `-y` Auto-Confirm Behavior
|
|
409
253
|
|
|
410
254
|
| Decision Point | Normal | `-y` mode |
|
|
411
255
|
|---------------|--------|-----------|
|
|
412
|
-
| A_DIAGNOSE ambiguity | AskUserQuestion
|
|
256
|
+
| A_DIAGNOSE ambiguity | AskUserQuestion | `deferred`, best-effort continue |
|
|
413
257
|
| A_ESCALATE 3-strike | AskUserQuestion 3-way | auto INCONCLUSIVE |
|
|
414
|
-
| A_FIX direction | AskUserQuestion
|
|
415
|
-
| A_DISCOVER bug triage | AskUserQuestion
|
|
258
|
+
| A_FIX direction | AskUserQuestion | auto proceed with suggested fix |
|
|
259
|
+
| A_DISCOVER bug triage | AskUserQuestion | auto create issue |
|
|
416
260
|
| A_DISCOVER ambiguous | AskUserQuestion batch | all `deferred` |
|
|
417
261
|
| A_RECORD decisions | AskUserQuestion per-item | skip, show deferred count |
|
|
418
262
|
| A_RECORD goal audit | AskUserQuestion 3-way | auto accept current state |
|
|
419
263
|
|
|
420
|
-
`deferred` items shown as "待决策" in completion summary; recoverable via `-c`.
|
|
421
|
-
|
|
422
|
-
### Phase Goal Lifecycle
|
|
423
|
-
|
|
424
|
-
`pending → done (confirmed=true)` normal | `pending → skipped (confirmed=true)` flags/manual | `pending → failed (confirmed=false)` INCONCLUSIVE
|
|
425
|
-
|
|
426
|
-
`phase_goals_all_done = true` only when ALL goals have `completion_confirmed == true`.
|
|
427
|
-
|
|
428
264
|
</appendix>
|
|
429
265
|
|
|
430
266
|
</state_machine>
|
|
@@ -433,37 +269,22 @@ Odyssey 输出提示词后继续执行不阻塞。`/goal` 由用户任意时刻
|
|
|
433
269
|
| Code | Severity | Condition | Recovery |
|
|
434
270
|
|------|----------|-----------|----------|
|
|
435
271
|
| E001 | error | No issue and no session to resume | Provide issue or use -c |
|
|
436
|
-
| E003 | error | Resume but no session found | Start new session |
|
|
437
|
-
| E004 | error | Delegate execution failed | Retry or proceed without CLI |
|
|
438
272
|
| W001 | warning | No relevant git history | Proceed with limited context |
|
|
439
273
|
| W002 | warning | All hypotheses inconclusive after 3 retries | INCONCLUSIVE |
|
|
440
|
-
| W003 | warning | Generalization scan 0 hits | Skip discovery |
|
|
441
|
-
| W004 | warning | Delegate parse failed | Use raw output |
|
|
442
274
|
| W005 | warning | Pending decisions unresolved | Filter evidence.ndjson phase=decision |
|
|
443
275
|
| W006 | warning | CLI exploration skipped (no tools) | Proceed without explore.json |
|
|
444
276
|
</error_codes>
|
|
445
277
|
|
|
446
278
|
<success_criteria>
|
|
447
|
-
- [ ] Session
|
|
448
|
-
- [ ]
|
|
449
|
-
- [ ]
|
|
450
|
-
- [ ]
|
|
451
|
-
- [ ] Hypotheses formed from archaeology + explore, tested and logged phase=diagnosis
|
|
452
|
-
- [ ] Root cause declared with evidence refs
|
|
279
|
+
- [ ] Session created with 4 output files, prior knowledge searched
|
|
280
|
+
- [ ] Git archaeology + CLI change review → evidence phase=archaeology
|
|
281
|
+
- [ ] CLI exploration → explore.json + evidence phase=explore
|
|
282
|
+
- [ ] Hypotheses tested, root cause declared with evidence refs
|
|
453
283
|
- [ ] understanding.md tracks all 9 sections progressively
|
|
454
|
-
- [ ] Fix implemented + confirmed
|
|
455
|
-
- [ ] Multi-layer
|
|
456
|
-
- [ ]
|
|
457
|
-
- [ ]
|
|
458
|
-
- [ ] **Every unfixed finding has individual classification and reason** — blanket "pre-existing" labels are forbidden
|
|
459
|
-
- [ ] Decision journal: all human-judgment items in evidence.ndjson phase=decision
|
|
460
|
-
- [ ] phase_goals derived from flags, skip_when applied, each phase marks its goal
|
|
461
|
-
- [ ] Goal audit in A_RECORD — unmet goals surfaced, phase_goals_all_done set correctly
|
|
462
|
-
- [ ] Goal Prompt displayed once after session creation
|
|
463
|
-
- [ ] `-y`: all decisions auto-resolve/defer, deferred count in summary
|
|
464
|
-
- [ ] State saved at each transition (resumable via -c)
|
|
465
|
-
- [ ] Quality Gate self-iteration when insufficient, logged in self_iteration_log
|
|
466
|
-
- [ ] Spec entries persisted for reusable learnings
|
|
284
|
+
- [ ] Fix implemented + confirmed (unless --skip-fix)
|
|
285
|
+
- [ ] Multi-layer generalization + scan (unless --skip-generalize)
|
|
286
|
+
- [ ] Discoveries classified and routed; every unfixed finding individually justified
|
|
287
|
+
- [ ] phase_goals derived, goal audit in A_RECORD, state resumable via -c
|
|
467
288
|
- [ ] Completion summary with all stats
|
|
468
289
|
</success_criteria>
|
|
469
290
|
|