@iowarp/clio-coder 0.4.2 → 0.4.4

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 (523) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/CONTRIBUTING.md +86 -19
  3. package/README.md +35 -6
  4. package/dist/{acp-TMDQZDIG.js → acp-WNAYYF4F.js} +12 -13
  5. package/dist/{agents-5N5NG3XG.js → agents-3OKXHLOI.js} +60 -57
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-Z5CCBXKQ.js → auth-VKNNMGPU.js} +21 -19
  8. package/dist/{builtins-K6TNDT24.js → builtins-WGALA46I.js} +9 -4
  9. package/dist/{chunk-XE3PCIXH.js → chunk-23L32XTI.js} +12 -9
  10. package/dist/{chunk-I64IFBLB.js → chunk-25QBEXRS.js} +18 -11
  11. package/dist/{chunk-CDNVLKUX.js → chunk-26QSH3EJ.js} +13 -7
  12. package/dist/{chunk-QQLGQY2A.js → chunk-2ASED4PZ.js} +22 -22
  13. package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
  14. package/dist/chunk-2DSOYNFC.js +108 -0
  15. package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
  16. package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
  17. package/dist/{chunk-O3YUNJZ2.js → chunk-2ZSONWVL.js} +82 -25
  18. package/dist/{chunk-2NHR3NAY.js → chunk-36CT5VVL.js} +331 -42
  19. package/dist/{chunk-2X4RYJTJ.js → chunk-3GY4F45V.js} +3 -3
  20. package/dist/{chunk-ZW55JB7N.js → chunk-3ODX73FK.js} +4 -6
  21. package/dist/{chunk-PBP4B7XR.js → chunk-3UNOLWNZ.js} +3 -3
  22. package/dist/{chunk-4JDLP6ZS.js → chunk-3UUXNFEX.js} +14 -10
  23. package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
  24. package/dist/{chunk-ZW4HH5JJ.js → chunk-4M6Z5QVF.js} +6 -6
  25. package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
  26. package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
  27. package/dist/{chunk-FSP7CMNU.js → chunk-54X7T7DK.js} +61 -6
  28. package/dist/{chunk-54ODD65L.js → chunk-5636DCO5.js} +4 -4
  29. package/dist/chunk-57XXR6DR.js +3763 -0
  30. package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
  31. package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
  32. package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
  33. package/dist/{chunk-YJISEZKC.js → chunk-5TUB6SLS.js} +6 -6
  34. package/dist/{chunk-IMXMHHMQ.js → chunk-6OSVSQL5.js} +341 -57
  35. package/dist/{chunk-Q4XWMHX6.js → chunk-6PAZTBPA.js} +14 -2
  36. package/dist/{chunk-FVDGR2ZL.js → chunk-6Q3CYFD3.js} +112 -39
  37. package/dist/{chunk-IDNA72AH.js → chunk-6QOTUPRG.js} +155 -36
  38. package/dist/{chunk-X7IARSHT.js → chunk-6UINWWS6.js} +16 -10
  39. package/dist/{chunk-CYZW7JHJ.js → chunk-72YIHOZQ.js} +9 -9
  40. package/dist/{chunk-IKSLQ4XV.js → chunk-75W7L2E2.js} +752 -861
  41. package/dist/{chunk-CRFOIAX3.js → chunk-7UGL4MB5.js} +6 -6
  42. package/dist/{chunk-HIICAHCJ.js → chunk-AUPNRN7C.js} +2 -2
  43. package/dist/{chunk-7BHIY2MW.js → chunk-BJVFZO5U.js} +8 -50
  44. package/dist/{chunk-B74PXLU7.js → chunk-CUSRQKPU.js} +65 -3
  45. package/dist/chunk-DQOVN6KV.js +386 -0
  46. package/dist/{chunk-E7GT7O5N.js → chunk-DT3LWJOB.js} +7 -4
  47. package/dist/chunk-DXKJURES.js +671 -0
  48. package/dist/{chunk-JBCS7CRR.js → chunk-EL24TAU4.js} +10 -10
  49. package/dist/{chunk-TPEQIQIE.js → chunk-ELWDPP3Y.js} +8 -8
  50. package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
  51. package/dist/chunk-EXLD33WO.js +381 -0
  52. package/dist/chunk-FEAXX7B6.js +101 -0
  53. package/dist/{chunk-RLYRBIYQ.js → chunk-FFUPXJC4.js} +90 -331
  54. package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
  55. package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
  56. package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
  57. package/dist/chunk-GX5WYQO4.js +59 -0
  58. package/dist/chunk-GYV6VZOC.js +26 -0
  59. package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
  60. package/dist/chunk-I2DWJ4GM.js +390 -0
  61. package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
  62. package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
  63. package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
  64. package/dist/chunk-IRXAATOX.js +539 -0
  65. package/dist/chunk-IXIY2H4R.js +44 -0
  66. package/dist/{chunk-SSEYRH53.js → chunk-IZXGRF7P.js} +92 -147
  67. package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
  68. package/dist/{chunk-JWJGP5DQ.js → chunk-JEIYHLOR.js} +7 -7
  69. package/dist/{chunk-F2I26BDK.js → chunk-JQLNNIKT.js} +4 -4
  70. package/dist/{chunk-BYMNWQ7O.js → chunk-JSD46VO2.js} +315 -63
  71. package/dist/{chunk-AK5XEFVZ.js → chunk-JT2RFCC5.js} +64 -14
  72. package/dist/{chunk-MCMZMDAC.js → chunk-K6T2ZAMZ.js} +168 -6
  73. package/dist/{chunk-PGF63K6I.js → chunk-KFV5L5SK.js} +73 -4
  74. package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
  75. package/dist/{chunk-PJX3WQUQ.js → chunk-LLXSDWXS.js} +3 -3
  76. package/dist/{chunk-DZAW46HP.js → chunk-LTIKRKFL.js} +3 -3
  77. package/dist/{chunk-DZEK6CJN.js → chunk-N56KALIC.js} +21 -21
  78. package/dist/{chunk-B7HM5Z7T.js → chunk-NAI6ZFCY.js} +9 -5
  79. package/dist/{chunk-I66ZTYNP.js → chunk-NRO2BJRH.js} +2656 -2213
  80. package/dist/{chunk-ZGNYYXQ6.js → chunk-NXIMQY5W.js} +3 -3
  81. package/dist/{chunk-IKOZFYBN.js → chunk-NXYCB2VD.js} +149 -106
  82. package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
  83. package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
  84. package/dist/chunk-ODGTEFFI.js +50 -0
  85. package/dist/{chunk-3F7VUY77.js → chunk-OEJSLEPW.js} +2 -2
  86. package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
  87. package/dist/{chunk-5KW52TEP.js → chunk-Q4WO54TA.js} +132 -77
  88. package/dist/{chunk-W6NIE6OW.js → chunk-QUFRYSWI.js} +13 -7
  89. package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
  90. package/dist/chunk-R6Q67RJH.js +134 -0
  91. package/dist/{chunk-W4YEMFBX.js → chunk-RAY4OVGZ.js} +3 -3
  92. package/dist/{chunk-ZNT2M6TG.js → chunk-RQCKCSRL.js} +17 -17
  93. package/dist/{chunk-LJID3DYZ.js → chunk-RXTN6AKH.js} +3 -3
  94. package/dist/{chunk-P75RZCJW.js → chunk-RZDWV63N.js} +3 -3
  95. package/dist/{chunk-UH632ZYL.js → chunk-S6PYF2XF.js} +2 -2
  96. package/dist/{chunk-HJWWJ6IL.js → chunk-TOIVGRUX.js} +17 -5
  97. package/dist/{chunk-HLAFFSEK.js → chunk-TQAHXW6Y.js} +2 -2
  98. package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
  99. package/dist/{chunk-2HFQNRV3.js → chunk-UEPWCCTY.js} +12 -12
  100. package/dist/chunk-UOIZ7DA4.js +41 -0
  101. package/dist/{chunk-UH347SHR.js → chunk-USR47QNF.js} +11 -11
  102. package/dist/{chunk-AZ4WMN4W.js → chunk-V6HJFQZE.js} +2 -2
  103. package/dist/chunk-V76WTFTW.js +318 -0
  104. package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
  105. package/dist/{chunk-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
  106. package/dist/{chunk-UBRFI4HS.js → chunk-XULDXHTN.js} +142 -50
  107. package/dist/chunk-XXYSBZIQ.js +283 -0
  108. package/dist/{chunk-HKMD33FO.js → chunk-Y55JBDO5.js} +405 -122
  109. package/dist/{chunk-XOXV5GKE.js → chunk-YD5GIKET.js} +17 -8
  110. package/dist/{chunk-XGDPUNND.js → chunk-YECAMM3D.js} +2 -2
  111. package/dist/{chunk-BO7Y52RY.js → chunk-YNFKXPEC.js} +7 -7
  112. package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
  113. package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
  114. package/dist/cli/index.js +42 -40
  115. package/dist/{clio-7VB377CC.js → clio-QLICPCF5.js} +7 -7
  116. package/dist/{code-nav-YVLCYA7V.js → code-nav-IJR2DBPR.js} +9 -9
  117. package/dist/{components-UBWCQSRW.js → components-2TGAI2RC.js} +5 -6
  118. package/dist/{config-4HVOS65E.js → config-IUA6OYNS.js} +88 -81
  119. package/dist/{configure-PIWO7B24.js → configure-VEPX4NMX.js} +26 -25
  120. package/dist/{context-KQYIWPWT.js → context-2DKHWH2T.js} +60 -45
  121. package/dist/{context-IYEHL3WQ.js → context-4MPR7WKB.js} +78 -69
  122. package/dist/{context-N6ZE3LGJ.js → context-BOYF5EJM.js} +15 -11
  123. package/dist/{context-clear-G4OGZJDS.js → context-clear-S4ZJCQUX.js} +73 -65
  124. package/dist/context-map-COB37XXN.js +505 -0
  125. package/dist/{context-working-set-BWLF6LJP.js → context-working-set-3I3FYX6Y.js} +18 -17
  126. package/dist/detail-A7JAVSIG.js +98 -0
  127. package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-RJ5I2F2O.js} +99 -75
  128. package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
  129. package/dist/{doctor-LHBD36VU.js → doctor-DKICC2SN.js} +71 -48
  130. package/dist/{eval-C45FYRJ6.js → eval-OQOQUDHK.js} +308 -146
  131. package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
  132. package/dist/{evidence-6SHONYAF.js → evidence-4DQ25GUQ.js} +79 -175
  133. package/dist/evidence-4F5USFKH.js +208 -0
  134. package/dist/{evolve-KRKMV72X.js → evolve-GSS52E5J.js} +71 -67
  135. package/dist/{extensions-KPZ2UHBB.js → extensions-G7MFLYHT.js} +8 -9
  136. package/dist/{fleet-IVTCKDHT.js → fleet-Q37YHHAQ.js} +126 -118
  137. package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-G7E4N7SM.js} +16 -13
  138. package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-O7M6QBA2.js} +9 -8
  139. package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-TOUBW6OW.js} +21 -20
  140. package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-SW33JJNI.js} +65 -60
  141. package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-CV2655TW.js} +4 -5
  142. package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-KESZX2YH.js} +25 -24
  143. package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-UQPMTVE3.js} +66 -61
  144. package/dist/{fleet-view-TWHJKCN6.js → fleet-view-MN2VG4MR.js} +65 -60
  145. package/dist/{init-T2QORQ3Y.js → init-PXEXQSBF.js} +90 -82
  146. package/dist/{interop-IN5I2A66.js → interop-ZG5T62U3.js} +12 -13
  147. package/dist/inventory-C26CFDRR.js +101 -0
  148. package/dist/{library-LSCATDLZ.js → library-B2W4N74O.js} +29 -29
  149. package/dist/{memory-HYOKAGGJ.js → memory-YCANYS5A.js} +73 -69
  150. package/dist/{models-2GPMFYCM.js → models-GERTU3YI.js} +51 -47
  151. package/dist/{monitor-E4ASVUJH.js → monitor-CPNIUULB.js} +74 -67
  152. package/dist/{orchestrator-DDMPR3PY.js → orchestrator-J4BSH4WQ.js} +1288 -1606
  153. package/dist/{panes-E3RUXOW5.js → panes-BOHAEGYC.js} +4 -4
  154. package/dist/{panes-IXKLOKA2.js → panes-NXSLDQZ2.js} +10 -11
  155. package/dist/{paths-L7LGY6RN.js → paths-VSUWNC22.js} +6 -7
  156. package/dist/reset-TNWTB5LU.js +343 -0
  157. package/dist/{resources-OTRSN34L.js → resources-4PXNMD5G.js} +29 -22
  158. package/dist/{run-5DEYH5QK.js → run-D6XJ34CN.js} +132 -132
  159. package/dist/{share-IHWTLO3M.js → share-2NWMJJEE.js} +27 -27
  160. package/dist/{skills-IYMXMKW4.js → skills-KR7WON5G.js} +40 -33
  161. package/dist/{skills-eval-DROHSJAR.js → skills-eval-O2ZNOLDS.js} +81 -77
  162. package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-ZZOUBK7O.js} +23 -22
  163. package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-ZXPJD64J.js} +47 -37
  164. package/dist/{steer-Z5DO23FJ.js → steer-XA25PSCS.js} +4 -4
  165. package/dist/{support-U7QOWY26.js → support-7EMVWYG2.js} +6 -6
  166. package/dist/{targets-P2FUC4IL.js → targets-OMH2XCSN.js} +50 -49
  167. package/dist/tasks-IPAGMEIX.js +36 -0
  168. package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-C2J3JYRE.js} +4 -4
  169. package/dist/{tools-5B7RO6MV.js → tools-EFFEAIDP.js} +8 -9
  170. package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
  171. package/dist/uninstall-HALS6BLF.js +407 -0
  172. package/dist/upgrade-MS72RJEP.js +306 -0
  173. package/dist/{usage-ME5MPXGX.js → usage-NHG6MCJM.js} +162 -108
  174. package/dist/{verifiers-BVZ7IWOO.js → verifiers-7AUNVXDY.js} +155 -22
  175. package/dist/{verify-5K7ZKQFC.js → verify-FWYGPKMR.js} +14 -12
  176. package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
  177. package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-743CIGJW.js} +99 -90
  178. package/dist/{with-panes-BYOJCLAM.js → with-panes-BDQEWBRT.js} +10 -10
  179. package/dist/worker/entry.js +72 -68
  180. package/docs/README.md +3 -2
  181. package/docs/architecture/acp.md +17 -0
  182. package/docs/architecture/artifact-placement.md +1 -0
  183. package/docs/architecture/artifact-versions.md +2 -2
  184. package/docs/architecture/context-engine.md +4 -0
  185. package/docs/architecture/dispatch-typed-intent.md +1 -1
  186. package/docs/architecture/evidence-and-memory.md +1 -1
  187. package/docs/architecture/middleware-and-components.md +1 -1
  188. package/docs/architecture/model-catalog.md +21 -10
  189. package/docs/architecture/observability.md +19 -2
  190. package/docs/architecture/prompt-envelope-and-tools.md +17 -5
  191. package/docs/architecture/provider-adapter-cookbook.md +63 -0
  192. package/docs/architecture/safety-model.md +25 -22
  193. package/docs/architecture/tui-design.md +1 -1
  194. package/docs/guide/built-in-agents.md +25 -11
  195. package/docs/guide/commands-and-modes.md +18 -3
  196. package/docs/guide/configuration-and-targets.md +100 -10
  197. package/docs/guide/configuration-reference.md +17 -7
  198. package/docs/guide/environment-variables.md +4 -2
  199. package/docs/guide/installation-and-lifecycle.md +37 -4
  200. package/docs/guide/proactive-memory.md +66 -55
  201. package/docs/guide/skills-marketplace.md +18 -0
  202. package/docs/guide/tool-usage.md +78 -3
  203. package/docs/history/config-knobs-audit.md +2 -2
  204. package/docs/process/development-pipeline.md +40 -2
  205. package/docs/process/eval-runner.md +67 -3
  206. package/docs/process/git-commit-provenance.md +15 -0
  207. package/docs/process/release-cut-checklist.md +207 -0
  208. package/docs/process/scientific-validation.md +18 -17
  209. package/evals/behavioral-machinery-support.ts +1 -0
  210. package/evals/behavioral-machinery.yaml +1 -1
  211. package/evals/behavioral-model.yaml +3 -2
  212. package/package.json +2 -2
  213. package/skills/README.md +7 -5
  214. package/skills/coding/ast-grep/SKILL.md +101 -30
  215. package/skills/coding/ast-grep/evals.md +26 -0
  216. package/skills/coding/coding-standards/SKILL.md +47 -2
  217. package/skills/coding/coding-standards/evals.md +23 -0
  218. package/skills/coding/prototype/SKILL.md +87 -28
  219. package/skills/coding/prototype/evals.md +19 -0
  220. package/skills/coding/tdd/SKILL.md +80 -53
  221. package/skills/coding/tdd/evals.md +20 -0
  222. package/skills/context/context-handoff/SKILL.md +43 -2
  223. package/skills/context/context-handoff/evals.md +44 -0
  224. package/skills/context/context-prime/SKILL.md +45 -15
  225. package/skills/context/context-prime/evals.md +45 -0
  226. package/skills/git/branch-closeout/SKILL.md +132 -0
  227. package/skills/git/branch-closeout/evals.md +133 -0
  228. package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
  229. package/skills/git/file-ticket/SKILL.md +77 -63
  230. package/skills/git/file-ticket/assets/issue-template.md +22 -0
  231. package/skills/git/file-ticket/evals.md +31 -26
  232. package/skills/git/file-ticket/references/issue-discovery.md +49 -0
  233. package/skills/git/fix-issue/SKILL.md +87 -64
  234. package/skills/git/fix-issue/evals.md +35 -31
  235. package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
  236. package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
  237. package/skills/git/resolve-merge-conflicts/evals.md +52 -25
  238. package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
  239. package/skills/git/ship/SKILL.md +103 -67
  240. package/skills/git/ship/assets/pr-template.md +21 -0
  241. package/skills/git/ship/evals.md +44 -28
  242. package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
  243. package/skills/git/worktree-create/SKILL.md +80 -50
  244. package/skills/git/worktree-create/evals.md +40 -33
  245. package/skills/git/worktree-create/references/worktree-setup.md +62 -66
  246. package/skills/git/worktree-merge/SKILL.md +112 -65
  247. package/skills/git/worktree-merge/evals.md +42 -34
  248. package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
  249. package/skills/planning/archify/SKILL.md +196 -0
  250. package/skills/planning/archify/evals.md +65 -0
  251. package/skills/planning/architecture/SKILL.md +61 -12
  252. package/skills/planning/architecture/evals.md +65 -0
  253. package/skills/planning/backlog/SKILL.md +130 -14
  254. package/skills/planning/backlog/evals.md +142 -0
  255. package/skills/planning/prd/SKILL.md +47 -6
  256. package/skills/planning/prd/evals.md +54 -0
  257. package/skills/planning/product-intent/SKILL.md +57 -2
  258. package/skills/planning/product-intent/evals.md +70 -0
  259. package/skills/planning/tech-spec/SKILL.md +53 -2
  260. package/skills/planning/tech-spec/evals.md +73 -0
  261. package/skills/registry.yaml +58 -50
  262. package/skills/remote.yaml +13 -0
  263. package/skills/research/arxiv-literature/SKILL.md +76 -18
  264. package/skills/research/arxiv-literature/evals.md +50 -0
  265. package/skills/research/experiment-protocol/SKILL.md +20 -1
  266. package/skills/research/experiment-protocol/evals.md +23 -0
  267. package/skills/research/scientific-debugging/SKILL.md +24 -1
  268. package/skills/research/scientific-debugging/evals.md +18 -0
  269. package/skills/research/scientific-modernization/SKILL.md +26 -1
  270. package/skills/research/scientific-modernization/evals.md +27 -0
  271. package/skills/skill-marketplace.json +63 -28
  272. package/skills/workflow/cut-it/SKILL.md +64 -5
  273. package/skills/workflow/cut-it/evals.md +101 -0
  274. package/skills/workflow/design-council/SKILL.md +112 -27
  275. package/skills/workflow/design-council/evals.md +161 -0
  276. package/skills/workflow/grill-me/SKILL.md +85 -10
  277. package/skills/workflow/grill-me/evals.md +153 -0
  278. package/skills/workflow/workflow-distiller/SKILL.md +76 -17
  279. package/skills/workflow/workflow-distiller/evals.md +118 -0
  280. package/src/cli/args.ts +0 -8
  281. package/src/cli/configure-interop.ts +105 -13
  282. package/src/cli/configure-oauth.ts +57 -0
  283. package/src/cli/configure-onboarding.ts +980 -0
  284. package/src/cli/configure-target.ts +594 -0
  285. package/src/cli/configure.ts +1084 -529
  286. package/src/cli/context-map.ts +114 -0
  287. package/src/cli/context.ts +4 -0
  288. package/src/cli/doctor-state-size.ts +1 -12
  289. package/src/cli/doctor-validation-contract.ts +28 -0
  290. package/src/cli/doctor.ts +5 -0
  291. package/src/cli/evidence-detail.ts +1 -75
  292. package/src/cli/evidence-inventory.ts +1 -167
  293. package/src/cli/index.ts +3 -0
  294. package/src/cli/lifecycle-presenter.ts +436 -0
  295. package/src/cli/models.ts +10 -2
  296. package/src/cli/modes/print.ts +5 -1
  297. package/src/cli/reset.ts +228 -106
  298. package/src/cli/run.ts +7 -4
  299. package/src/cli/select.ts +664 -0
  300. package/src/cli/skills.ts +9 -2
  301. package/src/cli/targets.ts +3 -0
  302. package/src/cli/tasks.ts +84 -0
  303. package/src/cli/uninstall.ts +233 -165
  304. package/src/cli/upgrade.ts +210 -150
  305. package/src/cli/usage.ts +92 -27
  306. package/src/cli/validate-model.ts +3 -3
  307. package/src/cli/verifiers.ts +147 -1
  308. package/src/cli/wiki-generate.ts +1 -0
  309. package/src/core/commit-attribution.ts +41 -1
  310. package/src/core/config.ts +56 -0
  311. package/src/core/external-diagnostic.ts +44 -0
  312. package/src/core/gateway-routing.ts +157 -0
  313. package/src/core/git-commit-attribution.ts +46 -3
  314. package/src/core/run-overrides.ts +0 -5
  315. package/src/core/safe-exec.ts +17 -2
  316. package/src/core/skill-activation.ts +92 -2
  317. package/src/core/tool-names.ts +5 -2
  318. package/src/domains/agents/builtins/architect.md +1 -1
  319. package/src/domains/agents/builtins/coder.md +1 -1
  320. package/src/domains/agents/builtins/documenter.md +1 -1
  321. package/src/domains/agents/builtins/git-master.md +1 -1
  322. package/src/domains/agents/builtins/provenance.md +7 -7
  323. package/src/domains/agents/builtins/tester.md +1 -1
  324. package/src/domains/agents/builtins/verifier.md +2 -2
  325. package/src/domains/agents/builtins/wiki-writer.md +4 -3
  326. package/src/domains/agents/builtins/world-knowledge.md +31 -0
  327. package/src/domains/agents/catalog.ts +1 -1
  328. package/src/domains/agents/result-contract.ts +70 -0
  329. package/src/domains/context/extension.ts +31 -7
  330. package/src/domains/context/refresh.ts +3 -0
  331. package/src/domains/context/wiki/frontmatter.ts +5 -2
  332. package/src/domains/context/wiki/generate.ts +6 -0
  333. package/src/domains/context/wiki/map-seed.ts +589 -0
  334. package/src/domains/context/wiki/plan.ts +2 -2
  335. package/src/domains/context/wiki/prompts.ts +43 -0
  336. package/src/domains/dispatch/active-route-planner.ts +4 -0
  337. package/src/domains/dispatch/admission.ts +29 -0
  338. package/src/domains/dispatch/agent-candidates.ts +10 -0
  339. package/src/domains/dispatch/budget-envelope.ts +86 -1
  340. package/src/domains/dispatch/capability-match.ts +1 -0
  341. package/src/domains/dispatch/capacity-lease.ts +17 -0
  342. package/src/domains/dispatch/code-step.ts +11 -4
  343. package/src/domains/dispatch/contract.ts +42 -8
  344. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  345. package/src/domains/dispatch/extension.ts +184 -56
  346. package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
  347. package/src/domains/dispatch/fleet-run.ts +1 -0
  348. package/src/domains/dispatch/host-verification.ts +114 -13
  349. package/src/domains/dispatch/intent.ts +28 -18
  350. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  351. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  352. package/src/domains/dispatch/reservation-store.ts +5 -3
  353. package/src/domains/dispatch/state.ts +15 -2
  354. package/src/domains/dispatch/types.ts +20 -2
  355. package/src/domains/dispatch/worker-model-metadata.ts +38 -0
  356. package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
  357. package/src/domains/eval/metrics/token-stream.ts +201 -31
  358. package/src/domains/eval/metrics/tracked.ts +40 -4
  359. package/src/domains/eval/runners/clio-run.ts +17 -11
  360. package/src/domains/eval/runners/context-index.ts +2 -7
  361. package/src/domains/eval/runners/context-init.ts +3 -6
  362. package/src/domains/eval/runners/external-command.ts +29 -11
  363. package/src/domains/eval/schema/suite.ts +28 -0
  364. package/src/domains/eval/schema/verdict.ts +2 -2
  365. package/src/domains/eval/suites/resolve.ts +13 -1
  366. package/src/domains/eval/suites/run.ts +24 -3
  367. package/src/domains/evidence/build.ts +102 -15
  368. package/src/domains/evidence/detail.ts +69 -0
  369. package/src/domains/evidence/eval.ts +13 -1
  370. package/src/domains/evidence/finish-contract-map.ts +5 -1
  371. package/src/domains/evidence/inventory.ts +167 -0
  372. package/src/domains/evidence/store.ts +16 -0
  373. package/src/domains/evidence/types.ts +12 -0
  374. package/src/domains/extensions/resources.ts +7 -0
  375. package/src/domains/interop/registry.ts +6 -2
  376. package/src/domains/interop/types.ts +4 -0
  377. package/src/domains/lifecycle/migrations/index.ts +4 -0
  378. package/src/domains/memory/task-memory-policy.ts +70 -26
  379. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  380. package/src/domains/middleware/index.ts +0 -1
  381. package/src/domains/middleware/marketplace-offer.ts +22 -35
  382. package/src/domains/middleware/memory-intervention.ts +127 -32
  383. package/src/domains/middleware/memory-step-endpoint.ts +3 -2
  384. package/src/domains/middleware/runtime.ts +7 -3
  385. package/src/domains/middleware/skills-reminder.ts +31 -2
  386. package/src/domains/mux/detect.ts +3 -6
  387. package/src/domains/observability/accountability.ts +15 -1
  388. package/src/domains/observability/compaction-usage.ts +118 -0
  389. package/src/domains/observability/contract.ts +52 -7
  390. package/src/domains/observability/cost.ts +1 -1
  391. package/src/domains/observability/evidence-index.ts +10 -0
  392. package/src/domains/observability/extension.ts +15 -6
  393. package/src/domains/observability/out-of-turn-usage.ts +52 -21
  394. package/src/domains/observability/projection.ts +394 -45
  395. package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
  396. package/src/domains/prompts/fragments/operating/contract.md +2 -0
  397. package/src/domains/prompts/fragments/wiki/page.md +8 -0
  398. package/src/domains/providers/contract.ts +4 -1
  399. package/src/domains/providers/extension.ts +40 -9
  400. package/src/domains/providers/model-capabilities.ts +9 -0
  401. package/src/domains/providers/model-discovery.ts +3 -4
  402. package/src/domains/providers/model-runtime-capabilities.ts +15 -5
  403. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +48 -26
  404. package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
  405. package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
  406. package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
  407. package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
  408. package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
  409. package/src/domains/providers/support.ts +11 -5
  410. package/src/domains/providers/target-model-cache.ts +25 -2
  411. package/src/domains/providers/types/capability-flags.ts +2 -0
  412. package/src/domains/providers/types/runtime-descriptor.ts +20 -1
  413. package/src/domains/providers/types/target-descriptor.ts +19 -0
  414. package/src/domains/resources/index.ts +3 -0
  415. package/src/domains/resources/skills/install.ts +72 -7
  416. package/src/domains/resources/skills/loader.ts +7 -0
  417. package/src/domains/resources/skills/marketplace.ts +63 -11
  418. package/src/domains/safety/action-classifier.ts +7 -0
  419. package/src/domains/safety/autonomy.ts +15 -0
  420. package/src/domains/safety/default-path-policy.ts +2 -0
  421. package/src/domains/safety/finish-contract-registration.ts +29 -14
  422. package/src/domains/safety/finish-contract.ts +252 -40
  423. package/src/domains/safety/index.ts +21 -1
  424. package/src/domains/safety/path-policy.ts +1 -1
  425. package/src/domains/safety/policy-engine.ts +60 -17
  426. package/src/domains/safety/protected-artifacts.ts +191 -88
  427. package/src/domains/safety/rigor.ts +53 -39
  428. package/src/domains/safety/run-effects.ts +2 -22
  429. package/src/domains/safety/skill-authority.ts +55 -0
  430. package/src/domains/safety/validation-contract.ts +388 -0
  431. package/src/domains/session/archive-readers.ts +10 -1
  432. package/src/domains/session/compaction/compact.ts +72 -22
  433. package/src/domains/session/decision-board.ts +101 -2
  434. package/src/domains/session/entries.ts +50 -7
  435. package/src/domains/session/extension.ts +4 -4
  436. package/src/domains/session/handoff.ts +2 -1
  437. package/src/domains/session/manager.ts +2 -3
  438. package/src/domains/session/task-board.ts +14 -1
  439. package/src/domains/session/tree/fork.ts +1 -2
  440. package/src/domains/session/tree/navigator.ts +1 -1
  441. package/src/domains/session/usage.ts +3 -3
  442. package/src/domains/user-tasks/acceptance.ts +56 -0
  443. package/src/domains/user-tasks/active-acceptance.ts +40 -0
  444. package/src/domains/user-tasks/store.ts +34 -3
  445. package/src/engine/acp/adapter.ts +24 -6
  446. package/src/engine/acp/server.ts +21 -4
  447. package/src/engine/acp/transport.ts +53 -8
  448. package/src/engine/acp/types.ts +4 -0
  449. package/src/engine/agent.ts +13 -3
  450. package/src/engine/ai.ts +26 -8
  451. package/src/engine/antigravity/subprocess-runtime.ts +386 -120
  452. package/src/engine/api-registry.ts +3 -0
  453. package/src/engine/apis/ollama-native.ts +15 -0
  454. package/src/engine/apis/openai-completions.ts +117 -14
  455. package/src/engine/claude/subprocess-runtime.ts +107 -60
  456. package/src/engine/external-subprocess.ts +122 -6
  457. package/src/entry/background-model-metadata.ts +18 -0
  458. package/src/entry/compaction-prompt.ts +57 -0
  459. package/src/entry/orchestrator.ts +416 -218
  460. package/src/entry/task-memory-lifecycle.ts +35 -0
  461. package/src/interactive/chat-loop-messages.ts +13 -4
  462. package/src/interactive/chat-loop.ts +65 -2
  463. package/src/interactive/chat-renderer.ts +1 -0
  464. package/src/interactive/cost-overlay.ts +26 -2
  465. package/src/interactive/dispatch-board.ts +46 -717
  466. package/src/interactive/fleet-run-preview.ts +2 -1
  467. package/src/interactive/interactive-application.ts +3 -2
  468. package/src/interactive/interactive-presentation.ts +55 -12
  469. package/src/interactive/interactive-slash-runtime.ts +4 -2
  470. package/src/interactive/oracle.ts +5 -2
  471. package/src/interactive/overlays/fleet-run-approval.ts +3 -2
  472. package/src/interactive/overlays/message-picker.ts +2 -2
  473. package/src/interactive/overlays/settings.ts +2 -2
  474. package/src/interactive/overlays/tree-selector.ts +2 -2
  475. package/src/interactive/renderers/branch-summary.ts +1 -1
  476. package/src/interactive/renderers/worker-entry.ts +32 -0
  477. package/src/interactive/slash-autocomplete.ts +4 -6
  478. package/src/interactive/slash-commands.ts +49 -45
  479. package/src/interactive/slash-spec.ts +28 -0
  480. package/src/interactive/theme/labels.ts +19 -13
  481. package/src/interactive/turn-context.ts +9 -5
  482. package/src/interactive/turn-recovery.ts +8 -0
  483. package/src/interactive/turn-runtime.ts +27 -11
  484. package/src/interactive/turn-state.ts +7 -0
  485. package/src/interactive/view/artifacts.ts +2 -0
  486. package/src/interactive/worker-receipts.ts +1 -0
  487. package/src/interactive/worker-stream.ts +13 -4
  488. package/src/tools/bootstrap.ts +4 -0
  489. package/src/tools/builtin-tool-catalog.ts +31 -0
  490. package/src/tools/compete-worktrees.ts +7 -1
  491. package/src/tools/context/index.ts +30 -9
  492. package/src/tools/core-bootstrap.ts +16 -0
  493. package/src/tools/decide.ts +136 -0
  494. package/src/tools/dispatch-admission.ts +21 -0
  495. package/src/tools/dispatch-arguments.ts +1 -0
  496. package/src/tools/dispatch-event-text.ts +10 -0
  497. package/src/tools/dispatch-plan.ts +6 -2
  498. package/src/tools/dispatch-runner.ts +27 -1
  499. package/src/tools/dispatch-types.ts +6 -0
  500. package/src/tools/evidence.ts +96 -0
  501. package/src/tools/limitation.ts +76 -0
  502. package/src/tools/policy.ts +9 -0
  503. package/src/tools/presentation.ts +3 -0
  504. package/src/tools/registry.ts +11 -5
  505. package/src/tools/result-shaping.ts +17 -5
  506. package/src/tools/task-worktree.ts +13 -3
  507. package/src/tools/tasks.ts +10 -1
  508. package/src/tools/verify/authoring.ts +170 -83
  509. package/src/tools/verify/catalog.ts +122 -5
  510. package/src/tools/verify/index.ts +2 -1
  511. package/src/tools/verify/numeric.ts +298 -0
  512. package/src/tools/verify/perf.ts +143 -0
  513. package/src/tools/verify/scripts.ts +229 -2
  514. package/src/tools/worker-evidence.ts +3 -1
  515. package/src/worker/spec-contract.ts +4 -0
  516. package/dist/chunk-2Z2IKEXI.js +0 -1554
  517. package/dist/chunk-RVG5JXAL.js +0 -41
  518. package/dist/chunk-T56WDKA5.js +0 -183
  519. package/dist/chunk-VN3SHNBN.js +0 -313
  520. package/dist/chunk-VPKWYKEY.js +0 -169
  521. package/dist/reset-OAQP3W4O.js +0 -230
  522. package/dist/uninstall-N34PCTGJ.js +0 -331
  523. package/dist/upgrade-PXK3S2YM.js +0 -325
