@iowarp/clio-coder 0.4.3 → 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 (340) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +1 -1
  3. package/dist/{acp-H2NGRPWO.js → acp-WNAYYF4F.js} +4 -5
  4. package/dist/{agents-TL5LLUQP.js → agents-3OKXHLOI.js} +33 -31
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-E5SW4HMS.js → auth-VKNNMGPU.js} +10 -11
  7. package/dist/{builtins-IA7V7FUC.js → builtins-WGALA46I.js} +4 -4
  8. package/dist/{chunk-F5JHEYZM.js → chunk-23L32XTI.js} +10 -7
  9. package/dist/{chunk-DWUOQKRU.js → chunk-25QBEXRS.js} +2 -2
  10. package/dist/{chunk-LLDJM5XK.js → chunk-26QSH3EJ.js} +2 -2
  11. package/dist/{chunk-N2Z7HLVY.js → chunk-2ASED4PZ.js} +10 -10
  12. package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
  13. package/dist/chunk-2DSOYNFC.js +108 -0
  14. package/dist/{chunk-LDJG7DW3.js → chunk-2ZSONWVL.js} +4 -4
  15. package/dist/{chunk-GI7YYQ3F.js → chunk-36CT5VVL.js} +324 -41
  16. package/dist/{chunk-4UVU7BJ5.js → chunk-3GY4F45V.js} +2 -2
  17. package/dist/{chunk-PUVDKJ2Y.js → chunk-3ODX73FK.js} +3 -5
  18. package/dist/{chunk-IUE3Y34X.js → chunk-3UNOLWNZ.js} +2 -2
  19. package/dist/{chunk-6PTFB5VS.js → chunk-3UUXNFEX.js} +8 -4
  20. package/dist/{chunk-2APPQIER.js → chunk-4M6Z5QVF.js} +4 -4
  21. package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
  22. package/dist/{chunk-JGRC33J2.js → chunk-54X7T7DK.js} +12 -3
  23. package/dist/{chunk-YQWYVTMC.js → chunk-5636DCO5.js} +4 -4
  24. package/dist/{chunk-7E7I3WLS.js → chunk-57XXR6DR.js} +23 -22
  25. package/dist/{chunk-7ZYNNDKC.js → chunk-5TUB6SLS.js} +2 -2
  26. package/dist/{chunk-VW6DOEDG.js → chunk-6OSVSQL5.js} +11 -2
  27. package/dist/{chunk-L47TF46W.js → chunk-6PAZTBPA.js} +14 -2
  28. package/dist/{chunk-XIVNBFZS.js → chunk-6Q3CYFD3.js} +34 -16
  29. package/dist/{chunk-RSJ25QSL.js → chunk-6QOTUPRG.js} +155 -36
  30. package/dist/{chunk-JKKCYP3C.js → chunk-6UINWWS6.js} +10 -4
  31. package/dist/{chunk-WBKFA554.js → chunk-72YIHOZQ.js} +2 -2
  32. package/dist/{chunk-PAJQJ7BS.js → chunk-75W7L2E2.js} +246 -697
  33. package/dist/{chunk-RRNP2ANY.js → chunk-7UGL4MB5.js} +4 -4
  34. package/dist/{chunk-EKCHAPYA.js → chunk-AUPNRN7C.js} +2 -2
  35. package/dist/{chunk-ZDN3Y73Y.js → chunk-BJVFZO5U.js} +6 -48
  36. package/dist/{chunk-IWT4SF4R.js → chunk-CUSRQKPU.js} +64 -2
  37. package/dist/{chunk-SKHCAU7K.js → chunk-DQOVN6KV.js} +3 -2
  38. package/dist/{chunk-ZWPRK62N.js → chunk-DT3LWJOB.js} +4 -4
  39. package/dist/chunk-DXKJURES.js +671 -0
  40. package/dist/{chunk-BEPZRGGU.js → chunk-EL24TAU4.js} +2 -2
  41. package/dist/{chunk-OML5D5V5.js → chunk-ELWDPP3Y.js} +5 -5
  42. package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
  43. package/dist/chunk-EXLD33WO.js +381 -0
  44. package/dist/{chunk-IJNZMHLA.js → chunk-FEAXX7B6.js} +2 -2
  45. package/dist/{chunk-TM6LQDI3.js → chunk-FFUPXJC4.js} +74 -323
  46. package/dist/chunk-GX5WYQO4.js +59 -0
  47. package/dist/chunk-I2DWJ4GM.js +390 -0
  48. package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
  49. package/dist/chunk-IRXAATOX.js +539 -0
  50. package/dist/chunk-IXIY2H4R.js +44 -0
  51. package/dist/{chunk-KK4JZPBQ.js → chunk-IZXGRF7P.js} +76 -10
  52. package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
  53. package/dist/{chunk-INY6HTFL.js → chunk-JEIYHLOR.js} +2 -2
  54. package/dist/{chunk-MUW2BDDH.js → chunk-JQLNNIKT.js} +2 -2
  55. package/dist/{chunk-XPWWI35G.js → chunk-JSD46VO2.js} +19 -8
  56. package/dist/{chunk-VA5FNYMT.js → chunk-JT2RFCC5.js} +39 -2
  57. package/dist/{chunk-V2ANDPVT.js → chunk-K6T2ZAMZ.js} +168 -6
  58. package/dist/{chunk-B4OAX3SI.js → chunk-KFV5L5SK.js} +13 -6
  59. package/dist/{chunk-JEQ3XTHC.js → chunk-LLXSDWXS.js} +2 -2
  60. package/dist/{chunk-E3TPLWFX.js → chunk-LTIKRKFL.js} +3 -3
  61. package/dist/{chunk-NIQJ66N4.js → chunk-N56KALIC.js} +17 -17
  62. package/dist/{chunk-JDAY6FIL.js → chunk-NAI6ZFCY.js} +13 -9
  63. package/dist/{chunk-AF4YM7Z4.js → chunk-NRO2BJRH.js} +2490 -2182
  64. package/dist/{chunk-WRBAGUNF.js → chunk-NXIMQY5W.js} +2 -2
  65. package/dist/{chunk-I7ZPNEJM.js → chunk-NXYCB2VD.js} +5 -5
  66. package/dist/chunk-ODGTEFFI.js +50 -0
  67. package/dist/{chunk-2VIKGWFZ.js → chunk-OEJSLEPW.js} +2 -2
  68. package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
  69. package/dist/{chunk-54CBCGIR.js → chunk-Q4WO54TA.js} +132 -77
  70. package/dist/{chunk-B4VEBZKF.js → chunk-QUFRYSWI.js} +12 -6
  71. package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
  72. package/dist/{chunk-HEQY7ZFI.js → chunk-RAY4OVGZ.js} +2 -2
  73. package/dist/{chunk-G76U63X4.js → chunk-RQCKCSRL.js} +7 -7
  74. package/dist/{chunk-64I3JVYM.js → chunk-RXTN6AKH.js} +2 -2
  75. package/dist/{chunk-UPZU6GE4.js → chunk-RZDWV63N.js} +3 -3
  76. package/dist/{chunk-2UH2KFUP.js → chunk-S6PYF2XF.js} +2 -2
  77. package/dist/{chunk-JSC3U7TI.js → chunk-TOIVGRUX.js} +2 -2
  78. package/dist/{chunk-7DRAWPTZ.js → chunk-TQAHXW6Y.js} +1 -1
  79. package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
  80. package/dist/{chunk-AX2THNSA.js → chunk-UEPWCCTY.js} +4 -4
  81. package/dist/{chunk-QWGDJJYJ.js → chunk-USR47QNF.js} +4 -4
  82. package/dist/{chunk-Y3CBHOR6.js → chunk-V6HJFQZE.js} +2 -2
  83. package/dist/chunk-V76WTFTW.js +318 -0
  84. package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
  85. package/dist/{chunk-2UG5F4C5.js → chunk-XULDXHTN.js} +24 -12
  86. package/dist/chunk-XXYSBZIQ.js +283 -0
  87. package/dist/{chunk-MWUZBSAQ.js → chunk-Y55JBDO5.js} +331 -51
  88. package/dist/{chunk-W6RRQCPQ.js → chunk-YD5GIKET.js} +4 -4
  89. package/dist/{chunk-CE5AX47J.js → chunk-YECAMM3D.js} +2 -2
  90. package/dist/{chunk-WCXUNS7U.js → chunk-YNFKXPEC.js} +6 -6
  91. package/dist/cli/index.js +36 -35
  92. package/dist/{clio-CMMK4KRR.js → clio-QLICPCF5.js} +2 -2
  93. package/dist/{code-nav-MDZNQS33.js → code-nav-IJR2DBPR.js} +6 -6
  94. package/dist/{components-UCUQ4QXW.js → components-2TGAI2RC.js} +3 -4
  95. package/dist/{config-SVM5P5YI.js → config-IUA6OYNS.js} +52 -47
  96. package/dist/{configure-LE3IK2TJ.js → configure-VEPX4NMX.js} +14 -15
  97. package/dist/{context-VNCR7KAG.js → context-2DKHWH2T.js} +23 -23
  98. package/dist/{context-2OHRKS42.js → context-4MPR7WKB.js} +48 -42
  99. package/dist/{context-E3VC7RX5.js → context-BOYF5EJM.js} +11 -11
  100. package/dist/{context-clear-BW4O37TG.js → context-clear-S4ZJCQUX.js} +48 -42
  101. package/dist/{context-working-set-VDS25HXZ.js → context-working-set-3I3FYX6Y.js} +8 -8
  102. package/dist/detail-A7JAVSIG.js +98 -0
  103. package/dist/{dispatch-runner-5AHT53RF.js → dispatch-runner-RJ5I2F2O.js} +71 -58
  104. package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
  105. package/dist/{doctor-WNNVO6FY.js → doctor-DKICC2SN.js} +54 -31
  106. package/dist/{eval-7G7SGAYO.js → eval-OQOQUDHK.js} +47 -56
  107. package/dist/{evidence-VD6736FQ.js → evidence-4DQ25GUQ.js} +53 -150
  108. package/dist/evidence-4F5USFKH.js +208 -0
  109. package/dist/{evolve-AL3NGVRL.js → evolve-GSS52E5J.js} +44 -41
  110. package/dist/{extensions-MOVJ32NM.js → extensions-G7MFLYHT.js} +4 -5
  111. package/dist/{fleet-QZHUMAGI.js → fleet-Q37YHHAQ.js} +74 -68
  112. package/dist/{fleet-commands-BAYT5FJZ.js → fleet-commands-G7E4N7SM.js} +14 -11
  113. package/dist/{fleet-decisions-IREVMRU4.js → fleet-decisions-O7M6QBA2.js} +6 -6
  114. package/dist/{fleet-graph-YCTT3HTI.js → fleet-graph-TOUBW6OW.js} +13 -13
  115. package/dist/{fleet-inspect-QVJTDAVB.js → fleet-inspect-SW33JJNI.js} +43 -39
  116. package/dist/{fleet-preflight-25QAFPK4.js → fleet-preflight-CV2655TW.js} +2 -3
  117. package/dist/{fleet-validate-5O57AAJ7.js → fleet-validate-KESZX2YH.js} +16 -16
  118. package/dist/{fleet-verify-CPH2W2T6.js → fleet-verify-UQPMTVE3.js} +42 -38
  119. package/dist/{fleet-view-SWBR3VGQ.js → fleet-view-MN2VG4MR.js} +43 -39
  120. package/dist/{init-J477LKZH.js → init-PXEXQSBF.js} +60 -54
  121. package/dist/{interop-3FCM6XLG.js → interop-ZG5T62U3.js} +6 -7
  122. package/dist/inventory-C26CFDRR.js +101 -0
  123. package/dist/{library-QUQEIUG6.js → library-B2W4N74O.js} +16 -17
  124. package/dist/{memory-SGGSEP65.js → memory-YCANYS5A.js} +45 -42
  125. package/dist/{models-HEKUAXXK.js → models-GERTU3YI.js} +20 -22
  126. package/dist/{monitor-HKU57TYQ.js → monitor-CPNIUULB.js} +50 -44
  127. package/dist/{orchestrator-VDFAEFAI.js → orchestrator-J4BSH4WQ.js} +491 -1182
  128. package/dist/{panes-DN2SSFOH.js → panes-BOHAEGYC.js} +3 -3
  129. package/dist/{panes-TALGNPZT.js → panes-NXSLDQZ2.js} +5 -6
  130. package/dist/{paths-NBMFAIEZ.js → paths-VSUWNC22.js} +3 -4
  131. package/dist/{reset-EAJFFJVB.js → reset-TNWTB5LU.js} +5 -6
  132. package/dist/{resources-OVKSEFVE.js → resources-4PXNMD5G.js} +14 -14
  133. package/dist/{run-7DP7ZF2J.js → run-D6XJ34CN.js} +79 -83
  134. package/dist/{share-WML67FT3.js → share-2NWMJJEE.js} +14 -15
  135. package/dist/{skills-SG662R2K.js → skills-KR7WON5G.js} +18 -19
  136. package/dist/{skills-eval-VVZEUU46.js → skills-eval-O2ZNOLDS.js} +49 -46
  137. package/dist/{skills-inventory-I2E23GET.js → skills-inventory-ZZOUBK7O.js} +14 -14
  138. package/dist/{slash-commands-S7MBJDQK.js → slash-commands-ZXPJD64J.js} +32 -23
  139. package/dist/{steer-2LQOMCPB.js → steer-XA25PSCS.js} +3 -3
  140. package/dist/{support-CC2UJBJ6.js → support-7EMVWYG2.js} +2 -2
  141. package/dist/{targets-4QC3HIEW.js → targets-OMH2XCSN.js} +25 -27
  142. package/dist/tasks-IPAGMEIX.js +36 -0
  143. package/dist/{terminal-lease-TUHIJ6Y2.js → terminal-lease-C2J3JYRE.js} +4 -4
  144. package/dist/{tools-TFGJICCU.js → tools-EFFEAIDP.js} +5 -6
  145. package/dist/{uninstall-5PEVOE5B.js → uninstall-HALS6BLF.js} +7 -8
  146. package/dist/{upgrade-M4WXY6KN.js → upgrade-MS72RJEP.js} +14 -11
  147. package/dist/{usage-N7ZNVLEM.js → usage-NHG6MCJM.js} +60 -51
  148. package/dist/{verifiers-DJTP4XX6.js → verifiers-7AUNVXDY.js} +150 -17
  149. package/dist/{verify-RWE4PPEK.js → verify-FWYGPKMR.js} +12 -10
  150. package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
  151. package/dist/{wiki-generate-C7IQOXSP.js → wiki-generate-743CIGJW.js} +63 -56
  152. package/dist/{with-panes-4GCGSL7J.js → with-panes-BDQEWBRT.js} +2 -2
  153. package/dist/worker/entry.js +36 -33
  154. package/docs/README.md +3 -2
  155. package/docs/architecture/acp.md +17 -0
  156. package/docs/architecture/artifact-versions.md +1 -1
  157. package/docs/architecture/dispatch-typed-intent.md +1 -1
  158. package/docs/architecture/evidence-and-memory.md +1 -1
  159. package/docs/architecture/observability.md +7 -1
  160. package/docs/architecture/prompt-envelope-and-tools.md +15 -5
  161. package/docs/architecture/safety-model.md +10 -17
  162. package/docs/architecture/tui-design.md +1 -1
  163. package/docs/guide/built-in-agents.md +8 -8
  164. package/docs/guide/commands-and-modes.md +17 -2
  165. package/docs/guide/configuration-and-targets.md +3 -1
  166. package/docs/guide/configuration-reference.md +10 -5
  167. package/docs/guide/environment-variables.md +2 -2
  168. package/docs/guide/tool-usage.md +78 -3
  169. package/docs/history/config-knobs-audit.md +2 -2
  170. package/docs/process/development-pipeline.md +6 -1
  171. package/docs/process/git-commit-provenance.md +15 -0
  172. package/docs/process/release-cut-checklist.md +207 -0
  173. package/docs/process/scientific-validation.md +18 -17
  174. package/evals/behavioral-machinery-support.ts +1 -0
  175. package/evals/behavioral-machinery.yaml +1 -1
  176. package/package.json +1 -1
  177. package/skills/coding/coding-standards/SKILL.md +14 -4
  178. package/skills/context/context-handoff/SKILL.md +3 -3
  179. package/skills/context/context-prime/SKILL.md +3 -3
  180. package/skills/planning/architecture/SKILL.md +5 -5
  181. package/skills/planning/backlog/SKILL.md +4 -4
  182. package/skills/planning/prd/SKILL.md +4 -3
  183. package/skills/planning/product-intent/SKILL.md +8 -8
  184. package/skills/planning/tech-spec/SKILL.md +4 -4
  185. package/skills/registry.yaml +32 -32
  186. package/skills/research/arxiv-literature/SKILL.md +3 -3
  187. package/skills/research/experiment-protocol/SKILL.md +3 -3
  188. package/skills/research/scientific-debugging/SKILL.md +3 -2
  189. package/skills/research/scientific-modernization/SKILL.md +3 -3
  190. package/skills/skill-marketplace.json +16 -16
  191. package/skills/workflow/cut-it/SKILL.md +3 -4
  192. package/skills/workflow/design-council/SKILL.md +5 -10
  193. package/skills/workflow/grill-me/SKILL.md +14 -15
  194. package/skills/workflow/workflow-distiller/SKILL.md +4 -4
  195. package/src/cli/args.ts +0 -8
  196. package/src/cli/configure.ts +2 -1
  197. package/src/cli/doctor-state-size.ts +1 -12
  198. package/src/cli/doctor-validation-contract.ts +28 -0
  199. package/src/cli/doctor.ts +5 -0
  200. package/src/cli/evidence-detail.ts +1 -75
  201. package/src/cli/evidence-inventory.ts +1 -167
  202. package/src/cli/index.ts +2 -0
  203. package/src/cli/run.ts +0 -2
  204. package/src/cli/targets.ts +1 -1
  205. package/src/cli/tasks.ts +84 -0
  206. package/src/cli/upgrade.ts +10 -5
  207. package/src/cli/usage.ts +6 -0
  208. package/src/cli/verifiers.ts +147 -1
  209. package/src/cli/wiki-generate.ts +1 -0
  210. package/src/core/commit-attribution.ts +41 -1
  211. package/src/core/git-commit-attribution.ts +46 -3
  212. package/src/core/run-overrides.ts +0 -5
  213. package/src/core/skill-activation.ts +3 -0
  214. package/src/core/tool-names.ts +5 -2
  215. package/src/domains/agents/builtins/architect.md +1 -1
  216. package/src/domains/agents/builtins/coder.md +1 -1
  217. package/src/domains/agents/builtins/documenter.md +1 -1
  218. package/src/domains/agents/builtins/git-master.md +1 -1
  219. package/src/domains/agents/builtins/provenance.md +7 -7
  220. package/src/domains/agents/builtins/tester.md +1 -1
  221. package/src/domains/agents/builtins/verifier.md +2 -2
  222. package/src/domains/agents/builtins/wiki-writer.md +4 -3
  223. package/src/domains/context/extension.ts +31 -7
  224. package/src/domains/context/refresh.ts +3 -0
  225. package/src/domains/context/wiki/frontmatter.ts +5 -2
  226. package/src/domains/context/wiki/generate.ts +6 -0
  227. package/src/domains/context/wiki/prompts.ts +43 -0
  228. package/src/domains/dispatch/active-route-planner.ts +4 -0
  229. package/src/domains/dispatch/code-step.ts +11 -4
  230. package/src/domains/dispatch/contract.ts +31 -7
  231. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  232. package/src/domains/dispatch/extension.ts +50 -27
  233. package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
  234. package/src/domains/dispatch/fleet-run.ts +1 -0
  235. package/src/domains/dispatch/host-verification.ts +114 -13
  236. package/src/domains/dispatch/intent.ts +28 -18
  237. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  238. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  239. package/src/domains/dispatch/reservation-store.ts +5 -3
  240. package/src/domains/dispatch/state.ts +15 -2
  241. package/src/domains/dispatch/types.ts +17 -2
  242. package/src/domains/eval/runners/clio-run.ts +12 -9
  243. package/src/domains/eval/runners/context-index.ts +2 -7
  244. package/src/domains/eval/runners/context-init.ts +3 -6
  245. package/src/domains/eval/runners/external-command.ts +29 -11
  246. package/src/domains/evidence/build.ts +102 -15
  247. package/src/domains/evidence/detail.ts +69 -0
  248. package/src/domains/evidence/eval.ts +13 -1
  249. package/src/domains/evidence/finish-contract-map.ts +5 -1
  250. package/src/domains/evidence/inventory.ts +167 -0
  251. package/src/domains/evidence/store.ts +16 -0
  252. package/src/domains/evidence/types.ts +12 -0
  253. package/src/domains/extensions/resources.ts +7 -0
  254. package/src/domains/middleware/marketplace-offer.ts +20 -1
  255. package/src/domains/middleware/runtime.ts +7 -3
  256. package/src/domains/mux/detect.ts +3 -6
  257. package/src/domains/observability/accountability.ts +15 -1
  258. package/src/domains/observability/contract.ts +52 -7
  259. package/src/domains/observability/evidence-index.ts +10 -0
  260. package/src/domains/observability/extension.ts +9 -5
  261. package/src/domains/observability/projection.ts +394 -45
  262. package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
  263. package/src/domains/prompts/fragments/operating/contract.md +2 -0
  264. package/src/domains/prompts/fragments/wiki/page.md +8 -0
  265. package/src/domains/providers/model-discovery.ts +1 -4
  266. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +16 -14
  267. package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
  268. package/src/domains/providers/support.ts +1 -1
  269. package/src/domains/providers/types/runtime-descriptor.ts +1 -1
  270. package/src/domains/safety/action-classifier.ts +7 -0
  271. package/src/domains/safety/default-path-policy.ts +2 -0
  272. package/src/domains/safety/finish-contract-registration.ts +29 -14
  273. package/src/domains/safety/finish-contract.ts +252 -40
  274. package/src/domains/safety/index.ts +20 -1
  275. package/src/domains/safety/policy-engine.ts +26 -6
  276. package/src/domains/safety/rigor.ts +53 -39
  277. package/src/domains/safety/validation-contract.ts +388 -0
  278. package/src/domains/session/archive-readers.ts +10 -1
  279. package/src/domains/session/decision-board.ts +101 -2
  280. package/src/domains/session/entries.ts +44 -7
  281. package/src/domains/session/extension.ts +4 -4
  282. package/src/domains/session/handoff.ts +2 -1
  283. package/src/domains/session/manager.ts +2 -3
  284. package/src/domains/session/task-board.ts +14 -1
  285. package/src/domains/session/tree/fork.ts +1 -2
  286. package/src/domains/session/tree/navigator.ts +1 -1
  287. package/src/domains/user-tasks/acceptance.ts +56 -0
  288. package/src/domains/user-tasks/active-acceptance.ts +40 -0
  289. package/src/domains/user-tasks/store.ts +34 -3
  290. package/src/engine/acp/adapter.ts +24 -6
  291. package/src/engine/acp/server.ts +21 -4
  292. package/src/engine/acp/transport.ts +53 -8
  293. package/src/engine/acp/types.ts +4 -0
  294. package/src/engine/apis/ollama-native.ts +15 -0
  295. package/src/engine/claude/subprocess-runtime.ts +107 -60
  296. package/src/engine/external-subprocess.ts +12 -4
  297. package/src/entry/orchestrator.ts +11 -2
  298. package/src/interactive/dispatch-board.ts +46 -717
  299. package/src/interactive/fleet-run-preview.ts +2 -1
  300. package/src/interactive/interactive-application.ts +3 -2
  301. package/src/interactive/interactive-presentation.ts +55 -12
  302. package/src/interactive/interactive-slash-runtime.ts +2 -1
  303. package/src/interactive/oracle.ts +5 -2
  304. package/src/interactive/overlays/fleet-run-approval.ts +3 -2
  305. package/src/interactive/overlays/message-picker.ts +2 -2
  306. package/src/interactive/overlays/settings.ts +2 -2
  307. package/src/interactive/overlays/tree-selector.ts +2 -2
  308. package/src/interactive/renderers/branch-summary.ts +1 -1
  309. package/src/interactive/slash-autocomplete.ts +4 -6
  310. package/src/interactive/slash-commands.ts +25 -39
  311. package/src/interactive/slash-spec.ts +28 -0
  312. package/src/interactive/view/artifacts.ts +2 -0
  313. package/src/interactive/worker-stream.ts +7 -3
  314. package/src/tools/bootstrap.ts +4 -0
  315. package/src/tools/builtin-tool-catalog.ts +31 -0
  316. package/src/tools/compete-worktrees.ts +7 -1
  317. package/src/tools/core-bootstrap.ts +16 -0
  318. package/src/tools/decide.ts +136 -0
  319. package/src/tools/dispatch-admission.ts +21 -0
  320. package/src/tools/dispatch-plan.ts +5 -2
  321. package/src/tools/dispatch-runner.ts +15 -1
  322. package/src/tools/dispatch-types.ts +6 -0
  323. package/src/tools/evidence.ts +96 -0
  324. package/src/tools/limitation.ts +76 -0
  325. package/src/tools/policy.ts +9 -0
  326. package/src/tools/presentation.ts +3 -0
  327. package/src/tools/registry.ts +1 -1
  328. package/src/tools/result-shaping.ts +17 -5
  329. package/src/tools/task-worktree.ts +13 -3
  330. package/src/tools/tasks.ts +10 -1
  331. package/src/tools/verify/authoring.ts +170 -83
  332. package/src/tools/verify/catalog.ts +122 -5
  333. package/src/tools/verify/index.ts +2 -1
  334. package/src/tools/verify/numeric.ts +298 -0
  335. package/src/tools/verify/perf.ts +143 -0
  336. package/src/tools/verify/scripts.ts +229 -2
  337. package/dist/chunk-7DICMOS6.js +0 -313
  338. package/dist/chunk-RVG5JXAL.js +0 -41
  339. package/dist/chunk-T56WDKA5.js +0 -183
  340. package/dist/chunk-VPKWYKEY.js +0 -169
