@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
@@ -0,0 +1,207 @@
1
+ # Release-Cut Checklist
2
+
3
+ > **Visual blueprint:** The source checkout includes the complete
4
+ > [Release-Cut Checklist visual reference](https://github.com/iowarp/clio-coder/blob/main/docs/html/release_checklist_blueprint.html).
5
+
6
+ This document provides the standard procedure for cutting a release of Clio Coder.
7
+ Releases are cut from an annotated tag on canonical main. The GitHub release is
8
+ produced by GitHub Actions, while package publication to npm is an authorized manual
9
+ step performed by a maintainer. Everything before the authorization boundary is local,
10
+ repeatable, and reversible. Every step following the authorization boundary affects
11
+ canonical remote state or publishes immutable packages.
12
+
13
+ ## Part 1: Candidate Preparation on a Local Compact Branch
14
+
15
+ Maintainers prepare release candidates on a local-only compact branch named after
16
+ the version without punctuation, such as `v044` for version `0.4.4`. Dotted branch
17
+ names like `v0.4.4` are forbidden because dotted names belong exclusively to immutable
18
+ tags. The canonical repository hosts only `main`, and no release candidate branch is
19
+ ever pushed to canonical origin.
20
+
21
+ 1. Ensure the working tree is clean and updated from canonical origin:
22
+
23
+ ```bash
24
+ git checkout -b v044 origin/main
25
+ ```
26
+
27
+ 2. Update `version` in `package.json` to the release version.
28
+
29
+ 3. Retitle the active changelog section in `CHANGELOG.md` from `## Unreleased` to
30
+ `## <version> - YYYY-MM-DD`. The release gate in `scripts/check-release.mjs` requires
31
+ the first version header to match the version in `package.json`.
32
+
33
+ 4. Commit the release candidate preparation locally:
34
+
35
+ ```bash
36
+ git commit -am "chore(release): prepare <version>"
37
+ ```
38
+
39
+ ## Part 2: Local Candidate Verification Gate
40
+
41
+ Run deterministic local checks on the candidate commit before requesting authorization.
42
+
43
+ 1. Execute the release gate:
44
+
45
+ ```bash
46
+ npm run ci:release
47
+ ```
48
+
49
+ This gate runs `npm run ci` followed by `node scripts/check-release.mjs`. It verifies
50
+ type checking, Biome formatting, hygiene rules, architecture boundary invariants,
51
+ the build, the contract and smoke test suites, trace-viewer tests, and dist integrity.
52
+ The packaging audit checks executable entry shebangs, ensures forbidden files like
53
+ source maps and caches are omitted, verifies runtime resources from `scripts/release-manifest.json`,
54
+ and enforces size limits (10 MB packed, 50 MB unpacked).
55
+
56
+ 2. Optionally validate a live model turn against a configured target:
57
+
58
+ ```bash
59
+ node dist/cli/index.js run --target <id> --autonomy read-only "Reply with exactly: CLIO_LIVE_OK"
60
+ ```
61
+
62
+ 3. Run the real-home smoke test against the operator configuration:
63
+
64
+ ```bash
65
+ npm run smoke:real-home -- --target <id> --strict
66
+ ```
67
+
68
+ This runs `scripts/smoke-real-home.sh` using a copy of operator settings in a scratch
69
+ `CLIO_CODER_HOME`. The `--strict` flag ensures any failing rows from `clio-coder doctor`
70
+ fail the smoke run.
71
+
72
+ 4. Inspect the npm package contents with a dry run:
73
+
74
+ ```bash
75
+ npm pack --dry-run
76
+ ```
77
+
78
+ 5. Validate an installed tarball in a clean temporary directory:
79
+
80
+ Create a temporary directory, pack the tarball, install it via npm, and verify
81
+ installed binary lifecycle commands in an isolated environment with an empty `CLIO_CODER_HOME`:
82
+
83
+ ```bash
84
+ clio-coder --version
85
+ clio-coder --help
86
+ clio-coder doctor
87
+ clio-coder uninstall --dry-run
88
+ ```
89
+
90
+ ## Part 3: Candidate Review and Authorization Boundary
91
+
92
+ Before touching any remote ref, summarize the candidate for maintainer review:
93
+ - Candidate commit SHA
94
+ - Results of `npm run ci:release`
95
+ - Verification output from real-home smoke and installed package testing
96
+ - Changelog contents and target npm version
97
+
98
+ Every step below changes canonical remote refs, creates a release, or publishes
99
+ an immutable package. Do not execute any of them without explicit maintainer authorization.
100
+
101
+ ## Part 4: Fast-forward Canonical Main
102
+
103
+ 1. Fetch the latest remote status from origin:
104
+
105
+ ```bash
106
+ git fetch origin
107
+ ```
108
+
109
+ 2. Confirm `origin/main` is an ancestor of the local candidate branch.
110
+
111
+ 3. Fast-forward local `main` to the candidate commit:
112
+
113
+ ```bash
114
+ git checkout main
115
+ git merge --ff-only v044
116
+ ```
117
+
118
+ 4. Verify that local `main` matches the reviewed candidate SHA exactly.
119
+
120
+ 5. Push `main` to canonical origin:
121
+
122
+ ```bash
123
+ git push origin refs/heads/main:refs/heads/main
124
+ ```
125
+
126
+ No release branch is ever pushed to origin.
127
+
128
+ ## Part 5: Tagging and GitHub Release
129
+
130
+ 1. Wait for GitHub Actions CI on canonical `main` to finish green for the pushed SHA.
131
+
132
+ 2. Create an annotated git tag matching the version:
133
+
134
+ ```bash
135
+ git tag -a v<version> -m "Clio Coder <version>"
136
+ ```
137
+
138
+ 3. Push only the release tag to canonical origin:
139
+
140
+ ```bash
141
+ git push origin refs/tags/v<version>
142
+ ```
143
+
144
+ 4. Pushing the tag triggers `.github/workflows/release.yml`. The workflow:
145
+ - Verifies the tag matches `package.json`.
146
+ - Runs `npm run ci:release` on the tagged commit.
147
+ - Packs the release tarball with `npm pack`.
148
+ - Extracts the version changelog section from `CHANGELOG.md`.
149
+ - Creates the GitHub Release with the tarball attached using `gh release create`.
150
+
151
+ 5. Inspect the GitHub Actions workflow run and confirm the GitHub release is published.
152
+
153
+ ## Part 6: Package Publication to npm
154
+
155
+ Publishing to npm is a manual maintainer step performed from the tagged commit.
156
+
157
+ 1. Confirm authentication and registry status:
158
+
159
+ ```bash
160
+ npm whoami
161
+ ```
162
+
163
+ 2. Confirm the version does not already exist on npm:
164
+
165
+ ```bash
166
+ npm view @iowarp/clio-coder@<version>
167
+ ```
168
+
169
+ 3. Publish the package from the tagged checkout:
170
+
171
+ ```bash
172
+ npm publish
173
+ ```
174
+
175
+ The `prepublishOnly` lifecycle script sets `CLIO_CODER_RELEASE_CONTEXT=publish` and
176
+ re-executes `npm run ci:release` as a mandatory release-mode verification gate before
177
+ files are uploaded. When publishing a pre-release channel, append `--tag <channel>`.
178
+
179
+ ## Part 7: Post-Publish Verification and Branch Closeout
180
+
181
+ 1. Verify package availability on npm:
182
+
183
+ ```bash
184
+ npm view @iowarp/clio-coder version
185
+ ```
186
+
187
+ 2. On a clean machine, install the package globally and run basic lifecycle checks:
188
+
189
+ ```bash
190
+ npm install -g @iowarp/clio-coder@<version>
191
+ clio-coder --version
192
+ clio-coder doctor
193
+ ```
194
+
195
+ 3. Remove the local compact candidate branch:
196
+
197
+ ```bash
198
+ git branch -d v044
199
+ ```
200
+
201
+ The canonical repository remains in its steady state containing only `main` and immutable tags.
202
+
203
+ ## Part 8: Rollback and Error Recovery
204
+
205
+ npm package publication is irreversible. A published version cannot be removed or overwritten.
206
+ Any issue discovered after publication must be resolved through a subsequent release. Prior
207
+ to pushing git tags or publishing to npm, local candidate commits can be amended or reset freely.
@@ -5,19 +5,19 @@
5
5
 
6
6
  Scientific software development cannot treat simple file presence as proof of correctness. A simulation script that crashes on rank 48, or writes out NetCDF arrays filled with `NaN`s, may still successfully write a file to the disk.
7
7
 
8
- Clio Coder recognizes **scientific validation contract files** as an opt-in signal for a higher evidence bar. Currently, the session rigor resolver does not parse or enforce a scientific contract schema. The presence of `.clio-coder/validation.yaml`, `.clio-coder/validation.yml`, `validation.yaml`, `validation.yml`, or `VALIDATION.md` at the workspace root raises the default rigor level to `high`; the file contents are advisory material for developers, project agents, and external validators.
8
+ Clio Coder recognizes a **scientific validation contract** as an opt-in signal for a higher evidence bar. One strict loader in `src/domains/safety/validation-contract.ts` reads the first of `.clio-coder/validation.yaml`, `.clio-coder/validation.yml`, `validation.yaml`, or `validation.yml` at the workspace root and parses it under the version-1 schema below. A contract that parses raises the default rigor level to `high`. A contract that does not parse (empty, malformed YAML, unknown field, unsupported version, over the 256 KiB cap) leaves rigor at `normal` and is diagnosed with the exact fault: `clio-coder doctor` reports it in the `validation contract` row, the interactive session prints it once at startup, and `clio-coder verifiers author` repeats it. A Markdown `VALIDATION.md` is recognized as present but is never parsed and never raises rigor on its own; it is advisory prose for developers, project agents, and external validators.
9
9
 
10
- This advisory convention is separate from the executable project verifier catalog at `.clio-coder/verifiers.yaml`. The verifier catalog has a strict version-1 schema and admits exact argv vectors to the `verify` tool. Scientific validation contracts and handbook expectations do not grant command authority: prose such as `validators: ["python tools/check_grid.py"]` remains guidance until the project owner confirms the equivalent argv, cwd, timeout, and tags in `verifiers.yaml`. The executable catalog does not interpret numerical tolerances or artifact expectations; it only runs the explicitly declared process vector through safe-exec.
10
+ This advisory convention is separate from the executable project verifier catalog at `.clio-coder/verifiers.yaml`. The verifier catalog has a strict schema (version 2, with version 1 still loading) and admits exact argv vectors to the `verify` tool. Scientific validation contracts and handbook expectations do not grant command authority: prose such as `validators: ["python tools/check_grid.py"]` remains guidance until the project owner confirms the equivalent argv, cwd, timeout, and tags in `verifiers.yaml`. The executable catalog runs only the explicitly declared process vector through safe-exec; a `numeric-compare` or `perf-budget` entry adds a judgement of that command's output or wall time, never an interpretation of the contract's artifact expectations.
11
11
 
12
- `clio-coder verifiers author` can inspect top-level `validators` entries in the YAML contract filenames above and propose catalog checks. It labels those vectors as project-declared and shows their source index, exact argv, cwd, timeout, tags, catalog path, and resulting execution authority. This inspection is read-only. A command string with sound quoting and no shell operator can be represented as argv for review; shell expansion, pipes, redirection, environment assignments, incomplete quoting, and Markdown prose receive a manual JSON-argv diagnostic. Nothing becomes executable and nothing is dry-run until the operator confirms the catalog write with `--yes`.
12
+ `clio-coder verifiers author` reads the parsed contract's `validators` entries through the same loader and proposes catalog checks. It labels those vectors as project-declared and shows their source index, exact argv, cwd, timeout, tags, catalog path, and resulting execution authority. This inspection is read-only. A command string with sound quoting and no shell operator can be represented as argv for review; shell expansion, pipes, redirection, environment assignments, incomplete quoting, and Markdown prose receive a manual JSON-argv diagnostic. Nothing becomes executable and nothing is dry-run until the operator confirms the catalog write with `--yes`.
13
13
 
14
- The convention below is a recommended shape for scientific projects that need to document expected dimensions, attributes, numerical tolerances, scheduler context, and verification commands for scientific artifacts. Developed at the [Gnosis Research Center (GRC)](https://grc.iit.edu) at Illinois Tech as part of the NSF-funded scientific-software context (NSF Award [#2411318](https://www.nsf.gov/awardsearch/showAward?AWD_ID=2411318)), this convention links execution metadata with physical output checks without claiming that the current harness executes those checks automatically.
14
+ The convention below is a recommended shape for scientific projects that need to document expected dimensions, attributes, numerical tolerances, scheduler context, and verification commands for scientific artifacts. Developed at the [Gnosis Research Center (GRC)](https://grc.iit.edu) at Illinois Tech as part of the NSF-funded scientific-software context (NSF Award [#2411318](https://www.nsf.gov/awardsearch/showAward?AWD_ID=2411318)), this convention links execution metadata with physical output checks; the harness executes a check only through a matching `verifiers.yaml` entry.
15
15
 
16
16
  ---
17
17
 
18
18
  ## Validation Contract Convention
19
19
 
20
- A validation contract can be stored as YAML or Markdown. A custom or project-level agent (such as a local `scientific-validator` agent example under `.clio-coder/agents/`) or the developer can draft these files and commit them next to the research code. Clio core currently checks only for the documented filenames at the workspace root.
20
+ A validation contract is a YAML file under the version-1 schema; `VALIDATION.md` is the Markdown companion for prose that the schema cannot hold. A custom or project-level agent (such as a local `scientific-validator` agent example under `.clio-coder/agents/`) or the developer can draft these files and commit them next to the research code. The loader rejects unknown fields at every level and names the field it rejected, so a typo is a diagnostic rather than a silently ignored key.
21
21
 
22
22
  ### Example netCDF / Slurm validation contract:
23
23
  ```yaml
@@ -69,12 +69,14 @@ checks:
69
69
  tags: [scientific, netcdf]
70
70
  ```
71
71
 
72
- ### Suggested Fields:
73
- 1. **`version`:** Set to `1` for project-local compatibility.
74
- 2. **`runtime.kind`:** Document execution mode (`local`, `slurm`, `mpi`, or `other`).
75
- 3. **`artifacts`:** List output files or directories the validation plan should inspect.
76
- 4. **`preserve`:** Project convention for artifacts that should not be deleted by cleanup workflows. Clio's built-in protected-artifact guard is separate and is driven by live `protect_path` effects, not by this YAML field.
77
- 5. **`validators`:** List shell commands or scripts a verifier should run to validate the generated files.
72
+ ### Schema (version 1):
73
+ Every field except `version` is optional. Strings are capped at 4096 bytes (`notes` at 16 KiB), `artifacts` at 256 entries, `validators` at 128, `runtime.modules` at 64, and each map at 256 keys; a diagnostic cites the cap it crossed.
74
+ 1. **`version`:** Required, exactly `1`.
75
+ 2. **`task`:** One string describing the work the contract covers.
76
+ 3. **`runtime`:** `kind` is required and one of `local`, `slurm`, `mpi`, or `other`; `nodes` and `ranks` are positive integers, `walltime` is a string, and `modules` is a list of strings.
77
+ 4. **`artifacts`:** Each entry needs `path`; `format` is a string, `expected_dimensions` maps names to non-negative integers, `expected_attributes` maps names to strings, `numerical_tolerances` holds `relative`, `absolute` (finite non-negative numbers), and `ulp` (non-negative integer), and `preserve` is a boolean. `preserve` is a project convention for cleanup workflows; Clio's built-in protected-artifact guard is separate and is driven by live `protect_path` effects, not by this field.
78
+ 5. **`validators`:** A list of command strings a verifier should satisfy. They remain prose until the project declares matching `verifiers.yaml` entries.
79
+ 6. **`notes`:** Free text.
78
80
 
79
81
  ---
80
82
 
@@ -88,8 +90,7 @@ Comparing floating-point values in scientific computations must accommodate roun
88
90
  | **`absolute`** | $|val - ref| \le absolute$ | Additive difference check. Used when reference value is close to `0`. |
89
91
  | **`ulp`** | $StepsBetween(val, ref) \le ulp$ | Unit in the Last Place. Measures floating-point representation steps. |
90
92
 
91
- > [!NOTE]
92
- > Clio core does not currently execute tolerance comparisons and does not apply a default numerical tolerance. Put defaults directly in project validators or contract text.
93
+ Tolerances become executable through a `kind: numeric-compare` entry in `.clio-coder/verifiers.yaml` (catalog version 2). The entry's `command` prints a JSON object of `string -> number | number[]` on stdout, `reference` names a repository-relative JSON file of the same shape, and `tolerance` names at least one of `relative`, `absolute`, or `ulp`. A value passes only when it satisfies every tolerance given; a key missing on either side fails with the key named, arrays compare elementwise and fail on length mismatch, and any `NaN` or infinity fails. The report lists each key's worst deviation and which tolerance it failed, and it is recorded on the `verify` result and on the host-verification check of a dispatch receipt. Clio applies no default tolerance: the catalog entry states it. `clio-coder verifiers author` proposes one such entry for every contract artifact that declares `numerical_tolerances`, with the command left for the operator to fill, so nothing runs until the operator confirms an exact argv. A `kind: perf-budget` entry judges the command's wall time the same way against a `budget` or a recorded baseline; see [Tool usage](../guide/tool-usage.md#project-verifier-catalog).
93
94
 
94
95
  ---
95
96
 
@@ -112,12 +113,12 @@ Scheduler-driven runs require distinct validation handling compared to local uni
112
113
  - **Queue status is not validation**: Checking if a Slurm command like `sbatch` exits successfully only proves that the Slurm scheduler accepted the job script. A good contract tells the verifier how to check actual simulation artifacts inside `out/` or `ckpt/` after job completion.
113
114
  - **Environment module loading**: The `runtime.modules` array can document the exact software stack dependencies (such as `intel/2024`, `openmpi/5.0`) that must be loaded before running the validators.
114
115
  - **HPC and Data Integration**: For large-scale allocations such as those at the Argonne Leadership Computing Facility (ALCF), projects can archive verification logs through their own storage or data-transfer workflow. Clio core does not manage Globus transfers.
115
- - **Validator execution**: In the current alpha version, contract validation is advisory. Quality/verification agents (such as the base `verifier` agent or custom project-level agents) read the contract to guide developers and write out verification receipts. Automated in-harness contract execution is not implemented yet.
116
+ - **Validator execution**: A parsed contract's `artifacts` and `validators` are requirements the `verifier` agent and custom project-level agents must satisfy, and they are executable only through `verifiers.yaml` entries. Automated in-harness execution of the contract itself is not implemented.
116
117
 
117
118
  ### How a Validation Contract Raises Session Rigor
118
119
 
119
120
  Clio Coder integrates scientific validation contracts directly into its safety model to raise the evidence standard automatically:
120
- - **Automatic Escalation**: At startup, Clio scans the workspace root. The presence of any validation contract (e.g. `.clio-coder/validation.yaml`, `.clio-coder/validation.yml`, `validation.yaml`, `validation.yml`, or `VALIDATION.md`) automatically escalates the session's rigor level from `normal` to `high`.
121
- - **High-Rigor Gate Requirements**: Once the rigor is raised to `high`, the finish gate is active. It engages on a settled `turn_end` only when the recent window contains successful workspace mutation evidence and no validation evidence or explicit limitation. The window is entries since the last user message, capped at 80 entries:
121
+ - **Parsed contract escalates**: At startup and at every finish-gate decision, `rigorResolution()` in `src/domains/safety/rigor.ts` loads the contract. A contract that parses raises the session's rigor level from `normal` to `high` with source `validation-contract`. An unparseable contract yields `normal` with source `invalid-contract` and the fault as the diagnostic; a Markdown-only workspace yields `normal` with source `markdown-advisory`. `CLIO_CODER_RIGOR` still overrides both directions.
122
+ - **High-Rigor Gate Requirements**: Once the rigor is `high`, the finish gate is active. It engages on a settled `turn_end` only when the recent window contains successful workspace mutation evidence and no validation evidence or `limitation` receipt. The window is entries since the last user message, capped at 80 entries:
122
123
  - Clio issues a `request_continuation` middleware effect to keep the session running.
123
- - Clio injects a dynamic warning reminder (`HIGH_RIGOR_REVALIDATION_MESSAGE`) instructing the agent to run a verification command or to declare a limitation before it can conclude the turn.
124
+ - Clio injects a dynamic warning reminder (`HIGH_RIGOR_REVALIDATION_MESSAGE`) instructing the agent to run a verification command or to call `limitation` before it can conclude the turn.
@@ -133,6 +133,7 @@ export function dispatchStubContext(): DomainContext {
133
133
  health: { status: "healthy", lastCheckAt: null, lastError: null, latencyMs: null },
134
134
  capabilities: { ...runtime.defaultCapabilities },
135
135
  discoveredModels: [],
136
+ discoveredModelsSource: "none",
136
137
  }));
137
138
  const fallbackStatus = statuses[0];
138
139
  if (fallbackStatus === undefined) throw new Error("behavioral machinery requires one target");
@@ -12,7 +12,7 @@ suite:
12
12
  matrix:
13
13
  dimensions: []
14
14
  targets:
15
- - id: local
15
+ - id: default
16
16
  repeats: 1
17
17
  tasks:
18
18
  - id: architect-positive
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iowarp/clio-coder",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "The terminal coding agent for people who maintain the code that science runs on, with user-chosen models and inspectable evidence.",
5
5
  "keywords": [
6
6
  "ai",
@@ -7,8 +7,17 @@ triggers:
7
7
  - parse don't validate
8
8
  - illegal states unrepresentable
9
9
  - functional core imperative shell
10
- version: 0.3.0
10
+ version: 0.4.0
11
11
  license: Apache-2.0
12
+ allowed-tools:
13
+ - read
14
+ - grep
15
+ - find
16
+ - ls
17
+ - code_nav
18
+ - bash
19
+ - write
20
+ - edit
12
21
  clio-coder:
13
22
  registry-id: iowarp/clio-coder
14
23
  source-url: https://github.com/iowarp/clio-coder/tree/main/skills/coding/coding-standards
@@ -33,9 +42,10 @@ code, and never rewrite unrelated old code without an explicit migration
33
42
  request. **The host project's own documented standards always win over
34
43
  this file.**
35
44
 
36
- This skill declares no tool surface on purpose: it rides along with
37
- whatever task is in flight (writing, refactoring, reviewing), so it must
38
- not narrow the tools that task needs.
45
+ This skill's tool surface covers the whole write-code loop (read, grep,
46
+ find, ls, code_nav, bash, write, edit) so a solo run can apply the rules
47
+ it names. When it rides along with another skill, the surfaces merge as a
48
+ union, so it never narrows the tools the task in flight needs.
39
49
 
40
50
  ## Arguments
41
51
 
@@ -7,7 +7,7 @@ triggers:
7
7
  - handoff to another agent
8
8
  - context is about to be lost
9
9
  - write a continuation brief
10
- version: 0.5.0
10
+ version: 0.5.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
@@ -65,8 +65,8 @@ Distinct from two things it is often confused with:
65
65
  actionable one as the focus; state that reading in the draft's "Next
66
66
  session focus" line rather than leaving it blank.
67
67
 
68
- There is no operator in a headless run: `ask_user` is not registered and
69
- nothing will answer it even if you call it. If the focus, slug, or a
68
+ There is no operator in a headless run: `ask_user` is not registered, so
69
+ any call is refused as an unregistered tool rather than answered. If the focus, slug, or a
70
70
  redaction call is ambiguous, state your best reading in the draft and in your
71
71
  final reply, and proceed — never stall a step waiting on `ask_user`.
72
72
 
@@ -7,7 +7,7 @@ triggers:
7
7
  - where were we
8
8
  - get up to speed
9
9
  - resume repository work after a break
10
- version: 0.4.0
10
+ version: 0.4.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
@@ -96,8 +96,8 @@ Work top to bottom; stop early once you have enough to state where things stand.
96
96
  ending with the focus to confirm. `ask_user` is only registered in an
97
97
  interactive session with an operator present; call it there, offering
98
98
  the handoff's suggested focus as the first option. **A headless run has
99
- no operator: `ask_user` is not registered and nothing will answer it
100
- even if you call it.** If it is not among your available tools, do not
99
+ no operator: `ask_user` is not registered, so any call is refused as an
100
+ unregistered tool rather than answered.** If it is not among your available tools, do not
101
101
  attempt it and do not keep re-reading files hoping for more certainty
102
102
  first — state the focus as the orientation's `Next` line, in plain
103
103
  text, and stop; that written statement is the confirmation for this
@@ -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.4.0
10
+ version: 0.4.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
@@ -64,10 +64,10 @@ expensive calls only).
64
64
  to Step 0's own question — what are we building, and is there a written
