maestro-flow 0.5.40 → 0.5.41

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.
Files changed (41) hide show
  1. package/.agents/skills/odyssey-debug/SKILL.md +109 -143
  2. package/.agents/skills/odyssey-improve/SKILL.md +127 -141
  3. package/.agents/skills/odyssey-planex/SKILL.md +140 -231
  4. package/.agents/skills/odyssey-review-test-fix/SKILL.md +136 -90
  5. package/.agents/skills/odyssey-ui/SKILL.md +123 -143
  6. package/.agy/skills/odyssey-debug/SKILL.md +109 -143
  7. package/.agy/skills/odyssey-improve/SKILL.md +127 -141
  8. package/.agy/skills/odyssey-planex/SKILL.md +140 -231
  9. package/.agy/skills/odyssey-review-test-fix/SKILL.md +136 -90
  10. package/.agy/skills/odyssey-ui/SKILL.md +123 -143
  11. package/.claude/commands/odyssey-debug.md +109 -143
  12. package/.claude/commands/odyssey-improve.md +127 -141
  13. package/.claude/commands/odyssey-planex.md +140 -231
  14. package/.claude/commands/odyssey-review-test-fix.md +136 -90
  15. package/.claude/commands/odyssey-ui.md +123 -143
  16. package/.codex/skills/odyssey-debug/SKILL.md +114 -169
  17. package/.codex/skills/odyssey-improve/SKILL.md +144 -188
  18. package/.codex/skills/odyssey-planex/SKILL.md +162 -242
  19. package/.codex/skills/odyssey-review-test-fix/SKILL.md +96 -90
  20. package/.codex/skills/odyssey-ui/SKILL.md +128 -173
  21. package/dashboard/dist-server/src/tools/spec-loader.js +27 -19
  22. package/dashboard/dist-server/src/tools/spec-loader.js.map +1 -1
  23. package/dashboard/dist-server/src/tools/spec-seeds.d.ts +8 -0
  24. package/dashboard/dist-server/src/tools/spec-seeds.js +114 -0
  25. package/dashboard/dist-server/src/tools/spec-seeds.js.map +1 -1
  26. package/dist/src/commands/spec.d.ts.map +1 -1
  27. package/dist/src/commands/spec.js +13 -3
  28. package/dist/src/commands/spec.js.map +1 -1
  29. package/dist/src/tools/spec-init.d.ts +4 -3
  30. package/dist/src/tools/spec-init.d.ts.map +1 -1
  31. package/dist/src/tools/spec-init.js +9 -5
  32. package/dist/src/tools/spec-init.js.map +1 -1
  33. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  34. package/dist/src/tools/spec-loader.js +27 -19
  35. package/dist/src/tools/spec-loader.js.map +1 -1
  36. package/dist/src/tools/spec-seeds.d.ts +8 -0
  37. package/dist/src/tools/spec-seeds.d.ts.map +1 -1
  38. package/dist/src/tools/spec-seeds.js +114 -0
  39. package/dist/src/tools/spec-seeds.js.map +1 -1
  40. package/package.json +1 -1
  41. package/workflows/odyssey-base-codex.md +306 -0
@@ -17,46 +17,42 @@ allowed-tools:
17
17
  <base>@~/.maestro/workflows/odyssey-base.md</base>
18
18
 
19
19
  <purpose>
20
- Deep UI polish cycle: survey → 6-dimension audit → divergent creative exploration →
21
- fix verify generalize discover → persist. Every pixel is a learning opportunity.
20
+ survey → 6-dimension audit → divergent exploration → fix → verify → generalize → discover → persist.
21
+ Exhaustive iteration until all findings addressed or deferred.
22
22
  </purpose>
23
23
 
24
24
  <boundary>