@@ -10,8 +10,8 @@ skills:
10
10
  sha256: 0a72f4c906303f550be78f80a927da7e24e5c2076f058ccafdec80dfbed275af
11
11
  - name: coding-standards
12
12
  path: coding/coding-standards
13
- version: 0.3.0
14
- sha256: 3ee3481430591a8f8d041bd1c5fa078becd301d88eb49610e41d056494d3413d
13
+ version: 0.4.0
14
+ sha256: d573cdc5b430ae94ebfb5ef69c4a0ac9ac074aae815959ab4e6515012846ce3b
15
15
  - name: prototype
16
16
  path: coding/prototype
17
17
  version: 0.4.0
@@ -23,12 +23,12 @@ skills:
23
23
  # ── context ──
24
24
  - name: context-handoff
25
25
  path: context/context-handoff
26
- version: 0.5.0
27
- sha256: e69adb1533a6a850cb83babe7e580dd260e034781d7c35e65921453e3fa191a5
26
+ version: 0.5.1
27
+ sha256: e05a8dc9d09b4decbf79afade1f530d7c81d5412112723faab104a83893c34f8
28
28
  - name: context-prime
29
29
  path: context/context-prime
30
- version: 0.4.0
31
- sha256: 21587263297a7ee9e81a2d66f6fc800a1ee6db15f76de1e650563b71fdf19d8e
30
+ version: 0.4.1
31
+ sha256: 3e6783d3fd95bd5635fe274ea0b9f73f3c4606ce64b832524cc242b114d8ef12
32
32
  # ── git ──
