maestro-flow 0.5.1 → 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 (530) 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/learn-decompose/SKILL.md +144 -144
  42. package/.codex/skills/learn-follow/SKILL.md +83 -83
  43. package/.codex/skills/learn-investigate/SKILL.md +84 -84
  44. package/.codex/skills/learn-retro/SKILL.md +113 -113
  45. package/.codex/skills/learn-second-opinion/SKILL.md +116 -116
  46. package/.codex/skills/maestro/SKILL.md +11 -8
  47. package/.codex/skills/maestro-amend/SKILL.md +4 -4
  48. package/.codex/skills/maestro-analyze/SKILL.md +2 -2
  49. package/.codex/skills/maestro-blueprint/SKILL.md +4 -4
  50. package/.codex/skills/maestro-companion/SKILL.md +5 -5
  51. package/.codex/skills/maestro-composer/SKILL.md +217 -217
  52. package/.codex/skills/maestro-grill/SKILL.md +1 -1
  53. package/.codex/skills/maestro-help/SKILL.md +31 -31
  54. package/.codex/skills/maestro-impeccable/SKILL.md +1 -1
  55. package/.codex/skills/maestro-init/SKILL.md +1 -1
  56. package/.codex/skills/maestro-learn/SKILL.md +80 -80
  57. package/.codex/skills/maestro-merge/SKILL.md +76 -76
  58. package/.codex/skills/maestro-milestone-release/SKILL.md +74 -74
  59. package/.codex/skills/maestro-next/SKILL.md +1 -1
  60. package/.codex/skills/maestro-player/SKILL.md +3 -3
  61. package/.codex/skills/maestro-quick/SKILL.md +129 -129
  62. package/.codex/skills/maestro-ralph/SKILL.md +9 -9
  63. package/.codex/skills/maestro-ralph-beta/SKILL.md +35 -35
  64. package/.codex/skills/maestro-ralph-execute/SKILL.md +5 -5
  65. package/.codex/skills/maestro-tools-execute/SKILL.md +3 -3
  66. package/.codex/skills/maestro-tools-register/SKILL.md +3 -3
  67. package/.codex/skills/manage-codebase-rebuild/SKILL.md +412 -412
  68. package/.codex/skills/manage-codebase-refresh/SKILL.md +1 -1
  69. package/.codex/skills/manage-harvest/SKILL.md +99 -99
  70. package/.codex/skills/manage-issue-discover/SKILL.md +1 -1
  71. package/.codex/skills/manage-knowhow/SKILL.md +95 -95
  72. package/.codex/skills/manage-knowhow-capture/SKILL.md +137 -137
  73. package/.codex/skills/manage-status/SKILL.md +7 -7
  74. package/.codex/skills/manage-wiki/SKILL.md +55 -55
  75. package/.codex/skills/odyssey-debug/SKILL.md +456 -0
  76. package/.codex/skills/odyssey-improve/SKILL.md +466 -0
  77. package/.codex/skills/odyssey-planex/SKILL.md +409 -0
  78. package/.codex/skills/odyssey-review-test-fix/SKILL.md +377 -0
  79. package/.codex/skills/odyssey-ui/SKILL.md +411 -0
  80. package/.codex/skills/quality-auto-test/SKILL.md +1 -1
  81. package/.codex/skills/quality-debug/SKILL.md +8 -8
  82. package/.codex/skills/quality-refactor/SKILL.md +3 -3
  83. package/.codex/skills/quality-review/SKILL.md +1 -1
  84. package/.codex/skills/quality-sync/SKILL.md +111 -111
  85. package/.codex/skills/quality-test/SKILL.md +1 -1
  86. package/.codex/skills/spec-add/SKILL.md +2 -2
  87. package/.codex/skills/spec-load/SKILL.md +1 -1
  88. package/.codex/skills/spec-map/SKILL.md +204 -204
  89. package/.codex/skills/spec-remove/SKILL.md +75 -75
  90. package/.codex/skills/spec-setup/SKILL.md +2 -2
  91. package/.codex/skills/wiki-connect/SKILL.md +73 -73
  92. package/.codex/skills/wiki-digest/SKILL.md +87 -87
  93. package/dashboard/dist/assets/{ArtifactsPage-BLvAqQlQ.js → ArtifactsPage-B6z23DfG.js} +2 -2
  94. package/dashboard/dist/assets/{ChatInput-DU9YGZKX.js → ChatInput-tBtGKV2i.js} +1 -1
  95. package/dashboard/dist/assets/{ChatPage-DYHfheXC.js → ChatPage-CcggDVs4.js} +2 -2
  96. package/dashboard/dist/assets/{CollabPage-CSlmvEa-.js → CollabPage-FaZeqqeS.js} +1 -1
  97. package/dashboard/dist/assets/{ExecutionPanel-RYWf0dYC.js → ExecutionPanel-DNRwYDXp.js} +1 -1
  98. package/dashboard/dist/assets/{KanbanPage-N55Iv0-X.js → KanbanPage-B2xh2s_N.js} +1 -1
  99. package/dashboard/dist/assets/{MaestroCoordinatePage-BxwZ6yy5.js → MaestroCoordinatePage-DCMGHDAL.js} +1 -1
  100. package/dashboard/dist/assets/{MarkdownRenderer-ZGtOY7Ti.js → MarkdownRenderer-C3FvTqVe.js} +1 -1
  101. package/dashboard/dist/assets/McpPage-HKaJ8cQP.js +16 -0
  102. package/dashboard/dist/assets/{MeetingRoomPage-CxHRn1xx.js → MeetingRoomPage-DGN5oUXH.js} +1 -1
  103. package/dashboard/dist/assets/{OutputPanel-DaL8c1i5.js → OutputPanel-BiCteH5k.js} +1 -1
  104. package/dashboard/dist/assets/{ProblemsPanel-BQTd5812.js → ProblemsPanel-Dk4v9tol.js} +1 -1
  105. package/dashboard/dist/assets/{RequirementBoardPage-22y9u1qh.js → RequirementBoardPage-D10A26gi.js} +1 -1
  106. package/dashboard/dist/assets/{RequirementPage-_mO743Xm.js → RequirementPage-Cs-2omLz.js} +1 -1
  107. package/dashboard/dist/assets/{RoomsPage-CExTbOGr.js → RoomsPage-tKQQhw1W.js} +1 -1
  108. package/dashboard/dist/assets/SpecsPage-LK1QCtcg.js +36 -0
  109. package/dashboard/dist/assets/{TeamsPage-BxEXLb5g.js → TeamsPage-C-bEwB8E.js} +1 -1
  110. package/dashboard/dist/assets/{TreeBrowser-CVtPF5C9.js → TreeBrowser-1YP-DfTY.js} +2 -2
  111. package/dashboard/dist/assets/{WorkflowPage-BoN18Lhs.js → WorkflowPage-dGHPsDDr.js} +2 -2
  112. package/dashboard/dist/assets/{arrow-left-C5ROg97G.js → arrow-left-BPFSEpfO.js} +1 -1
  113. package/dashboard/dist/assets/{check-Bs8PM0tQ.js → check-D5hOViiQ.js} +1 -1
  114. package/dashboard/dist/assets/{chevron-right-SmErd_1F.js → chevron-right-D9BsXrIg.js} +1 -1
  115. package/dashboard/dist/assets/{circle-CjpslL_D.js → circle-Cn5fNpmp.js} +1 -1
  116. package/dashboard/dist/assets/{circle-alert-CuzAg2fd.js → circle-alert-CZvK3B1K.js} +1 -1
  117. package/dashboard/dist/assets/{circle-check-BIkDU5D5.js → circle-check-DApOBP0J.js} +1 -1
  118. package/dashboard/dist/assets/{circle-check-big-CYctV8bK.js → circle-check-big-Cd9ztJpl.js} +1 -1
  119. package/dashboard/dist/assets/{code-DoB7rfxt.js → code-C3TuHjMs.js} +1 -1
  120. package/dashboard/dist/assets/{columns-3-Ch5KIyRa.js → columns-3-CO2SvNJb.js} +1 -1
  121. package/dashboard/dist/assets/{download-DadtG2Nr.js → download-BuKGI7KX.js} +1 -1
  122. package/dashboard/dist/assets/{en-2h6fD0j8.js → en-BmpYsIfb.js} +1 -1
  123. package/dashboard/dist/assets/folder-Chwj_P4A.js +11 -0
  124. package/dashboard/dist/assets/folder-open-S72FbKvn.js +6 -0
  125. package/dashboard/dist/assets/{index-BL4h1OKY.js → index-CN0YdC9M.js} +1 -1
  126. package/dashboard/dist/assets/{index-DQIlX2w_.js → index-Cbs79erW.js} +5 -5
  127. package/dashboard/dist/assets/{index-DaFwSmVJ.js → index-CdT1WNND.js} +1 -1
  128. package/dashboard/dist/assets/index-DEvP8cgc.css +1 -0
  129. package/dashboard/dist/assets/{list-CI-XIPZh.js → list-Dg_ojUpi.js} +1 -1
  130. package/dashboard/dist/assets/{loader-DpdMoQvh.js → loader-CMcc73C_.js} +1 -1
  131. package/dashboard/dist/assets/{minus-BVbfXGrC.js → minus-KxmVOIB7.js} +1 -1
  132. package/dashboard/dist/assets/pen-line-D1YTNDPw.js +11 -0
  133. package/dashboard/dist/assets/{pencil-I7GE0y29.js → pencil-BAjxSHuh.js} +1 -1
  134. package/dashboard/dist/assets/{proxy-CcYyZZWI.js → proxy-BewnIei6.js} +1 -1
  135. package/dashboard/dist/assets/{refresh-cw-BG9V_T4R.js → refresh-cw-Chc0RcRY.js} +1 -1
  136. package/dashboard/dist/assets/{rows-2-DP6NjQFk.js → rows-2-DWJuw8OM.js} +1 -1
  137. package/dashboard/dist/assets/{search-b78eLlw2.js → search-CPGb2sEw.js} +1 -1
  138. package/dashboard/dist/assets/{shallow-CJEesgtu.js → shallow-Dy0-7n5s.js} +1 -1
  139. package/dashboard/dist/assets/{table-B_lk-a1d.js → table-VI5scWpO.js} +1 -1
  140. package/dashboard/dist/assets/{team-types-Se7f9LfJ.js → team-types-Cu8zCPN3.js} +1 -1
  141. package/dashboard/dist/assets/{terminal-DXx4tvzq.js → terminal-Bqt5c6Ny.js} +1 -1
  142. package/dashboard/dist/assets/{trash-2-CVh9mnRj.js → trash-2-BcTVifbw.js} +1 -1
  143. package/dashboard/dist/assets/{users-Da9zGME5.js → users-BhFAHz4H.js} +1 -1
  144. package/dashboard/dist/assets/{zap-C0zaC7gJ.js → zap-BWbLhgr6.js} +1 -1
  145. package/dashboard/dist/assets/{zh-CN-r3AvxxOL.js → zh-CN-BIRiTdAD.js} +1 -1
  146. package/dashboard/dist/index.html +2 -2
  147. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -0
  148. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  149. package/dashboard/dist-server/dashboard/src/server/wiki/search.d.ts +14 -14
  150. package/dashboard/dist-server/dashboard/src/server/wiki/search.js +188 -56
  151. package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
  152. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -0
  153. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  154. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +37 -0
  155. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +560 -22
  156. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  157. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +6 -2
  158. package/dashboard/dist-server/src/types/index.d.ts +9 -0
  159. package/dist/src/cli.js +3 -0
  160. package/dist/src/cli.js.map +1 -1
  161. package/dist/src/commands/delegate.d.ts.map +1 -1
  162. package/dist/src/commands/delegate.js +50 -8
  163. package/dist/src/commands/delegate.js.map +1 -1
  164. package/dist/src/commands/domain.d.ts +9 -0
  165. package/dist/src/commands/domain.d.ts.map +1 -0
  166. package/dist/src/commands/domain.js +445 -0
  167. package/dist/src/commands/domain.js.map +1 -0
  168. package/dist/src/commands/hooks.d.ts +10 -0
  169. package/dist/src/commands/hooks.d.ts.map +1 -1
  170. package/dist/src/commands/hooks.js +132 -22
  171. package/dist/src/commands/hooks.js.map +1 -1
  172. package/dist/src/commands/install.d.ts.map +1 -1
  173. package/dist/src/commands/install.js +82 -204
  174. package/dist/src/commands/install.js.map +1 -1
  175. package/dist/src/commands/kg.d.ts.map +1 -1
  176. package/dist/src/commands/kg.js +183 -90
  177. package/dist/src/commands/kg.js.map +1 -1
  178. package/dist/src/commands/search.d.ts +15 -8
  179. package/dist/src/commands/search.d.ts.map +1 -1
  180. package/dist/src/commands/search.js +205 -59
  181. package/dist/src/commands/search.js.map +1 -1
  182. package/dist/src/commands/spec.d.ts.map +1 -1
  183. package/dist/src/commands/spec.js +9 -1
  184. package/dist/src/commands/spec.js.map +1 -1
  185. package/dist/src/commands/update.d.ts.map +1 -1
  186. package/dist/src/commands/update.js +0 -7
  187. package/dist/src/commands/update.js.map +1 -1
  188. package/dist/src/commands/wiki.d.ts.map +1 -1
  189. package/dist/src/commands/wiki.js +8 -1
  190. package/dist/src/commands/wiki.js.map +1 -1
  191. package/dist/src/commands/workspace.d.ts +12 -0
  192. package/dist/src/commands/workspace.d.ts.map +1 -0
  193. package/dist/src/commands/workspace.js +230 -0
  194. package/dist/src/commands/workspace.js.map +1 -0
  195. package/dist/src/config/cli-tools-config.d.ts +5 -0
  196. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  197. package/dist/src/config/cli-tools-config.js +31 -0
  198. package/dist/src/config/cli-tools-config.js.map +1 -1
  199. package/dist/src/config/index.d.ts +9 -1
  200. package/dist/src/config/index.d.ts.map +1 -1
  201. package/dist/src/config/index.js +35 -1
  202. package/dist/src/config/index.js.map +1 -1
  203. package/dist/src/core/install-executor.d.ts +31 -0
  204. package/dist/src/core/install-executor.d.ts.map +1 -0
  205. package/dist/src/core/install-executor.js +231 -0
  206. package/dist/src/core/install-executor.js.map +1 -0
  207. package/dist/src/core/install-profile.d.ts +103 -0
  208. package/dist/src/core/install-profile.d.ts.map +1 -0
  209. package/dist/src/core/install-profile.js +225 -0
  210. package/dist/src/core/install-profile.js.map +1 -0
  211. package/dist/src/graph/kg/credibility.d.ts +37 -0
  212. package/dist/src/graph/kg/credibility.d.ts.map +1 -0
  213. package/dist/src/graph/kg/credibility.js +141 -0
  214. package/dist/src/graph/kg/credibility.js.map +1 -0
  215. package/dist/src/graph/kg/db/connection.d.ts +28 -0
  216. package/dist/src/graph/kg/db/connection.d.ts.map +1 -0
  217. package/dist/src/graph/kg/db/connection.js +142 -0
  218. package/dist/src/graph/kg/db/connection.js.map +1 -0
  219. package/dist/src/graph/kg/db/index.d.ts +5 -0
  220. package/dist/src/graph/kg/db/index.d.ts.map +1 -0
  221. package/dist/src/graph/kg/db/index.js +6 -0
  222. package/dist/src/graph/kg/db/index.js.map +1 -0
  223. package/dist/src/graph/kg/db/migrations.d.ts +8 -0
  224. package/dist/src/graph/kg/db/migrations.d.ts.map +1 -0
  225. package/dist/src/graph/kg/db/migrations.js +88 -0
  226. package/dist/src/graph/kg/db/migrations.js.map +1 -0
  227. package/dist/src/graph/kg/db/queries.d.ts +84 -0
  228. package/dist/src/graph/kg/db/queries.d.ts.map +1 -0
  229. package/dist/src/graph/kg/db/queries.js +471 -0
  230. package/dist/src/graph/kg/db/queries.js.map +1 -0
  231. package/dist/src/graph/kg/db/types.d.ts +123 -0
  232. package/dist/src/graph/kg/db/types.d.ts.map +1 -0
  233. package/dist/src/graph/kg/db/types.js +75 -0
  234. package/dist/src/graph/kg/db/types.js.map +1 -0
  235. package/dist/src/graph/kg/engine.d.ts +87 -0
  236. package/dist/src/graph/kg/engine.d.ts.map +1 -0
  237. package/dist/src/graph/kg/engine.js +247 -0
  238. package/dist/src/graph/kg/engine.js.map +1 -0
  239. package/dist/src/graph/kg/extraction/code/code-extractor.d.ts +40 -0
  240. package/dist/src/graph/kg/extraction/code/code-extractor.d.ts.map +1 -0
  241. package/dist/src/graph/kg/extraction/code/code-extractor.js +296 -0
  242. package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -0
  243. package/dist/src/graph/kg/extraction/code/dfm-extractor.d.ts +3 -0
  244. package/dist/src/graph/kg/extraction/code/dfm-extractor.d.ts.map +1 -0
  245. package/dist/src/graph/kg/extraction/code/dfm-extractor.js +122 -0
  246. package/dist/src/graph/kg/extraction/code/dfm-extractor.js.map +1 -0
  247. package/dist/src/graph/kg/extraction/code/generated-detection.d.ts +14 -0
  248. package/dist/src/graph/kg/extraction/code/generated-detection.d.ts.map +1 -0
  249. package/dist/src/graph/kg/extraction/code/generated-detection.js +65 -0
  250. package/dist/src/graph/kg/extraction/code/generated-detection.js.map +1 -0
  251. package/dist/src/graph/kg/extraction/code/languages/index.d.ts +9 -0
  252. package/dist/src/graph/kg/extraction/code/languages/index.d.ts.map +1 -0
  253. package/dist/src/graph/kg/extraction/code/languages/index.js +2119 -0
  254. package/dist/src/graph/kg/extraction/code/languages/index.js.map +1 -0
  255. package/dist/src/graph/kg/extraction/code/languages/typescript.d.ts +5 -0
  256. package/dist/src/graph/kg/extraction/code/languages/typescript.d.ts.map +1 -0
  257. package/dist/src/graph/kg/extraction/code/languages/typescript.js +191 -0
  258. package/dist/src/graph/kg/extraction/code/languages/typescript.js.map +1 -0
  259. package/dist/src/graph/kg/extraction/code/liquid-extractor.d.ts +3 -0
  260. package/dist/src/graph/kg/extraction/code/liquid-extractor.d.ts.map +1 -0
  261. package/dist/src/graph/kg/extraction/code/liquid-extractor.js +117 -0
  262. package/dist/src/graph/kg/extraction/code/liquid-extractor.js.map +1 -0
  263. package/dist/src/graph/kg/extraction/code/mybatis-extractor.d.ts +3 -0
  264. package/dist/src/graph/kg/extraction/code/mybatis-extractor.d.ts.map +1 -0
  265. package/dist/src/graph/kg/extraction/code/mybatis-extractor.js +84 -0
  266. package/dist/src/graph/kg/extraction/code/mybatis-extractor.js.map +1 -0
  267. package/dist/src/graph/kg/extraction/code/svelte-extractor.d.ts +3 -0
  268. package/dist/src/graph/kg/extraction/code/svelte-extractor.d.ts.map +1 -0
  269. package/dist/src/graph/kg/extraction/code/svelte-extractor.js +92 -0
  270. package/dist/src/graph/kg/extraction/code/svelte-extractor.js.map +1 -0
  271. package/dist/src/graph/kg/extraction/code/tree-sitter-types.d.ts +61 -0
  272. package/dist/src/graph/kg/extraction/code/tree-sitter-types.d.ts.map +1 -0
  273. package/dist/src/graph/kg/extraction/code/tree-sitter-types.js +53 -0
  274. package/dist/src/graph/kg/extraction/code/tree-sitter-types.js.map +1 -0
  275. package/dist/src/graph/kg/extraction/code/tree-sitter.d.ts +55 -0
  276. package/dist/src/graph/kg/extraction/code/tree-sitter.d.ts.map +1 -0
  277. package/dist/src/graph/kg/extraction/code/tree-sitter.js +227 -0
  278. package/dist/src/graph/kg/extraction/code/tree-sitter.js.map +1 -0
  279. package/dist/src/graph/kg/extraction/code/vue-extractor.d.ts +6 -0
  280. package/dist/src/graph/kg/extraction/code/vue-extractor.d.ts.map +1 -0
  281. package/dist/src/graph/kg/extraction/code/vue-extractor.js +109 -0
  282. package/dist/src/graph/kg/extraction/code/vue-extractor.js.map +1 -0
  283. package/dist/src/graph/kg/extraction/code/wasm-stability.d.ts +44 -0
  284. package/dist/src/graph/kg/extraction/code/wasm-stability.d.ts.map +1 -0
  285. package/dist/src/graph/kg/extraction/code/wasm-stability.js +140 -0
  286. package/dist/src/graph/kg/extraction/code/wasm-stability.js.map +1 -0
  287. package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.d.ts +3 -0
  288. package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.d.ts.map +1 -0
  289. package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.js +149 -0
  290. package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.js.map +1 -0
  291. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.d.ts +4 -0
  292. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.d.ts.map +1 -0
  293. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js +114 -0
  294. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js.map +1 -0
  295. package/dist/src/graph/kg/extraction/knowledge/issue-extractor.d.ts +3 -0
  296. package/dist/src/graph/kg/extraction/knowledge/issue-extractor.d.ts.map +1 -0
  297. package/dist/src/graph/kg/extraction/knowledge/issue-extractor.js +84 -0
  298. package/dist/src/graph/kg/extraction/knowledge/issue-extractor.js.map +1 -0
  299. package/dist/src/graph/kg/extraction/knowledge/spec-extractor.d.ts +3 -0
  300. package/dist/src/graph/kg/extraction/knowledge/spec-extractor.d.ts.map +1 -0
  301. package/dist/src/graph/kg/extraction/knowledge/spec-extractor.js +173 -0
  302. package/dist/src/graph/kg/extraction/knowledge/spec-extractor.js.map +1 -0
  303. package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.d.ts +3 -0
  304. package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.d.ts.map +1 -0
  305. package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.js +165 -0
  306. package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.js.map +1 -0
  307. package/dist/src/graph/kg/extraction/orchestrator.d.ts +6 -0
  308. package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -0
  309. package/dist/src/graph/kg/extraction/orchestrator.js +208 -0
  310. package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -0
  311. package/dist/src/graph/kg/index.d.ts +29 -0
  312. package/dist/src/graph/kg/index.d.ts.map +1 -0
  313. package/dist/src/graph/kg/index.js +35 -0
  314. package/dist/src/graph/kg/index.js.map +1 -0
  315. package/dist/src/graph/kg/query/context-builder.d.ts +38 -0
  316. package/dist/src/graph/kg/query/context-builder.d.ts.map +1 -0
  317. package/dist/src/graph/kg/query/context-builder.js +184 -0
  318. package/dist/src/graph/kg/query/context-builder.js.map +1 -0
  319. package/dist/src/graph/kg/query/index.d.ts +8 -0
  320. package/dist/src/graph/kg/query/index.d.ts.map +1 -0
  321. package/dist/src/graph/kg/query/index.js +6 -0
  322. package/dist/src/graph/kg/query/index.js.map +1 -0
  323. package/dist/src/graph/kg/query/scoring.d.ts +19 -0
  324. package/dist/src/graph/kg/query/scoring.d.ts.map +1 -0
  325. package/dist/src/graph/kg/query/scoring.js +158 -0
  326. package/dist/src/graph/kg/query/scoring.js.map +1 -0
  327. package/dist/src/graph/kg/query/search.d.ts +59 -0
  328. package/dist/src/graph/kg/query/search.d.ts.map +1 -0
  329. package/dist/src/graph/kg/query/search.js +158 -0
  330. package/dist/src/graph/kg/query/search.js.map +1 -0
  331. package/dist/src/graph/kg/query/traversal.d.ts +75 -0
  332. package/dist/src/graph/kg/query/traversal.d.ts.map +1 -0
  333. package/dist/src/graph/kg/query/traversal.js +420 -0
  334. package/dist/src/graph/kg/query/traversal.js.map +1 -0
  335. package/dist/src/graph/kg/resolution/callback-synthesizer.d.ts +41 -0
  336. package/dist/src/graph/kg/resolution/callback-synthesizer.d.ts.map +1 -0
  337. package/dist/src/graph/kg/resolution/callback-synthesizer.js +450 -0
  338. package/dist/src/graph/kg/resolution/callback-synthesizer.js.map +1 -0
  339. package/dist/src/graph/kg/resolution/frameworks/index.d.ts +18 -0
  340. package/dist/src/graph/kg/resolution/frameworks/index.d.ts.map +1 -0
  341. package/dist/src/graph/kg/resolution/frameworks/index.js +632 -0
  342. package/dist/src/graph/kg/resolution/frameworks/index.js.map +1 -0
  343. package/dist/src/graph/kg/resolution/import-resolver.d.ts +73 -0
  344. package/dist/src/graph/kg/resolution/import-resolver.d.ts.map +1 -0
  345. package/dist/src/graph/kg/resolution/import-resolver.js +257 -0
  346. package/dist/src/graph/kg/resolution/import-resolver.js.map +1 -0
  347. package/dist/src/graph/kg/resolution/index.d.ts +11 -0
  348. package/dist/src/graph/kg/resolution/index.d.ts.map +1 -0
  349. package/dist/src/graph/kg/resolution/index.js +7 -0
  350. package/dist/src/graph/kg/resolution/index.js.map +1 -0
  351. package/dist/src/graph/kg/resolution/knowledge-resolver.d.ts +22 -0
  352. package/dist/src/graph/kg/resolution/knowledge-resolver.d.ts.map +1 -0
  353. package/dist/src/graph/kg/resolution/knowledge-resolver.js +288 -0
  354. package/dist/src/graph/kg/resolution/knowledge-resolver.js.map +1 -0
  355. package/dist/src/graph/kg/resolution/name-matcher.d.ts +25 -0
  356. package/dist/src/graph/kg/resolution/name-matcher.d.ts.map +1 -0
  357. package/dist/src/graph/kg/resolution/name-matcher.js +162 -0
  358. package/dist/src/graph/kg/resolution/name-matcher.js.map +1 -0
  359. package/dist/src/graph/kg/schema.sql +210 -0
  360. package/dist/src/graph/kg/surface/cli.d.ts +3 -0
  361. package/dist/src/graph/kg/surface/cli.d.ts.map +1 -0
  362. package/dist/src/graph/kg/surface/cli.js +500 -0
  363. package/dist/src/graph/kg/surface/cli.js.map +1 -0
  364. package/dist/src/graph/kg/surface/hook-injector.d.ts +33 -0
  365. package/dist/src/graph/kg/surface/hook-injector.d.ts.map +1 -0
  366. package/dist/src/graph/kg/surface/hook-injector.js +172 -0
  367. package/dist/src/graph/kg/surface/hook-injector.js.map +1 -0
  368. package/dist/src/graph/kg/surface/index.d.ts +6 -0
  369. package/dist/src/graph/kg/surface/index.d.ts.map +1 -0
  370. package/dist/src/graph/kg/surface/index.js +5 -0
  371. package/dist/src/graph/kg/surface/index.js.map +1 -0
  372. package/dist/src/graph/kg/surface/mcp-tools.d.ts +20 -0
  373. package/dist/src/graph/kg/surface/mcp-tools.d.ts.map +1 -0
  374. package/dist/src/graph/kg/surface/mcp-tools.js +253 -0
  375. package/dist/src/graph/kg/surface/mcp-tools.js.map +1 -0
  376. package/dist/src/graph/kg/sync/incremental-sync.d.ts +24 -0
  377. package/dist/src/graph/kg/sync/incremental-sync.d.ts.map +1 -0
  378. package/dist/src/graph/kg/sync/incremental-sync.js +71 -0
  379. package/dist/src/graph/kg/sync/incremental-sync.js.map +1 -0
  380. package/dist/src/graph/kg/sync/index.d.ts +5 -0
  381. package/dist/src/graph/kg/sync/index.d.ts.map +1 -0
  382. package/dist/src/graph/kg/sync/index.js +4 -0
  383. package/dist/src/graph/kg/sync/index.js.map +1 -0
  384. package/dist/src/graph/kg/sync/watch-policy.d.ts +33 -0
  385. package/dist/src/graph/kg/sync/watch-policy.d.ts.map +1 -0
  386. package/dist/src/graph/kg/sync/watch-policy.js +90 -0
  387. package/dist/src/graph/kg/sync/watch-policy.js.map +1 -0
  388. package/dist/src/hooks/constants.d.ts +0 -2
  389. package/dist/src/hooks/constants.d.ts.map +1 -1
  390. package/dist/src/hooks/constants.js +0 -2
  391. package/dist/src/hooks/constants.js.map +1 -1
  392. package/dist/src/hooks/keyword-spec-injector.d.ts +6 -0
  393. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -1
  394. package/dist/src/hooks/keyword-spec-injector.js +157 -81
  395. package/dist/src/hooks/keyword-spec-injector.js.map +1 -1
  396. package/dist/src/hooks/kg-auto-init.d.ts +13 -0
  397. package/dist/src/hooks/kg-auto-init.d.ts.map +1 -0
  398. package/dist/src/hooks/kg-auto-init.js +38 -0
  399. package/dist/src/hooks/kg-auto-init.js.map +1 -0
  400. package/dist/src/hooks/kg-context-injector.d.ts +1 -3
  401. package/dist/src/hooks/kg-context-injector.d.ts.map +1 -1
  402. package/dist/src/hooks/kg-context-injector.js +12 -17
  403. package/dist/src/hooks/kg-context-injector.js.map +1 -1
  404. package/dist/src/hooks/kg-sync-hook.d.ts +1 -9
  405. package/dist/src/hooks/kg-sync-hook.d.ts.map +1 -1
  406. package/dist/src/hooks/kg-sync-hook.js +21 -90
  407. package/dist/src/hooks/kg-sync-hook.js.map +1 -1
  408. package/dist/src/hooks/spec-analytics.d.ts +1 -0
  409. package/dist/src/hooks/spec-analytics.d.ts.map +1 -1
  410. package/dist/src/hooks/spec-analytics.js +1 -3
  411. package/dist/src/hooks/spec-analytics.js.map +1 -1
  412. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  413. package/dist/src/hooks/spec-injector.js +65 -1
  414. package/dist/src/hooks/spec-injector.js.map +1 -1
  415. package/dist/src/i18n/locales/en.d.ts.map +1 -1
  416. package/dist/src/i18n/locales/en.js +52 -9
  417. package/dist/src/i18n/locales/en.js.map +1 -1
  418. package/dist/src/i18n/locales/zh.d.ts.map +1 -1
  419. package/dist/src/i18n/locales/zh.js +52 -9
  420. package/dist/src/i18n/locales/zh.js.map +1 -1
  421. package/dist/src/i18n/types.d.ts +40 -4
  422. package/dist/src/i18n/types.d.ts.map +1 -1
  423. package/dist/src/ralph/skill-scanner.d.ts.map +1 -1
  424. package/dist/src/ralph/skill-scanner.js +9 -3
  425. package/dist/src/ralph/skill-scanner.js.map +1 -1
  426. package/dist/src/tools/__tests__/domain-search-debug.d.ts +2 -0
  427. package/dist/src/tools/__tests__/domain-search-debug.d.ts.map +1 -0
  428. package/dist/src/tools/__tests__/domain-search-debug.js +32 -0
  429. package/dist/src/tools/__tests__/domain-search-debug.js.map +1 -0
  430. package/dist/src/tools/domain-loader.d.ts +63 -0
  431. package/dist/src/tools/domain-loader.d.ts.map +1 -0
  432. package/dist/src/tools/domain-loader.js +295 -0
  433. package/dist/src/tools/domain-loader.js.map +1 -0
  434. package/dist/src/tools/domain-matcher.d.ts +24 -0
  435. package/dist/src/tools/domain-matcher.d.ts.map +1 -0
  436. package/dist/src/tools/domain-matcher.js +117 -0
  437. package/dist/src/tools/domain-matcher.js.map +1 -0
  438. package/dist/src/tools/domain-scanner.d.ts +32 -0
  439. package/dist/src/tools/domain-scanner.d.ts.map +1 -0
  440. package/dist/src/tools/domain-scanner.js +263 -0
  441. package/dist/src/tools/domain-scanner.js.map +1 -0
  442. package/dist/src/tools/domain-schema.d.ts +18 -0
  443. package/dist/src/tools/domain-schema.d.ts.map +1 -0
  444. package/dist/src/tools/domain-schema.js +104 -0
  445. package/dist/src/tools/domain-schema.js.map +1 -0
  446. package/dist/src/tools/spec-entry-parser.d.ts +1 -0
  447. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -1
  448. package/dist/src/tools/spec-entry-parser.js +1 -0
  449. package/dist/src/tools/spec-entry-parser.js.map +1 -1
  450. package/dist/src/tools/spec-loader.d.ts +5 -0
  451. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  452. package/dist/src/tools/spec-loader.js +10 -2
  453. package/dist/src/tools/spec-loader.js.map +1 -1
  454. package/dist/src/tui/install-ui/ConfigPanel.d.ts.map +1 -1
  455. package/dist/src/tui/install-ui/ConfigPanel.js +9 -1
  456. package/dist/src/tui/install-ui/ConfigPanel.js.map +1 -1
  457. package/dist/src/tui/install-ui/GroupedHub.d.ts +55 -0
  458. package/dist/src/tui/install-ui/GroupedHub.d.ts.map +1 -0
  459. package/dist/src/tui/install-ui/GroupedHub.js +210 -0
  460. package/dist/src/tui/install-ui/GroupedHub.js.map +1 -0
  461. package/dist/src/tui/install-ui/HooksConfig.d.ts +10 -5
  462. package/dist/src/tui/install-ui/HooksConfig.d.ts.map +1 -1
  463. package/dist/src/tui/install-ui/HooksConfig.js +83 -18
  464. package/dist/src/tui/install-ui/HooksConfig.js.map +1 -1
  465. package/dist/src/tui/install-ui/InstallConfirm.d.ts +1 -30
  466. package/dist/src/tui/install-ui/InstallConfirm.d.ts.map +1 -1
  467. package/dist/src/tui/install-ui/InstallConfirm.js +72 -12
  468. package/dist/src/tui/install-ui/InstallConfirm.js.map +1 -1
  469. package/dist/src/tui/install-ui/InstallExecution.d.ts +4 -21
  470. package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -1
  471. package/dist/src/tui/install-ui/InstallExecution.js +89 -260
  472. package/dist/src/tui/install-ui/InstallExecution.js.map +1 -1
  473. package/dist/src/tui/install-ui/InstallFlow.d.ts +3 -7
  474. package/dist/src/tui/install-ui/InstallFlow.d.ts.map +1 -1
  475. package/dist/src/tui/install-ui/InstallFlow.js +45 -267
  476. package/dist/src/tui/install-ui/InstallFlow.js.map +1 -1
  477. package/dist/src/tui/install-ui/InstallHub.d.ts.map +1 -1
  478. package/dist/src/tui/install-ui/InstallHub.js +2 -4
  479. package/dist/src/tui/install-ui/InstallHub.js.map +1 -1
  480. package/dist/src/tui/install-ui/InstallResult.d.ts.map +1 -1
  481. package/dist/src/tui/install-ui/InstallResult.js +1 -5
  482. package/dist/src/tui/install-ui/InstallResult.js.map +1 -1
  483. package/dist/src/tui/install-ui/index.d.ts +5 -1
  484. package/dist/src/tui/install-ui/index.d.ts.map +1 -1
  485. package/dist/src/tui/install-ui/index.js +1 -0
  486. package/dist/src/tui/install-ui/index.js.map +1 -1
  487. package/dist/src/tui/install-ui/types.d.ts +39 -0
  488. package/dist/src/tui/install-ui/types.d.ts.map +1 -1
  489. package/dist/src/tui/install-ui/types.js +1 -1
  490. package/dist/src/tui/install-ui/types.js.map +1 -1
  491. package/dist/src/tui/install-ui/useInstallFlowState.d.ts +69 -0
  492. package/dist/src/tui/install-ui/useInstallFlowState.d.ts.map +1 -0
  493. package/dist/src/tui/install-ui/useInstallFlowState.js +288 -0
  494. package/dist/src/tui/install-ui/useInstallFlowState.js.map +1 -0
  495. package/dist/src/tui/shared/components.d.ts +4 -0
  496. package/dist/src/tui/shared/components.d.ts.map +1 -1
  497. package/dist/src/tui/shared/components.js +4 -0
  498. package/dist/src/tui/shared/components.js.map +1 -1
  499. package/dist/src/tui/shared/index.d.ts +1 -1
  500. package/dist/src/tui/shared/index.d.ts.map +1 -1
  501. package/dist/src/tui/shared/index.js +1 -1
  502. package/dist/src/tui/shared/index.js.map +1 -1
  503. package/dist/src/tui/shared/tokens.d.ts +5 -5
  504. package/dist/src/tui/shared/tokens.js +5 -5
  505. package/dist/src/tui/shared/tokens.js.map +1 -1
  506. package/dist/src/types/index.d.ts +9 -0
  507. package/dist/src/types/index.d.ts.map +1 -1
  508. package/dist/src/utils/cli-format.d.ts +2 -1
  509. package/dist/src/utils/cli-format.d.ts.map +1 -1
  510. package/dist/src/utils/cli-format.js +14 -3
  511. package/dist/src/utils/cli-format.js.map +1 -1
  512. package/dist/src/utils/cooldown-guard.d.ts +17 -0
  513. package/dist/src/utils/cooldown-guard.d.ts.map +1 -0
  514. package/dist/src/utils/cooldown-guard.js +59 -0
  515. package/dist/src/utils/cooldown-guard.js.map +1 -0
  516. package/dist/src/utils/jsonl-log.d.ts.map +1 -1
  517. package/dist/src/utils/jsonl-log.js +2 -1
  518. package/dist/src/utils/jsonl-log.js.map +1 -1
  519. package/dist/src/utils/update-notices.js +17 -4
  520. package/dist/src/utils/update-notices.js.map +1 -1
  521. package/package.json +4 -5
  522. package/workflows/claude-instructions.md +23 -0
  523. package/workflows/codex-instructions.md +22 -0
  524. package/workflows/finish-work.md +25 -0
  525. package/workflows/updates/update-v3-setup.md +7 -15
  526. package/dashboard/dist/assets/McpPage-Im6s4pGR.js +0 -21
  527. package/dashboard/dist/assets/SpecsPage-gr4KX51-.js +0 -36
  528. package/dashboard/dist/assets/folder-B8ODoZfb.js +0 -16
  529. package/dashboard/dist/assets/index-6-yE5Yl9.css +0 -1
  530. package/dashboard/dist/assets/pen-line-CR8GaHt-.js +0 -6