25
- **范围内:** 目标组件/页面的视觉体验优化审查 6 维度 发散探索 修复 泛化到兄弟组件
26
- **范围外:** 后端逻辑 / 数据模型 / API 设计 / 业务规则 → `/odyssey-planex` | 深度 bug 调查 → `/odyssey-debug` | 代码质量审查 → `/odyssey-review-test-fix`
27
- **探索自由度:** 边界内最大自由 — S_DIVERGE 阶段鼓励发散思维,不设创意上限。审查 + 发散可发现任何视觉/交互/可访问性细节。在约束下尽可能完善每个像素。
28
- **Zero-residual principle:** Every finding/idea MUST have a concrete action (fix / issue / decision). "Report and shelve" is not allowed. "Pre-existing design debt" is not a valid skip reason if discovered within scope, it must be addressed.
29
- ⚠️ **Decision gate** — ONLY these qualify as decisions (not fixes):
25
+ **In scope:** Target component/page visual experience optimization audit 6 dimensions, divergent exploration, fix, generalize to sibling components.
26
+ **Out of scope:** Backend/data/API → `/odyssey-planex` | Deep bug investigation → `/odyssey-debug` | Code quality review → `/odyssey-review-test-fix`
27
+
28
+ **Decision gate**ONLY these qualify as decisions:
30
29
  - Brand/style direction requiring human creative judgment
31
30
  - Layout restructuring that changes user flow significantly
32
31
  - Requires new design tokens or breaking component API
33
- ❌ "Unsure how to fix", "Large scope", "Pre-existing issue" are NOT valid decision reasons — either fix it, or explain specifically why it's unfixable
34
32
  </boundary>
35
33
 
36
34
  <context>
37
- $ARGUMENTS — target and optional flags.
35
+ $ARGUMENTS
38
36
 
39
37
  **Target resolution:** Component path → audit component | Page/route → audit page | `staged`/`HEAD` → diff UI changes | Feature area → resolve to components/pages
40
38
 
41
- **Flags:**
42
- | Flag | Effect | Default |
43
- |------|--------|---------|
44
- | `--dimensions <list>` | Comma-separated subset of 6 dimensions | all 6 |
45
- | `--fix-threshold <severity>` | 修复到哪个 severity 为止 | all |
46
- | `--skip-fix` | Audit + diverge only, no code changes | false |
47
- | `--skip-generalize` | Skip S_GENERALIZE and S_DISCOVER | false |
48
- | `--auto` | CLI delegates without confirmation | false |
49
- | `-y` | Auto-confirm all decisions (see appendix) | false |
50
- | `-c` | Resume most recent session | — |
51
- | `--heartbeat` | Enable heartbeat progress reporting | false |
39
+ **Flags:** `--dimensions <list>` dimension subset | `--fix-threshold <severity>` | `--skip-fix` audit+diverge only | `--skip-generalize` skip generalize+discover | `--auto` no delegate confirmation | `-y` auto-confirm | `-c` resume | `--heartbeat` /loop heartbeat
52
40
 
53
- **Session**: `SESSION_DIR = .workflow/scratch/{YYYYMMDD}-ui-odyssey-{slug}/`
41
+ **Session**: `.workflow/scratch/{YYYYMMDD}-ui-odyssey-{slug}/`
42
+ **Output**: `session.json` | `evidence.ndjson` | `understanding.md`
54
43
 
55
- **Output — 3 files:** `session.json` (state + audit/diverge results + patterns + phase_goals) | `evidence.ndjson` (phases: survey, audit, diverge, fix, discovery, decision, self-iteration) | `understanding.md` (8-section narrative)
44
+ **session.json ui-specific fields:**
45
+ ```json
46
+ { "target": "", "dimensions": [],
47
+ "audit_result": { "dimensions_audited": 0, "finding_count": 0, "severity_distribution": {} },
48
+ "diverge_result": { "improvements_proposed": 0, "creative_ideas": 0 },
49
+ "patterns": [], "confirmation": null, "generalization_stats": null }
50
+ ```
56
51
 
57
- **session.json unique fields:** `target`, `dimensions`, `audit_result` {dimensions_audited, finding_count, severity_distribution}, `diverge_result` {improvements_proposed, creative_ideas}, `patterns[]` {id, source_finding, layer, signature, description, risk, fix_template, confidence}, `confirmation` {test_result, cli_review, overall}, `generalization_stats` {patterns_extracted, total_hits, cross_layer_confirmed, regression_risks, by_layer, deepening_triggered}
52
+ **evidence.ndjson phases:** `survey|audit|diverge|fix|discovery|decision|self-iteration`
58
53
 