33
33
  - name: branch-closeout
34
34
  path: git/branch-closeout
@@ -90,55 +90,55 @@ skills:
90
90
  sha256: d9e891eb5f3c27678de14165a0eb35d1eb2289be480e55009f9a57bcfe55be2d
91
91
  - name: architecture
92
92
  path: planning/architecture
93
- version: 0.4.0
94
- sha256: e9017412b6261492b987fe27f7573b72013a340c0d3eb0e7e568fd588b22a214
93
+ version: 0.4.1
94
+ sha256: 0d62ded74021d148f3091e044c32d205edfa3d1298706e68c84ad0f032d0feba
95
95
  - name: backlog
96
96
  path: planning/backlog
97
- version: 0.4.0
98
- sha256: e634e2fb5035731e7daa2ef246ae4ab3ef5d792b0b604f4216dfe10335ee10c0
97
+ version: 0.4.1
98
+ sha256: 8fc700ad8f1b2f44fb6ea013c54ce06314cf9c4fdee63bd65c36686f5c25d092
99
99
  - name: prd
100
100
  path: planning/prd
101
- version: 0.4.0
102
- sha256: 39fe417f495be4153541dd70c886cf773265636dc9fa1844cfc7012b71cbbec1
101
+ version: 0.4.1
102
+ sha256: 3841f2f9635229c8208382e40123de1b5a496ec562cb851758d2ac013921c069
103
103
  - name: product-intent
