maestro-flow 0.5.2 → 0.5.3

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 (485) hide show
  1. package/.agents/skills/insight-challenge/SKILL.md +228 -0
  2. package/.agents/skills/insight-challenge/specs/challenge-protocol.md +154 -0
  3. package/.agents/skills/insight-challenge/specs/verdict-schema.md +239 -0
  4. package/.agents/skills/maestro/SKILL.md +6 -6
  5. package/.agents/skills/maestro-help/SKILL.md +1 -1
  6. package/.agents/skills/maestro-help/index/catalog.json +3 -2
  7. package/.agents/skills/maestro-ralph/SKILL.md +11 -10
  8. package/.agents/skills/maestro-ralph-beta/SKILL.md +11 -10
  9. package/.agents/skills/odyssey-debug/SKILL.md +475 -0
  10. package/.agents/skills/odyssey-improve/SKILL.md +507 -0
  11. package/.agents/skills/odyssey-planex/SKILL.md +603 -0
  12. package/.agents/skills/odyssey-review-test-fix/SKILL.md +429 -0
  13. package/.agents/skills/odyssey-ui/SKILL.md +464 -0
  14. package/.agy/skills/insight-challenge/SKILL.md +230 -0
  15. package/.agy/skills/insight-challenge/specs/challenge-protocol.md +154 -0
  16. package/.agy/skills/insight-challenge/specs/verdict-schema.md +239 -0
  17. package/.agy/skills/maestro/SKILL.md +6 -6
  18. package/.agy/skills/maestro-help/SKILL.md +1 -1
  19. package/.agy/skills/maestro-help/index/catalog.json +3 -2
  20. package/.agy/skills/maestro-ralph/SKILL.md +11 -10
  21. package/.agy/skills/maestro-ralph-beta/SKILL.md +11 -10
  22. package/.agy/skills/odyssey-debug/SKILL.md +475 -0
  23. package/.agy/skills/odyssey-improve/SKILL.md +507 -0
  24. package/.agy/skills/odyssey-planex/SKILL.md +603 -0
  25. package/.agy/skills/odyssey-review-test-fix/SKILL.md +429 -0
  26. package/.agy/skills/odyssey-ui/SKILL.md +464 -0
  27. package/.claude/commands/maestro-ralph-beta.md +11 -10
  28. package/.claude/commands/maestro-ralph.md +11 -10
  29. package/.claude/commands/maestro.md +6 -6
  30. package/.claude/commands/odyssey-debug.md +473 -0
  31. package/.claude/commands/odyssey-improve.md +505 -0
  32. package/.claude/commands/odyssey-planex.md +601 -0
  33. package/.claude/commands/odyssey-review-test-fix.md +427 -0
  34. package/.claude/commands/odyssey-ui.md +462 -0
  35. package/.claude/skills/insight-challenge/SKILL.md +226 -0
  36. package/.claude/skills/insight-challenge/specs/challenge-protocol.md +154 -0
  37. package/.claude/skills/insight-challenge/specs/verdict-schema.md +239 -0
  38. package/.claude/skills/maestro-help/SKILL.md +1 -1
  39. package/.claude/skills/maestro-help/index/catalog.json +3 -2
  40. package/.codex/skills/codify-to-knowhow/SKILL.md +1 -1
  41. package/.codex/skills/maestro-companion/SKILL.md +1 -1
  42. package/.codex/skills/maestro-help/SKILL.md +1 -1
  43. package/.codex/skills/maestro-impeccable/SKILL.md +1 -1
  44. package/.codex/skills/maestro-next/SKILL.md +1 -1
  45. package/.codex/skills/maestro-ralph-beta/SKILL.md +1 -1
  46. package/.codex/skills/odyssey-debug/SKILL.md +456 -0
  47. package/.codex/skills/odyssey-improve/SKILL.md +466 -0
  48. package/.codex/skills/odyssey-planex/SKILL.md +409 -0
  49. package/.codex/skills/odyssey-review-test-fix/SKILL.md +377 -0
  50. package/.codex/skills/odyssey-ui/SKILL.md +411 -0
  51. package/dashboard/dist/assets/{ArtifactsPage-BLvAqQlQ.js → ArtifactsPage-B6z23DfG.js} +2 -2
  52. package/dashboard/dist/assets/{ChatInput-DU9YGZKX.js → ChatInput-tBtGKV2i.js} +1 -1
  53. package/dashboard/dist/assets/{ChatPage-DYHfheXC.js → ChatPage-CcggDVs4.js} +2 -2
  54. package/dashboard/dist/assets/{CollabPage-CSlmvEa-.js → CollabPage-FaZeqqeS.js} +1 -1
  55. package/dashboard/dist/assets/{ExecutionPanel-RYWf0dYC.js → ExecutionPanel-DNRwYDXp.js} +1 -1
  56. package/dashboard/dist/assets/{KanbanPage-N55Iv0-X.js → KanbanPage-B2xh2s_N.js} +1 -1
  57. package/dashboard/dist/assets/{MaestroCoordinatePage-BxwZ6yy5.js → MaestroCoordinatePage-DCMGHDAL.js} +1 -1
  58. package/dashboard/dist/assets/{MarkdownRenderer-ZGtOY7Ti.js → MarkdownRenderer-C3FvTqVe.js} +1 -1
  59. package/dashboard/dist/assets/McpPage-HKaJ8cQP.js +16 -0
  60. package/dashboard/dist/assets/{MeetingRoomPage-CxHRn1xx.js → MeetingRoomPage-DGN5oUXH.js} +1 -1
  61. package/dashboard/dist/assets/{OutputPanel-DaL8c1i5.js → OutputPanel-BiCteH5k.js} +1 -1
  62. package/dashboard/dist/assets/{ProblemsPanel-BQTd5812.js → ProblemsPanel-Dk4v9tol.js} +1 -1
  63. package/dashboard/dist/assets/{RequirementBoardPage-22y9u1qh.js → RequirementBoardPage-D10A26gi.js} +1 -1
  64. package/dashboard/dist/assets/{RequirementPage-_mO743Xm.js → RequirementPage-Cs-2omLz.js} +1 -1
  65. package/dashboard/dist/assets/{RoomsPage-CExTbOGr.js → RoomsPage-tKQQhw1W.js} +1 -1
  66. package/dashboard/dist/assets/SpecsPage-LK1QCtcg.js +36 -0
  67. package/dashboard/dist/assets/{TeamsPage-BxEXLb5g.js → TeamsPage-C-bEwB8E.js} +1 -1
  68. package/dashboard/dist/assets/{TreeBrowser-CVtPF5C9.js → TreeBrowser-1YP-DfTY.js} +2 -2
  69. package/dashboard/dist/assets/{WorkflowPage-BoN18Lhs.js → WorkflowPage-dGHPsDDr.js} +2 -2
  70. package/dashboard/dist/assets/{arrow-left-C5ROg97G.js → arrow-left-BPFSEpfO.js} +1 -1
  71. package/dashboard/dist/assets/{check-Bs8PM0tQ.js → check-D5hOViiQ.js} +1 -1
  72. package/dashboard/dist/assets/{chevron-right-SmErd_1F.js → chevron-right-D9BsXrIg.js} +1 -1
  73. package/dashboard/dist/assets/{circle-CjpslL_D.js → circle-Cn5fNpmp.js} +1 -1
  74. package/dashboard/dist/assets/{circle-alert-CuzAg2fd.js → circle-alert-CZvK3B1K.js} +1 -1
  75. package/dashboard/dist/assets/{circle-check-BIkDU5D5.js → circle-check-DApOBP0J.js} +1 -1
  76. package/dashboard/dist/assets/{circle-check-big-CYctV8bK.js → circle-check-big-Cd9ztJpl.js} +1 -1
  77. package/dashboard/dist/assets/{code-DoB7rfxt.js → code-C3TuHjMs.js} +1 -1
  78. package/dashboard/dist/assets/{columns-3-Ch5KIyRa.js → columns-3-CO2SvNJb.js} +1 -1
  79. package/dashboard/dist/assets/{download-DadtG2Nr.js → download-BuKGI7KX.js} +1 -1
  80. package/dashboard/dist/assets/{en-2h6fD0j8.js → en-BmpYsIfb.js} +1 -1
  81. package/dashboard/dist/assets/folder-Chwj_P4A.js +11 -0
  82. package/dashboard/dist/assets/folder-open-S72FbKvn.js +6 -0
  83. package/dashboard/dist/assets/{index-BL4h1OKY.js → index-CN0YdC9M.js} +1 -1
  84. package/dashboard/dist/assets/{index-DQIlX2w_.js → index-Cbs79erW.js} +5 -5
  85. package/dashboard/dist/assets/{index-DaFwSmVJ.js → index-CdT1WNND.js} +1 -1
  86. package/dashboard/dist/assets/index-DEvP8cgc.css +1 -0
  87. package/dashboard/dist/assets/{list-CI-XIPZh.js → list-Dg_ojUpi.js} +1 -1
  88. package/dashboard/dist/assets/{loader-DpdMoQvh.js → loader-CMcc73C_.js} +1 -1
  89. package/dashboard/dist/assets/{minus-BVbfXGrC.js → minus-KxmVOIB7.js} +1 -1
  90. package/dashboard/dist/assets/pen-line-D1YTNDPw.js +11 -0
  91. package/dashboard/dist/assets/{pencil-I7GE0y29.js → pencil-BAjxSHuh.js} +1 -1
  92. package/dashboard/dist/assets/{proxy-CcYyZZWI.js → proxy-BewnIei6.js} +1 -1
  93. package/dashboard/dist/assets/{refresh-cw-BG9V_T4R.js → refresh-cw-Chc0RcRY.js} +1 -1
  94. package/dashboard/dist/assets/{rows-2-DP6NjQFk.js → rows-2-DWJuw8OM.js} +1 -1
  95. package/dashboard/dist/assets/{search-b78eLlw2.js → search-CPGb2sEw.js} +1 -1
  96. package/dashboard/dist/assets/{shallow-CJEesgtu.js → shallow-Dy0-7n5s.js} +1 -1
  97. package/dashboard/dist/assets/{table-B_lk-a1d.js → table-VI5scWpO.js} +1 -1
  98. package/dashboard/dist/assets/{team-types-Se7f9LfJ.js → team-types-Cu8zCPN3.js} +1 -1
  99. package/dashboard/dist/assets/{terminal-DXx4tvzq.js → terminal-Bqt5c6Ny.js} +1 -1
  100. package/dashboard/dist/assets/{trash-2-CVh9mnRj.js → trash-2-BcTVifbw.js} +1 -1
  101. package/dashboard/dist/assets/{users-Da9zGME5.js → users-BhFAHz4H.js} +1 -1
  102. package/dashboard/dist/assets/{zap-C0zaC7gJ.js → zap-BWbLhgr6.js} +1 -1
  103. package/dashboard/dist/assets/{zh-CN-r3AvxxOL.js → zh-CN-BIRiTdAD.js} +1 -1
  104. package/dashboard/dist/index.html +2 -2
  105. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -0
  106. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  107. package/dashboard/dist-server/dashboard/src/server/wiki/search.d.ts +14 -14
  108. package/dashboard/dist-server/dashboard/src/server/wiki/search.js +188 -56
  109. package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
  110. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -0
  111. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  112. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +37 -0
  113. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +560 -22
  114. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  115. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +6 -2
  116. package/dashboard/dist-server/src/types/index.d.ts +9 -0
  117. package/dist/src/cli.js +3 -0
  118. package/dist/src/cli.js.map +1 -1
  119. package/dist/src/commands/delegate.d.ts.map +1 -1
  120. package/dist/src/commands/delegate.js +50 -8
  121. package/dist/src/commands/delegate.js.map +1 -1
  122. package/dist/src/commands/domain.d.ts +9 -0
  123. package/dist/src/commands/domain.d.ts.map +1 -0
  124. package/dist/src/commands/domain.js +445 -0
  125. package/dist/src/commands/domain.js.map +1 -0
  126. package/dist/src/commands/hooks.d.ts +10 -0
  127. package/dist/src/commands/hooks.d.ts.map +1 -1
  128. package/dist/src/commands/hooks.js +132 -22
  129. package/dist/src/commands/hooks.js.map +1 -1
  130. package/dist/src/commands/install.d.ts.map +1 -1
  131. package/dist/src/commands/install.js +82 -204
  132. package/dist/src/commands/install.js.map +1 -1
  133. package/dist/src/commands/kg.d.ts.map +1 -1
  134. package/dist/src/commands/kg.js +183 -90
  135. package/dist/src/commands/kg.js.map +1 -1
  136. package/dist/src/commands/search.d.ts +15 -8
  137. package/dist/src/commands/search.d.ts.map +1 -1
  138. package/dist/src/commands/search.js +205 -59
  139. package/dist/src/commands/search.js.map +1 -1
  140. package/dist/src/commands/spec.d.ts.map +1 -1
  141. package/dist/src/commands/spec.js +9 -1
  142. package/dist/src/commands/spec.js.map +1 -1
  143. package/dist/src/commands/update.d.ts.map +1 -1
  144. package/dist/src/commands/update.js +0 -7
  145. package/dist/src/commands/update.js.map +1 -1
  146. package/dist/src/commands/wiki.d.ts.map +1 -1
  147. package/dist/src/commands/wiki.js +8 -1
  148. package/dist/src/commands/wiki.js.map +1 -1
  149. package/dist/src/commands/workspace.d.ts +12 -0
  150. package/dist/src/commands/workspace.d.ts.map +1 -0
  151. package/dist/src/commands/workspace.js +230 -0
  152. package/dist/src/commands/workspace.js.map +1 -0
  153. package/dist/src/config/cli-tools-config.d.ts +5 -0
  154. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  155. package/dist/src/config/cli-tools-config.js +31 -0
  156. package/dist/src/config/cli-tools-config.js.map +1 -1
  157. package/dist/src/config/index.d.ts +9 -1
  158. package/dist/src/config/index.d.ts.map +1 -1
  159. package/dist/src/config/index.js +35 -1
  160. package/dist/src/config/index.js.map +1 -1
  161. package/dist/src/core/install-executor.d.ts +31 -0
  162. package/dist/src/core/install-executor.d.ts.map +1 -0
  163. package/dist/src/core/install-executor.js +231 -0
  164. package/dist/src/core/install-executor.js.map +1 -0
  165. package/dist/src/core/install-profile.d.ts +103 -0
  166. package/dist/src/core/install-profile.d.ts.map +1 -0
  167. package/dist/src/core/install-profile.js +225 -0
  168. package/dist/src/core/install-profile.js.map +1 -0
  169. package/dist/src/graph/kg/credibility.d.ts +37 -0
  170. package/dist/src/graph/kg/credibility.d.ts.map +1 -0
  171. package/dist/src/graph/kg/credibility.js +141 -0
  172. package/dist/src/graph/kg/credibility.js.map +1 -0
  173. package/dist/src/graph/kg/db/connection.d.ts +28 -0
  174. package/dist/src/graph/kg/db/connection.d.ts.map +1 -0
  175. package/dist/src/graph/kg/db/connection.js +142 -0
  176. package/dist/src/graph/kg/db/connection.js.map +1 -0
  177. package/dist/src/graph/kg/db/index.d.ts +5 -0
  178. package/dist/src/graph/kg/db/index.d.ts.map +1 -0
  179. package/dist/src/graph/kg/db/index.js +6 -0
  180. package/dist/src/graph/kg/db/index.js.map +1 -0
  181. package/dist/src/graph/kg/db/migrations.d.ts +8 -0
  182. package/dist/src/graph/kg/db/migrations.d.ts.map +1 -0
  183. package/dist/src/graph/kg/db/migrations.js +88 -0
  184. package/dist/src/graph/kg/db/migrations.js.map +1 -0
  185. package/dist/src/graph/kg/db/queries.d.ts +84 -0
  186. package/dist/src/graph/kg/db/queries.d.ts.map +1 -0
  187. package/dist/src/graph/kg/db/queries.js +471 -0
  188. package/dist/src/graph/kg/db/queries.js.map +1 -0
  189. package/dist/src/graph/kg/db/types.d.ts +123 -0
  190. package/dist/src/graph/kg/db/types.d.ts.map +1 -0
  191. package/dist/src/graph/kg/db/types.js +75 -0
  192. package/dist/src/graph/kg/db/types.js.map +1 -0
  193. package/dist/src/graph/kg/engine.d.ts +87 -0
  194. package/dist/src/graph/kg/engine.d.ts.map +1 -0
  195. package/dist/src/graph/kg/engine.js +247 -0
  196. package/dist/src/graph/kg/engine.js.map +1 -0
  197. package/dist/src/graph/kg/extraction/code/code-extractor.d.ts +40 -0
  198. package/dist/src/graph/kg/extraction/code/code-extractor.d.ts.map +1 -0
  199. package/dist/src/graph/kg/extraction/code/code-extractor.js +296 -0
  200. package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -0
  201. package/dist/src/graph/kg/extraction/code/dfm-extractor.d.ts +3 -0
  202. package/dist/src/graph/kg/extraction/code/dfm-extractor.d.ts.map +1 -0
  203. package/dist/src/graph/kg/extraction/code/dfm-extractor.js +122 -0
  204. package/dist/src/graph/kg/extraction/code/dfm-extractor.js.map +1 -0
  205. package/dist/src/graph/kg/extraction/code/generated-detection.d.ts +14 -0
  206. package/dist/src/graph/kg/extraction/code/generated-detection.d.ts.map +1 -0
  207. package/dist/src/graph/kg/extraction/code/generated-detection.js +65 -0
  208. package/dist/src/graph/kg/extraction/code/generated-detection.js.map +1 -0
  209. package/dist/src/graph/kg/extraction/code/languages/index.d.ts +9 -0
  210. package/dist/src/graph/kg/extraction/code/languages/index.d.ts.map +1 -0
  211. package/dist/src/graph/kg/extraction/code/languages/index.js +2119 -0
  212. package/dist/src/graph/kg/extraction/code/languages/index.js.map +1 -0
  213. package/dist/src/graph/kg/extraction/code/languages/typescript.d.ts +5 -0
  214. package/dist/src/graph/kg/extraction/code/languages/typescript.d.ts.map +1 -0
  215. package/dist/src/graph/kg/extraction/code/languages/typescript.js +191 -0
  216. package/dist/src/graph/kg/extraction/code/languages/typescript.js.map +1 -0
  217. package/dist/src/graph/kg/extraction/code/liquid-extractor.d.ts +3 -0
  218. package/dist/src/graph/kg/extraction/code/liquid-extractor.d.ts.map +1 -0
  219. package/dist/src/graph/kg/extraction/code/liquid-extractor.js +117 -0
  220. package/dist/src/graph/kg/extraction/code/liquid-extractor.js.map +1 -0
  221. package/dist/src/graph/kg/extraction/code/mybatis-extractor.d.ts +3 -0
  222. package/dist/src/graph/kg/extraction/code/mybatis-extractor.d.ts.map +1 -0
  223. package/dist/src/graph/kg/extraction/code/mybatis-extractor.js +84 -0
  224. package/dist/src/graph/kg/extraction/code/mybatis-extractor.js.map +1 -0
  225. package/dist/src/graph/kg/extraction/code/svelte-extractor.d.ts +3 -0
  226. package/dist/src/graph/kg/extraction/code/svelte-extractor.d.ts.map +1 -0
  227. package/dist/src/graph/kg/extraction/code/svelte-extractor.js +92 -0
  228. package/dist/src/graph/kg/extraction/code/svelte-extractor.js.map +1 -0
  229. package/dist/src/graph/kg/extraction/code/tree-sitter-types.d.ts +61 -0
  230. package/dist/src/graph/kg/extraction/code/tree-sitter-types.d.ts.map +1 -0
  231. package/dist/src/graph/kg/extraction/code/tree-sitter-types.js +53 -0
  232. package/dist/src/graph/kg/extraction/code/tree-sitter-types.js.map +1 -0
  233. package/dist/src/graph/kg/extraction/code/tree-sitter.d.ts +55 -0
  234. package/dist/src/graph/kg/extraction/code/tree-sitter.d.ts.map +1 -0
  235. package/dist/src/graph/kg/extraction/code/tree-sitter.js +227 -0
  236. package/dist/src/graph/kg/extraction/code/tree-sitter.js.map +1 -0
  237. package/dist/src/graph/kg/extraction/code/vue-extractor.d.ts +6 -0
  238. package/dist/src/graph/kg/extraction/code/vue-extractor.d.ts.map +1 -0
  239. package/dist/src/graph/kg/extraction/code/vue-extractor.js +109 -0
  240. package/dist/src/graph/kg/extraction/code/vue-extractor.js.map +1 -0
  241. package/dist/src/graph/kg/extraction/code/wasm-stability.d.ts +44 -0
  242. package/dist/src/graph/kg/extraction/code/wasm-stability.d.ts.map +1 -0
  243. package/dist/src/graph/kg/extraction/code/wasm-stability.js +140 -0
  244. package/dist/src/graph/kg/extraction/code/wasm-stability.js.map +1 -0
  245. package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.d.ts +3 -0
  246. package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.d.ts.map +1 -0
  247. package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.js +149 -0
  248. package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.js.map +1 -0
  249. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.d.ts +4 -0
  250. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.d.ts.map +1 -0
  251. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js +114 -0
  252. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js.map +1 -0
  253. package/dist/src/graph/kg/extraction/knowledge/issue-extractor.d.ts +3 -0
  254. package/dist/src/graph/kg/extraction/knowledge/issue-extractor.d.ts.map +1 -0
  255. package/dist/src/graph/kg/extraction/knowledge/issue-extractor.js +84 -0
  256. package/dist/src/graph/kg/extraction/knowledge/issue-extractor.js.map +1 -0
  257. package/dist/src/graph/kg/extraction/knowledge/spec-extractor.d.ts +3 -0
  258. package/dist/src/graph/kg/extraction/knowledge/spec-extractor.d.ts.map +1 -0
  259. package/dist/src/graph/kg/extraction/knowledge/spec-extractor.js +173 -0
  260. package/dist/src/graph/kg/extraction/knowledge/spec-extractor.js.map +1 -0
  261. package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.d.ts +3 -0
  262. package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.d.ts.map +1 -0
  263. package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.js +165 -0
  264. package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.js.map +1 -0
  265. package/dist/src/graph/kg/extraction/orchestrator.d.ts +6 -0
  266. package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -0
  267. package/dist/src/graph/kg/extraction/orchestrator.js +208 -0
  268. package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -0
  269. package/dist/src/graph/kg/index.d.ts +29 -0
  270. package/dist/src/graph/kg/index.d.ts.map +1 -0
  271. package/dist/src/graph/kg/index.js +35 -0
  272. package/dist/src/graph/kg/index.js.map +1 -0
  273. package/dist/src/graph/kg/query/context-builder.d.ts +38 -0
  274. package/dist/src/graph/kg/query/context-builder.d.ts.map +1 -0
  275. package/dist/src/graph/kg/query/context-builder.js +184 -0
  276. package/dist/src/graph/kg/query/context-builder.js.map +1 -0
  277. package/dist/src/graph/kg/query/index.d.ts +8 -0
  278. package/dist/src/graph/kg/query/index.d.ts.map +1 -0
  279. package/dist/src/graph/kg/query/index.js +6 -0
  280. package/dist/src/graph/kg/query/index.js.map +1 -0
  281. package/dist/src/graph/kg/query/scoring.d.ts +19 -0
  282. package/dist/src/graph/kg/query/scoring.d.ts.map +1 -0
  283. package/dist/src/graph/kg/query/scoring.js +158 -0
  284. package/dist/src/graph/kg/query/scoring.js.map +1 -0
  285. package/dist/src/graph/kg/query/search.d.ts +59 -0
  286. package/dist/src/graph/kg/query/search.d.ts.map +1 -0
  287. package/dist/src/graph/kg/query/search.js +158 -0
  288. package/dist/src/graph/kg/query/search.js.map +1 -0
  289. package/dist/src/graph/kg/query/traversal.d.ts +75 -0
  290. package/dist/src/graph/kg/query/traversal.d.ts.map +1 -0
  291. package/dist/src/graph/kg/query/traversal.js +420 -0
  292. package/dist/src/graph/kg/query/traversal.js.map +1 -0
  293. package/dist/src/graph/kg/resolution/callback-synthesizer.d.ts +41 -0
  294. package/dist/src/graph/kg/resolution/callback-synthesizer.d.ts.map +1 -0
  295. package/dist/src/graph/kg/resolution/callback-synthesizer.js +450 -0
  296. package/dist/src/graph/kg/resolution/callback-synthesizer.js.map +1 -0
  297. package/dist/src/graph/kg/resolution/frameworks/index.d.ts +18 -0
  298. package/dist/src/graph/kg/resolution/frameworks/index.d.ts.map +1 -0
  299. package/dist/src/graph/kg/resolution/frameworks/index.js +632 -0
  300. package/dist/src/graph/kg/resolution/frameworks/index.js.map +1 -0
  301. package/dist/src/graph/kg/resolution/import-resolver.d.ts +73 -0
  302. package/dist/src/graph/kg/resolution/import-resolver.d.ts.map +1 -0
  303. package/dist/src/graph/kg/resolution/import-resolver.js +257 -0
  304. package/dist/src/graph/kg/resolution/import-resolver.js.map +1 -0
  305. package/dist/src/graph/kg/resolution/index.d.ts +11 -0
  306. package/dist/src/graph/kg/resolution/index.d.ts.map +1 -0
  307. package/dist/src/graph/kg/resolution/index.js +7 -0
  308. package/dist/src/graph/kg/resolution/index.js.map +1 -0
  309. package/dist/src/graph/kg/resolution/knowledge-resolver.d.ts +22 -0
  310. package/dist/src/graph/kg/resolution/knowledge-resolver.d.ts.map +1 -0
  311. package/dist/src/graph/kg/resolution/knowledge-resolver.js +288 -0
  312. package/dist/src/graph/kg/resolution/knowledge-resolver.js.map +1 -0
  313. package/dist/src/graph/kg/resolution/name-matcher.d.ts +25 -0
  314. package/dist/src/graph/kg/resolution/name-matcher.d.ts.map +1 -0
  315. package/dist/src/graph/kg/resolution/name-matcher.js +162 -0
  316. package/dist/src/graph/kg/resolution/name-matcher.js.map +1 -0
  317. package/dist/src/graph/kg/schema.sql +210 -0
  318. package/dist/src/graph/kg/surface/cli.d.ts +3 -0
  319. package/dist/src/graph/kg/surface/cli.d.ts.map +1 -0
  320. package/dist/src/graph/kg/surface/cli.js +500 -0
  321. package/dist/src/graph/kg/surface/cli.js.map +1 -0
  322. package/dist/src/graph/kg/surface/hook-injector.d.ts +33 -0
  323. package/dist/src/graph/kg/surface/hook-injector.d.ts.map +1 -0
  324. package/dist/src/graph/kg/surface/hook-injector.js +172 -0
  325. package/dist/src/graph/kg/surface/hook-injector.js.map +1 -0
  326. package/dist/src/graph/kg/surface/index.d.ts +6 -0
  327. package/dist/src/graph/kg/surface/index.d.ts.map +1 -0
  328. package/dist/src/graph/kg/surface/index.js +5 -0
  329. package/dist/src/graph/kg/surface/index.js.map +1 -0
  330. package/dist/src/graph/kg/surface/mcp-tools.d.ts +20 -0
  331. package/dist/src/graph/kg/surface/mcp-tools.d.ts.map +1 -0
  332. package/dist/src/graph/kg/surface/mcp-tools.js +253 -0
  333. package/dist/src/graph/kg/surface/mcp-tools.js.map +1 -0
  334. package/dist/src/graph/kg/sync/incremental-sync.d.ts +24 -0
  335. package/dist/src/graph/kg/sync/incremental-sync.d.ts.map +1 -0
  336. package/dist/src/graph/kg/sync/incremental-sync.js +71 -0
  337. package/dist/src/graph/kg/sync/incremental-sync.js.map +1 -0
  338. package/dist/src/graph/kg/sync/index.d.ts +5 -0
  339. package/dist/src/graph/kg/sync/index.d.ts.map +1 -0
  340. package/dist/src/graph/kg/sync/index.js +4 -0
  341. package/dist/src/graph/kg/sync/index.js.map +1 -0
  342. package/dist/src/graph/kg/sync/watch-policy.d.ts +33 -0
  343. package/dist/src/graph/kg/sync/watch-policy.d.ts.map +1 -0
  344. package/dist/src/graph/kg/sync/watch-policy.js +90 -0
  345. package/dist/src/graph/kg/sync/watch-policy.js.map +1 -0
  346. package/dist/src/hooks/constants.d.ts +0 -2
  347. package/dist/src/hooks/constants.d.ts.map +1 -1
  348. package/dist/src/hooks/constants.js +0 -2
  349. package/dist/src/hooks/constants.js.map +1 -1
  350. package/dist/src/hooks/keyword-spec-injector.d.ts +6 -0
  351. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -1
  352. package/dist/src/hooks/keyword-spec-injector.js +157 -81
  353. package/dist/src/hooks/keyword-spec-injector.js.map +1 -1
  354. package/dist/src/hooks/kg-auto-init.d.ts +13 -0
  355. package/dist/src/hooks/kg-auto-init.d.ts.map +1 -0
  356. package/dist/src/hooks/kg-auto-init.js +38 -0
  357. package/dist/src/hooks/kg-auto-init.js.map +1 -0
  358. package/dist/src/hooks/kg-context-injector.d.ts +1 -3
  359. package/dist/src/hooks/kg-context-injector.d.ts.map +1 -1
  360. package/dist/src/hooks/kg-context-injector.js +12 -17
  361. package/dist/src/hooks/kg-context-injector.js.map +1 -1
  362. package/dist/src/hooks/kg-sync-hook.d.ts +1 -9
  363. package/dist/src/hooks/kg-sync-hook.d.ts.map +1 -1
  364. package/dist/src/hooks/kg-sync-hook.js +21 -90
  365. package/dist/src/hooks/kg-sync-hook.js.map +1 -1
  366. package/dist/src/hooks/spec-analytics.d.ts +1 -0
  367. package/dist/src/hooks/spec-analytics.d.ts.map +1 -1
  368. package/dist/src/hooks/spec-analytics.js +1 -3
  369. package/dist/src/hooks/spec-analytics.js.map +1 -1
  370. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  371. package/dist/src/hooks/spec-injector.js +65 -1
  372. package/dist/src/hooks/spec-injector.js.map +1 -1
  373. package/dist/src/i18n/locales/en.d.ts.map +1 -1
  374. package/dist/src/i18n/locales/en.js +52 -9
  375. package/dist/src/i18n/locales/en.js.map +1 -1
  376. package/dist/src/i18n/locales/zh.d.ts.map +1 -1
  377. package/dist/src/i18n/locales/zh.js +52 -9
  378. package/dist/src/i18n/locales/zh.js.map +1 -1
  379. package/dist/src/i18n/types.d.ts +40 -4
  380. package/dist/src/i18n/types.d.ts.map +1 -1
  381. package/dist/src/tools/__tests__/domain-search-debug.d.ts +2 -0
  382. package/dist/src/tools/__tests__/domain-search-debug.d.ts.map +1 -0
  383. package/dist/src/tools/__tests__/domain-search-debug.js +32 -0
  384. package/dist/src/tools/__tests__/domain-search-debug.js.map +1 -0
  385. package/dist/src/tools/domain-loader.d.ts +63 -0
  386. package/dist/src/tools/domain-loader.d.ts.map +1 -0
  387. package/dist/src/tools/domain-loader.js +295 -0
  388. package/dist/src/tools/domain-loader.js.map +1 -0
  389. package/dist/src/tools/domain-matcher.d.ts +24 -0
  390. package/dist/src/tools/domain-matcher.d.ts.map +1 -0
  391. package/dist/src/tools/domain-matcher.js +117 -0
  392. package/dist/src/tools/domain-matcher.js.map +1 -0
  393. package/dist/src/tools/domain-scanner.d.ts +32 -0
  394. package/dist/src/tools/domain-scanner.d.ts.map +1 -0
  395. package/dist/src/tools/domain-scanner.js +263 -0
  396. package/dist/src/tools/domain-scanner.js.map +1 -0
  397. package/dist/src/tools/domain-schema.d.ts +18 -0
  398. package/dist/src/tools/domain-schema.d.ts.map +1 -0
  399. package/dist/src/tools/domain-schema.js +104 -0
  400. package/dist/src/tools/domain-schema.js.map +1 -0
  401. package/dist/src/tools/spec-entry-parser.d.ts +1 -0
  402. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -1
  403. package/dist/src/tools/spec-entry-parser.js +1 -0
  404. package/dist/src/tools/spec-entry-parser.js.map +1 -1
  405. package/dist/src/tools/spec-loader.d.ts +5 -0
  406. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  407. package/dist/src/tools/spec-loader.js +10 -2
  408. package/dist/src/tools/spec-loader.js.map +1 -1
  409. package/dist/src/tui/install-ui/ConfigPanel.d.ts.map +1 -1
  410. package/dist/src/tui/install-ui/ConfigPanel.js +9 -1
  411. package/dist/src/tui/install-ui/ConfigPanel.js.map +1 -1
  412. package/dist/src/tui/install-ui/GroupedHub.d.ts +55 -0
  413. package/dist/src/tui/install-ui/GroupedHub.d.ts.map +1 -0
  414. package/dist/src/tui/install-ui/GroupedHub.js +210 -0
  415. package/dist/src/tui/install-ui/GroupedHub.js.map +1 -0
  416. package/dist/src/tui/install-ui/HooksConfig.d.ts +10 -5
  417. package/dist/src/tui/install-ui/HooksConfig.d.ts.map +1 -1
  418. package/dist/src/tui/install-ui/HooksConfig.js +83 -18
  419. package/dist/src/tui/install-ui/HooksConfig.js.map +1 -1
  420. package/dist/src/tui/install-ui/InstallConfirm.d.ts +1 -30
  421. package/dist/src/tui/install-ui/InstallConfirm.d.ts.map +1 -1
  422. package/dist/src/tui/install-ui/InstallConfirm.js +72 -12
  423. package/dist/src/tui/install-ui/InstallConfirm.js.map +1 -1
  424. package/dist/src/tui/install-ui/InstallExecution.d.ts +4 -21
  425. package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -1
  426. package/dist/src/tui/install-ui/InstallExecution.js +89 -260
  427. package/dist/src/tui/install-ui/InstallExecution.js.map +1 -1
  428. package/dist/src/tui/install-ui/InstallFlow.d.ts +3 -7
  429. package/dist/src/tui/install-ui/InstallFlow.d.ts.map +1 -1
  430. package/dist/src/tui/install-ui/InstallFlow.js +45 -267
  431. package/dist/src/tui/install-ui/InstallFlow.js.map +1 -1
  432. package/dist/src/tui/install-ui/InstallHub.d.ts.map +1 -1
  433. package/dist/src/tui/install-ui/InstallHub.js +2 -4
  434. package/dist/src/tui/install-ui/InstallHub.js.map +1 -1
  435. package/dist/src/tui/install-ui/InstallResult.d.ts.map +1 -1
  436. package/dist/src/tui/install-ui/InstallResult.js +1 -5
  437. package/dist/src/tui/install-ui/InstallResult.js.map +1 -1
  438. package/dist/src/tui/install-ui/index.d.ts +5 -1
  439. package/dist/src/tui/install-ui/index.d.ts.map +1 -1
  440. package/dist/src/tui/install-ui/index.js +1 -0
  441. package/dist/src/tui/install-ui/index.js.map +1 -1
  442. package/dist/src/tui/install-ui/types.d.ts +39 -0
  443. package/dist/src/tui/install-ui/types.d.ts.map +1 -1
  444. package/dist/src/tui/install-ui/types.js +1 -1
  445. package/dist/src/tui/install-ui/types.js.map +1 -1
  446. package/dist/src/tui/install-ui/useInstallFlowState.d.ts +69 -0
  447. package/dist/src/tui/install-ui/useInstallFlowState.d.ts.map +1 -0
  448. package/dist/src/tui/install-ui/useInstallFlowState.js +288 -0
  449. package/dist/src/tui/install-ui/useInstallFlowState.js.map +1 -0
  450. package/dist/src/tui/shared/components.d.ts +4 -0
  451. package/dist/src/tui/shared/components.d.ts.map +1 -1
  452. package/dist/src/tui/shared/components.js +4 -0
  453. package/dist/src/tui/shared/components.js.map +1 -1
  454. package/dist/src/tui/shared/index.d.ts +1 -1
  455. package/dist/src/tui/shared/index.d.ts.map +1 -1
  456. package/dist/src/tui/shared/index.js +1 -1
  457. package/dist/src/tui/shared/index.js.map +1 -1
  458. package/dist/src/tui/shared/tokens.d.ts +5 -5
  459. package/dist/src/tui/shared/tokens.js +5 -5
  460. package/dist/src/tui/shared/tokens.js.map +1 -1
  461. package/dist/src/types/index.d.ts +9 -0
  462. package/dist/src/types/index.d.ts.map +1 -1
  463. package/dist/src/utils/cli-format.d.ts +2 -1
  464. package/dist/src/utils/cli-format.d.ts.map +1 -1
  465. package/dist/src/utils/cli-format.js +14 -3
  466. package/dist/src/utils/cli-format.js.map +1 -1
  467. package/dist/src/utils/cooldown-guard.d.ts +17 -0
  468. package/dist/src/utils/cooldown-guard.d.ts.map +1 -0
  469. package/dist/src/utils/cooldown-guard.js +59 -0
  470. package/dist/src/utils/cooldown-guard.js.map +1 -0
  471. package/dist/src/utils/jsonl-log.d.ts.map +1 -1
  472. package/dist/src/utils/jsonl-log.js +2 -1
  473. package/dist/src/utils/jsonl-log.js.map +1 -1
  474. package/dist/src/utils/update-notices.js +17 -4
  475. package/dist/src/utils/update-notices.js.map +1 -1
  476. package/package.json +4 -5
  477. package/workflows/claude-instructions.md +23 -0
  478. package/workflows/codex-instructions.md +22 -0
  479. package/workflows/finish-work.md +25 -0
  480. package/workflows/updates/update-v3-setup.md +7 -15
  481. package/dashboard/dist/assets/McpPage-Im6s4pGR.js +0 -21
  482. package/dashboard/dist/assets/SpecsPage-gr4KX51-.js +0 -36
  483. package/dashboard/dist/assets/folder-B8ODoZfb.js +0 -16
  484. package/dashboard/dist/assets/index-6-yE5Yl9.css +0 -1
  485. package/dashboard/dist/assets/pen-line-CR8GaHt-.js +0 -6