59
54
  **phase_goals[]:**
55
+
60
56
  | ID | Goal | Phase | skip_when |
61
57
  |----|------|-------|-----------|
62
58
  | G1 | Survey completed | S_SURVEY | — |
@@ -67,89 +63,85 @@ $ARGUMENTS — target and optional flags.
67
63
  | G6 | Discoveries triaged | S_DISCOVER | skip_generalize |
68
64
  | G7 | Learnings persisted | S_RECORD | — |
69
65
 
70
- **understanding.md:** §1 Target & Design Context | §2 Survey | §3 Audit | §4 Diverge | §5 Verify | §6 Generalize | §7 Discover | §8 Learnings
66
+ **understanding.md 8 sections:**
67
+ 1. Target & Design Context ← S_INTAKE | 2. Survey ← S_SURVEY | 3. Audit ← S_AUDIT
68
+ 4. Diverge ← S_DIVERGE | 5. Verify ← S_VERIFY | 6. Generalize ← S_GENERALIZE
69
+ 7. Discover ← S_DISCOVER | 8. Learnings ← S_RECORD
71
70
 
72
- ### Pre-load(可选,缺失不阻塞)
73
- ARCHITECTURE.md | `maestro search "<target>" --json` (top 5) | `maestro load --type spec --category ui` | `maestro load --type spec --category coding` | `maestro search --category ui` → load knowhow | Glob prior sessions
71
+ **Knowledge Persistence categories (section 8):**
74
72
 
75
- ### Knowledge Persistence(S_RECORD 写入 understanding.md §8)
76
- | 分类 | 写入内容 | 后续建议命令 |
77
- |------|---------|-------------|
78
- | 设计 pattern | 组件模式 + 适用场景 + token 引用 | `/spec-add ui "..."` |
79
- | 交互规范 | 状态定义 + 转场规则 + 反馈模式 | `/spec-add ui "..."` |
80
- | 可访问性规则 | WCAG 要求 + 实现方案 | `/spec-add ui "..."` |
81
- | 可复用泛化 pattern | pattern 签名 + 应用范围 | `/spec-add coding "..."` |
73
+ | Category | Content | Follow-up |
74
+ |----------|---------|-----------|
75
+ | Design pattern | Component pattern + applicable scenarios + token references | `/spec-add ui` |
76
+ | Interaction spec | State definitions + transition rules + feedback patterns | `/spec-add ui` |
77
+ | Accessibility rule | WCAG requirement + implementation approach | `/spec-add ui` |
78
+ | Reusable generalization pattern | Pattern signature + application scope | `/spec-add coding` |
82
79
  </context>
83
80
 
81
+ <invariants>
82
+ 1-5 in base. UI-specific:
83
+ 6. **Browser is truth** — verify in real rendering, not just code review
84
+ 7. **Diverge before converge** — explore creatively first, then implement methodically
85
+ </invariants>
86
+
84
87
  <self_iteration>
85
- 适用阶段: S_SURVEY, S_AUDIT, S_DIVERGE, S_GENERALIZE
88
+ Applies to: **S_SURVEY, S_AUDIT, S_DIVERGE, S_GENERALIZE**. Logic in base.
86
89
  </self_iteration>
87
90
 
88
91
  <state_machine>
89
92
 
90
93
  <states>
91
- S_INTAKE Parse target, load design context, resume session PERSIST: session.json + understanding.md §1
92
- S_SURVEY — Visual landscape: design tokens, pattern inventory PERSIST: evidence.ndjson (survey) + understanding.md §2
93
- S_AUDIT — 6-dimension parallel review PERSIST: evidence.ndjson (audit) + understanding.md §3
94
- S_DIVERGE — Divergent creative exploration: polish + delight PERSIST: evidence.ndjson (diverge) + understanding.md §4
95
- S_FIX — Implement improvements (skip if --skip-fix) PERSIST: code changes + evidence.ndjson (fix)
96
- S_VERIFY — Visual verification + test (skip if --skip-fix) PERSIST: session.json.confirmation + understanding.md §5
97
- S_GENERALIZE — Pattern extraction + 4-agent scan (skip if --skip-gen) PERSIST: session.json.patterns + understanding.md §6
98
- S_DISCOVER — Classify hits, create issues (skip if --skip-gen) PERSIST: evidence.ndjson (discovery|decision) + understanding.md §7
99
- S_RECORD — Design knowledge persistence + final report PERSIST: understanding.md §8 + spec entries
94
+ S_INTAKE S_SURVEY S_AUDIT S_DIVERGE S_FIX S_VERIFY → S_GENERALIZE → S_DISCOVER → S_RECORD → END
100
95
  </states>