104
104
  path: planning/product-intent
105
- version: 0.4.0
106
- sha256: d41689db9a8c9b2dad0cd630412bebaed5792f9d22d4edb18770e4b1b3308699
105
+ version: 0.4.1
106
+ sha256: 95d629fe8688003a9816a0774674f0c9fd5a922a82835415c3c1806799436832
107
107
  - name: tech-spec
108
108
  path: planning/tech-spec
109
- version: 0.3.0
110
- sha256: 5f9add0d01e43feb6808b2eaeae9ac68075cf369cbfc793e020181a642d4d2c4
109
+ version: 0.3.1
110
+ sha256: e8e6a1326aeb8b010647fc9fa9dc5ff827e13550f54524555f5e6a83341eb27f
111
111
  # ── research ──
112
112
  - name: arxiv-literature
113
113
  path: research/arxiv-literature
114
- version: 0.5.0
115
- sha256: 0bc6b39d12934568804fc11b23219de4c6c2172e28c4bfedcee3104e2217aae6
114
+ version: 0.5.1
115
+ sha256: 4668827aa0f13527de5fc34914911ef942d2103ed3d139008fbd1c0ce2c4bd3d
116
116
  - name: experiment-protocol
117
117
  path: research/experiment-protocol
118
- version: 0.3.0
119
- sha256: 235256cbdf44ebdd25d87cce60940e00ad1fca42a1b2b4e534bfc245f0d1135c
118
+ version: 0.3.1
119
+ sha256: da151931fb1961b19fcb6d4ae1957cef908f8b35692e301f109125488ad65302
120
120
  - name: scientific-debugging