@@ -73,7 +73,8 @@
73
73
  {"name": "team-review", "category": "team", "description": "代码审查团队: 多维度扫描和漏洞审查", "source": "../team-review/SKILL.md"},
74
74
  {"name": "team-tech-debt", "category": "team", "description": "技术债务团队: 债务识别和清理", "source": "../team-tech-debt/SKILL.md"},
75
75
  {"name": "team-testing", "category": "team", "description": "测试团队: 测试规划和执行", "source": "../team-testing/SKILL.md"},
76
- {"name": "codify-to-knowhow", "category": "knowledge", "description": "Manifest 驱动的知识资产生成器", "source": "../codify-to-knowhow/SKILL.md"}
76
+ {"name": "codify-to-knowhow", "category": "knowledge", "description": "Manifest 驱动的知识资产生成器", "source": "../codify-to-knowhow/SKILL.md"},
77
+ {"name": "insight-challenge", "category": "quality", "description": "对抗性审查 — 质疑发现、验证声明、产出结构化裁决", "source": "../insight-challenge/SKILL.md"}
77
78
  ],
78
79
  "agents": [
79
80
  {"name": "workflow-analyzer", "description": "多维度分析 — 证据评分和推荐", "category": "workflow"},
@@ -124,7 +125,7 @@
124
125
  ],