101
96
 
102
97
  <transitions>
103
- S_INTAKE:
104
- S_INTAKE WHEN -c + session found DO A_RESUME
105
- S_SURVEY WHEN target resolved DO A_INTAKE
106
- → S_INTAKE WHEN no target DO ask_user
107
-
108
- S_SURVEY S_AUDIT DO A_SURVEY
109
- S_AUDIT → S_DIVERGE DO A_AUDIT
110
-
111
- S_DIVERGE:
112
- S_FIX WHEN !skip_fix AND actionable findings/ideas DO A_DIVERGE
113
- → S_GENERALIZE WHEN (skip_fix OR no actionable) AND !skip_gen DO A_DIVERGE
114
- S_RECORD WHEN (skip_fix OR no actionable) AND skip_gen DO A_DIVERGE
115
-
116
- S_FIX S_VERIFY DO A_FIX
117
- S_VERIFY:
118
- → S_GENERALIZE WHEN verified AND !skip_gen DO A_VERIFY
119
- S_RECORD WHEN verified AND skip_gen DO A_VERIFY
120
- S_FIX WHEN needs_rework DO A_VERIFY
121
-
122
- S_GENERALIZE:
123
- S_DISCOVER WHEN hits found DO A_GENERALIZE
124
- → S_RECORD WHEN no hits DO A_GENERALIZE
125
-
126
- S_DISCOVER S_AUDIT : new component to audit → cross_phase_loops++
127
- S_DISCOVER → S_FIX : fixable sibling, !skip_fix → cross_phase_loops++
128
- S_DISCOVER → S_RECORD : remaining_actionable == 0 OR loops >= max_loops (MUST log each unfixed item)
129
-
130
- S_RECORD → END DO A_RECORD
98
+ S_INTAKE → S_INTAKE : -c + session found → A_RESUME
99
+ S_INTAKE S_SURVEY : target resolved A_INTAKE
100
+ S_INTAKE S_INTAKE : no target ask_user
101
+
102
+ S_SURVEY → S_AUDIT : complete
103
+ S_AUDIT S_DIVERGE : complete
104
+
105
+ S_DIVERGE → S_FIX : !skip_fix AND actionable findings/ideas
106
+ S_DIVERGE → S_GENERALIZE : (skip_fix OR no actionable) AND !skip_generalize
107
+ S_DIVERGE S_RECORD : (skip_fix OR no actionable) AND skip_generalize
108
+
109
+ S_FIX S_VERIFY : fix implemented
110
+ S_VERIFY → S_GENERALIZE : verified, !skip_generalize
111
+ S_VERIFY S_RECORD : verified, skip_generalize
112
+ S_VERIFY → S_FIX : needs_rework
113
+
114
+ S_GENERALIZE S_DISCOVER : similar code found
115
+ S_GENERALIZE S_RECORD : no similar code
116
+
117
+ S_DISCOVER → S_AUDIT : new component to audit → cross_phase_loops++
118
+ S_DISCOVER S_FIX : fixable sibling, !skip_fix → cross_phase_loops++
119
+ S_DISCOVER → S_RECORD : remaining_actionable == 0 OR loops >= max_loops → log per-item reasons
120
+
121
+ S_RECORD END : complete
131
122
  </transitions>
132
123
 
133
124
  <actions>
134
125
 
135
126
  ### A_INTAKE
136
127
  1. Parse arguments: target, flags, `--dimensions` subset