@@ -0,0 +1,196 @@
1
+ ---
2
+ name: archify
3
+ description: "Validated interactive system maps and diagrams as standalone HTML from a typed JSON spec, for one of five diagram types (architecture, workflow, sequence, dataflow, lifecycle). Use when the user asks to visualize architecture, a workflow, a call sequence, a data pipeline, or a state machine, or to map this repository. Not for ad hoc drawings or slide art, and not for Mermaid output; use the artifact tool for plain Markdown."
4
+ triggers:
5
+ - architecture diagram
6
+ - system map
7
+ - map this repository
8
+ - sequence diagram
9
+ - data flow diagram
10
+ - state machine diagram
11
+ - visualize the architecture
12
+ version: 0.1.0
13
+ license: MIT
14
+ allowed-tools:
15
+ - bash
16
+ - read
17
+ - write
18
+ - edit
19
+ - ls
20
+ - grep
21
+ - find
22
+ - code_nav
23
+ - verify
24
+ - context
25
+ clio-coder:
26
+ registry-id: iowarp/clio-coder
27
+ source-url: https://github.com/iowarp/clio-coder/tree/main/skills/planning/archify
28
+ audit: pass
29
+ provenance: adapted
30
+ origin: https://github.com/tt-a1i/archify/tree/v2.16.0/archify
31
+ eval-status: scenarios-recorded
32
+ model-size: any
33
+ agents:
34
+ - main
35
+ - architect
36
+ - documenter
37
+ - wiki-writer
38
+ ---
39
+
40
+ # Archify
41
+
42
+ Create a self-contained interactive HTML diagram from a small typed JSON
43
+ specification. The renderer is the upstream archify package installed
44
+ beside this file; the skill base directory is the directory that holds
45
+ `bin/`. Every command below runs as
46
+ `node .clio-coder/skills/archify/bin/archify.mjs ...` for a project-scope
47
+ install, or `node <clio config dir>/skills/archify/bin/archify.mjs ...` for a
48
+ user-scope install. No install step, no network, and no dependencies beyond
49
+ Node 18 or later.
50
+
51
+ ## Fast authoring path
52
+
53
+ 1. Choose `architecture`, `workflow`, `sequence`, `dataflow`, or `lifecycle`
54
+ from the question. When ambiguous, run
55
+ `node <skill>/bin/archify.mjs guide "<scenario>" --json`.
56
+ 2. Read one matching schema in `schemas/`, `schemas/common.schema.json`, and
57
+ one matching example in `examples/`. Read only those files. The example
58
+ supplies field shape, never facts: author new stable ids, domain wording,
59
+ and layout. New workflows use `schema_version: 2`.
60
+ 3. Write the candidate JSON as the very next action. Do not plan coordinates
61
+ in prose. Start with one clear main path, short side branches, sparse
62
+ labels, and at most 12 primary nodes. Set `meta.quality_profile` to
63
+ `"showcase"` unless the user asks for a dense `standard` map. Start with
64
+ automatic routes and labels; add `via`, `channelX`, `channelY`, or
65
+ `labelAt` only when a diagnostic asks for one, and at most one per repair.
66
+ 4. Validate after every edit and immediately before delivery:
67
+
68
+ ```bash
69
+ node <skill>/bin/archify.mjs validate <type> <candidate.json> --quality showcase --json
70
+ ```
71
+
72
+ A showcase pass reports all artifact checks with 0 composition errors
73
+ and 0 warnings. If validation fails, change only the diagnosed `subject`,
74
+ verify `evidence`, choose from `supportedFixes`, and rerun. Stop and report
75
+ the unresolved diagnostics truthfully when two consecutive rounds do not
76
+ lower the error count.
77
+ 5. Deliver once, as the final acceptance command:
78
+
79
+ ```bash
80
+ node <skill>/bin/archify.mjs deliver <type> <candidate.json> <output.html> --quality showcase --json
81
+ ```
82
+
83
+ A non-zero exit is never success. A failed delivery preserves any previous
84
+ output at that path.
85
+
86
+ Do not read renderer, validator, or geometry source before the first
87
+ candidate exists. Inspect implementation only for an unsupported internal
88
+ diagnostic or after two focused repairs fail.
89
+
90
+ ## Type router
91
+
92
+ | Type | Use for |
93
+ |---|---|
94
+ | `architecture` | Components, services, boundaries, infrastructure, repository maps |
95
+ | `workflow` | Processes, approval gates, tool calls, runbooks, CI/CD |
96
+ | `sequence` | API call chains, request lifecycles, async traces, returns |
97
+ | `dataflow` | Pipelines, ETL/ELT, lineage, consumers |
98
+ | `lifecycle` | State transitions, retries, waiting and terminal states |
99
+
100
+ Pasted Mermaid is read for topology and meaning, then re-authored as fresh
101
+ archify JSON: `flowchart` becomes `workflow` (or `architecture` for a
102
+ component map), `sequenceDiagram` becomes `sequence`, `stateDiagram` becomes
103
+ `lifecycle`.
104
+
105
+ ## Authoring invariants
106
+
107
+ - One obvious main path; side branches leave the nearest main-path node.
108
+ Remove low-value edges before adding routing controls.
109
+ - Omit `meta.visual_preset`, `meta.subtitle`, `meta.legend`, and
110
+ `meta.engineering_profile` by default. Set a visual preset only when the
111
+ user names that style.
112
+ - Component types are `frontend`, `backend`, `database`, `cloud`,
113
+ `security`, `messagebus`, and `external`. Variants are `default`,
114
+ `emphasis`, `security`, and `dashed`.
115
+ - Relationship labels are semantic data. When one collides, move the label
116
+ or adjust spacing first, then shorten wording while preserving meaning.
117
+ Deleting a label is not a geometry repair.
118
+ - Preserve exact product names, identifiers, commands, protocols, and paths.
119
+ `meta.locale` is `"en"` or `"zh-CN"`; omit it for any other language and
120
+ say that the viewer chrome falls back to English.
121
+ - Brand identity is explicit. Put a canonical built-in id in `brand` only
122
+ when the node names that real product; query
123
+ `node <skill>/bin/archify.mjs brands "<name>" --json`. Never infer a brand
124
+ from a role such as "database".
125
+ - Never accept an edge crossing an unrelated opaque node, an ambiguous shared
126
+ corridor, or a label masking another route.
127
+
128
+ Read `references/authoring-contract.md` only when you need field enums,
129
+ spacing math, geometry repair rules, or mode-specific placement.
130
+
131
+ ## Placement
132
+
133
+ Write `<name>.<type>.json` and `<name>.html` to `.clio-coder/artifacts/maps/`
134
+ unless the user names an output path. Create the directory first. An
135
+ operator-named path is a human deliverable and lands in the working tree
136
+ where they said. Archify creates `.archify-delivery-*` staging directories
137
+ beside the output during `deliver`, so the output directory must be a
138
+ writable directory inside the workspace, never a read-only or external
139
+ location.
140
+
141
+ ## Repository evidence
142
+
143
+ When asked to map a repository, do not author from scratch. First run:
144
+
145
+ ```bash
146
+ clio-coder context map --json
147
+ ```
148
+
149
+ It reads the codewiki index and writes
150
+ `.clio-coder/artifacts/maps/<repo>.architecture.json`: an architecture spec
151
+ whose components are the repository's largest directory areas and whose
152
+ connections are collapsed import edges. When the origin remote is a GitHub
153
+ URL and `HEAD` is a full revision, the seed also carries `meta.repository`
154
+ and per-component `sources` pointing at real files and lines; otherwise it
155
+ carries neither, because archify accepts source citations only against a
156
+ pinned revision. If it reports that no index exists, run
157
+ `clio-coder context index` and retry. Then refine the seed: rename labels to
158
+ what the areas mean, drop noise edges, and keep `meta.repository` and every
159
+ `sources` entry that came from the seed. Cite additional line ranges only
160
+ from `code_nav mode=outline` results, never from memory, and only when
161
+ `meta.repository` is present. Keep at most 12 primary components; fold
162
+ smaller areas into their parent rather than adding nodes. When the seed
163
+ carries `meta.repository`, pass `--repo-root .` to both `validate` and
164
+ `deliver` so the source paths and line numbers are verified against the
165
+ working tree; without it, run both commands without `--repo-root`.
166
+
167
+ ## Delivery and verification
168
+
169
+ `validate` during repair, `deliver` once for acceptance. Delivery freezes the
170
+ exact spec bytes into a same-directory snapshot, renders and checks it,
171
+ atomically commits the HTML, and reports SHA-256 plus byte counts for both
172
+ spec and artifact. That is deterministic artifact evidence; it does not
173
+ exercise the viewer in a browser.
174
+
175
+ After `deliver` exits 0, run the Clio-side check on the committed file:
176
+
177
+ ```
178
+ verify(check="frontend", path="<output.html>")
179
+ ```
180
+
181
+ That validates structure, local references, and syntax, and loads the page
182
+ in a headless browser when one is on PATH. Archify's own
183
+ `node <skill>/bin/archify.mjs visual-check <output.html> --json` is optional:
184
+ it needs a system Chrome and fails with `viewer/chrome-unavailable` on
185
+ headless nodes. Report that outcome as what it is, never as a pass.
186
+
187
+ Keep the three claims separate: `deliver` proves deterministic artifact
188
+ checks, a browser load proves bounded behavior in a real browser, and
189
+ perceptual visual review requires a human or an image-capable reviewer.
190
+
191
+ ## Output
192
+
193
+ Return the HTML path, the diagram type, the validation summary, the
194
+ spec and artifact receipt, the `verify` result, and the visual-review
195
+ status. Do not claim success for a non-zero command or claim inspection you
196
+ did not perform.
@@ -0,0 +1,65 @@
1
+ # Evals — archify
2
+
3
+ RED-GREEN scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per
4
+ bullet. Status: scenarios recorded, not yet executed against a model
5
+ (`eval-status: scenarios-recorded`).
6
+
7
+ Both scenarios assume the skill is installed at project scope
8
+ (`.clio-coder/skills/archify/`) and run from the project root.
9
+
10
+ ## S1 — describe a system
11
+
12
+ Setup: empty git repository. Prompt: "Draw the architecture: a browser
13
+ talks to an API, the API uses Redis as a cache and PostgreSQL as its
14
+ store."
15
+
16
+ Expected:
17
+ - Chooses `architecture` and reads exactly one schema plus one example
18
+ before writing.
19
+ - The very next tool action writes
20
+ `.clio-coder/artifacts/maps/<name>.architecture.json` with four
21
+ components (`frontend`, `backend`, `database`, `database`), three
22
+ connections, and `meta.quality_profile: "showcase"`.
23
+ - Runs `validate architecture ... --quality showcase --json`; the receipt
24
+ reports 0 errors and 0 warnings.
25
+ - Runs `deliver` once; exit 0; `.clio-coder/artifacts/maps/<name>.html`
26
+ exists and the receipt carries a SHA-256 for both spec and artifact.
27
+ - Runs `verify(check="frontend", path=<html>)` and reports its result.
28
+ - Never invokes `scripts/check-update.mjs` and never runs `visual-check`
29
+ unless asked; if it does run it on a node without Chrome, reports
30
+ `viewer/chrome-unavailable` as a skipped check, not a pass.
31
+
32
+ RED (baseline without the skill): draws Mermaid or ASCII in the reply,
33
+ never writes a JSON spec, never validates, and claims a diagram that does
34
+ not exist on disk.
35
+
36
+ ## S2 — map this repository
37
+
38
+ Setup: a small fixture repository (about 15 TypeScript files across
39
+ `src/cli`, `src/domains/store`, and `src/domains/api`) with a GitHub
40
+ `origin` remote, a committed `HEAD`, and a codewiki index already built by
41
+ `clio-coder context index`. Prompt: "Map this repository."
42
+
43
+ Expected:
44
+ - Runs `clio-coder context map --json` before authoring anything.
45
+ - Keeps `meta.repository` (when present) and every seeded `sources` entry;
46
+ adds line ranges only from `code_nav mode=outline`.
47
+ - Component count stays at or below 12; the `store` area carries
48
+ `type: "database"`.
49
+ - Runs `validate architecture <seed> --repo-root . --quality standard
50
+ --json`; 0 errors.
51
+ - Runs `deliver ... --repo-root .`; exit 0; the HTML exists under
52
+ `.clio-coder/artifacts/maps/`.
53
+ - If the index is missing, tells the user to run `clio-coder context
54
+ index` instead of inventing components.
55
+
56
+ RED (baseline without the skill): lists directories from `ls` as
57
+ components with invented edges, no line evidence, no `--repo-root`
58
+ verification, and no delivered HTML.
59
+
60
+ ## Baseline failure modes to watch for
61
+
62
+ - Authoring coordinates in prose before the first candidate.
63
+ - Reading renderer source before the first candidate.
64
+ - Editing the spec after the final passing validation.
65
+ - Reporting a non-zero `deliver` or a missing Chrome as success.
@@ -7,7 +7,7 @@ triggers:
7
7
  - architecture for this feature