@@ -0,0 +1,466 @@
1
+ ---
2
+ name: odyssey-improve
3
+ description: "Long-running codebase improvement cycle — multi-dimensional audit, deep diagnosis, targeted fix, verify, generalize, and engineering knowledge persistence"
4
+ argument-hint: '"<target>" [--dimensions <list>] [--skip-fix] [--skip-generalize] [--auto] [-y] [-c]'
5
+ allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, request_user_input
6
+ ---
7
+
8
+ <purpose>
9
+ Deep codebase improvement: survey (dependency + complexity baseline) -> audit (6 dimensions) ->
10
+ diagnose (root cause analysis) -> fix -> verify -> generalize -> discover -> record.
11
+
12
+ Unlike `$quality-review` (single pass), this is a persistent session with evidence trails,
13
+ baseline metrics, iterative improvement, and codebase-wide generalization. `--skip-fix` for audit-only.
14
+
15
+ Focuses on **program runtime quality** — performance, security, architecture, reliability,
16
+ observability, maintainability. Combines static analysis with runtime-aware reasoning.
17
+
18
+ Core philosophy:
19
+ - **Measure before improving** — baseline first, then optimize
20
+ - **Root cause over symptom** — trace each issue to its origin
21
+ - **Fix one, improve many** — every improvement reveals a class of opportunities
22
+ - **Verify improvement** — measure after fix, compare with baseline
23
+
24
+ **三句哲学约束(穷尽迭代):**
25
+ 1. **零遗留** — 每个 finding 必须是 action item(修复 / issue / 决策),不允许只报告不处理
26
+ 2. **穷尽迭代** — 按 severity 从高到低逐轮修复,直到 0 remaining actionable findings 才退出 fix loop
27
+ 3. **改进即标准** — 每次修复后重审同区域,发现新问题继续修,直到该区域无可改善
28
+ </purpose>
29
+
30
+ <boundary>
31
+ **范围内:** 目标代码运行质量提升 — 性能/安全/架构/可靠性/可观测性/可维护性
32
+ **范围外:** UI → `$odyssey-ui` | 新功能 → `$odyssey-planex` | 单一 bug → `$odyssey-debug` | 代码审查 → `$odyssey-review-test-fix`
33
+ **探索自由度:** profiling、安全扫描、架构分析、依赖审计,在约束下尽可能发现深层问题
34
+ </boundary>
35
+
36
+ <execution_discipline>
37
+ **三条铁律(所有阶段适用):**
38
+ 1. **Phase auto-commit** — 阶段完成后**自动** `git commit`,无需用户确认(session.json/evidence.ndjson 不纳入)
39
+ 2. **有把握才改** — 确定性高→改代码 commit;不确定→记录 `evidence.ndjson {"phase":"decision","status":"pending"}` 不改代码
40
+ 3. **多 CLI 辅助** — `maestro delegate` 多 `--role`(analyze/review/explore)交叉验证关键判断
41
+ </execution_discipline>
42
+
43
+ <context>
44
+ $ARGUMENTS — target and optional flags.
45
+
46
+ **Target resolution:**
47
+ | Input | Resolution |
48
+ |-------|-----------|
49
+ | Module/directory path | Analyze those source files |
50
+ | Package name | Resolve to source directory |
51
+ | `HEAD` / `staged` | `git diff HEAD` / `git diff --staged` (source files only) |
52
+ | Feature area keyword | Grep for keyword, collect relevant source files |
53
+
54
+ **Flags:**
55
+ | Flag | Effect |
56
+ |------|--------|
57
+ | `--dimensions <list>` | Comma-separated subset (default: all 6) |
58
+ | `--skip-fix` | Audit-only — skip S_FIX and S_VERIFY |
59
+ | `--skip-generalize` | Skip S_GENERALIZE and S_DISCOVER |
60
+ | `--auto` | CLI delegates without confirmation |
61
+ | `-y` | Auto-confirm at all decision points (see appendix) |
62
+ | `-c` | Resume most recent session |
63
+
64
+ **Dimensions (6):**
65
+ 1. **performance** — hot paths, N+1 queries, memory leaks, cache misses, bundle size
66
+ 2. **security** — OWASP Top 10, injection, auth bypass, data exposure, dependency vulns
67
+ 3. **architecture** — layer violations, circular deps, coupling, interface design, SRP
68
+ 4. **reliability** — error handling, retry logic, timeout config, graceful degradation, resource cleanup
69
+ 5. **observability** — logging coverage, metrics, traces, error reporting, health checks
70
+ 6. **maintainability** — cyclomatic complexity, dead code, coverage gaps, doc debt
71
+
72
+ **Session**: `SESSION_DIR = .workflow/scratch/{YYYYMMDD}-improve-odyssey-{slug}/`
73
+
74
+ **Output — 3 files:**
75
+ ```
76
+ SESSION_DIR/
77
+ ├── session.json # state + baseline + audit_result + diagnoses + patterns + phase_goals
78
+ ├── evidence.ndjson # ALL evidence (phase: survey|audit|diagnose|fix|discovery|decision|self-iteration)
79
+ └── understanding.md # 9-section evolving narrative (§1-§9, one per major phase)
80
+ ```
81
+
82
+ **session.json schema:**
83
+ ```json
84
+ {
85
+ "session_id": "improve-odyssey-{YYYYMMDD-HHmmss}",
86
+ "target": "", "dimensions": [],
87
+ "flags": { "skip_fix": false, "skip_generalize": false, "auto": false, "auto_confirm": false },
88
+ "current_state": "S_INTAKE",
89
+ "baseline_metrics": {},
90
+ "audit_result": { "dimensions_audited": [], "finding_count": 0, "severity_distribution": {} },
91
+ "diagnoses": [],
92
+ "patterns": [],
93
+ "generalization_stats": null,
94
+ "phase_goals": [], "phase_goals_all_done": false,
95
+ "self_iteration_log": [],
96
+ "cross_phase_loops": 0, "max_loops": 3,
97
+ "created_at": "", "updated_at": ""
98
+ }
99
+ ```
100
+
101
+ **evidence.ndjson:** `{"ts":"","phase":"survey|audit|diagnose|fix|discovery|decision|self-iteration","type":"","dimension":"","title":"","severity":"","file":"","line":0,"description":"","suggestion":"","metrics":{}}`
102
+
103
+ **phase_goals[] — auto-derived from flags:**
104
+
105
+ | ID | Goal | Phase | skip_when |
106
+ |----|------|-------|-----------|
107
+ | G1 | Survey completed | S_SURVEY | — |
108
+ | G2 | Audit completed | S_AUDIT | — |
109
+ | G3 | Diagnosis completed | S_DIAGNOSE | — |
110
+ | G4 | Fix applied and verified | S_VERIFY | skip_fix |
111
+ | G5 | Pattern generalized | S_GENERALIZE | skip_generalize |
112
+ | G6 | Discoveries triaged | S_DISCOVER | skip_generalize |
113
+ | G7 | Learnings persisted | S_RECORD | — |
114
+
115
+ Lifecycle: `pending -> done | skipped | failed` (all set `completion_confirmed`)
116
+
117
+ **understanding.md — 9 sections:**
118
+ §1 Target & Baseline (S_INTAKE) | §2 Survey (S_SURVEY) | §3 Audit Findings (S_AUDIT) |
119
+ §4 Root Cause Diagnosis (S_DIAGNOSE) | §5 Fix & Verification (S_FIX+S_VERIFY) |
120
+ §6 Generalization (S_GENERALIZE) | §7 Discoveries (S_DISCOVER) |
121
+ §8 Improvement Metrics (S_RECORD) | §9 Engineering Learnings (S_RECORD)
122
+
123
+ ### Pre-load
124
+
125
+ | Layer | Command | Purpose |
126
+ |-------|---------|---------|
127
+ | Codebase docs | Read `.workflow/codebase/ARCHITECTURE.md` | Module boundaries |
128
+ | Wiki search | `maestro search "<target keywords>" --json` | Prior investigations (top 5) |
129
+ | Specs | `maestro spec load --category coding --keyword "<target>"` | Coding conventions |
130
+ | Debug specs | `maestro spec load --category debug` | Known issues, workarounds |
131
+ | Role knowledge | `maestro search --category arch` -> select -> `maestro wiki load <id>` | Domain knowledge |
132
+ | Prior sessions | `Glob(".workflow/scratch/*-improve-odyssey-*")` | Related sessions |
133
+
134
+ ### Knowledge Persistence (two-step model)
135
+
136
+ Write to understanding.md §9 during execution (temporary). Completion summary suggests follow-up commands.
137
+
138
+ | Category | Content | Follow-up |
139
+ |----------|---------|-----------|
140
+ | Recurring root cause | Pattern + trigger + fix template | `$spec-add debug "..."` |
141
+ | Non-obvious workaround | Problem + solution + scope | `$spec-add learning "..."` |
142
+ | Architecture violation | Violation + correct boundary + check method | `$spec-add arch "..."` |
143
+ | Reusable pattern | Pattern signature + risk + fix template | `$spec-add coding "..."` |
144
+
145
+ **Two-step:** Execute writes to output files (temporary) -> completion suggests permanent knowledge capture commands. No external skill calls during execution.
146
+ </context>
147
+
148
+ <self_iteration>
149
+ **Quality Gate** — auto-evaluate after each analytical phase. Insufficient -> re-enter (max 2 rounds).
150
+
151
+ | Dimension | Sufficient | Insufficient |
152
+ |-----------|-----------|-------------|
153
+ | Coverage | All known related files/modules analyzed | Missed targets discoverable via grep/glob |
154
+ | Depth | >=80% findings have file:line evidence | Most findings lack specifics |
155
+ | Actionability | Each conclusion has concrete next action | "Consider reviewing" without action |
156
+
157
+ **Expansion:** Round 1 = widen scope (more directories, deeper dependency analysis, additional delegate angles). Round 2 = shift perspective (different CLI tool, reverse trace, manual code reading).
158
+
159
+ **Applicable stages:** S_SURVEY, S_AUDIT, S_DIAGNOSE, S_GENERALIZE
160
+
161
+ **Exit:** All sufficient -> advance | 2-round cap -> record gap, continue. Logged to `evidence.ndjson` + `session.json.self_iteration_log[]`.
162
+ </self_iteration>
163
+
164
+ <csv_schema>
165
+
166
+ ### Shared Output Schema (all waves)
167
+ ```json
168
+ {
169
+ "type": "object",
170
+ "properties": {
171
+ "id": { "type": "string" },
172
+ "result_status": { "type": "string", "enum": ["completed", "failed"] },
173
+ "findings": { "type": "string", "maxLength": 500 },
174
+ "evidence": { "type": "string" },
175
+ "error": { "type": "string" }
176
+ },
177
+ "required": ["id", "result_status", "findings"]
178
+ }
179
+ ```
180
+
181
+ **Termination contract:** Call `report_agent_job_result` EXACTLY ONCE. Read-only. Do NOT modify source files, tasks.csv, wave-*.csv, results.csv, or call spawn_agents_on_csv.
182
+
183
+ ### tasks.csv
184
+ ```csv
185
+ id,title,description,task_type,dimension,deps,wave,status,findings,evidence,error
186
+ ```
187
+
188
+ **Waves:**
189
+ | Wave | Tasks | Parallelism |
190
+ |------|-------|-------------|
191
+ | 1 | Survey (dependency-audit, complexity-scan) | 2 agents |
192
+ | 2 | Audit (performance, security, architecture, reliability, observability, maintainability) | 6 agents |
193
+ | 3 | Generalization (syntax-grep, semantic-scan, structural-match, historical-grep) | 4 agents |
194
+ </csv_schema>
195
+
196
+ <invariants>
197
+ 1. **Measure before improve** — baseline metrics MUST precede any fix
198
+ 2. **Root cause over symptom** — NO FIX without diagnosis evidence
199
+ 3. **Evidence append-only** — evidence.ndjson is never overwritten
200
+ 4. **Session is source of truth** — session.json holds all state
201
+ 5. **Phase goal tracking** — each stage MUST mark its goal on completion
202
+ 6. **`-y` defers, never drops** — auto-confirm records `deferred`, never silently skips
203
+ 7. **CLI delegate is background** — all `maestro delegate` calls use run_in_background
204
+ 8. **Goal is outcome-oriented** — odyssey outputs prompt then continues
205
+ 9. **Verify improvement** — post-fix metrics MUST be compared with baseline
206
+ 10. **Decision journal integrity** — all human-judgment items recorded phase=decision
207
+ 11. **Resumable state** — current_state saved at every transition
208
+ 12. **Invariant violation = BLOCK** — violating any invariant blocks the operation
209
+ </invariants>
210
+
211
+ <execution>
212
+
213
+ **States:** S_INTAKE -> S_SURVEY -> S_AUDIT -> S_DIAGNOSE -> S_FIX -> S_VERIFY -> S_GENERALIZE -> S_DISCOVER -> S_RECORD
214
+ - S_FIX/S_VERIFY skip when `--skip-fix`
215
+ - S_GENERALIZE/S_DISCOVER skip when `--skip-generalize`
216
+
217
+ **Cross-phase loops:**
218
+ - S_DIAGNOSE -> S_DIAGNOSE (hypothesis retry, max 3)
219
+ - S_VERIFY -> S_FIX (rework on failed verification)
220
+ - S_DISCOVER -> S_DIAGNOSE (new critical issue found, loops < max_loops)
221
+ - S_DISCOVER -> S_FIX (same-pattern fix with template, loops < max_loops)
222
+ - S_DISCOVER -> S_RECORD (complete or budget exhausted)
223
+
224
+ ### S_INTAKE
225
+ 1. Parse target + flags -> resolve file list
226
+ 2. Generate slug, create `SESSION_DIR`
227
+ 3. Search prior knowledge: `maestro search "<keywords>"` + Glob prior sessions + ARCHITECTURE.md + spec load (coding, debug)
228
+ 4. Derive `phase_goals[]` from flags (apply `skip_when`)
229
+ 5. Write `session.json` + `understanding.md` §1
230
+ 6. Display Goal Prompt (appendix), continue without blocking
231
+
232
+ **Resume (`-c`):** Glob latest session -> read `session.json` -> restore `current_state` -> jump.
233
+
234
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-improve({slug}): S_INTAKE — 目标解析"`
235
+
236
+ ### S_SURVEY
237
+ **spawn_agents_on_csv (Wave 1):**
238
+
239
+ Write `tasks.csv` with Wave 1 rows:
240
+ ```csv
241
+ "survey-deps","Dependency Audit","Analyze dependencies for {target_files}: package versions, known CVEs, unused deps, circular imports, dep depth. Return [{dep,version,issue_type,severity,detail}].","survey","","","1","pending","","",""
242
+ "survey-complexity","Complexity Scan","Measure complexity for {target_files}: cyclomatic complexity, function length, nesting depth, file size, export count. Return [{file,metric,value,threshold,status}].","survey","","","1","pending","","",""
243
+ ```
244
+ `spawn_agents_on_csv({ csv_path:"tasks.csv", max_concurrency:2, max_runtime_seconds:300, output_csv_path:"wave-1-results.csv", output_schema:SHARED_OUTPUT_SCHEMA })`
245
+
246
+ Merge -> evidence.ndjson (phase: "survey"). Extract `baseline_metrics` from survey results. Update §2. Mark G1 done.
247
+
248
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-improve({slug}): S_SURVEY — 调查"`
249
+
250
+ ### S_AUDIT
251
+ **spawn_agents_on_csv (Wave 2)** — 6 agents (one per dimension):
252
+
253
+ Append Wave 2 rows to `tasks.csv`:
254
+ ```csv
255
+ "audit-perf","Performance","Hot paths, N+1 queries, memory allocation, cache strategy, bundle analysis, lazy loading for {target_files}","audit","performance","","2","pending","","",""
256
+ "audit-security","Security","OWASP Top 10: injection, broken auth, data exposure, XXE, access control, misconfig, XSS, deserialization, deps, logging for {target_files}","audit","security","","2","pending","","",""
257
+ "audit-arch","Architecture","Layer boundaries, circular deps, coupling metrics, interface contracts, SRP compliance, dependency direction for {target_files}","audit","architecture","","2","pending","","",""
258
+ "audit-reliability","Reliability","Error handling completeness, retry logic, timeout config, circuit breakers, graceful degradation, resource cleanup for {target_files}","audit","reliability","","2","pending","","",""
259
+ "audit-observability","Observability","Logging coverage, structured logs, metrics emission, trace propagation, error reporting, health endpoints for {target_files}","audit","observability","","2","pending","","",""
260
+ "audit-maintain","Maintainability","Dead code, complex conditionals, test coverage gaps, magic numbers, naming clarity, doc debt for {target_files}","audit","maintainability","","2","pending","","",""
261
+ ```
262
+ `spawn_agents_on_csv({ csv_path:"tasks.csv", max_concurrency:6, max_runtime_seconds:600, output_csv_path:"wave-2-results.csv", output_schema:SHARED_OUTPUT_SCHEMA })`
263
+
264
+ Merge -> evidence.ndjson (phase: "audit"). Write `audit_result` with dimensions audited, finding count, severity distribution. Update §3. Mark G2 done.
265
+
266
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-improve({slug}): S_AUDIT — 审查"`
267
+
268
+ ### S_DIAGNOSE
269
+ Root cause analysis for top audit findings (severity >= high).
270
+
271
+ 1. **Rank findings** from audit, group by root cause pattern
272
+ 2. **CLI deep analysis** for top finding clusters:
273
+ ```bash
274
+ maestro delegate "PURPOSE: Root cause analysis for codebase quality issues in {target}
275
+ TASK: Trace origin of each finding | Identify shared root causes | Map dependency chains | Assess blast radius
276
+ MODE: analysis
277
+ CONTEXT: @{target_files} | Audit findings: {top_findings_json}
278
+ EXPECTED: JSON [{finding_ids, root_cause, origin_file, origin_line, blast_radius, fix_approach, confidence}]
279
+ CONSTRAINTS: Trace to origin, not just symptoms | Group related findings
280
+ " --role analyze --mode analysis
281
+ ```
282
+ Run_in_background, STOP, wait for callback.
283
+
284
+ 3. **Hypothesis testing**: for each root cause — design verification -> execute -> evidence (phase: "diagnose")
285
+ 4. **Decision journal**: ambiguity -> evidence (phase: "decision"); Normal: request_user_input | `-y`: defer
286
+ 5. **Confirmed diagnoses** -> `session.json.diagnoses[]`: `[{id, finding_ids, root_cause, evidence_refs, confidence, fix_approach}]`
287
+
288
+ **Escalation (3-strike):** Hypothesis fails -> retry with broader scope via `maestro delegate --role explore`. After 3 retries: Normal -> request_user_input | `-y` -> mark INCONCLUSIVE, proceed.
289
+
290
+ Update §4. Mark G3 done.
291
+
292
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-improve({slug}): S_DIAGNOSE — 诊断"`
293
+
294
+ ### S_FIX
295
+ Skip if `--skip-fix`.
296
+
297
+ 1. Present diagnoses + proposed fixes, prioritized by blast radius. Normal: `request_user_input` to confirm. `-y`: auto proceed.
298
+ 2. Implement fixes in priority order (highest blast radius first)
299
+ 3. Record each fix in evidence (phase: "fix" + "decision")
300
+ 4. Update §5
301
+
302
+ 📌 **Auto-commit**: `git add -A && git commit -m "odyssey-improve({slug}): S_FIX — 修复"`
303
+
304
+ ### S_VERIFY
305
+ Skip if `--skip-fix`.
306
+
307
+ 1. **Tests**: auto-detect framework, run covering tests on modified files
308
+ 2. **CLI fix review**:
309
+ ```bash
310
+ maestro delegate "PURPOSE: Verify improvement fixes for: {target}
311
+ TASK: Check correctness | Assess regression risk | Verify no new issues introduced | Compare metrics
312
+ MODE: analysis
313
+ CONTEXT: @{modified_files} | Diagnoses: {summary} | Diff: {git_diff} | Baseline: {baseline_metrics}
314
+ EXPECTED: JSON {verdict, findings [{severity, description, suggestion}], regression_risk, metrics_comparison}
315
+ CONSTRAINTS: Focus on correctness and measurable improvement
316
+ " --role review --mode analysis
317
+ ```
318
+ Run_in_background, STOP, wait for callback.
319
+
320
+ 3. **Metrics comparison**: measure post-fix metrics, compare with `baseline_metrics`
321
+ 4. `needs_rework` -> S_FIX (loop). `confirmed` -> mark G4 done, advance
322
+ 5. Update §5 with before/after metrics
323
+
324
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-improve({slug}): S_VERIFY — 验证"`
325
+
326
+ ### S_GENERALIZE
327
+ Skip if `--skip-generalize`. Extract patterns from confirmed diagnoses, scan for siblings.
328
+
329
+ **Step 1 — Multi-layer pattern extraction:**
330
+
331
+ | Layer | Method | Example |
332
+ |-------|--------|---------|
333
+ | Syntax | Regex patterns (direct Grep) | Missing `await`, unclosed resources, `catch {}` empty |
334
+ | Semantic | Agent anti-pattern scan | Unvalidated input, missing error boundary, no timeout |
335
+ | Structural | Architecture-level similarity | Same import structure, identical anti-pattern |
336
+ | Historical | Git log for pattern introduction | When pattern was introduced, if ever fixed |
337
+
338
+ Write `session.json.patterns[]`: `[{id, source_diagnosis, layer, signature, description, risk, fix_template}]`
339
+
340
+ **Step 2 — 4-agent scan (spawn_agents_on_csv, Wave 3):**
341
+
342
+ Append Wave 3 rows to `tasks.csv`:
343
+ ```csv
344
+ "gen-syntax","Syntax Grep","Grep syntax-layer signatures '${signatures}' across project. Return [{file,line,context,risk_level,layer:'syntax',confidence}].","generalization","syntax","","3","pending","","",""
345
+ "gen-semantic","Semantic Scan","Check related modules for anti-pattern: ${description}. Return [{file,line,context,risk_level,layer:'semantic',confidence}].","generalization","semantic","","3","pending","","",""
346
+ "gen-structural","Structural Match","Find structurally similar files to ${diagnosed_files}, check for same anti-pattern. Return [{file,line,description,risk,layer:'structural',confidence}].","generalization","structural","","3","pending","","",""
347
+ "gen-historical","Historical Grep","Run git log -S '${signature}' --oneline. Return [{sha,file,date,type:'introduced|fixed',context}].","generalization","historical","","3","pending","","",""
348
+ ```
349
+ `spawn_agents_on_csv({ csv_path:"tasks.csv", max_concurrency:4, max_runtime_seconds:300, output_csv_path:"wave-3-results.csv", output_schema:SHARED_OUTPUT_SCHEMA })`
350
+
351
+ **Step 3 — Cross-layer dedup**: same file:line multi-layer -> boost confidence | single-layer -> `needs_review` | historical fixed -> `regression_risk`
352
+
353
+ **Step 4 — Iterative deepening**: module >= 3 hits -> targeted deep scan (max 1 round).
354
+
355
+ **Step 5 — Quality Gate** (self-iteration).
356
+
357
+ **Step 6:** Write `generalization_stats`: `{patterns_extracted, total_hits, cross_layer_confirmed, regression_risks, by_layer, deepening_triggered}`. Update §6. Mark G5 done.
358
+
359
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-improve({slug}): S_GENERALIZE — 泛化"`
360
+
361
+ ### S_DISCOVER
362
+ Skip if no generalization hits.
363
+
364
+ 1. **Triage** each hit: read +-10 lines -> classify `safe` / `risk` / `bug`
365
+ 2. **Route**: see appendix `-y` behavior. Append evidence (phase: "discovery" + "decision")
366
+ 3. **Cross-phase loop**: discovery finds new critical issue -> S_DIAGNOSE (loops < max_loops -> cross_phase_loops++); same-pattern with fix template -> S_FIX (!skip_fix, loops < max_loops); triage complete OR loops >= max_loops -> S_RECORD (remaining -> issue)
367
+ 4. Update §7. Mark G6 done.
368
+
369
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-improve({slug}): S_DISCOVER — 发现"`
370
+
371
+ ### S_RECORD
372
+ 1. Finalize §8: before/after metrics comparison table
373
+ 2. Write §9: structured by Knowledge Persistence table (temporary)
374
+ 3. Mark G7 done. Pending decisions: **Normal** -> `request_user_input`. **`-y`** -> skip, show deferred count
375
+ 4. **Goal audit**: all confirmed -> `phase_goals_all_done = true`. Any false: **Normal** -> `request_user_input` (回退/跳过/接受). **`-y`** -> auto accept
376
+ 5. **Completion**: `current_state = "COMPLETED"`, emit summary:
377
+ ```
378
+ --- IMPROVE ODYSSEY COMPLETE ---
379
+ Target: {target}
380
+ Dimensions: {audited_list}
381
+ Baseline: {baseline_summary}
382
+ Audit: {C}C {H}H {M}M {L}L across {dim_count} dimensions
383
+ Diagnoses: {N} root causes ({confirmed} confirmed, {inconclusive} inconclusive)
384
+ Fix: {F} applied, {S} skipped | Before: {baseline} -> After: {post_fix}
385
+ Patterns: {N} extracted ({by_layer} distribution)
386
+ Scan: {total} hits ({cross_layer} cross-layer confirmed)
387
+ Issues: {N} created
388
+ Decisions: {resolved}/{pending}/{deferred}
389
+ Self-iter: {R} quality gate rounds across {P} stages
390
+ Goals: {done}/{total} ({skipped} skipped)
391
+ ---
392
+ ```
393
+ **Next steps:** `$manage-issue list --source improve-odyssey`, `$learn-decompose <module>`,
394
+ `$quality-review`, `$learn-second-opinion <understanding.md>`, `$learn-investigate "<question>"`
395
+
396
+ 📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-improve({slug}): S_RECORD — 总结"`
397
+ </execution>
398
+
399
+ <appendix>
400
+
401
+ ### Goal Prompt Template
402
+
403
+ **Time guard: display ONCE after S_INTAKE completes (session created, before survey). NEVER redisplay at S_RECORD completion.**
404
+
405
+ ```
406
+ Improve Odyssey 会话已创建。可随时复制以下 /goal 设定终止条件:
407
+
408
+ /goal 穷尽迭代:直到所有 findings 均已处理(fix/issue/decision)
409
+ 且 phase_goals_all_done=true 才停。修复按 severity 逐轮迭代,每轮修复后 re-verify。
410
+ Baseline metrics 必须在修复前采集,修复后必须与 baseline 对比。
411
+ 不允许"只报告不处理"。遇到 phase=decision 的 pending 必须 request_user_input。
412
+ ```
413
+
414
+ Odyssey outputs prompt then continues without blocking. `/goal` entered by user at any time.
415
+
416
+ ### `-y` Auto-Confirm Behavior
417
+
418
+ | Decision Point | Normal | `-y` mode |
419
+ |----------------|--------|-----------|
420
+ | S_DIAGNOSE ambiguity | request_user_input blocks | record `deferred`, best-effort continue |
421
+ | S_DIAGNOSE 3-strike | request_user_input 3-way | auto INCONCLUSIVE |
422
+ | S_FIX fix direction | request_user_input confirm | auto proceed by priority |
423
+ | S_DISCOVER bug triage | request_user_input per hit | auto create issue |
424
+ | S_DISCOVER ambiguous | request_user_input batch | all `deferred` |
425
+ | S_RECORD pending decisions | request_user_input per-item | skip, show deferred count |
426
+
427
+ `deferred` items shown as "待决策" in summary; recoverable via `-c`.
428
+
429
+ ### Phase Goal Lifecycle
430
+
431
+ `pending -> done (confirmed=true)` normal | `pending -> skipped (confirmed=true)` flags/manual | `pending -> failed (confirmed=false)` incomplete
432
+
433
+ `phase_goals_all_done = true` only when ALL goals have `completion_confirmed == true`.
434
+
435
+ </appendix>
436
+
437
+ <error_codes>
438
+ | Code | Severity | Condition | Recovery |
439
+ |------|----------|-----------|----------|
440
+ | E001 | error | No target and no session to resume | Provide target or use -c |
441
+ | E002 | error | Target not found or no source files | Check path, ensure source files exist |
442
+ | E003 | error | Resume but no session found | Start new session |
443
+ | W001 | warning | No relevant git history | Proceed with limited context |
444
+ | W002 | warning | Audit dimension agent failed | Partial coverage, note gap |
445
+ | W003 | warning | Generalization scan 0 hits | Skip discovery |
446
+ | W004 | warning | Delegate parse failed | Use raw output |
447
+ </error_codes>
448
+
449
+ <success_criteria>
450
+ - [ ] Target resolved to source files, session created with 3 output files
451
+ - [ ] Prior knowledge searched (maestro search + sessions + architecture + specs)
452
+ - [ ] Survey via spawn Wave 1, baseline_metrics extracted, evidence phase=survey
453
+ - [ ] All 6 dimensions audited via spawn Wave 2, severity matrix produced
454
+ - [ ] Root causes diagnosed with evidence refs, hypotheses tested phase=diagnose
455
+ - [ ] Fixes applied priority-order and verified with metric comparison (unless --skip-fix)
456
+ - [ ] `--skip-fix`: no source code modifications
457
+ - [ ] Generalization via spawn Wave 3 + cross-layer dedup (unless --skip-generalize)
458
+ - [ ] Discoveries classified and routed (fix/issue/decision/skip)
459
+ - [ ] understanding.md tracks all 9 sections progressively
460
+ - [ ] phase_goals G1-G7 derived from flags, each phase marks its goal
461
+ - [ ] Goal Prompt displayed once; `-y` auto-resolves/defers
462
+ - [ ] State saved at each transition (resumable via -c)
463
+ - [ ] Quality Gate self-iteration logged in self_iteration_log
464
+ - [ ] Before/after metrics comparison in completion summary
465
+ - [ ] Completion summary with all stats
466
+ </success_criteria>