137
- 2. Generate slug, create `SESSION_DIR`
138
- 3. Pre-load: `maestro search` + Glob prior sessions + ARCHITECTURE.md + spec load ui/coding
139
- 4. Derive `phase_goals[]` from flags (apply `skip_when`)
140
- 5. Write `session.json` + `understanding.md` §1
141
- 6. Emit Goal Prompt (see Appendix)
142
- 📌 `git commit -m "odyssey-ui({slug}): INTAKE — 目标解析"`
128
+ 2. Generate slug, create SESSION_DIR
129
+ 3. `maestro search` + Glob prior sessions + ARCHITECTURE.md + spec load ui/coding
130
+ 4. Derive `phase_goals[]` from flags
131
+ 5. Write `session.json` + `understanding.md` section 1, emit Goal Prompt
132
+
133
+ Commit: `"odyssey-ui({slug}): INTAKE — parse target and load context"`
143
134
 
144
135
  ### A_RESUME
145
- Find latest session via Glob → read `session.json` → display summary → jump to `current_state`.
136
+ Glob latest session → read `session.json` → jump to `current_state`.
146
137
 
147
138
  ### A_SURVEY
148
139
  1. **Design system inventory**: Scan for design tokens, CSS variables, theme imports
149
140
  2. **Current state analysis**: Styling patterns, layout strategy, component hierarchy
150
- 3. **CLI-assisted** (optional): `maestro delegate` with `--role analyze` — survey tokens, spacing, typography, hierarchy, consistency
151
- 4. Append evidence (phase: "survey"). Update §2. Mark G1 done.
152
- 📌 `git commit -m "odyssey-ui({slug}): SURVEY — 视觉调查"`
141
+ 3. **CLI-assisted**: `maestro delegate --role analyze` — survey tokens, spacing, typography, hierarchy, consistency
142
+ 4. Append evidence phase=survey. Update section 2. Mark G1.
143
+
144
+ Commit: `"odyssey-ui({slug}): SURVEY — design token inventory"`
153
145
 
154
146
  ### A_AUDIT
155
147
  Spawn 6 parallel Agents (one per dimension, or `--dimensions` subset):
@@ -164,8 +156,9 @@ Spawn 6 parallel Agents (one per dimension, or `--dimensions` subset):
164
156
  | edge_cases | Long text truncation, empty data, error states, extreme values, i18n, RTL |
165
157
 
166
158
  Each returns `[{title, severity, file, line, description, suggestion, dimension}]`.
167
- Merge → evidence (phase: "audit"). Write `audit_result`. Update §3 (severity matrix). Mark G2 done.
168
- 📌 `git commit -m "odyssey-ui({slug}): AUDIT — 多维审查"`
159
+ Merge → evidence phase=audit. Write `audit_result`. Update section 3 with severity matrix. Mark G2.
160
+
161
+ Commit: `"odyssey-ui({slug}): AUDIT — 6-dimension review"`
169
162
 
170
163
  ### A_DIVERGE
171
164
  Goes beyond defect fixing — "what would make this delightful?"
@@ -176,80 +169,67 @@ Goes beyond defect fixing — "what would make this delightful?"
176
169
 
177
170
  Each returns `[{idea, category (polish|delight), impact, effort, description, inspiration}]`
178
171
 
179
- **Step 2 — CLI-assisted** (optional): `maestro delegate` with `--role analyze` — polish opportunities, micro-interactions, visual rhythm, delight moments
172
+ **Step 2 — CLI-assisted**: `maestro delegate --role analyze` — polish opportunities, micro-interactions, visual rhythm, delight moments
180
173
 
181
174
  **Step 3 — Consolidate**: Merge audit findings + divergent ideas → prioritized list (severity x impact x effort).
182
- Append evidence (phase: "diverge"). Update §4. Mark G3 done.
183
- 📌 `git commit -m "odyssey-ui({slug}): DIVERGE — 发散探索"`
175
+ Append evidence phase=diverge. Update section 4. Mark G3.
176
+
177
+ Commit: `"odyssey-ui({slug}): DIVERGE — creative exploration"`
184
178
 
185
179
  ### A_FIX