121
121
  path: research/scientific-debugging
122
- version: 0.3.0
123
- sha256: 9c29d70b4b82a440640b41665c23731b4112125915bde0e91016fc60aec67207
122
+ version: 0.3.1
123
+ sha256: ba94f8ad2655396a3791c7599631513f16651ffa61c8148044b996a25c0bc1cc
124
124
  - name: scientific-modernization
125
125
  path: research/scientific-modernization
126
- version: 0.4.0
127
- sha256: 491522d547fa0bddef19d2ec92bc35236b169787bded6ecc3a29dfec19892886
126
+ version: 0.4.1
127
+ sha256: eb31099d764cba913c19726f6ba85d7081c5e01c81a3b2cd45eb136a4e47b858
128
128
  # ── workflow ──
129
129
  - name: cut-it
130
130
  path: workflow/cut-it
131
- version: 0.4.0
132
- sha256: d3742221f0ace1f1b62c07f5902030e478496059a58ef194e7cb3303ccdff05e
131
+ version: 0.4.1
132
+ sha256: d0ce7dc6ea633d87e9e68c6b59ad402c24644b9eac580774410b235e0ca1c93f
133
133
  - name: design-council
134
134
  path: workflow/design-council
135
- version: 0.5.0
136
- sha256: c279a94a4cd66d46980f9a5024aedac3e673144fadc9d36b53ad87fc2ee63501
135
+ version: 0.6.0
136
+ sha256: 42fbf2e54524253b2955b22576ae0aca998dc04a902b8a59440edcfd051e0f5a
137
137
  - name: grill-me
138
138
  path: workflow/grill-me
139
- version: 0.5.0
140
- sha256: f48687566a8419aa52f30f8234f8dcfd050eaefdfdcfa281723d3603f3e08fcc
139
+ version: 0.5.1
140
+ sha256: 3844770b507f9b2904aaa5c944c2b26f9ecf114383758dfff3bd7f39b2c717a6
141
141
  - name: workflow-distiller
142
142
  path: workflow/workflow-distiller
143
- version: 0.4.0
144
- sha256: dd7c312d6904f861fa105334c7c2f18c9d6e26a70a76874c85858cee90bede58
143
+ version: 0.4.1
144
+ sha256: 067b097299b0b630729a4a6ddde629dec5c798d5b4634f90f7feab380b8575e1
@@ -7,7 +7,7 @@ triggers:
7
7
  - compare these papers
8
8
  - find recent research papers
9
9
  - build a literature survey
10
- version: 0.5.0
10
+ version: 0.5.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - web_fetch
@@ -40,8 +40,8 @@ immediately; only paper cards reach the user.
40
40
  ```
41
41
 
42
42
  The request is free text: a paper URL/ID, a topic, or two or more IDs to
43
- compare. There is no operator in a headless run `ask_user` is not in this
44
- skill's tool surface and nothing answers it. If the request is ambiguous (no
43
+ compare. There is no operator in a headless run: `ask_user` is not registered, so
44
+ any call is refused as an unregistered tool rather than answered. If the request is ambiguous (no
45
45
  clear topic, an ID that doesn't resolve), state your best reading and
46
46
  proceed; never stall waiting for clarification. `tasks` sits outside this
47
47
  skill's tool surface and is refused; the steps below are the whole plan, do
@@ -8,7 +8,7 @@ triggers:
8
8
  - define numerical tolerances
9
9
  - reproduce these results
10
10
  - compare solver accuracy
11
- version: 0.3.0
11
+ version: 0.3.1
12
12
  license: Apache-2.0
13
13
  allowed-tools:
14
14
  - read
@@ -45,8 +45,8 @@ diagnosis, not an experiment; use scientific-debugging.
45
45
  /skill experiment-protocol <what to benchmark, compare, or sweep>
46
46
  ```
47
47
 
48
- There is no operator in a headless run `ask_user` is not in this skill's
49
- tool surface. If a threshold, tolerance, or environment detail is unstated,
48
+ There is no operator in a headless run: `ask_user` is not registered, so
49
+ any call is refused as an unregistered tool rather than answered. If a threshold, tolerance, or environment detail is unstated,
50
50
  pick the most defensible default, record it as an explicit assumption in the
51
51
  pre-registration, and proceed; never stall Phase 0 waiting for confirmation.
52
52
 
@@ -8,7 +8,7 @@ triggers:
8
8
  - diagnose NaNs
9
9
  - debug with falsifiable hypotheses
10
10
  - scientific root cause