125
126
  "categories": {
126
127
  "commands": ["core", "pipeline", "milestone", "manage", "quality", "spec", "learn", "wiki", "worktree", "team", "ralph", "ui", "tools"],
127
- "skills": ["meta", "team", "knowledge"],
128
+ "skills": ["meta", "team", "knowledge", "quality"],
128
129
  "agents": ["workflow", "team", "planning", "cli", "ui"]
129
130
  },
130
131
  "guide_files": [
@@ -271,8 +271,7 @@ resolve_milestone(phase_number):
271
271
  | phase 已存在 + 无任何 artifact | `analyze` |
272
272
  | phase 已存在 + 最新 artifact = analyze | `plan` |
273
273
  | phase 已存在 + 最新 artifact = plan | `execute` |
274
- | phase 已存在 + 最新 artifact = execute | `verify` |
275
- | phase 已存在 + 最新 artifact = verify | → refine from result files |
274
+ | phase 已存在 + 最新 artifact = execute | refine from post-execute results |
276
275
 
277
276
  **关键不变量**:artifact 过滤按 `session.phase`,不读 `state.json.current_phase`。`phase_is_new` → 直接 `analyze`。
278
277
 
@@ -291,11 +290,13 @@ resolve_milestone(phase_number):
291
290
  | `medium` / `small` | analyze-macro → plan --from analyze:{ANL_ID} → execute → ...(跳过 roadmap + analyze-phase) |
292
291
  | `unknown` | 默认走 large 路径,post-analyze-scope 决策节点再纠正 |
293
292
 
294
- **Refine from verify results:**
293
+ **Refine from post-execute results:**
294
+
295
+ 在 execute artifact 的 scratch dir 中检查结果文件(verification.json 由 execute 内置 gate 产出):
295
296
 
296
297
  | Condition | Position |
297
298
  |-----------|----------|
298
- | verification.json: passed==false or gaps[] | `verify-failed` |
299
+ | verification.json passed==false gaps[] | `execute` (触发 post-execute fix loop) |
299
300
  | passed==true, no review.json | `business-test` |
300
301
  | review.json: verdict=="BLOCK" | `review-failed` |
301
302
  | review.json: verdict!="BLOCK" | `test` |
@@ -306,7 +307,7 @@ resolve_milestone(phase_number):
306
307
 
307
308
  决定下游质量管线长度。读 `session.quality_mode_override`(CLI 标志 `--quality`),无则按规则推断:
308
309
 
309
- | Condition | Mode | Pipeline (verify 之后) |
310
+ | Condition | Mode | Pipeline (execute 之后) |
310
311
  |-----------|------|-------------------------|
311
312
  | Has `specs/REQ-*.md` + 当前 phase 业务范围明确 | `full` | business-test → review → test-gen → test |
312
313
  | Default | `standard` | review → test-gen (当 coverage<80%) → test |
@@ -337,7 +338,7 @@ options:
337
338
  - label: "统一规划 (Recommended)"
338
339
  description: "一次性分析+规划整个里程碑所有 phase,analyze/plan 走里程碑级,适合 phase 间关联紧密"
339
340
  - label: "独立规划"
340
- description: "逐个 phase 走完整生命周期(analyze→plan→execute→verify→...),适合 phase 间独立性高"
341
+ description: "逐个 phase 走完整生命周期(analyze→plan→execute→...),适合 phase 间独立性高"
341
342
  ```
342
343
 
343
344
  写入 `session.planning_mode`(`"unified"` 或 `"independent"`)。`A_BUILD_STEPS` 据此决定 skill args 是否携带 `{phase}` 占位符。
@@ -371,7 +372,7 @@ narrow → derive defaults from intent + codebase, skip questions.
371
372
  { "id": "G1", "goal": "<deliverable>", "boundary": "<in/out note>",
372
373
  "done_when": "<objectively checkable condition>",
373
374
  "evidence": "verification.json|review.json|uat.md|<test path>",
374
- "lifecycle": ["analyze","execute","verify"], "status": "pending" }
375
+ "lifecycle": ["analyze","execute"], "status": "pending" }
375
376
  ```
376
377
  `done_when` 必须客观可验证,且引用 ralph 已产出的 artifact;`lifecycle` 字段映射到产出 evidence 的生命周期 stage。
377
378
 
@@ -412,7 +413,7 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
412
413
  3. **quality_mode 过滤**:按 `session.quality_mode` 排除不匹配 stage
413
414
  3.5. **grill auto_confirm 跳过**:`auto_confirm == true` 时删除 `grill` stage(grill 为交互式苏格拉底拷问,不支持自动模式);brainstorm args 不含 `--from grill:*`
414
415
  4. **决策节点**:每个 Decision after 非空的 stage 之后插入 `{ decision: "<gate>", retry_count: 0, max_retries: 2, command_scope: null, command_path: null }`
415
- 5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(verify/review/test)之后、`milestone-complete` 之前插入 `decision:post-goal-audit`
416
+ 5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(execute/review/test)之后、`milestone-complete` 之前插入 `decision:post-goal-audit`
416
417
  6. **终点硬约束**:chain 以 `milestone-complete` 结尾
417
418
  7. **goal_ref 传播**:`task_decomposition` 存在时,每个 step 按 `step.stage ∈ g.lifecycle` 匹配 `step.goal_ref = g.id`(多匹配取字典序最小);decision 节点不打 goal_ref
418
419
  8. **占位符**:independent 保留 `{phase}` `{intent}`;unified 不带 `{phase}`
@@ -560,7 +561,7 @@ Runs only when `task_decomposition` present.
560
561
  3. 路径 B(`medium` / `small`):
561
562
  - 删除 `goal-audit` 之前所有未完成的 `roadmap` + `analyze` (phase) step
562
563
  - 把下一个未完成的 `plan` step 改为 `maestro-plan --from analyze:{analyze_macro_id}`,去掉 `{phase}`,`source_artifact_ref = analyze:{analyze_macro_id}`
563
- - 后续 `execute` / `verify` 等沿用同一 standalone scope(不带 `{phase}`,由 plan 写出的 task 列表驱动)
564
+ - 后续 `execute` 等沿用同一 standalone scope(不带 `{phase}`,由 plan 写出的 task 列表驱动)
564
565
  4. 路径 C(`unknown`):
565
566
  - 非 auto_confirm → ask_user 二选一(large / medium-small);auto_confirm → 默认 large
566
567
  5. Reindex steps,标 decision completed,write status.json
@@ -621,7 +622,7 @@ Runs only when `task_decomposition` present.
621
622
  "index": 0,
622
623
  "skill": "", // 执行 step 有值;decision 节点为空字符串/null
623
624
  "args": "",
624
- "stage": "", // brainstorm|blueprint|init|analyze-macro|roadmap|analyze|plan|execute|verify|...
625
+ "stage": "", // brainstorm|blueprint|init|analyze-macro|roadmap|analyze|plan|execute|...
625
626
  "scope": null, // "phase"|"standalone"|"milestone"|null(plan 等需要)
626
627
  "decision": null, // 非 null → decision 节点(值为 gate 名,如 "post-execute");null → 执行 step
627
628
  "retry_count": 0, // decision 节点专用
@@ -301,14 +301,15 @@ resolve_milestone(phase_number):
301
301
  | phase 已存在 + 无任何 artifact | `analyze` |
302
302
  | phase 已存在 + 最新 artifact = analyze | `plan` |
303
303
  | phase 已存在 + 最新 artifact = plan | `execute` |
304
- | phase 已存在 + 最新 artifact = execute | `verify` |
305
- | phase 已存在 + 最新 artifact = verify | → refine from result files |
304
+ | phase 已存在 + 最新 artifact = execute | refine from post-execute results |
306
305
 
307
- **Refine from verify results:**
306
+ **Refine from post-execute results:**
307
+
308
+ 在 execute artifact 的 scratch dir 中检查结果文件(verification.json 由 execute 内置 gate 产出):
308
309
 
309
310
  | Condition | Position |
310
311
  |-----------|----------|
311
- | verification.json: passed==false or gaps[] | `verify-failed` |
312
+ | verification.json passed==false gaps[] | `execute` (触发 post-execute fix loop) |
312
313
  | passed==true, no review.json | `business-test` |
313
314
  | review.json: verdict=="BLOCK" | `review-failed` |
314
315
  | review.json: verdict!="BLOCK" | `test` |
@@ -334,7 +335,7 @@ resolve_milestone(phase_number):
334
335
 
335
336
  读 `session.quality_mode_override`(CLI `--quality`),无则按规则推断:
336
337
 
337
- | Condition | Mode | Pipeline (verify 之后) |
338
+ | Condition | Mode | Pipeline (execute 之后) |
338
339
  |-----------|------|-------------------------|
339
340
  | Has `specs/REQ-*.md` + 当前 phase 业务范围明确 | `full` | business-test → review → test-gen → test |
340
341
  | Default | `standard` | review → test-gen (当 coverage<80%) → test |
@@ -363,7 +364,7 @@ options:
363
364
  - label: "统一规划 (Recommended)"
364
365
  description: "一次性分析+规划整个里程碑所有 phase,analyze/plan 走里程碑级,适合 phase 间关联紧密"
365
366
  - label: "独立规划"
366
- description: "逐个 phase 走完整生命周期(analyze→plan→execute→verify→...),适合 phase 间独立性高"
367
+ description: "逐个 phase 走完整生命周期(analyze→plan→execute→...),适合 phase 间独立性高"
367
368
  ```
368
369
 
369
370
  写入 `session.planning_mode`(`"unified"` 或 `"independent"`)。
@@ -395,7 +396,7 @@ narrow → derive defaults from intent + codebase, skip questions.
395
396
  { "id": "G1", "goal": "<deliverable>", "boundary": "<in/out note>",
396
397
  "done_when": "<objectively checkable condition>",
397
398
  "evidence": "verification.json|review.json|uat.md|<test path>",
398
- "lifecycle": ["analyze","execute","verify"], "status": "pending" }
399
+ "lifecycle": ["analyze","execute"], "status": "pending" }
399
400
  ```
400
401
  `done_when` 必须客观可验证,且引用 ralph 已产出的 artifact;`lifecycle` 字段映射到产出 evidence 的生命周期 stage。
401
402
 
@@ -432,7 +433,7 @@ narrow → derive defaults from intent + codebase, skip questions.
432
433
  2. **跳过已完成**:跳过当前 milestone+phase 下已有 completed artifact 的 stage(按 `session.phase` 过滤);unified 按 milestone 过滤
433
434
  3. **quality_mode 过滤**:按 `session.quality_mode` 排除不匹配 stage
434
435
  4. **决策节点**:每个 Decision after 非空的 stage 之后插入 `{ decision: "<gate>", retry_count: 0, max_retries: 2, command_scope: null, command_path: null }`
435
- 5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(verify/review/test)之后、`milestone-complete` 之前插入 `decision:post-goal-audit`
436
+ 5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(execute/review/test)之后、`milestone-complete` 之前插入 `decision:post-goal-audit`
436
437
  6. **终点硬约束**:chain 以 `milestone-complete` 结尾
437
438
  7. **goal_ref 传播**:`task_decomposition` 存在时,每个 step 按 `step.stage ∈ g.lifecycle` 匹配 `step.goal_ref = g.id`(多匹配取字典序最小);decision 节点不打 goal_ref
438
439
  8. **占位符**:independent 保留 `{phase}` `{intent}`;unified 不带 `{phase}`
@@ -659,7 +660,7 @@ Write enriched args back to status.json.
659
660
  3. `medium` / `small`:
660
661
  - 删除 `goal-audit` 之前未完成的 `roadmap` + `analyze` (phase) step
661
662
  - 下一个未完成的 `plan` step → `maestro-plan --from analyze:{analyze_macro_id}`,去掉 `{phase}`,`source_artifact_ref = analyze:{analyze_macro_id}`
662
- - 后续 `execute` / `verify` 同 standalone scope
663
+ - 后续 `execute` 等沿用同一 standalone scope
663
664
  4. `unknown`:非 auto_confirm → ask_user 二选一(large / medium-small);auto_confirm → 默认 large
664
665
  5. release 协议 — 完成分支;reindex
665
666
  6. Display: ◆ Scope verdict: {verdict} → {kept|collapsed to standalone via analyze:{ANL_ID}}
@@ -756,7 +757,7 @@ Display: `[{index}/{total}] ✗ {step.skill} 失败,会话已暂停。/maestro
756
757
  "index": 0,
757
758
  "skill": "", // 执行 step 有值;decision 节点为空字符串/null
758
759
  "args": "",
759
- "stage": "", // brainstorm|blueprint|init|analyze-macro|roadmap|analyze|plan|execute|verify|...
760
+ "stage": "", // brainstorm|blueprint|init|analyze-macro|roadmap|analyze|plan|execute|...
760
761
  "scope": null, // "phase"|"standalone"|"milestone"|null(plan 等需要)
761
762
  "decision": null, // null = 执行 step;非 null = decision step (值为 gate 名)
762
763
  "retry_count": 0, // decision step
@@ -0,0 +1,475 @@
1
+ ---
2
+ name: odyssey-debug
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]"
5
+ allowed-tools:
6
+ - read_file
7
+ - write_file
8
+ - edit_file
9
+ - shell
10
+ - find_files
11
+ - search
12
+ - delegate_subagent
13
+ - ask_user
14
+ ---
15
+ <!-- Open-standard mirror generated by scripts/build-agents-standard.mjs — do not edit; re-run after editing .claude/ source. -->
16
+
17
+ <purpose>
18
+ Closed-loop deep debugging: archaeology (what changed) → explore (call chains, error gaps) → diagnose (hypothesis-driven) → fix & confirm → generalize (举一反三) → discover siblings → persist learnings.
19
+
20
+ Unlike `quality-debug` (fast fix), this treats every bug as a learning signal — digs into git history before hypotheses, confirms fixes with CLI review, scans for siblings of the root cause.
21
+
22
+ Core philosophy:
23
+ - **Archaeology before hypothesis** — look at what changed before guessing why
24
+ - **Fix one, find many** — a single bug reveals a class of bugs
25
+ - **Decision journal** — human-judgment items recorded, not lost
26
+ - **CLI-assisted review** — delegate for second-opinion analysis
27
+
28
+ **三句哲学约束(穷尽迭代):**
29
+ 1. **零遗留** — 根因必须确认到底,修复必须验证通过,泛化必须扫描穷尽
30
+ 2. **穷尽迭代** — 假设失败不放弃:扩范围 → 换视角 → 升级工具,直到根因确认或明确 INCONCLUSIVE
31
+ 3. **改进即标准** — 修复后重新确认同区域无新问题,泛化发现的同类 bug 全部处理
32
+
33
+ Entry: `/odyssey-debug "issue"` (full cycle) | `-c` (resume) | `--skip-fix` (analysis-only)
34
+ </purpose>
35
+
36
+ <boundary>
37
+ **范围内:** 单一 bug/issue 的完整闭环 — 考古 → 探索 → 诊断 → 修复 → 确认 → 泛化同类 → 沉淀
38
+ **范围外:** 新功能开发 → `/odyssey-planex` | 代码质量审查 → `/odyssey-review-test-fix` | UI 视觉优化 → `/odyssey-ui` | 架构重设计 → `/maestro-plan`
39
+ **探索自由度:** 边界内自由探索 — 可追踪任意调用链、分析任意历史、测试任意假设。泛化阶段可扫描全项目寻找同类问题。
40
+ **模板支持:** `--template <name>` 从预定义调查策略启动,跳过假设生成直接进入针对性诊断:
41
+
42
+ | Template | 调查策略 | 适用场景 |
43
+ |----------|---------|---------|
44
+ | `performance` | profiling → hot path → allocation → cache | 性能劣化 |
45
+ | `memory-leak` | heap snapshot → retention chain → lifecycle | 内存泄漏 |
46
+ | `race-condition` | timeline → concurrent access → lock analysis | 竞态条件 |
47
+ | `regression` | git bisect → diff analysis → boundary check | 回归问题 |
48
+ | `crash` | stack trace → null chain → error propagation | 崩溃/异常 |
49
+ </boundary>
50
+
51
+ <execution_discipline>
52
+ **三条铁律(所有阶段适用):**
53
+
54
+ 1. **Phase auto-commit** — 每个阶段完成后**自动** `git commit`,无需用户确认
55
+ - 代码变更 + understanding.md → `git add` → `git commit -m "odyssey-debug({slug}): {phase} — {摘要}"`
56
+ - session.json / evidence.ndjson 为运行时状态,不纳入 commit
57
+ - 确保每个阶段的进展可回溯、可恢复
58
+
59
+ 2. **有把握才改** — 仅修改自己有把握的内容;不确定的记录决策等人判断
60
+ - 有把握 → 直接修改代码,commit
61
+ - 需要决策 → 记录 `evidence.ndjson {"phase":"decision","status":"pending"}` 不改代码
62
+ - 禁止猜测性修改,宁可多记录一条 decision 也不冒险改错
63
+
64
+ 3. **多 CLI 辅助** — 利用 `maestro delegate` 调用多个 CLI 工具交叉验证
65
+ - 关键判断用不同 `--role`(analyze / review / explore)获取多视角
66
+ - 修复前后各做一次 CLI review 确认
67
+ - 不同阶段可调用不同工具,综合多方意见再行动
68
+ </execution_discipline>
69
+
70
+ <context>
71
+ $ARGUMENTS — issue description and optional flags.
72
+
73
+ **Flags:** `--skip-fix` analysis-only | `--skip-generalize` quick fix | `--template <name>` 预定义策略 | `--auto` no delegate confirmation | `-y` auto-confirm all decisions | `-c` resume last session
74
+
75
+ **Session**: `SESSION_DIR = .workflow/scratch/{YYYYMMDD}-debug-odyssey-{slug}/`
76
+
77
+ **Output — 4 files:**
78
+ ```
79
+ SESSION_DIR/
80
+ ├── session.json # state + confirmation + patterns + phase_goals
81
+ ├── evidence.ndjson # append-only evidence trail (phase field distinguishes origin)
82
+ ├── explore.json # structured CLI exploration snapshot
83
+ └── understanding.md # evolving narrative — 9 sections
84
+ ```
85
+
86
+ **session.json schema:**
87
+ ```json
88
+ {
89
+ "session_id": "debug-odyssey-{YYYYMMDD-HHmmss}", "issue": "",
90
+ "flags": { "skip_fix": false, "skip_generalize": false, "auto": false, "auto_confirm": false },
91
+ "current_state": "S_INTAKE", "diagnosis_retries": 0,
92
+ "root_cause": null, "patterns": [], "confirmation": null,
93
+ "phase_goals": [], "phase_goals_all_done": false, "self_iteration_log": [],
94
+ "generalization_stats": null,
95
+ "cross_phase_loops": 0, "max_loops": 3,
96
+ "created_at": "", "updated_at": ""
97
+ }
98
+ ```
99
+
100
+ **evidence.ndjson — unified trail:**
101
+ ```json
102
+ {"ts":"","phase":"archaeology|explore|diagnosis|discovery|decision|self-iteration","type":"","source":"","content":"","note":""}
103
+ ```
104
+ Phase-specific fields:
105
+ - `archaeology`: `sha`, `author`, `date`, `message`, `relevance` (high|medium|low)
106
+ - `explore`: `category` (call_chain|recent_change|error_gap|similar_pattern), `detail`
107
+ - `diagnosis`: `hypothesis`, `result` (confirmed|disproved|inconclusive)
108
+ - `discovery`: `file`, `line`, `classification` (safe|risk|bug), `action` (fix|issue|decision|skip)
109
+ - `decision`: `question`, `options`, `context`, `status` (pending|resolved|deferred), `resolution`
110
+ - `self-iteration`: `stage`, `round`, `assessment`, `expansion`
111
+
112
+ **explore.json schema:**
113
+ ```json
114
+ {
115
+ "call_chains": [{"entry":"","chain":["file:line"]}],
116
+ "recent_changes": [{"file":"","commits":[{"sha":"","message":"","date":""}]}],
117
+ "error_gaps": [{"file":"","line":0,"description":""}],
118
+ "similar_patterns": [{"file":"","line":0,"description":""}],
119
+ "cli_tool": "", "timestamp": ""
120
+ }
121
+ ```
122
+
123
+ **phase_goals[] — auto-derived from flags:**
124
+
125
+ | ID | Goal | done_when | phase | skip_when |
126
+ |----|------|-----------|-------|-----------|
127
+ | G1 | Root cause identified | evidence.ndjson has phase=diagnosis result=confirmed | S_DIAGNOSE | — |
128
+ | G2 | Explore context gathered | explore.json ≥1 category populated | S_EXPLORE | — |
129
+ | G3 | Fix applied and confirmed | confirmation.overall == confirmed | S_CONFIRM | skip_fix |
130
+ | G4 | Pattern generalized | patterns[] ≥1 entry | S_GENERALIZE | skip_generalize |
131
+ | G5 | Discoveries triaged | all scan hits classified | S_DISCOVER | skip_generalize |
132
+ | G6 | Learnings persisted | spec entries created OR no actionable learnings | S_RECORD | — |
133
+
134
+ When `flags[skip_when] == true` → auto set `status: "skipped"`, `completion_confirmed: true`.
135
+
136
+ **understanding.md — 9 sections (written by owning phase):**
137
+ 1. Issue & Scope ← S_INTAKE | 2. Archaeology Summary ← S_ARCHAEOLOGY | 3. Exploration ← S_EXPLORE
138
+ 4. Hypotheses & Testing ← S_DIAGNOSE | 5. Root Cause ← S_DIAGNOSE | 6. Fix & Confirmation ← S_FIX+S_CONFIRM
139
+ 7. Generalization ← S_GENERALIZE | 8. Discoveries & Decisions ← S_DISCOVER | 9. Learnings ← S_RECORD
140
+
141
+ ### Pre-load(可选,缺失不阻塞)
142
+
143
+ | 层级 | 命令 | 作用 |
144
+ |------|------|------|
145
+ | Codebase docs | Read `.workflow/codebase/ARCHITECTURE.md` | 模块边界,作为所有分析的上下文 |
146
+ | Wiki search | `maestro search "<issue keywords>" --json` | 先前调查、相关决策(取 top 5) |
147
+ | Specs + tools | `maestro spec load --category debug --keyword "<symptom>"` | 已知 issue/workaround + 可发现的 knowhow 工具 |
148
+ | Role knowledge | `maestro search --category debug` → 选相关 → `maestro wiki load <id>` | 累积领域知识 |
149
+ | Prior sessions | `find_files(".workflow/scratch/*-debug-odyssey-*")` | 相关 odyssey 会话 |
150
+
151
+ ### Knowledge Persistence(S_RECORD 中写入产出文件)
152
+
153
+ S_RECORD 阶段将可沉淀知识 **写入 understanding.md §9 Learnings**,按以下分类结构化:
154
+
155
+ | 分类 | 写入内容 | 后续建议命令 |
156
+ |------|---------|-------------|
157
+ | 反复根因模式 | 模式描述 + 触发条件 + 修复模板 | `/spec-add debug "..."` |
158
+ | 非显而易见 workaround | 问题场景 + 解决方案 + 适用范围 | `/spec-add learning "..."` |
159
+ | 架构边界违反 | 违反描述 + 正确边界 + 检查方法 | `/spec-add arch "..."` |
160
+ | 可复用泛化 pattern | pattern 签名 + 风险说明 + fix 模板 | `/spec-add coding "..."` |
161
+
162
+ **两步模式:** 执行中写入产出文件(临时记录)→ 任务完成后用户通过 next_step_routing 沉淀为永久知识。执行过程中不调用外部 Skill。
163
+ </context>
164
+
165
+ <self_iteration>
166
+ **Quality Gate (适用: S_ARCHAEOLOGY, S_EXPLORE, S_DIAGNOSE, S_GENERALIZE)**
167
+
168
+ | 维度 | sufficient | insufficient |
169
+ |------|-----------|-------------|
170
+ | Coverage | 已知相关文件/模块均已分析 | 遗漏 grep/git log 可发现的目标 |
171
+ | Depth | ≥80% 发现有 file:line 级证据 | 多数仅泛泛描述 |
172
+ | Actionability | 每条结论有具体后续动作 | 仅"建议关注"类无操作性结论 |
173
+
174
+ **规则:** 阶段完成 → 评估 3 维度 → 任一 insufficient → 重入(每阶段最多 2 轮)。
175
+ - Round 1: 扩范围 — 增加目录、git log depth ×2、增加 delegate 角度
176
+ - Round 2: 换视角 — 不同 CLI tool、反向追踪、手动 code reading
177
+
178
+ **退出:** 全 sufficient → 推进 | 2 轮上限 → 记录 gap 继续。记录至 `evidence.ndjson` + `session.json.self_iteration_log[]`.
179
+ </self_iteration>
180
+
181
+ <state_machine>
182
+
183
+ <states>
184
+ S_INTAKE — 解析问题、加载上下文、检查/恢复 session PERSIST: session.json + understanding.md §1
185
+ S_ARCHAEOLOGY — 考古:git history + CLI 分析 PERSIST: evidence.ndjson (archaeology) + understanding.md §2
186
+ S_EXPLORE — CLI 探索:调用链、错误间隙、相似模式 PERSIST: explore.json + evidence.ndjson (explore) + understanding.md §3
187
+ S_DIAGNOSE — 假设驱动根因分析 PERSIST: evidence.ndjson (diagnosis|decision) + understanding.md §4-5
188
+ S_FIX — 实现修复 (skip_fix 时跳过) PERSIST: code changes + evidence.ndjson (decision)
189
+ S_CONFIRM — 测试 + CLI review 双重确认 (skip_fix 时跳过) PERSIST: session.json.confirmation + understanding.md §6
190
+ S_GENERALIZE — 举一反三:提取 pattern,扫描相似代码 PERSIST: session.json.patterns + understanding.md §7
191
+ S_DISCOVER — 评估发现,创建 issue / 记录决策 PERSIST: evidence.ndjson (discovery|decision) + understanding.md §8
192
+ S_RECORD — 知识沉淀 + 目标审计 PERSIST: understanding.md §9 + spec entries
193
+ </states>
194
+
195
+ <transitions>
196
+ S_INTAKE → S_INTAKE : -c + session found → A_RESUME_SESSION
197
+ S_INTAKE → S_ARCHAEOLOGY : issue parsed → A_INTAKE
198
+ S_INTAKE → S_INTAKE : no issue, no session → ask_user
199
+
200
+ S_ARCHAEOLOGY → S_EXPLORE : A_ARCHAEOLOGY complete
201
+ S_EXPLORE → S_DIAGNOSE : A_EXPLORE complete
202
+
203
+ S_DIAGNOSE → S_FIX : root cause confirmed, !skip_fix
204
+ S_DIAGNOSE → S_GENERALIZE : root cause confirmed, skip_fix, !skip_generalize
205
+ S_DIAGNOSE → S_RECORD : root cause confirmed, skip_fix, skip_generalize
206
+ S_DIAGNOSE → S_DIAGNOSE : all hypotheses failed, retries < 3 → A_ESCALATE_DIAGNOSIS
207
+ S_DIAGNOSE → S_RECORD : all hypotheses failed, retries >= 3 → mark INCONCLUSIVE
208
+
209
+ S_FIX → S_CONFIRM : fix implemented
210
+ S_CONFIRM → S_GENERALIZE : confirmed, !skip_generalize
211
+ S_CONFIRM → S_RECORD : confirmed, skip_generalize
212
+ S_CONFIRM → S_FIX : needs_rework
213
+
214
+ S_GENERALIZE → S_DISCOVER : similar code found
215
+ S_GENERALIZE → S_RECORD : no similar code
216
+
217
+ S_DISCOVER → S_DIAGNOSE : discovery finds new bug worth investigating, loops < max_loops → cross_phase_loops++
218
+ S_DISCOVER → S_FIX : discovery finds same-pattern bug, fix template applies, loops < max_loops → cross_phase_loops++
219
+ S_DISCOVER → S_RECORD : triage complete OR loops >= max_loops (剩余项 → issue/decision)
220
+
221
+ S_RECORD → END : A_RECORD complete
222
+ </transitions>
223
+
224
+ <actions>
225
+
226
+ ### A_INTAKE
227
+ 1. Parse arguments: issue description, flags
228
+ 2. Generate slug, create `SESSION_DIR`
229
+ 3. Search: `maestro search "<keywords>"` + Glob prior sessions + ARCHITECTURE.md + Grep keywords
230
+ 4. Derive `phase_goals[]` from flags (apply `skip_when`)
231
+ 5. Write `session.json` + `understanding.md` §1
232
+ 6. Emit Goal Prompt (see Appendix)
233
+
234
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): INTAKE — 目标解析与上下文加载"`
235
+
236
+ ### A_RESUME_SESSION
237
+ Find latest session via Glob → read `session.json` → display summary → jump to `current_state`.
238
+
239
+ ### A_ARCHAEOLOGY
240
+ **Git archaeology (2 parallel Agents):**
241
+
242
+ | Agent | Task |
243
+ |-------|------|
244
+ | Timeline | `git log --oneline -20 -- {files}` → change timeline |
245
+ | Blame | Top 3 suspicious files: `git blame -L {region}` → critical paths |
246
+
247
+ Append findings to `evidence.ndjson` (phase: "archaeology").
248
+
249
+ **CLI-assisted change review:**
250
+ ```bash
251
+ maestro delegate "PURPOSE: Review recent modifications related to: {issue}
252
+ TASK: Analyze intent behind changes | Identify risky modifications | Flag potential bug sources
253
+ MODE: analysis
254
+ CONTEXT: @{relevant_files} | Git log: {top_10_commits}
255
+ EXPECTED: JSON [{commit_sha, risk_level, analysis, could_cause_issue, explanation}]
256
+ CONSTRAINTS: Focus on behavioral changes, not formatting
257
+ " --role analyze --mode analysis
258
+ ```
259
+ Run_in_background, STOP, wait for callback. Append results to evidence.
260
+
261
+ Update `understanding.md` §2.
262
+
263
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): ARCHAEOLOGY — git 考古分析"`
264
+
265
+ ### A_EXPLORE
266
+ Skip if no enabled CLI tools (W006).
267
+
268
+ ```bash
269
+ maestro delegate "PURPOSE: Gather codebase evidence for: {issue}
270
+ TASK: Trace call chains | Find recent changes | Identify error gaps | Check similar patterns
271
+ MODE: analysis
272
+ CONTEXT: @**/*
273
+ EXPECTED: JSON {call_chains, recent_changes, error_gaps, similar_patterns}
274
+ CONSTRAINTS: Max 20 entries/category | Symptom-related code paths
275
+ Symptoms: {issue} Archaeology hints: {suspicious_commits}
276
+ " --role explore --mode analysis
277
+ ```
278
+ Run_in_background, STOP, wait for callback.
279
+
280
+ Parse → write `explore.json` + append `evidence.ndjson` (phase: "explore"). Update §3. Mark G2 done.
281
+
282
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): EXPLORE — 代码探索完成"`
283
+
284
+ ### A_DIAGNOSE
285
+ 1. **Form hypotheses** from evidence (archaeology + explore), ranked [HIGH]/[MEDIUM]/[LOW] → §4
286
+ 2. **Test each** (rank order): design test → execute → append evidence (phase: "diagnosis")
287
+ 3. **Decision journal**: ambiguity → evidence (phase: "decision"); Normal: ask_user | `-y`: defer
288
+ 4. **Root cause**: confirmed → `session.json.root_cause` + §5. Mark G1 done.
289
+
290
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): DIAGNOSE — 根因确认"`
291
+
292
+ ### A_ESCALATE_DIAGNOSIS
293
+ Increment `diagnosis_retries`. If < 3: broaden scope via `maestro delegate --role analyze` (same delegate format), form new hypotheses, return to S_DIAGNOSE. If >= 3: Normal → ask_user (broaden/new/INCONCLUSIVE) | `-y` → auto INCONCLUSIVE, proceed to S_RECORD. See Appendix: `-y` behavior.
294
+
295
+ ### A_FIX
296
+ 1. Present root cause + proposed fix. Normal: ask_user | `-y`: auto proceed (see Appendix)
297
+ 2. Implement fix
298
+ 3. Record in evidence (phase: "decision")
299
+
300
+ 📌 **Auto-commit**: `git add -A && git commit -m "odyssey-debug({slug}): FIX — {修复摘要}"`
301
+
302
+ ### A_CONFIRM
303
+ 1. **Tests**: auto-detect framework, run covering tests
304
+ 2. **CLI fix review**:
305
+ ```bash
306
+ maestro delegate "PURPOSE: Review fix for: {issue}
307
+ TASK: Verify correctness | Check regressions | Assess completeness | Review edge cases
308
+ MODE: analysis
309
+ CONTEXT: @{modified_files} | Root cause: {summary} | Diff: {git_diff}
310
+ EXPECTED: JSON {verdict, findings [{severity, description, suggestion}], regression_risk}
311
+ CONSTRAINTS: Focus on correctness, not style
312
+ " --role review --mode analysis
313
+ ```
314
+ Run_in_background, STOP, wait for callback.
315
+
316
+ 3. Write `session.json.confirmation`: `{test_result, cli_review, overall: "confirmed|needs_rework", timestamp}`
317
+ 4. Update §6. `needs_rework` → S_FIX. `confirmed` → mark G3 done, advance.
318
+
319
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): CONFIRM — 修复验证"`
320
+
321
+ ### A_GENERALIZE
322
+ 举一反三: multi-layer pattern extraction → 4-agent scan → cross-layer dedup → iterative deepening.
323
+
324
+ **Pattern extraction** from root cause + fix:
325
+
326
+ | Layer | Method | Example |
327
+ |-------|--------|---------|
328
+ | Syntax | Regex patterns (direct Grep) | `eval(`, missing `await`, unclosed resource |
329
+ | Semantic | Anti-pattern description (Agent-driven) | Unhandled async errors, unvalidated input |
330
+ | Structural | Architecture-level (file/module similarity) | Same import structure, missing override |
331
+
332
+ Write `session.json.patterns[]`: `[{id, source, layer, signature, description, risk, fix_template}]`
333
+
334
+ **4-agent parallel codebase scan:**
335
+
336
+ | Agent | Strategy | Input | Scope |
337
+ |-------|----------|-------|-------|
338
+ | Syntax grep | Grep syntax-layer regex | P*.signature | Full project |
339
+ | Semantic scan | Understand + check anti-pattern | P*.description | Related modules |
340
+ | Structural match | Find structurally similar files | Buggy file structure | Full project |
341
+ | Historical grep | `git log -S "{pattern}"` | P*.signature | Full git history |
342
+
343
+ Returns: `[{pattern_id, file, line, context, risk_level, layer, confidence}]`
344
+
345
+ **Cross-layer dedup**: same file:line multi-layer hit → boost confidence | single-layer → `needs_review` | historical hit on fixed record → `regression_risk`
346
+
347
+ **Iterative deepening**: module with ≥3 hits → targeted deep scan (max 1 round).
348
+
349
+ **Quality Gate** (self-iteration) → if insufficient, expand and re-scan.
350
+
351
+ Write §7 + `session.json.generalization_stats`: `{patterns_extracted, total_hits, cross_layer_confirmed, regression_risks, by_layer, deepening_triggered}`. Mark G4 done.
352
+
353
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): GENERALIZE — 泛化扫描完成"`
354
+
355
+ ### A_DISCOVER
356
+ 1. **Triage** each hit: read ±10 lines context → classify `safe`/`risk`/`bug`
357
+ 2. **Route**: see Appendix `-y` behavior table. Append evidence (phase: "discovery" + "decision")
358
+ 3. Update §8. Mark G5 done.
359
+
360
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): DISCOVER — 发现分类完成"`
361
+
362
+ ### A_RECORD
363
+ 1. Finalize `understanding.md` §9
364
+ 2. **Write learnings** to understanding.md §9: 按 Knowledge Persistence 表分类记录(临时),completion summary 列出建议的 `/spec-add` 命令
365
+ 3. Mark G6 done. Process pending decisions: Normal → ask_user | `-y` → skip (show deferred count)
366
+ 4. **Goal audit**: all `completion_confirmed` true → `phase_goals_all_done = true`. Any false: Normal → ask_user (回退/跳过/接受) | `-y` → auto accept
367
+ 5. **Completion**: `current_state = "COMPLETED"`, emit summary:
368
+ ```
369
+ --- DEBUG ODYSSEY COMPLETE ---
370
+ Issue: {issue}
371
+ Root cause: {root_cause.hypothesis}
372
+ Fix: {applied|skipped|inconclusive}
373
+ Patterns: {patterns_extracted} ({by_layer} distribution)
374
+ Scan hits: {total_hits} ({cross_layer_confirmed} cross-layer confirmed)
375
+ Issues: {N} created
376
+ Decisions: {N} resolved, {M} pending, {K} deferred
377
+ Learnings: {N} spec entries persisted
378
+ Self-iter: {N} quality gate rounds across {M} stages
379
+ Goals: {done}/{total} confirmed ({skipped} skipped)
380
+ ---
381
+ ```
382
+
383
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-debug({slug}): RECORD — 会话总结与知识沉淀"`
384
+
385
+ </actions>
386
+
387
+ <appendix>
388
+
389
+ ### Goal Prompt Template
390
+
391
+ **时机守卫:仅在 A_INTAKE 完成后显示一次。A_RECORD 完成时禁止重新显示。**
392
+
393
+ ```
394
+ 📋 Debug Odyssey 会话已创建。可随时复制以下 /goal 设定终止条件:
395
+
396
+ /goal 穷尽迭代:直到根因确认(或明确 INCONCLUSIVE)且修复验证通过
397
+ 且泛化扫描穷尽(所有 hits 已分类处理)且 phase_goals_all_done=true 才停。
398
+ 假设失败时扩范围→换视角→升级工具,不轻易放弃。
399
+ 泛化发现的同类 bug 全部修复或创建 issue,不允许遗留。
400
+ 遇到 phase=decision 的 pending 必须 ask_user,不得自行 resolve。
401
+ ```
402
+
403
+ Odyssey 输出提示词后继续执行不阻塞。`/goal` 由用户任意时刻输入。
404
+
405
+ ### `-y` Auto-Confirm Behavior
406
+
407
+ | Decision Point | Normal | `-y` mode |
408
+ |---------------|--------|-----------|
409
+ | A_DIAGNOSE ambiguity | ask_user blocks | record `deferred`, best-effort continue |
410
+ | A_ESCALATE 3-strike | ask_user 3-way | auto INCONCLUSIVE |
411
+ | A_FIX direction | ask_user confirm | auto proceed with suggested fix |
412
+ | A_DISCOVER bug triage | ask_user route | auto create issue |
413
+ | A_DISCOVER ambiguous | ask_user batch | all `deferred` |
414
+ | A_RECORD decisions | ask_user per-item | skip, show deferred count |
415
+ | A_RECORD goal audit | ask_user 3-way | auto accept current state |
416
+
417
+ `deferred` items shown as "待决策" in completion summary; recoverable via `-c`.
418
+
419
+ ### Phase Goal Lifecycle
420
+
421
+ `pending → done (confirmed=true)` normal | `pending → skipped (confirmed=true)` flags/manual | `pending → failed (confirmed=false)` INCONCLUSIVE
422
+
423
+ `phase_goals_all_done = true` only when ALL goals have `completion_confirmed == true`.
424
+
425
+ </appendix>
426
+
427
+ </state_machine>
428
+
429
+ <error_codes>
430
+ | Code | Severity | Condition | Recovery |
431
+ |------|----------|-----------|----------|
432
+ | E001 | error | No issue and no session to resume | Provide issue or use -c |
433
+ | E003 | error | Resume but no session found | Start new session |
434
+ | E004 | error | Delegate execution failed | Retry or proceed without CLI |
435
+ | W001 | warning | No relevant git history | Proceed with limited context |
436
+ | W002 | warning | All hypotheses inconclusive after 3 retries | INCONCLUSIVE |
437
+ | W003 | warning | Generalization scan 0 hits | Skip discovery |
438
+ | W004 | warning | Delegate parse failed | Use raw output |
439
+ | W005 | warning | Pending decisions unresolved | Filter evidence.ndjson phase=decision |
440
+ | W006 | warning | CLI exploration skipped (no tools) | Proceed without explore.json |
441
+ </error_codes>
442
+
443
+ <success_criteria>
444
+ - [ ] Session directory created with 4 output files
445
+ - [ ] Prior knowledge searched (maestro search + sessions + architecture)
446
+ - [ ] Git archaeology (log + blame) + CLI change review, evidence.ndjson phase=archaeology
447
+ - [ ] CLI exploration, explore.json written, evidence phase=explore
448
+ - [ ] Hypotheses formed from archaeology + explore, tested and logged phase=diagnosis
449
+ - [ ] Root cause declared with evidence refs
450
+ - [ ] understanding.md tracks all 9 sections progressively
451
+ - [ ] Fix implemented + confirmed with test + CLI review (unless --skip-fix)
452
+ - [ ] Multi-layer patterns (syntax/semantic/structural) extracted (unless --skip-generalize)
453
+ - [ ] 4-agent scan + cross-layer dedup + iterative deepening for ≥3 hits/module
454
+ - [ ] Discoveries classified and routed (fix/issue/decision/skip)
455
+ - [ ] Decision journal: all human-judgment items in evidence.ndjson phase=decision
456
+ - [ ] phase_goals derived from flags, skip_when applied, each phase marks its goal
457
+ - [ ] Goal audit in A_RECORD — unmet goals surfaced, phase_goals_all_done set correctly
458
+ - [ ] Goal Prompt displayed once after session creation
459
+ - [ ] `-y`: all decisions auto-resolve/defer, deferred count in summary
460
+ - [ ] State saved at each transition (resumable via -c)
461
+ - [ ] Quality Gate self-iteration when insufficient, logged in self_iteration_log
462
+ - [ ] Spec entries persisted for reusable learnings
463
+ - [ ] Completion summary with all stats
464
+ </success_criteria>
465
+
466
+ <next_step_routing>
467
+ | Condition | Next step |
468
+ |-----------|-----------|
469
+ | Issues from discoveries | `/manage-issue list --source debug-odyssey` |
470
+ | Pattern worth documenting | `/learn-decompose <module>` |
471
+ | Fix needs formal review | `/quality-review <phase>` |
472
+ | Second opinion on root cause | `/learn-second-opinion <understanding.md>` |
473
+ | Related question | `/learn-investigate "<question>"` |
474
+ | Decisions still pending | Filter evidence.ndjson phase=decision status=pending |
475
+ </next_step_routing>