186
180
  Skip if `--skip-fix`.
187
- 1. **穷尽修复**: ALL findings/ideas by priority tier (critical→high→medium→low + high-impact ideas). After each tier, re-review — new findings append.
188
- 2. Each fix → evidence (phase: "fix")
189
- 3. **Normal**: ask_user per-fix. **`-y`**: auto-proceed, record `deferred`.
190
- 📌 `git commit -m "odyssey-ui({slug}): FIX — 优化实现"`
181
+ 1. **Exhaustive fix**: ALL findings/ideas by priority tier (critical high medium low + high-impact ideas). After each tier, re-review — new findings append.
182
+ 2. Each fix → evidence phase=fix
183
+ 3. Normal: ask_user per-fix | `-y`: auto-proceed, record `deferred`
184
+
185
+ Commit: `"odyssey-ui({slug}): FIX — implement improvements"`
191
186
 
192
187
  ### A_VERIFY
193
188
  1. Run tests (lint, unit, visual regression)
194
- 2. **CLI-assisted**: `maestro delegate` with `--role review` — visual correctness, interaction states, accessibility, responsive
195
- 3. `needs_rework` → S_FIX. `verified` → mark G4 done. Update §5, write `confirmation`.
196
- 📌 `git commit -m "odyssey-ui({slug}): VERIFY — 验证"`
197
-
198
- ### A_GENERALIZE
199
- base A_GENERALIZE 执行。Pattern 来源: audit findings + diverge ideas (severity >= medium OR impact = high)。Mark G5 done.
200
- 📌 `git commit -m "odyssey-ui({slug}): GENERALIZE — 泛化扫描"`
201
-
202
- ### A_DISCOVER
203
- 按 base A_DISCOVER 执行。Mark G6 done.
204
- 📌 `git commit -m "odyssey-ui({slug}): DISCOVER — 发现分类"`
205
-
206
- ### A_RECORD
207
- 1. Finalize §8: 按 Knowledge Persistence 表分类记录,completion summary 列出建议的 `/spec-add` 命令
208
- 2. Pending decisions: **Normal** → ask_user. **`-y`** → skip, show deferred count
209
- 3. Goal audit: all confirmed → `phase_goals_all_done = true`. **Normal** → ask_user | **`-y`** → auto accept
210
- 4. Mark G7 done. Emit completion summary:
189
+ 2. `maestro delegate --role review` — visual correctness, interaction states, accessibility, responsive
190
+ 3. `needs_rework` → S_FIX. `verified` → mark G4. Update section 5, write `confirmation`.
191
+
192
+ Commit: `"odyssey-ui({slug}): VERIFY — visual verification"`
193
+
194
+ ### A_GENERALIZE, A_DISCOVER, A_RECORD
195
+ Base shared_actions. UI overrides:
196
+ - **A_GENERALIZE** pattern source: audit findings + diverge ideas (severity >= medium OR impact = high)
197
+ - **A_RECORD** learnings per Knowledge Persistence table
198
+
199
+ **Completion summary:**
211
200
  ```
212
201
  --- UI ODYSSEY COMPLETE ---
213
- Target: {target} | Dimensions: {dimensions_audited}
214
- Findings: {C}C {H}H {M}M {L}L | Diverge: {improvements} polish + {creative} delight
215
- Fix: {fixed_count} applied, verified={yes|skipped}
216
- Patterns: {extracted} ({by_layer}) | Scan hits: {total} ({cross_layer} cross-layer)
217
- Issues: {N} | Decisions: {N} resolved, {M} pending, {K} deferred
218
- Learnings: {N} entries | Self-iter: {N} rounds | Goals: {done}/{total} ({skipped} skipped)
202
+ Target: {target} | Dimensions: {dimensions_audited}
203
+ Findings: {C}C {H}H {M}M {L}L | Diverge: {improvements} polish + {creative} delight
204
+ Fix: {fixed_count} applied, verified={yes|skipped}
205
+ Patterns: {extracted} ({by_layer})
206
+ Scan hits: {total} ({cross_layer} cross-layer)
207
+ Issues: {N} created
208
+ Decisions: {N} resolved, {M} pending, {K} deferred
209
+ Learnings: {N} persisted
210
+ Self-iter: {N} rounds
211
+ Goals: {done}/{total} ({skipped} skipped)
219
212
  ---
220
213
  ```