11
- version: 0.3.0
11
+ version: 0.3.1
12
12
  license: Apache-2.0
13
13
  allowed-tools:
14
14
  - read
@@ -46,7 +46,8 @@ below is for failures that survived the first obvious fix.
46
46
 
47
47
  Everything after the skill name is the failure report: the observed wrong
48
48
  behavior and whatever has already been tried. There is no operator in a
49
- headless run `ask_user` is not in this skill's tool surface. If the goal,
49
+ headless run: `ask_user` is not registered, so any call is refused as an
50
+ unregistered tool rather than answered. If the goal,
50
51
  a fault-class split, or a ranking call is ambiguous, state your best reading
51
52
  in Step 1 or Step 3 and proceed; never stall a step waiting for confirmation.
52
53
 
@@ -8,7 +8,7 @@ triggers:
8
8
  - migrate the scientific build system
9
9
  - create a maintained fork
10
10
  - preserve scientific parity
11
- version: 0.4.0
11
+ version: 0.4.1
12
12
  license: Apache-2.0
13
13
  allowed-tools:
14
14
  - read
@@ -42,8 +42,8 @@ has an explicit exit condition.
42
42
  /skill scientific-modernization <what to modernize, port, rewrite, or replace, and why>
43
43
  ```
44
44
 
45
- There is no operator in a headless run `ask_user` is not in this skill's
46
- tool surface. Stage 1's "the user has seen them" exit condition means,
45
+ There is no operator in a headless run: `ask_user` is not registered, so
46
+ any call is refused as an unregistered tool rather than answered. Stage 1's "the user has seen them" exit condition means,
47
47
  headlessly: state the four bullets in your reply and proceed, never stall
48
48
  waiting for acknowledgment. Every other stage gate below works the same way
49
49
  — state the decision and its reasoning, then continue.
@@ -27,7 +27,7 @@
27
27
  "functional core imperative shell"
28
28
  ],
29
29
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/coding/coding-standards",
30
- "version": "0.3.0",
30
+ "version": "0.4.0",
31
31
  "audit": "pass",
32
32
  "category": "coding"
33
33
  },
@@ -72,7 +72,7 @@
72
72
  "write a continuation brief"
73
73
  ],
74
74
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/context/context-handoff",
75
- "version": "0.5.0",
75
+ "version": "0.5.1",
76
76
  "audit": "pass",
77
77
  "category": "context"
78
78
  },
@@ -87,7 +87,7 @@
87
87
  "resume repository work after a break"
88
88
  ],
89
89
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/context/context-prime",
90
- "version": "0.4.0",
90
+ "version": "0.4.1",
91
91
  "audit": "pass",
92
92
  "category": "context"
93
93
  },
@@ -316,7 +316,7 @@
316
316
  "compare architecture options"
317
317
  ],
318
318
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/planning/architecture",
319
- "version": "0.4.0",
319
+ "version": "0.4.1",
320
320
  "audit": "pass",
321
321
  "category": "planning"
322
322
  },
@@ -331,7 +331,7 @@
331
331
  "create GitHub issues from this architecture"
332
332
  ],
333
333
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/planning/backlog",
334
- "version": "0.4.0",
334
+ "version": "0.4.1",
335
335
  "audit": "pass",
336
336
  "category": "planning"
337
337
  },
@@ -346,7 +346,7 @@
346
346
  "create milestone prompts"
347
347
  ],
348
348
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/planning/prd",
349
- "version": "0.4.0",
349
+ "version": "0.4.1",
350
350
  "audit": "pass",
351
351
  "category": "planning"
352
352
  },
@@ -361,7 +361,7 @@
361
361
  "greenfield product intent"
362
362
  ],
363
363
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/planning/product-intent",
364
- "version": "0.4.0",
364
+ "version": "0.4.1",
365
365
  "audit": "pass",
366
366
  "category": "planning"
367
367
  },
@@ -376,7 +376,7 @@
376
376
  "specify execution flows"
377
377
  ],
378
378
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/planning/tech-spec",
379
- "version": "0.3.0",
379
+ "version": "0.3.1",
380
380
  "audit": "pass",
381
381
  "category": "planning"
382
382
  },
@@ -391,7 +391,7 @@
391
391
  "build a literature survey"
392
392
  ],
393
393
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/research/arxiv-literature",
394
- "version": "0.5.0",
394
+ "version": "0.5.1",
395
395
  "audit": "pass",
396
396
  "category": "research"
397
397
  },
@@ -407,7 +407,7 @@
407
407
  "compare solver accuracy"
408
408
  ],
409
409
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/research/experiment-protocol",
410
- "version": "0.3.0",
410
+ "version": "0.3.1",
411
411
  "audit": "pass",
412
412
  "category": "research"
413
413
  },
@@ -423,7 +423,7 @@
423
423
  "scientific root cause"
424
424
  ],
425
425
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/research/scientific-debugging",
426
- "version": "0.3.0",
426
+ "version": "0.3.1",
427
427
  "audit": "pass",
428
428
  "category": "research"
429
429
  },
@@ -439,7 +439,7 @@
439
439
  "preserve scientific parity"
440
440
  ],
441
441
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/research/scientific-modernization",
442
- "version": "0.4.0",
442
+ "version": "0.4.1",
443
443
  "audit": "pass",
444
444
  "category": "research"
445
445
  },
@@ -454,7 +454,7 @@
454
454
  "write dependency-ordered vertical slices"
455
455
  ],
456
456
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/workflow/cut-it",
457
- "version": "0.4.0",
457
+ "version": "0.4.1",
458
458
  "audit": "pass",
459
459
  "category": "workflow"
460
460
  },
@@ -469,7 +469,7 @@
469
469
  "what would experts say"
470
470
  ],
471
471
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/workflow/design-council",
472
- "version": "0.5.0",
472
+ "version": "0.6.0",
473
473
  "audit": "pass",
474
474
  "category": "workflow"
475
475
  },
@@ -484,7 +484,7 @@
484
484
  "clarify this plan one question at a time"
485
485
  ],
486
486
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/workflow/grill-me",
487
- "version": "0.5.0",
487
+ "version": "0.5.1",
488
488
  "audit": "pass",
489
489
  "category": "workflow"
490
490
  },
@@ -499,7 +499,7 @@
499
499
  "create a skill from this session"
500
500
  ],
501
501
  "sourceUrl": "https://github.com/iowarp/clio-coder/tree/main/skills/workflow/workflow-distiller",
502
- "version": "0.4.0",
502
+ "version": "0.4.1",
503
503
  "audit": "pass",
504
504
  "category": "workflow"
505
505
  }
@@ -7,7 +7,7 @@ triggers:
7
7
  - make this plan executable
8
8
  - turn this milestone into a sprint
9
9
  - write dependency-ordered vertical slices
10
- version: 0.4.0
10
+ version: 0.4.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
@@ -52,9 +52,8 @@ destination like "write it to docs/SPRINT.md", is Step 3's output location,
52
52
  not the input. When neither is named, Step 1 finds the plan and Step 3
53
53
  writes to the repo-root default.
54
54
 
55
- This run has no back-and-forth. `ask_user` still executes it is registered
56
- and the call succeeds but nothing answers it in a headless run: every round
57
- returns `{cancelled: true}` immediately, as an ordinary result, not an error.
55
+ This run has no back-and-forth. `ask_user` is not registered in a headless
56
+ run, so any call is refused as an unregistered tool rather than answered.
58
57
  The happy path here rarely needs a question at all — Step 1's "stop and say
59
58
  so" for a missing or vague plan is already headless-safe, and Step 3's output
60
59
  path defaults without asking. If several plans or milestones are plausible
@@ -7,7 +7,7 @@ triggers:
7
7
  - get multiple expert perspectives
8
8
  - weigh the architecture options
9
9
  - what would experts say
10
- version: 0.5.0
10
+ version: 0.6.0
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - dispatch
@@ -52,10 +52,9 @@ argument.
52
52
  **Headless is the enforced default, not a suggestion.** A council is several
53
53
  worker runs; nobody is waiting between rounds in a headless run, and every
54
54
  round that actually runs costs real wall-clock time on top of the
55
- orchestrator's own turns. `ask_user` still executes here even though it is
56
- not in the list below it is always available regardless but nothing
57
- answers it: the single question Step 1 asks comes back `{cancelled: true}`
58
- immediately, as an ordinary result, not an error. Treat that cancellation (or
55
+ orchestrator's own turns. `ask_user` is not registered in a headless run,
56
+ so the single question Step 1 asks is refused as an unregistered tool
57
+ rather than answered. Treat that refusal (or
59
58
  skip the call and reason from this paragraph directly — one is not more valid
60
59
  than the other) as the fixed answer **quick mode: exactly three perspectives,
61
60
  exactly one round (Positions) plus synthesis.** Do not compose four or five
@@ -85,11 +84,7 @@ Declare `intent: {read_roots: [...], relevant_paths: [...]}` with paths
85
84
  relative to the repo root on every dispatch call instead of pasting an
86
85
  absolute path into `task`/`briefing` prose (a config value, a mount point).
87
86
  An absolute path token in briefing/task text with no declared `intent` is
88
- rejected as `legacy_scope_path_absolute`. Keep a persona's argument in prose,
89
- never literal shell syntax — a phrase like "you can `rm -rf` the directory"
90
- inside a dispatch call's text can trip the same damage-control pattern that
91
- blocks a real destructive shell command, even though nothing executes; say
92
- "delete the directory" instead.
87
+ rejected as `legacy_scope_path_absolute`.
93
88
 
94
89
  A dispatch call's own synchronous result already carries every worker's
95
90
  output — do not follow it with a `bash`/`read` pass over the receipt file on
@@ -7,7 +7,7 @@ triggers:
7
7
  - stress-test this design
8
8
  - poke holes in this idea
9
9
  - clarify this plan one question at a time
10
- version: 0.5.0
10
+ version: 0.5.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
@@ -52,13 +52,12 @@ is coming. Ending the turn on an open question — even one question, even a
52
52
  well-posed one — is this skill's single most common failure and worse than
53
53
  skipping the interview format entirely.
54
54
 
55
- There is no operator in a headless run. `ask_user` still executes it is
56
- registered and the call succeeds but nothing answers it: every round
57
- returns `{cancelled: true}` immediately, as an ordinary result, not an
58
- error, every time, with no exceptions. Calling it again will not produce a
59
- different result, so one call is enough to confirm it (not required
60
- reasoning from this paragraph alone is just as valid as calling it and
61
- observing the cancellation). Whichever phase this lands in — even round
55
+ There is no operator in a headless run: `ask_user` is not registered, so
56
+ any call is refused as an unregistered tool rather than answered, every
57
+ time, with no exceptions. Calling it again will not produce a different
58
+ result, so one call is enough to confirm it (not required: reasoning from
59
+ this paragraph alone is just as valid as calling it and observing the
60
+ refusal). Whichever phase this lands in even round
62
61
  1 — switch immediately to the assumed-confirm monologue for every phase
63
62
  from here on, in the same turn: state the question you would have asked,
64
63
  give your own best/recommended answer with the reasoning behind it, mark
@@ -160,7 +159,7 @@ If an answer is vague, ask a follow-up on the same branch. Do not jump to a new
160
159
  branch while the current one is still unresolved.
161
160
 
162
161
  **Headless: there is no reply coming, whether `ask_user` comes back
163
- `cancelled` or you never call it at all.** Neither is a vague answer to
162
+ refused as unregistered or you never call it at all.** Neither is a vague answer to
164
163
  follow up on and neither is a signal to try again or to wait — both mean
165
164
  there is no operator this run, from round 1 on. Do not call `ask_user`
166
165
  again for this or any later phase, and do not phrase a question in plain
@@ -175,7 +174,7 @@ This step applies to a live session with a real operator. Stop immediately
175
174
  when the user says "stop", "enough", "later", "done", "next time", or cancels
176
175
  the modal. Do not ask another question to confirm stopping.
177
176
 
178
- A headless `cancelled` result is not a stop signal from a user — it is the
177
+ A headless refusal of `ask_user` is not a stop signal from a user — it is the
179
178
  absence of an operator (see Step 3). Do not treat it as "the user cancelled
180
179
  this session"; treat it as the cue to switch to the assumed-confirm
181
180
  monologue and keep going to a complete decision log, not to stop early.
@@ -205,9 +204,9 @@ state the partial decisions and the next unresolved root question.
205
204
 
206
205
  In a live session, close with `ask_user` `action: "complete"` and a compact
207
206
  `decisions` array before final prose. In a headless run where `ask_user`
208
- already came back cancelled, skip straight to the decision log below — do
209
- not attempt another `ask_user` call just to close out; it will cancel too
210
- and adds nothing. Write the final decision log:
207
+ already came back refused, skip straight to the decision log below — do
208
+ not attempt another `ask_user` call just to close out; it will be refused
209
+ too and adds nothing. Write the final decision log:
211
210
 
212
211
  ```markdown