65
65
  intent to read — rather than inventing a project to architect.
66
66
 
67
- There is no operator in a headless run: `ask_user` still executes, but with
68
- nothing to answer it every call returns immediately with no answers, every
69
- time calling it again will not produce a different result. From wherever
70
- the first empty response lands — Step 0's "ask whether reference docs
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
71
  exist", Step 1's greenfield/brownfield call, or any decision in Step 2 —
72
72
  switch immediately to the treatment already described above (state the
73
73
  options, the recommendation, the reasoning, adopt it, mark it `assumed —
@@ -7,7 +7,7 @@ triggers:
7
7
  - build the backlog
8
8
  - decompose this plan into tickets
9
9
  - create GitHub issues from this architecture
10
- version: 0.4.0
10
+ version: 0.4.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
@@ -47,9 +47,9 @@ tracker. Decomposition is tracker-agnostic; creation branches on the target.
47
47
  (Step 1's own rule picks it — see below) and a milestone/epic to attach
48
48
  tickets to.
49
49
 
50
- There is no operator in a headless run: `ask_user` resolves immediately
51
- with no answer, every time it is called not a stall, and calling it again
52
- will not produce a different result. **This skill treats headless
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
53
  degradation differently at each step below, because Step 3 gates an
54
54
  outward, not-cleanly-reversible action — real tickets, GitHub issues or
55
55
  persisted local tasks — not a document write:**
@@ -7,7 +7,7 @@ triggers:
7
7
  - define this feature
8
8
  - structure this product brain dump
9
9
  - create milestone prompts
10
- version: 0.4.0
10
+ version: 0.4.1
11
11
  license: Apache-2.0
12
12
  allowed-tools:
13
13
  - read
@@ -50,8 +50,9 @@ the user saying so. Markdown only, no external templates, repo-aware.
50
50
  own prompt — let the user describe the idea raw — rather than an invented
51
51
  idea.
52
52
 
53
- There is no operator in a headless run: `ask_user` is either not registered
54
- or nothing answers it, and stalling a gate to wait for it never resolves.
53
+ There is no operator in a headless run: `ask_user` is not registered, so
54
+ any call is refused as an unregistered tool rather than answered, and
55
+ stalling a gate to wait for it never resolves.
55
56
  When a gate goes unanswered, do not skip the phase and do not go quiet: run
56
57
  it as a monologue instead — state the phase's question, your
57
58
  recommendation (grounded in the repo and any evidence read, or the most
@@ -7,7 +7,7 @@ triggers:
7
7
  - problem-first PRD
8
8
  - define a falsifiable product hypothesis
9
9
  - greenfield product intent
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 @@ decisions (library, data model, boundaries) never enter it; they belong to
50
50
  - Nothing is required beyond some text; a blank invocation gets Step 0's own
51
51
  "What do you want to build? A few sentences." question.
52
52
 
53
- There is no operator in a headless run: `ask_user` still executes, but with
54
- nothing to answer it every call returns immediately with no answers, every
55
- time calling it again will not produce a different result. Treat the
56
- first empty response exactly like the user saying "just write it" (see "If
53
+ There is no operator in a headless run: `ask_user` is not registered, so
54
+ any call is refused as an unregistered tool rather than answered, every
55
+ time; calling it again will not produce a different result. Treat the
56
+ first refusal exactly like the user saying "just write it" (see "If
57
57
  the user declines the interview" below), and apply that treatment from
58
58
  wherever it happened onward — Step 0's evidence check included, not just
59
59
  the five clusters: state the question, your best evidence-grounded answer
@@ -89,8 +89,8 @@ the same turn. Thin answers get reflected back and dug into.
89
89
  If the user declines the interview ("just write it"): honor it, name what
90
90
  you will have to leave TBD, ask only the two or three highest-leverage
91
91
  questions, and mark everything else "TBD — needs validation". This is also
92
- the headless default: see Arguments above for what an empty `ask_user`
93
- response means and how to apply this same treatment cluster by cluster
92
+ the headless default: see Arguments above for what a refused `ask_user`
93
+ call means and how to apply this same treatment cluster by cluster
94
94
  instead of stopping after the first one.
95
95
 
96
96
  1. **Initiate.** Input given → restate and confirm. Blank → "What do you
@@ -159,7 +159,7 @@ outcome-shaped metrics · explicit non-goals · zero engineering decisions.
159
159
  counter-signal.
160
160
  - The literal filename `PRD.md`, or anything outside `docs/`, instead of
161
161
  `docs/<kebab-slug>.prd.md`.
162
- - Calling `ask_user` again after an empty response, instead of switching to
162
+ - Calling `ask_user` again after a refusal, instead of switching to
163
163
  the decline treatment for every step from there on.
164
164
  - Opening a task list for the interview clusters; `tasks` is refused.
165
165
  - Reaching Generate without ever attempting Step 0 or the first cluster —
@@ -7,7 +7,7 @@ triggers:
7
7
  - code-shaped contracts
8
8
  - implementation-ready technical specification
9
9
  - specify execution flows
10
- version: 0.3.0
10
+ version: 0.3.1
11
11
  license: Apache-2.0
12
12
  disable-model-invocation: true
13
13
  allowed-tools:
@@ -63,9 +63,9 @@ and save a file only when the user asks; otherwise return the spec inline.
63
63
  installed to reference in the TDD Test Plan section; both are frontmatter
64
64
  facts, not something to explain to the user unless asked.
65
65
 
66
- There is no operator in a headless run: `ask_user` either isn't registered
67
- or nothing answers it, and a call that goes unanswered will not resolve
68
- differently on a second try. In Path B (below), that means: state the
66
+ There is no operator in a headless run: `ask_user` is not registered, so
67
+ any call is refused as an unregistered tool rather than answered, and a
68
+ second try will not resolve differently. In Path B (below), that means: state the
69
69
  question, your recommendation grounded in the codebase and any docs read
70
70
  (or the most defensible engineering default when nothing grounds it), and
71
71
  the reasoning; adopt the recommendation; mark it `assumed — confirm`; move