221
- 📌 `git commit -m "odyssey-ui({slug}): RECORD — 会话总结"`
222
214
 
223
215
  </actions>
224
216
 
225
217
  <appendix>
226
218
 
227
- ### Goal Prompt Template
228
- **⚠️ 仅在 A_INTAKE 完成后显示一次。A_RECORD 完成时禁止重新显示。**
219
+ ### `-y` ui-specific points
229
220
 
230
- ```
231
- 📋 UI Odyssey 会话已创建。可随时复制以下 /goal 设定终止条件:
232
-
233
- /goal 完成以下目标:
234
- {for each G in phase_goals where status != "skipped":}
235
- - {G.id}: {G.goal} — 完成条件: {G.done_when}
236
- {end for}
237
- 穷尽迭代:直到 audit + diverge findings 均已处理(fix/issue/decision)
238
- 且 phase_goals_all_done=true 才停。修复按 impact×severity 逐轮迭代。
239
- 每轮修复后重审修改区域,新发现追加继续修。
240
- 遇到 phase=decision 的 pending 必须 ask_user。不允许"只报告不处理"。
241
- ```
242
-
243
- ### `-y` Auto-Confirm (5 decision points)
244
221
  | Decision Point | Normal | `-y` |
245
- |----------------|--------|------|
246
- | A_FIX improvement confirmation | ask_user | auto-proceed, `deferred` |
247
- | A_DISCOVER hit routing | ask_user | auto create issue, `deferred` |
248
- | A_DISCOVER ambiguous items | ask_user | all `deferred` |
249
- | A_RECORD pending decisions | ask_user | skip, show deferred count |
250
- | A_RECORD goal audit | ask_user | auto accept |
222
+ |---------------|--------|------|
223
+ | A_FIX improvement confirmation | ask_user | auto-proceed, deferred |
251
224
 
252
- `deferred` "待决策" in completion summary; recoverable via `-c`.
225
+ ### Goal Prompt convergence rules
226
+
227
+ ```
228
+ Stop when audit + diverge findings all addressed (fix/issue/decision),
229
+ phase_goals_all_done=true. Fix by impact x severity per tier.
230
+ Re-review after each tier — new findings append and continue.
231
+ Pending decisions must ask_user — no self-resolve.
232
+ ```
253
233
 
254
234
  </appendix>
255
235
 
@@ -269,15 +249,15 @@ Learnings: {N} entries | Self-iter: {N} rounds | Goals: {done}/{total} ({skipped
269
249
  - [ ] Improvements implemented and verified (unless --skip-fix)
270
250
  - [ ] Multi-layer generalization + discoveries classified (unless --skip-generalize)
271
251
  - [ ] Every unfixed finding has individual classification and reason
272
- - [ ] understanding.md §8 finalized; phase_goals G1-G7 tracked; `-y` no blocking prompts
252
+ - [ ] understanding.md section 8 finalized; phase_goals G1-G7 tracked; `-y` no blocking prompts
273
253
  </success_criteria>
274
254
 
275
255
  <next_step_routing>
276
- | Condition | Next step |
277
- |-----------|-----------|
256
+ | Condition | Next |
257
+ |-----------|------|
278
258
  | Finding needs deeper debug | `/odyssey-debug "<finding>"` |
279
- | Issues created from discoveries | `/manage-issue list --source ui-odyssey` |
280
- | Design pattern worth documenting | `/spec-add ui "..."` |
281
- | Want full review of changes | `/odyssey-review-test-fix <changed-files>` |
259
+ | Issues from discoveries | `/manage-issue list --source ui-odyssey` |
260
+ | Design pattern to document | `/spec-add ui "..."` |
261
+ | Full review of changes | `/odyssey-review-test-fix <changed-files>` |
282
262
  | Sibling components to polish | `/odyssey-ui "<sibling>"` |
283
263
  </next_step_routing>