213
212
  ## Decision Log - <topic>
@@ -256,7 +255,7 @@ Use this ordering when several questions are possible:
256
255
  - Letting `ask_user` hit the round limit without completing the interview.
257
256
  - Ending with a summary paragraph instead of the decision log.
258
257
  - Re-calling `ask_user` for a later phase after an earlier round already came
259
- back `cancelled` — the answer will not be different; that budget is wasted.
258
+ back refused — the answer will not be different; that budget is wasted.
260
259
  - Ending a turn on "Answer 1/2/3", "let me know which you prefer", or any
261
260
  other wording that expects a reply in a headless run — there is no next
262
261
  turn for a reply to land in. This is the single most common failure mode
@@ -264,5 +263,5 @@ Use this ordering when several questions are possible:
264
263
  stopping, instead of running the assumed-confirm monologue through every
265
264
  remaining phase to the decision log in the same turn.
266
265
  - Opening a `tasks` list for the phase map; `tasks` is refused.
267
- - Treating a headless `cancelled` result as the user's stop signal (Step 4)
266
+ - Treating a headless `ask_user` refusal as the user's stop signal (Step 4)
268
267
  instead of the absence-of-operator cue it actually is.
@@ -7,7 +7,7 @@ triggers:
7
7
  - turn this into a reusable workflow