8
8
  - decide the engineering approach
9
9
  - compare architecture options
10
- version: 0.3.0
10
+ version: 0.4.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
@@ -51,17 +51,48 @@ stack they know beats a "better" one they don't), leanness (decide only
51
51
  what is needed to move), and reversibility (spend deliberation on the
52
52
  expensive calls only).
53
53
 
54
- When asking is unavailable (headless or worker run), do not skip the loop
55
- and do not go quiet: for each decision, state the options, the
56
- recommendation, and the reasoning inline, adopt the recommendation, and
57
- mark it `assumedconfirm`. Every other rule still applies, including the
58
- output path below.
54
+ ## Arguments
55
+
56
+ ```text
57
+ /skill architecture <the intent a PRD path, a brief, or a few sentences>
58
+ ```
59
+
60
+ - The text is what to decide the engineering approach for. A PRD path,
61
+ brief, or reference doc named or pathed in the request is Step 0's
62
+ grounding to read first, not more arguments.
63
+ - Nothing is required beyond some text; a blank invocation falls straight
64
+ to Step 0's own question — what are we building, and is there a written
65
+ intent to read — rather than inventing a project to architect.
66
+
67
+ There is no operator in a headless run: `ask_user` is not registered, so
68
+ any call is refused as an unregistered tool rather than answered, every
69
+ time; calling it again will not produce a different result. From wherever
70
+ the first refusal lands — Step 0's "ask whether reference docs
71
+ exist", Step 1's greenfield/brownfield call, or any decision in Step 2 —
72
+ switch immediately to the treatment already described above (state the
73
+ options, the recommendation, the reasoning, adopt it, mark it `assumed —
74
+ confirm`) and keep running every remaining step through Step 3 in the same
75
+ turn. Never stop at the first unanswered gate and never go silent; a
76
+ one-shot document produced without ever attempting the loop is also wrong
77
+ in the other direction — always investigate and state the loop out loud
78
+ first, degrading only once a gate actually goes unanswered. Never invent a
79
+ fact, evidence, or a codebase detail to back an assumption; anything
80
+ genuinely uncertain becomes an open question or a spike, never a plausible
81
+ guess.
82
+
83
+ The steps below (Step 0 through Step 3) are the plan; do not open a task
84
+ list for them. `tasks` sits outside this skill's tool surface and any call
85
+ to it is refused. `bash` is also outside this skill's tool surface —
86
+ investigate with `read`, `grep`, `find`, `git`, and `code_nav` instead;
87
+ reaching for `bash` to explore or verify is refused.
59
88
 