8
8
  - distill this repeated process
9
9
  - create a skill from this session
10
- version: 0.4.0
10
+ version: 0.4.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
@@ -50,10 +50,10 @@ whichever workflow just ran in this session. Everything else in the request
50
50
  not more arguments.
51
51
 
52
52
  A live operator can answer Phase 2's interview and Phase 4's design gate for
53
- real - treat a real, non-cancelled `ask_user` reply as proof an operator is
53
+ real - treat a real, answered `ask_user` reply as proof an operator is
54
54
  present and continue asking one question per round. There is no operator in
55
- a headless run: `ask_user` is not registered and every call resolves
56
- `cancelled` immediately, whether or not it is ever called at all. When that
55
+ a headless run: `ask_user` is not registered, so any call is refused as an
56
+ unregistered tool rather than answered. When that
57
57
  is the run's condition, do not wait for a reply that cannot come: answer
58
58
  every remaining interview question and the Phase 4 gate yourself as an
59
59
  assumed-confirm monologue (state the question, give your best-grounded
package/src/cli/args.ts CHANGED
@@ -37,7 +37,6 @@ export interface RunCliArgs {
37
37
  noSkills: boolean;
38
38
  skillPaths: string[];
39
39
  maxContextTokens?: number;
40
- kvCacheMode?: string;
41
40
  steerChannel?: string;
42
41
  /** Resume this exact session and append the turn to it. */
43
42
  sessionId?: string;
@@ -207,13 +206,6 @@ export function parseRunCliArgs(argv: ReadonlyArray<string>): RunCliArgs {
207
206
  }
208
207
  continue;
209
208
  }
210
- if (arg === "--kv-cache-mode") {
211
- const value = need(arg);
212
- if (value !== null) {
213
- parsed.kvCacheMode = value;
214
- }
215
- continue;
216
- }
217
209
  if (arg === "--session") {
218
210
  const value = need(arg);
219
211
  if (value !== null) {
@@ -20,6 +20,7 @@ import {
20
20
  type WorkerPermissionMode,
21
21
  } from "../core/defaults.js";
22
22
  import { initializeClioHome } from "../core/init.js";
23
+ import { warnLegacyNaming } from "../core/naming-compat.js";
23
24
  import { resolveClioDirs } from "../core/xdg.js";
24
25
  import { getVersionInfo } from "../domains/lifecycle/version.js";
25
26
  import { openAuthStorage, targetRequiresAuth } from "../domains/providers/auth/index.js";
@@ -2113,7 +2114,7 @@ export async function runConfigureCommand(
2113
2114
  return 2;
2114
2115
  }
2115
2116
  if (runtimeId === "lmstudio-native" && runtime.id === "lmstudio") {
2116
- process.stderr.write("warning: runtime 'lmstudio-native' is deprecated; using 'lmstudio'\n");
2117
+ warnLegacyNaming(runtimeId, runtime.id);
2117
2118
  }
2118
2119
  }
2119
2120
  const hasTargetSetupFlag =
@@ -2,6 +2,7 @@ import { lstatSync, readdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { resolveClioDirs } from "../core/xdg.js";
4
4
  import type { DoctorFinding } from "../domains/lifecycle/doctor.js";
5
+ import { formatBytes } from "./lifecycle-presenter.js";
5
6
 
6
7
  interface MeasuredEntry {
7
8
  bytes: number;
@@ -68,15 +69,3 @@ function measureEntry(path: string): MeasuredEntry {
68
69
  }
69
70
  return { bytes, error: null };
70
71
  }
71
-
72
- function formatBytes(bytes: number): string {
73
- if (bytes < 1024) return `${bytes} B`;
74
- const units = ["KiB", "MiB", "GiB", "TiB"];
75
- let value = bytes;
76
- let unit = -1;
77
- do {
78
- value /= 1024;
79
- unit += 1;
80
- } while (value >= 1024 && unit < units.length - 1);
81
- return `${value.toFixed(value >= 10 ? 1 : 2)} ${units[unit]}`;
82
- }
@@ -0,0 +1,28 @@
1
+ import type { DoctorFinding } from "../domains/lifecycle/doctor.js";
2
+ import { describeValidationContract, loadValidationContract } from "../domains/safety/validation-contract.js";
3
+
4
+ /**
5
+ * One row for the workspace's scientific validation contract: absent, parsed
6
+ * (and so raising the rigor default to high), Markdown-only advisory, or
7
+ * invalid with the parse fault. Reads the workspace root only; creates nothing.
8
+ */
9
+ export function validationContractFinding(workspaceRoot = process.cwd()): DoctorFinding {
10
+ const name = "validation contract";
11
+ const loaded = loadValidationContract(workspaceRoot);
12
+ if (!loaded.ok) {
13
+ return { ok: false, name, detail: `invalid: ${describeValidationContract(loaded)}; rigor default stays normal` };
14
+ }
15
+ if (loaded.contract === null) {
16
+ if ("advisory" in loaded) {
17
+ return { ok: true, name, level: "warn", detail: `markdown-only: ${describeValidationContract(loaded)}` };
18
+ }
19
+ return { ok: true, name, detail: "none at the workspace root; rigor default normal" };
20
+ }
21
+ const artifacts = loaded.contract.artifacts?.length ?? 0;
22
+ const validators = loaded.contract.validators?.length ?? 0;
23
+ return {
24
+ ok: true,
25
+ name,
26
+ detail: `valid: ${loaded.path} (version ${loaded.contract.version}, ${artifacts} artifact(s), ${validators} validator(s)); rigor default high`,
27
+ };
28
+ }
package/src/cli/doctor.ts CHANGED
@@ -12,6 +12,7 @@ import { namingFootprintFindings } from "./doctor-naming.js";
12
12
  import { panesFindings } from "./doctor-panes.js";
13
13
  import { stateStorageFinding } from "./doctor-state-size.js";
14
14
  import { toolchainFindings } from "./doctor-toolchain.js";
15
+ import { validationContractFinding } from "./doctor-validation-contract.js";
15
16
  import { printError } from "./shared.js";
16
17
 
17
18
  const HELP = `clio-coder doctor [--fix] [--json]
@@ -72,6 +73,9 @@ export async function runDoctorCommand(args: ReadonlyArray<string> = []): Promis
72
73
  // has already agreed not to build on an untouched home.
73
74
  const paneChecks = untouched ? [] : await panesFindings();
74
75
  const namingChecks = namingFootprintFindings({ fix, yaziEnabled: filesEnabled });
76
+ // The validation contract lives in the workspace, not the home, so it is
77
+ // checked on every run: a broken contract is why rigor stayed normal.
78
+ const contractChecks = [validationContractFinding()];
75
79
  const all = [
76
80
  ...findings,
77
81
  ...storageChecks,
@@ -82,6 +86,7 @@ export async function runDoctorCommand(args: ReadonlyArray<string> = []): Promis
82
86
  ...toolChecks,
83
87
  ...paneChecks,
84
88
  ...namingChecks,
89
+ ...contractChecks,
85
90
  ];
86
91
  const ok = all.every((f) => f.ok);
87
92
  if (json) {