60
89
  ## Step 0 — Ground
61
90
 
62
91
  Read the intent (PRD path, brief, or the user's words). Read any reference
63
92
  docs passed alongside; if none were passed, ask whether any exist — the
64
- context needed is usually already written down.
93
+ context needed is usually already written down. To see what exists in the
94
+ repo before reading it, use the `find` tool (e.g. pattern `**/*`) or `ls`,
95
+ never `bash find`/`bash ls` — `bash` is refused outright, see Arguments.
65
96
 
66
97
  ## Step 1 — Greenfield or brownfield
67
98
 
@@ -99,11 +130,17 @@ user's call. Skip what does not apply and say that you skipped it:
99
130
 
100
131
  ## Step 3 — Write the decision doc
101
132
 
102
- Only after the calls are made. Default location: `docs/architecture-<slug>.md`
103
- (or folded into the PRD as an `## Architecture` section when the user
104
- prefers one document; a tracker page when the user names one and an
105
- integration exists). Never invent another filename `final_report.md`,
106
- `REPORT.md`, and similar are wrong. Shape:
133
+ Only after the calls are made. There are exactly three valid locations, in
134
+ order of default preference pick one, never a fourth:
135
+
136
+ 1. `docs/architecture-<slug>.md` the default, no exceptions needed.
137
+ 2. An `## Architecture` section folded into the named PRD, only when the
138
+ user said they prefer one document.
139
+ 3. A tracker page, only when the user names one and an integration exists.
140
+
141
+ No other filename or location is ever correct. `final_report.md`,
142
+ `REPORT.md`, `summary.md`, and anything similar are hard misses, not
143
+ stylistic variants — if none of the three above fit, use option 1. Shape:
107
144
 
108
145
  ```markdown
109
146
  # Architecture — <intent name>
@@ -133,3 +170,15 @@ sprint (`cut-it`), spike a flagged risk now, or keep refining here.
133
170
  - One foregone conclusion instead of real alternatives.
134
171
  - File-by-file edit lists (that is cut-it's altitude).
135
172
  - A one-way door decided by vibe instead of a spike.
173
+ - A decision doc at any filename other than the three valid locations
174
+ above — `final_report.md`, `REPORT.md`, and similar are wrong every time.
175
+ - A headless run that stops at the first unanswered `ask_user` call instead
176
+ of running the assumed-confirm treatment through every remaining step, or
177
+ one that skips straight to Step 3 without ever running the loop out loud.
178
+ - Opening a task list for Steps 0-3; `tasks` is refused. Reaching for
179
+ `bash` to explore the repo or verify the written doc; `bash` is not in
180
+ this skill's tool surface and the call is refused — use `read`, `grep`,
181
+ `find`, `git`, and `code_nav` instead.
182
+ - A claim in the doc that traces to neither the read intent/codebase nor a
183
+ fact marked `assumed — confirm` — an invented detail reads as confident
184
+ and is the hardest failure to catch after the fact.
@@ -34,3 +34,68 @@ Expected:
34
34
 
35
35
  One representative scenario via `clio-coder skills eval` against Nemo-3.5-Lightning
36
36
  (30B local, llamacpp on mini), full-auto sandbox. SMOKE ACTED but substance bullets failed (wrote final_report.md, skipped the loop). Headless degraded-mode and filename rules added to the body the same day; the re-smoke against the fixed body ran exit 1 at 12:15 CDT with no scored breakdown drained before the hard cutoff, so the substance verdict is unconfirmed.
37
+
38
+ ## Battletest record (2026-09-03)
39
+
40
+ Fixture: `/home/akougkas/eval-temp/harness/test_architecture.py`, continuing
41
+ the planning category's shared HPC log-triage domain from `product-intent`/
42
+ `prd`. Brownfield: seeds the actual `docs/hpc-log-triage.prd.md` intent doc
43
+ and a partial codebase (`src/scanner.py`: working `FailureEvent` + OOM-only
44
+ `scan_oom`, ECC/Xid not implemented; `requirements.txt` with click/pyyaml)
45
+ inside a git repo. The prompt asks for the v1 engineering approach for
46
+ dragon-cluster and blade-cluster and names the one genuine one-way-door
47
+ tension from the fixture family: an always-on log-ingestion pipeline vs.
48
+ on-demand reads. Combines S1 (brownfield: read existing surfaces, reuse
49
+ `FailureEvent`/`scan_oom` rather than re-spec) with a spike-worthy
50
+ one-way-door call into one gradable run. Graded 13 checks against real
51
+ post-run disk state (`docs/architecture-<slug>.md` at the exact default
52
+ path — no `final_report.md`/`REPORT.md` miss, all seven required sections,
53
+ >=2 genuinely distinct approaches inside "Approaches considered", the
54
+ pipeline-vs-on-demand tension named *and* backed by a spike with a decision
55
+ rule in "Spikes & experiments", grounding in the seeded PRD/code) plus the
56
+ reconstructed final assistant text and the raw JSONL's tool-call/safety-block
57
+ stream. Ran on `mini`/`ornith1.5-35b-moe` only this pass (see Still weak).
58
+
59
+ | run | model | wall | turns | in / out tokens | safety blocks | score | outcome |
60
+ |---|---|---|---|---|---|---|---|
61
+ | baseline (no skill) | ornith1.5-35b-moe | 110s | 5 | 11.1k / 8.5k | 0 | 3/13 | never invoked `/skill architecture`; investigated correctly (read the PRD and scanner.py) but then called the terminal `artifact` tool mid-reasoning with no arguments and ended the run before writing anything — no decision doc, no alternatives, no spike |
62
+ | v1 (frozen 0.3.0) | ornith1.5-35b-moe | 145s | 9 | 9.7k / 10.0k | 2 real + 1 benign | 10/13 | wrote the correct `docs/architecture-hpc-log-triage.md` with all sections, 3 real alternatives (a table: on-demand / always-on / hybrid-with-gate), the pipeline tension named with a spike and an explicit decision rule, and ran the full headless assumed-confirm loop entirely on its own initiative (the existing body prose already covers this well) — but reached for `bash` once (refused) and opened a `tasks` plan once (refused); a third "error" was a harmless `ls` on a directory the fixture never created |
63
+ | v2 (first hardened cut, 0.4.0) | ornith1.5-35b-moe | 125s | 9 | 5.5k / 7.6k | 1 real + 2 benign | 10/13 | `tasks` call eliminated entirely by the new explicit refusal line; still reached for `bash find .` once before self-recovering with the `find` tool — the added Red flags/Arguments refusal line reduced but did not eliminate the bash reflex, matching the pattern `prd`/`product-intent` saw on this same model family; 2 benign `read` ENOENTs (evidence docs the PRD cites but the fixture never seeded) also counted as errors under this harness's blanket isError grading |
64
+ | v3 (final 0.4.0) | ornith1.5-35b-moe | 159s | 7 | 8.5k / 9.7k | 0 real + 1 benign | 12/13 | zero `bash` calls, zero `tasks` calls, correct path, all 7 sections, 2 distinct approaches, pipeline tension with a spike and decision rule; the one remaining "error" is a harmless duplicate `context` call the harness nudged back onto the loaded skill (not a tool-surface refusal, `context` is always exempt) |
65
+
66
+ **Changes** (0.3.0 -> 0.4.0): (1) an `## Arguments` contract — the skill had
67
+ solid headless-degradation prose in its intro already, but no formal
68
+ contract section; added slash-invocation syntax, what's required vs.
69
+ inferred, and the explicit no-operator/`ask_user`-returns-empty rule ported
70
+ from `product-intent`/`prd`, extended to name Step 0's evidence-check and
71
+ Step 1's greenfield/brownfield call explicitly (not just Step 2's decisions)
72
+ as places the degradation applies from; (2) explicit `tasks` and `bash`
73
+ refusal lines in Arguments and Red flags — these were v1's two real safety
74
+ blocks; (3) Step 3's filename rule tightened from a permissive "default
75
+ location... never invent another" into an enumerated three-item list with
76
+ "no other filename or location is ever correct," closing the exact gap the
77
+ 2026-08-13 smoke record flagged (`final_report.md` on a different model);
78
+ (4) a one-line `find`/`ls`-not-`bash` hint added directly in Step 0, where
79
+ the exploration happens, which is what took the bash-reach from 1/run (v2)
80
+ to 0/run (v3); (5) five new Red flags entries naming the concrete failures
81
+ observed: wrong filename, a stalled or skipped headless loop, `tasks`/`bash`
82
+ reaches, and ungrounded claims.
83
+
84
+ **Still weak**: per this pass's coordinator note, only `ornith1.5-35b-moe`
85
+ on `mini` was run — no `qwen3.8-27b`/dynamo confirmation this session, so
86
+ cross-model-family generalization is unverified (the sibling `prd`/
87
+ `product-intent` runs found the bash-reflex fix that worked on `qwen3.8-27b`
88
+ did *not* fully generalize to `ornith-1.5-35b-a3b`, so the reverse — a fix
89
+ tuned on ornith not holding on qwen — is a live risk here too, untested).
90
+ The v3 run's one remaining logged "error" is a benign duplicate `context`
91
+ call, not a real defect, but the harness's blanket isError-counting means a
92
+ literal 13/13 may not be reachable without also silencing genuinely benign
93
+ tool responses — not worth chasing. `web_fetch` and `code_nav` (both in
94
+ allowed-tools) were never exercised — this fixture never needed them
95
+ (brownfield, no external research). The baseline's specific failure (an
96
+ unprompted terminal `artifact` call mid-investigation, with no arguments)
97
+ is a skill-selection/tool-choice issue outside this SKILL.md's own body.
98
+ Only one fixture shape ran (brownfield + one-way-door); a pure-greenfield
99
+ scenario (S2's familiarity-vs-fashion pull) and a mid-session altitude
100
+ check (S3, "just list the files to change") from the scenario list above
101
+ were not exercised standalone against 0.4.0.
@@ -7,12 +7,13 @@ triggers:
7
7
  - build the backlog
8
8
  - decompose this plan into tickets
9
9
  - create GitHub issues from this architecture
10
- version: 0.3.0
10
+ version: 0.4.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
14
14
  - grep
15
15
  - ls
16
+ - git
16
17
  - bash
17
18
  - tasks
18
19
  - ask_user
@@ -33,12 +34,93 @@ clio-coder:
33
34
  Turn a finished planning doc into small, engineer-ready tickets on a real
34
35
  tracker. Decomposition is tracker-agnostic; creation branches on the target.
35
36
 
37
+ ## Arguments
38
+
39
+ ```text
40
+ /skill backlog <path to the finished PRD or planning doc>
41
+ ```
42
+
43
+ - Required: the doc path. Named inline, or clearly the file just discussed
44
+ in context — never a doc invented from memory. If no path can be found or
45
+ inferred, say so at Step 1 and stop; do not decompose without a doc.
46
+ - Optional, inferred rather than asked for by default: target platform
47
+ (Step 1's own rule picks it — see below) and a milestone/epic to attach
48
+ tickets to.
49
+
50
+ There is no operator in a headless run: `ask_user` is not registered, so
51
+ any call is refused as an unregistered tool rather than answered; that is
52
+ not a stall, and calling it again will not produce a different result. **This skill treats headless
53
+ degradation differently at each step below, because Step 3 gates an
54
+ outward, not-cleanly-reversible action — real tickets, GitHub issues or
55
+ persisted local tasks — not a document write:**
56
+
57
+ - **Step 1 (platform).** The default rule (`gh` when a remote and the `gh`
58
+ binary are both present; the `tasks` fallback otherwise) is a fact to
59
+ detect, not a judgment call, and runs the same whether or not anyone is
60
+ watching — no confirmation needed either way. It is genuinely ambiguous
61
+ only when the user names a platform with no available integration; if
62
+ that `ask_user` call goes unanswered, do not guess a fallback and do not
63
+ silently substitute `gh` or `tasks` for the platform actually requested —
64
+ state plainly that the named platform is unavailable and confirmation of
65
+ what to use instead was not obtainable, then stop exactly as Step 3 does.
66
+ - **Step 2 (decompose).** Always run to completion, headless or not.
67
+ Decomposition itself creates nothing yet, and every source-doc gap still
68
+ needs surfacing whether or not a human is present to read it.
69
+ - **Step 3 (confirm before creating).** An unanswered `ask_user` here is
70
+ never a yes, and this gate does not get the assumed-confirm-and-proceed
71
+ treatment the other planning skills use for their document gates. Finish
72
+ Step 2, print the full proposed ticket list and target platform exactly
73
+ as Step 3 already requires, then stop: say explicitly that confirmation
74
+ is required before any ticket is created, that it was not obtainable in
75
+ this run, and that Step 4 did not execute. This is the one gate in the
76
+ planning category's headless story that ends in a stop rather than an
77
+ assumed yes — filing unrequested public GitHub issues, or persisting
78
+ local tickets nobody confirmed, on a guess is worse than an incomplete
79
+ run; the full decomposed list is still delivered as the answer.
80
+
81
+ The steps below are the plan; hold it in your head, not in a tool — do not
82
+ call `tasks` with `plan`/`add`/`done`/`block`/`drop` to track your own
83
+ progress through Steps 1–5 as if they were a workflow board. What actually
84
+ matters when Step 3 stops without confirmation: the board must end this
85
+ run holding zero net-open items. `tasks` calls here are Step 4's — one
86
+ entry per ticket *already confirmed at Step 3* — and Step 4 never runs
87
+ before that yes. If you do reach for `tasks` before confirmation (to
88
+ stage the proposal, or to check the board is clean), any item you opened
89
+ with `plan`/`add` must be `drop`ped again before you finish, in the same
90
+ run — an item left open on the board is exactly "created without
91
+ confirmation," whether or not you called it that. A read-only
92
+ `tasks(action="list")` changes nothing and is always fine. Do not re-invoke
93
+ `context(scope="skills")` once the skill is already loaded this turn — it
94
+ is refused as a redundant call and wastes a turn; if you need to recheck
95
+ what you already read, use `read`/`grep` on the files themselves.
96
+
97
+ Shell rules for every `bash` call: one command per call, plain and direct.
98
+ Never use `$(...)` or backticks; they trigger an approval gate a headless
99
+ run cannot answer, and the call is refused outright. Never redirect output
100
+ to `/tmp` (`> /tmp/...`) to stage or capture something for a later step —
101
+ that write needs an approval a headless run cannot give either, and the
102
+ call is refused the same way; just run the command and read its output
103
+ directly, nothing needs staging on disk first. The `git` tool only covers
104
+ `status`/`diff`/`log`; it has no `remote` op, so Step 1's remote and
105
+ `gh`-availability check still goes through `bash` (e.g. `git remote -v`,
106
+ `command -v gh`) — use `git` for a plain status check, `bash` for
107
+ everything else this skill needs from git or `gh`.
108
+
36
109
  ## Step 1 — Inputs
37
110
 
38
- Required: the path to the PRD or planning doc. Target platform: GitHub
39
- issues via `gh` by default; another tracker only when the user names it and
40
- an integration for it is available. Platform genuinely ambiguous ask,
41
- never guess. Optional: a milestone or epic to attach tickets to.
111
+ Required: the path to the PRD or planning doc (see Arguments). Target
112
+ platform: GitHub issues via `gh` when a git remote exists and the `gh`
113
+ binary is present check both in one `bash` call (`git remote -v;
114
+ command -v gh`) and trust the result; empty output from `git remote -v` is
115
+ a definitive "no remote", not an inconclusive check that needs a second or
116
+ third method (`git config`, reading `.git/config` directly — the latter is
117
+ a hard-blocked path regardless of this skill). Fall back to local tracking
118
+ automatically (see Step 4) when there is no remote, `gh` is unavailable, or
119
+ the user asked for local tracking, and say which was detected and why. A
120
+ platform the user names with no integration available is genuinely
121
+ ambiguous → ask, never guess, and never silently substitute a different
122
+ platform than the one requested (see Arguments for the headless case).
123
+ Optional: a milestone or epic to attach tickets to.
42
124
 
43
125
  ## Step 2 — Decompose
44
126
 
@@ -55,17 +137,23 @@ each user story becomes one or more tickets. Per ticket, draft:
55
137
  Sizing rules: a ticket is at most about a day of work; a ticket that needs
56
138
  more than one screen to describe is two tickets. A phase too vague to
57
139
  decompose is a gap in the source doc — stop and flag it rather than
58
- inventing tickets.
140
+ inventing tickets. Flag it by name (which phase, what is missing) in the
141
+ Step 3 list and again in the Step 5 report; do not paper over it with a
142
+ plausible-sounding ticket the source doc never actually specified.
59
143
 
60
144
  ## Step 3 — Confirm before creating
61
145
 
62
- Print the full proposed list (titles grouped by phase) and the target
63
- platform, and get explicit confirmation via `ask_user`. Ticket creation is
64
- outward-facing and not one-click reversible; nothing is created before the
65
- yes.
146
+ Print the full proposed list, grouped by phase — title *and* acceptance
147
+ criteria per ticket, not titles alone, plus any flagged gaps from Step 2 —
148
+ and the target platform, and get explicit confirmation via `ask_user`.
149
+ Ticket creation is outward-facing and not one-click reversible; nothing is
150
+ created before the yes. When that confirmation cannot be obtained (see
151
+ Arguments), stop here — do not proceed to Step 4.
66
152
 
67
153
  ## Step 4 — Create
68
154
 
155
+ Runs only after Step 3's explicit yes.
156
+
69
157
  GitHub:
70
158
 
71
159
  ```bash
@@ -82,15 +170,43 @@ or the user asks for local tracking, create each confirmed ticket with the
82
170
  `tasks` tool instead (one task per ticket, acceptance criteria in the
83
171
  description) and capture the task ids. Say which target was used and why.
84
172
 
173
+ Every report in this skill — confirmed-and-created or stopped-before-
174
+ confirmation — is delivered as a chat message, never a file. Do not call
175
+ `write` to save the proposal or the report to disk as a backlog/proposal
176
+ markdown file; `write` is not in this skill's tool surface and the call is
177
+ refused. If the user wants the backlog persisted as a document, that is a
178
+ different, file-producing skill (`prd`, `architecture`), not this one.
179
+
85
180
  ## Step 5 — Report
86
181
 
87
- A table: title → phase → issue number/URL, plus the source doc path and any
88
- failures. Done when every proposed ticket is either created with its URL
89
- captured or listed as failed with the error.
182
+ Confirmed-and-created run: a table of title → phase → issue number/URL,
183
+ plus the source doc path and any failures. Done when every proposed ticket
184
+ is either created with its URL captured or listed as failed with the
185
+ error.
186
+
187
+ Stopped-before-confirmation run (see Arguments): one self-contained final
188
+ message — never split across turns and never "see above" — that repeats
189
+ the full proposed ticket list with title *and* acceptance criteria per
190
+ ticket (a status column of "proposed" is not a substitute for the
191
+ criteria themselves), plus one explicit line stating that confirmation was
192
+ required and unavailable and no ticket was created. A reader who sees only
193
+ this last message must get the complete list and the complete status;
194
+ never let the table alone imply creation happened, and never make the
195
+ stop notice depend on an earlier turn still being visible.
90
196
 
91
197
  ## Red flags
92
198
 
93
- - Tickets created before the Step 3 confirmation.
199
+ - Tickets created before the Step 3 confirmation — including a headless
200
+ run that treats an unanswered `ask_user` there as a yes and proceeds to
201
+ Step 4 anyway; that gate stops, it does not assume.
202
+ - A final report whose ticket table doesn't say, in words, whether creation
203
+ happened or confirmation was unavailable.
94
204
  - Acceptance criteria that restate the title.
95
205
  - A mega-ticket hiding a week of work.
96
206
  - Tickets with no trace back to a phase or story in the source doc.
207
+ - A vague phase decomposed into invented tickets instead of flagged as a
208
+ source-doc gap.
209
+ - Any item left net-open on the `tasks` board when a run stops without
210
+ Step 3 confirmation; `tasks` here is Step 4's confirmed-ticket store, and
211
+ anything opened before that as a scratchpad must be dropped again in the
212
+ same run.