@iowarp/clio-coder 0.3.9 → 0.4.0

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 (416) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/NOTICE +33 -0
  3. package/README.md +7 -2
  4. package/dist/{acp-7LOELQFP.js → acp-G5WJBNCT.js} +13 -12
  5. package/dist/{agents-FIBG2SHA.js → agents-FMV2Q5G4.js} +39 -36
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-OI4LIH2I.js → auth-3IDSJEIK.js} +16 -15
  8. package/dist/{builtins-AD25UL3C.js → builtins-XCZWXSC7.js} +3 -3
  9. package/dist/{chunk-IFBNV6H6.js → chunk-2ANTL7MR.js} +3 -3
  10. package/dist/{chunk-56KB5IJP.js → chunk-2OQE55CK.js} +3 -3
  11. package/dist/{chunk-N3PBVRTZ.js → chunk-32KWKNSF.js} +9 -7
  12. package/dist/{chunk-VKBMFOYV.js → chunk-36EJLSQQ.js} +23 -27
  13. package/dist/{chunk-465CC7FK.js → chunk-3BT2XMV4.js} +16 -13
  14. package/dist/{chunk-NQ6UCCOD.js → chunk-3URVFKWK.js} +7 -7
  15. package/dist/{chunk-WIE7ZOSW.js → chunk-3XML7CDN.js} +2 -2
  16. package/dist/chunk-42FMPA75.js +101 -0
  17. package/dist/{chunk-A2NJGIB3.js → chunk-5LXZXPKX.js} +2 -2
  18. package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
  19. package/dist/{chunk-JEQQR47K.js → chunk-6DB53AJS.js} +168 -9
  20. package/dist/{chunk-KV2AOLDF.js → chunk-76ONBSIA.js} +5 -25
  21. package/dist/{chunk-FALJGAWU.js → chunk-7MCTRUCE.js} +2 -2
  22. package/dist/{chunk-5T7RBWN2.js → chunk-AB44T6BB.js} +5 -5
  23. package/dist/chunk-B7OBL7PK.js +1405 -0
  24. package/dist/{chunk-B5CSFE7B.js → chunk-BBVJUZHB.js} +2 -2
  25. package/dist/{chunk-EQ63NRB7.js → chunk-BBVYXMFO.js} +2 -2
  26. package/dist/{chunk-O6I4CIEU.js → chunk-BKFJHQCA.js} +6 -6
  27. package/dist/chunk-BKFM6EJV.js +462 -0
  28. package/dist/chunk-BMS5RKQY.js +27 -0
  29. package/dist/{chunk-MV2VUEJC.js → chunk-BPKCPIL7.js} +2 -2
  30. package/dist/{chunk-TEO2TLVN.js → chunk-BUMFYQFY.js} +964 -1120
  31. package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
  32. package/dist/chunk-C2LTL2W6.js +2447 -0
  33. package/dist/{chunk-EBOC7MT3.js → chunk-CODPRO7Q.js} +8 -8
  34. package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
  35. package/dist/{chunk-ODFEOB4F.js → chunk-CY6FY24N.js} +26 -8
  36. package/dist/{chunk-MIX5N5AC.js → chunk-DQITNCXG.js} +394 -154
  37. package/dist/{chunk-S4COXYBG.js → chunk-DYJP44XW.js} +129 -106
  38. package/dist/{chunk-N5XKWMDW.js → chunk-F4CKPOEQ.js} +6 -6
  39. package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
  40. package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
  41. package/dist/{chunk-7C6RYZGQ.js → chunk-GKF55TAZ.js} +3 -3
  42. package/dist/{chunk-B5XRQOLB.js → chunk-GR5G2PVF.js} +9 -8
  43. package/dist/{chunk-XDOQXGFO.js → chunk-GXNLGKAB.js} +64 -8
  44. package/dist/chunk-HHV2GANA.js +88 -0
  45. package/dist/{chunk-774ILSRL.js → chunk-HI63TFOG.js} +4 -3
  46. package/dist/{chunk-R7LNVMCS.js → chunk-HJJTYUHX.js} +64 -72
  47. package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
  48. package/dist/{chunk-CA42X6KT.js → chunk-HWHKMHUA.js} +6 -6
  49. package/dist/chunk-HZHHCK24.js +1631 -0
  50. package/dist/{chunk-HJB5IUKP.js → chunk-I5VEOC6I.js} +12 -12
  51. package/dist/chunk-IBEBSCYA.js +564 -0
  52. package/dist/chunk-IQ7KR472.js +362 -0
  53. package/dist/{chunk-4H6ULJ3H.js → chunk-J4W7KFM7.js} +921 -990
  54. package/dist/{chunk-4LJX2PUC.js → chunk-JDG2WCRO.js} +5 -5
  55. package/dist/{chunk-NZU6YDNV.js → chunk-K5C3NCBD.js} +4 -4
  56. package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
  57. package/dist/{chunk-NNNWO6F2.js → chunk-KFZI4NIL.js} +93 -3
  58. package/dist/chunk-KMVISBZR.js +132 -0
  59. package/dist/{chunk-BVDVID7E.js → chunk-LDQ2ZF2M.js} +2 -2
  60. package/dist/{chunk-OEDBCISO.js → chunk-LQ3DZAMX.js} +2 -2
  61. package/dist/{chunk-PZ4I4JE2.js → chunk-LY4S7GJC.js} +124 -116
  62. package/dist/{chunk-3DUR4WUA.js → chunk-MLKNTWH2.js} +19 -19
  63. package/dist/chunk-NEKRRTYW.js +56 -0
  64. package/dist/{chunk-5DQRIYDZ.js → chunk-NHCZP4K7.js} +2 -2
  65. package/dist/chunk-NHLBIGRH.js +1506 -0
  66. package/dist/chunk-NQQH3YT7.js +302 -0
  67. package/dist/chunk-NYS75XW5.js +15 -0
  68. package/dist/{chunk-TD7UE2L5.js → chunk-O4XIVISU.js} +7 -7
  69. package/dist/{chunk-WXCJ7VME.js → chunk-O6TL7WWY.js} +6 -6
  70. package/dist/chunk-OQBA45DZ.js +97 -0
  71. package/dist/{chunk-LU7P4LHA.js → chunk-P3FOHJT4.js} +2 -2
  72. package/dist/chunk-PMZCIOCJ.js +25 -0
  73. package/dist/{chunk-I4HZDVNP.js → chunk-PQEFIJ36.js} +2 -2
  74. package/dist/{chunk-HKO36JWF.js → chunk-QBJA7R7N.js} +31 -3
  75. package/dist/chunk-QDC3K2U3.js +262 -0
  76. package/dist/{chunk-5HFBWUMU.js → chunk-QLFS5GO2.js} +4 -4
  77. package/dist/{chunk-GAYUJ7LE.js → chunk-QLL7ILRG.js} +41 -32
  78. package/dist/{chunk-LXPJXFM5.js → chunk-QREDIESB.js} +7 -7
  79. package/dist/chunk-QSNYB6ZV.js +195 -0
  80. package/dist/chunk-R346GLFC.js +31 -0
  81. package/dist/{chunk-VPTUJU4P.js → chunk-SJ5ZKQ4S.js} +2 -2
  82. package/dist/{chunk-QQ7EKM72.js → chunk-SP2RXXYO.js} +6 -54
  83. package/dist/chunk-SUCTJL45.js +45 -0
  84. package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
  85. package/dist/chunk-T56WDKA5.js +183 -0
  86. package/dist/chunk-TVHHYFHE.js +255 -0
  87. package/dist/{chunk-IHKBWSXF.js → chunk-TZ3SGWZZ.js} +2 -2
  88. package/dist/{chunk-ECUO3KDP.js → chunk-U77AMWDL.js} +47 -7
  89. package/dist/{chunk-3UUY7R3Z.js → chunk-ULC6OTWO.js} +7 -7
  90. package/dist/{chunk-AEYBF3TB.js → chunk-UM7N4G5A.js} +2 -2
  91. package/dist/{chunk-3V5AYSEQ.js → chunk-UXMFQ54G.js} +43 -36
  92. package/dist/{chunk-YW7UVM5V.js → chunk-V5DHCITQ.js} +34 -1
  93. package/dist/{chunk-47CMYGET.js → chunk-VAZSBTKF.js} +2 -2
  94. package/dist/{chunk-3MRC2YSQ.js → chunk-VEO4AP2K.js} +2 -2
  95. package/dist/{chunk-PNY46YEY.js → chunk-VFA6GDY5.js} +47 -3
  96. package/dist/chunk-VO67MWHC.js +75 -0
  97. package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
  98. package/dist/{chunk-AD7Y7STJ.js → chunk-VYMXRQI6.js} +36 -22
  99. package/dist/{chunk-T3Z6VAAF.js → chunk-W5VSYASO.js} +19 -17
  100. package/dist/{chunk-5PVQ4SRS.js → chunk-WZR7K7ZX.js} +7 -123
  101. package/dist/{chunk-DG4M6ZUE.js → chunk-X3YGUTOB.js} +4 -4
  102. package/dist/chunk-X75E3D2N.js +686 -0
  103. package/dist/{chunk-P3JGPQFL.js → chunk-YDFRH54B.js} +4 -4
  104. package/dist/chunk-YJX4SHTD.js +40 -0
  105. package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
  106. package/dist/{chunk-YSEHGPCT.js → chunk-Z2RR6MAK.js} +3 -3
  107. package/dist/{chunk-HCBCAYZU.js → chunk-Z4TXYIEG.js} +5 -5
  108. package/dist/cli/index.js +47 -36
  109. package/dist/{clio-LT5V7SSZ.js → clio-2JXHBBY5.js} +7 -7
  110. package/dist/{code-nav-LMW275PA.js → code-nav-3YYRMYNF.js} +6 -6
  111. package/dist/{compile-cache-CVJMMODC.js → compile-cache-7FPE6PS3.js} +3 -3
  112. package/dist/{components-ZFA3SAER.js → components-RYZV4JGP.js} +5 -5
  113. package/dist/{config-RXS5T3JT.js → config-QZPCMYSO.js} +58 -50
  114. package/dist/{configure-2WYWSCSD.js → configure-TEGEBYCA.js} +21 -19
  115. package/dist/{context-I3BTOTCS.js → context-AV7OEZ4D.js} +11 -11
  116. package/dist/{context-MVOORGMF.js → context-E6H5RNMC.js} +49 -41
  117. package/dist/{context-PALKKQYL.js → context-GSXUE4CT.js} +25 -23
  118. package/dist/{context-clear-N2WOYZ2K.js → context-clear-SHIBYK6T.js} +48 -40
  119. package/dist/{context-working-set-MIEVECVZ.js → context-working-set-5ZGKPGZQ.js} +11 -10
  120. package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-EFMJT4LD.js} +88 -60
  121. package/dist/{docs-7LQ23DLM.js → docs-23KQS3XK.js} +5 -5
  122. package/dist/doctor-QOA5FNY5.js +313 -0
  123. package/dist/{eval-IJ5VEZDJ.js → eval-TFBYQH4H.js} +66 -64
  124. package/dist/eval-inventory-SXH7PDKX.js +316 -0
  125. package/dist/{evidence-L5APPXNV.js → evidence-ERGESKGN.js} +198 -44
  126. package/dist/{evolve-RGNKFJ52.js → evolve-VDXTSYCJ.js} +46 -38
  127. package/dist/{extensions-7WYWUX5A.js → extensions-7BGBHN57.js} +6 -6
  128. package/dist/{fleet-6CNVBZZP.js → fleet-2RRVDF2V.js} +189 -101
  129. package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-VJ726XIA.js} +10 -10
  130. package/dist/fleet-decisions-EPAPM3XJ.js +157 -0
  131. package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-JF5QOATM.js} +16 -15
  132. package/dist/fleet-inspect-VLY4S7QM.js +442 -0
  133. package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-AIZUEJOY.js} +6 -5
  134. package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-AJRPDMDV.js} +20 -18
  135. package/dist/fleet-verify-JFEL2L3H.js +175 -0
  136. package/dist/fleet-view-ZCON35AG.js +102 -0
  137. package/dist/{init-VBN2ACVA.js → init-DN2WWLFE.js} +64 -56
  138. package/dist/install-XGLBQY5E.js +13 -0
  139. package/dist/interop-OZBKXAYL.js +114 -0
  140. package/dist/{library-JHGUMLY2.js → library-YWZG7IMW.js} +19 -18
  141. package/dist/{memory-K4OQIYWG.js → memory-I4C4HMLW.js} +48 -40
  142. package/dist/{models-2NCZUWDD.js → models-CEYXJBO6.js} +30 -28
  143. package/dist/{monitor-MMVTJABD.js → monitor-NZ6GCI3P.js} +53 -47
  144. package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-GCGQ4N5I.js} +6311 -7145
  145. package/dist/panes-HMABYVO4.js +58 -0
  146. package/dist/panes-KY6W3V2E.js +103 -0
  147. package/dist/{paths-DBXMZMDU.js → paths-II4K7DNR.js} +5 -5
  148. package/dist/{reset-DD5JGOY3.js → reset-DQ6FGCSH.js} +13 -11
  149. package/dist/resources-BB3MVJMD.js +111 -0
  150. package/dist/{run-QEGNX7FL.js → run-H2GQDUER.js} +113 -82
  151. package/dist/{share-JKD3BQMW.js → share-GTJN6A5O.js} +18 -17
  152. package/dist/{skills-LMQIKDOZ.js → skills-L55TEW6R.js} +31 -24
  153. package/dist/{skills-eval-I7X2774U.js → skills-eval-XVXPH2JI.js} +61 -52
  154. package/dist/skills-inventory-S4MXPJFV.js +126 -0
  155. package/dist/slash-commands-ZSGASKJC.js +77 -0
  156. package/dist/{steer-CF5TDANS.js → steer-RZGSCY4R.js} +3 -3
  157. package/dist/{support-I7LOJLIF.js → support-PKEUNNQL.js} +4 -4
  158. package/dist/{targets-RUSR6B5Z.js → targets-NCPZ644J.js} +31 -29
  159. package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-44SV3YCN.js} +4 -4
  160. package/dist/tools-DAF3DI3C.js +27 -0
  161. package/dist/{trace-ODOQIVIW.js → trace-FYVW2MQA.js} +149 -7
  162. package/dist/tui-primitives-2AKXQNZK.js +13 -0
  163. package/dist/{uninstall-ZJF5H5ZN.js → uninstall-DW2PNOIC.js} +5 -5
  164. package/dist/{upgrade-XANW3FXB.js → upgrade-3XPP6OQL.js} +26 -24
  165. package/dist/{usage-4H7ZRXQT.js → usage-3NLHGTU2.js} +57 -49
  166. package/dist/{verifiers-UZXNBZEB.js → verifiers-SSQONKRT.js} +171 -12
  167. package/dist/{verify-BVKWTNDL.js → verify-3U6J7FZI.js} +9 -9
  168. package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-S7RR6GZ7.js} +3 -3
  169. package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-CEHYGPGQ.js} +67 -59
  170. package/dist/with-panes-MKB46MPQ.js +782 -0
  171. package/dist/worker/entry.js +101 -66
  172. package/docs/README.md +3 -2
  173. package/docs/acp.md +24 -3
  174. package/docs/alcf-provider.md +1 -1
  175. package/docs/architecture.md +2 -2
  176. package/docs/artifact-versions.md +4 -1
  177. package/docs/built-in-agents.md +1 -1
  178. package/docs/capacity-and-scheduling.md +43 -5
  179. package/docs/commands-and-modes.md +31 -2
  180. package/docs/configuration-and-targets.md +40 -10
  181. package/docs/context-engine.md +1 -1
  182. package/docs/development-pipeline.md +19 -0
  183. package/docs/dispatch-typed-intent.md +385 -0
  184. package/docs/documentation-coverage.md +2 -2
  185. package/docs/documentation-guide.md +1 -1
  186. package/docs/environment-variables.md +1 -0
  187. package/docs/eval-runner.md +1 -1
  188. package/docs/evals-internal.md +1 -1
  189. package/docs/evidence-and-memory.md +2 -2
  190. package/docs/evolution.md +1 -1
  191. package/docs/exit-codes-and-output.md +1 -1
  192. package/docs/extensions-and-sharing.md +25 -1
  193. package/docs/fleet-dispatch.md +22 -1
  194. package/docs/installation-and-lifecycle.md +15 -2
  195. package/docs/middleware-and-components.md +1 -1
  196. package/docs/model-catalog.md +10 -1
  197. package/docs/observability.md +3 -3
  198. package/docs/proactive-memory.md +1 -1
  199. package/docs/prompt-envelope-and-tools.md +1 -1
  200. package/docs/provider-adapter-cookbook.md +1 -1
  201. package/docs/safety-model.md +2 -2
  202. package/docs/scientific-validation.md +3 -3
  203. package/docs/session-lifecycle.md +1 -1
  204. package/docs/skills-marketplace.md +1 -1
  205. package/docs/tool-usage.md +18 -8
  206. package/docs/trace-store.md +1 -1
  207. package/docs/troubleshooting.md +1 -1
  208. package/docs/tui-design.md +1 -1
  209. package/docs/worker-dispatch-mechanics.md +1 -1
  210. package/package.json +4 -2
  211. package/src/cli/acp.ts +6 -2
  212. package/src/cli/argv.ts +25 -0
  213. package/src/cli/configure.ts +23 -21
  214. package/src/cli/doctor-panes.ts +124 -0
  215. package/src/cli/doctor-toolchain.ts +57 -0
  216. package/src/cli/doctor.ts +20 -1
  217. package/src/cli/eval-inventory.ts +436 -0
  218. package/src/cli/eval.ts +13 -0
  219. package/src/cli/evidence-detail.ts +88 -0
  220. package/src/cli/evidence-inventory.ts +183 -0
  221. package/src/cli/evidence.ts +30 -5
  222. package/src/cli/fleet-decisions.ts +69 -0
  223. package/src/cli/fleet-inspect.ts +334 -0
  224. package/src/cli/fleet-verify.ts +133 -0
  225. package/src/cli/fleet-view.ts +810 -0
  226. package/src/cli/fleet.ts +148 -37
  227. package/src/cli/index.ts +14 -2
  228. package/src/cli/interop-inspect.ts +128 -0
  229. package/src/cli/interop.ts +34 -0
  230. package/src/cli/panes.ts +35 -0
  231. package/src/cli/reset.ts +5 -2
  232. package/src/cli/run.ts +58 -0
  233. package/src/cli/skills-inventory.ts +185 -0
  234. package/src/cli/skills.ts +16 -13
  235. package/src/cli/tools.ts +321 -0
  236. package/src/cli/trace-inspect.ts +252 -0
  237. package/src/cli/trace.ts +23 -2
  238. package/src/cli/verifiers-inspect.ts +347 -0
  239. package/src/cli/verifiers.ts +9 -0
  240. package/src/core/bus-events.ts +4 -0
  241. package/src/core/config.ts +49 -0
  242. package/src/core/defaults.ts +93 -7
  243. package/src/core/response-schema.ts +44 -4
  244. package/src/core/theme-token-hex.ts +43 -0
  245. package/src/core/tool-names.ts +2 -1
  246. package/src/core/xdg.ts +1 -1
  247. package/src/domains/agents/fleets/build-review.md +0 -3
  248. package/src/domains/agents/fleets/build-test.md +0 -3
  249. package/src/domains/agents/result-contract-filesystem.ts +32 -0
  250. package/src/domains/agents/result-contract.ts +164 -35
  251. package/src/domains/config/classify.ts +3 -0
  252. package/src/domains/dispatch/admission-error.ts +9 -0
  253. package/src/domains/dispatch/admission.ts +22 -21
  254. package/src/domains/dispatch/capacity-lease.ts +21 -1
  255. package/src/domains/dispatch/council-topology.ts +398 -0
  256. package/src/domains/dispatch/extension.ts +222 -50
  257. package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
  258. package/src/domains/dispatch/fleet-plan.ts +7 -2
  259. package/src/domains/dispatch/fleet-run.ts +64 -1
  260. package/src/domains/dispatch/gate-decisions.ts +11 -1
  261. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  262. package/src/domains/dispatch/gate-topology.ts +289 -0
  263. package/src/domains/dispatch/index.ts +19 -0
  264. package/src/domains/dispatch/intent-compatibility.ts +330 -0
  265. package/src/domains/dispatch/intent.ts +85 -1
  266. package/src/domains/dispatch/reservation-store.ts +24 -4
  267. package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
  268. package/src/domains/dispatch/run-event-journal.ts +598 -0
  269. package/src/domains/dispatch/state.ts +45 -1
  270. package/src/domains/dispatch/types.ts +13 -0
  271. package/src/domains/dispatch/validation.ts +33 -8
  272. package/src/domains/eval/compare/compare.ts +3 -16
  273. package/src/domains/eval/inventory.ts +113 -0
  274. package/src/domains/eval/schema/serving.ts +31 -0
  275. package/src/domains/evidence/store.ts +6 -0
  276. package/src/domains/memory/index.ts +0 -1
  277. package/src/domains/memory/task-memory-policy.ts +6 -10
  278. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  279. package/src/domains/middleware/memory-intervention.ts +33 -21
  280. package/src/domains/mux/contract.ts +434 -0
  281. package/src/domains/mux/detect.ts +158 -0
  282. package/src/domains/mux/extension.ts +47 -0
  283. package/src/domains/mux/index.ts +96 -0
  284. package/src/domains/mux/manifest.ts +6 -0
  285. package/src/domains/mux/operations.ts +164 -0
  286. package/src/domains/mux/pane-registry.ts +90 -0
  287. package/src/domains/mux/protocol.ts +49 -0
  288. package/src/domains/mux/socket-client.ts +816 -0
  289. package/src/domains/mux/types.ts +222 -0
  290. package/src/domains/mux/viewer-command.ts +59 -0
  291. package/src/domains/mux/yazi/assets/init.lua +2 -0
  292. package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
  293. package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
  294. package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
  295. package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
  296. package/src/domains/mux/yazi/assets/yazi.toml +17 -0
  297. package/src/domains/mux/yazi/event-stream.ts +180 -0
  298. package/src/domains/mux/yazi/profile.ts +299 -0
  299. package/src/domains/mux/yazi/session.ts +228 -0
  300. package/src/domains/mux/yazi/theme.ts +30 -0
  301. package/src/domains/observability/cost.ts +21 -0
  302. package/src/domains/observability/index.ts +2 -0
  303. package/src/domains/observability/trace-store.ts +42 -0
  304. package/src/domains/providers/endpoint-capacity.ts +154 -22
  305. package/src/domains/providers/endpoint-slots-store.ts +189 -0
  306. package/src/domains/providers/extension.ts +20 -3
  307. package/src/domains/providers/index.ts +22 -0
  308. package/src/domains/providers/model-runtime-capabilities.ts +32 -0
  309. package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
  310. package/src/domains/providers/runtimes/builtins.ts +2 -0
  311. package/src/domains/providers/runtimes/protocol/litellm.ts +375 -0
  312. package/src/domains/providers/support.ts +1 -0
  313. package/src/domains/providers/target-model-cache.ts +124 -0
  314. package/src/domains/resources/index.ts +3 -0
  315. package/src/domains/resources/skills/loader.ts +33 -0
  316. package/src/domains/safety/action-classifier.ts +6 -0
  317. package/src/domains/toolchain/archive.ts +175 -0
  318. package/src/domains/toolchain/contract.ts +28 -0
  319. package/src/domains/toolchain/extension.ts +47 -0
  320. package/src/domains/toolchain/index.ts +39 -0
  321. package/src/domains/toolchain/install.ts +327 -0
  322. package/src/domains/toolchain/manifest.ts +8 -0
  323. package/src/domains/toolchain/paths.ts +34 -0
  324. package/src/domains/toolchain/registry.ts +265 -0
  325. package/src/domains/toolchain/remove.ts +218 -0
  326. package/src/domains/toolchain/resolve.ts +182 -0
  327. package/src/domains/toolchain/types.ts +113 -0
  328. package/src/domains/toolchain/version.ts +88 -0
  329. package/src/engine/acp/server.ts +413 -70
  330. package/src/engine/acp/types.ts +19 -1
  331. package/src/engine/claude/sdk-module.ts +98 -0
  332. package/src/engine/claude/sdk-runtime.ts +19 -11
  333. package/src/engine/tui-primitives.ts +21 -0
  334. package/src/engine/tui.ts +1 -0
  335. package/src/engine/worker-runtime.ts +2 -13
  336. package/src/entry/boot-options.ts +2 -0
  337. package/src/entry/orchestrator.ts +103 -5
  338. package/src/entry/panes-activation.ts +31 -0
  339. package/src/entry/with-panes.ts +20 -0
  340. package/src/interactive/context-overlay.ts +1 -0
  341. package/src/interactive/cost-overlay.ts +2 -0
  342. package/src/interactive/council-grid.ts +1 -3
  343. package/src/interactive/council.ts +11 -0
  344. package/src/interactive/dispatch-board.ts +26 -16
  345. package/src/interactive/interactive-application.ts +153 -6
  346. package/src/interactive/interactive-input-runtime.ts +7 -0
  347. package/src/interactive/interactive-slash-runtime.ts +36 -6
  348. package/src/interactive/memory-overlay.ts +1 -0
  349. package/src/interactive/modal-marker.ts +170 -0
  350. package/src/interactive/mux-bridge.ts +214 -0
  351. package/src/interactive/overlay-frame.ts +58 -2
  352. package/src/interactive/overlay-general-openers.ts +1 -0
  353. package/src/interactive/overlay-key-routing.ts +14 -3
  354. package/src/interactive/overlay-lifecycle.ts +19 -3
  355. package/src/interactive/overlay-model-selectors.ts +40 -3
  356. package/src/interactive/overlay-permission-lifecycle.ts +90 -22
  357. package/src/interactive/overlay-transitions.ts +18 -4
  358. package/src/interactive/overlays/agents.ts +1 -0
  359. package/src/interactive/overlays/ask-user.ts +136 -30
  360. package/src/interactive/overlays/auth-dialog.ts +1 -0
  361. package/src/interactive/overlays/context-reset.ts +1 -0
  362. package/src/interactive/overlays/cwd-fallback.ts +1 -0
  363. package/src/interactive/overlays/decisions.ts +11 -11
  364. package/src/interactive/overlays/extensions.ts +1 -0
  365. package/src/interactive/overlays/fleet-run-approval.ts +1 -0
  366. package/src/interactive/overlays/handoff-review.ts +1 -0
  367. package/src/interactive/overlays/help-reference.ts +2 -0
  368. package/src/interactive/overlays/interop.ts +1 -0
  369. package/src/interactive/overlays/library-install-confirm.ts +1 -0
  370. package/src/interactive/overlays/library-tabs.ts +28 -0
  371. package/src/interactive/overlays/list-overlay.ts +10 -1
  372. package/src/interactive/overlays/message-picker.ts +1 -0
  373. package/src/interactive/overlays/model-scope.ts +86 -0
  374. package/src/interactive/overlays/model-selector.ts +1 -0
  375. package/src/interactive/overlays/prompts.ts +1 -0
  376. package/src/interactive/overlays/session-selector.ts +1 -0
  377. package/src/interactive/overlays/settings-sections.ts +30 -0
  378. package/src/interactive/overlays/settings.ts +579 -44
  379. package/src/interactive/overlays/side-question.ts +1 -0
  380. package/src/interactive/overlays/skills-hub.ts +3 -11
  381. package/src/interactive/overlays/tree-selector.ts +1 -0
  382. package/src/interactive/pane-policy.ts +46 -0
  383. package/src/interactive/panes-runtime.ts +292 -0
  384. package/src/interactive/renderers/compaction-summary.ts +29 -0
  385. package/src/interactive/renderers/worker-entry.ts +122 -14
  386. package/src/interactive/slash-commands.ts +251 -15
  387. package/src/interactive/tasks-overlay.ts +1 -0
  388. package/src/interactive/theme/tokens.ts +3 -14
  389. package/src/interactive/turn-context.ts +47 -2
  390. package/src/interactive/view/artifacts.ts +109 -1
  391. package/src/interactive/view/view-overlay.ts +1 -0
  392. package/src/interactive/watch-pane.ts +152 -0
  393. package/src/interactive/worker-progress.ts +7 -1
  394. package/src/interactive/worker-receipts.ts +19 -1
  395. package/src/interactive/worker-stream.ts +5 -0
  396. package/src/interactive/yazi-bridge.ts +444 -0
  397. package/src/tools/bootstrap.ts +26 -2
  398. package/src/tools/builtin-tool-catalog.ts +15 -0
  399. package/src/tools/compete-worktrees.ts +83 -2
  400. package/src/tools/core-bootstrap.ts +2 -1
  401. package/src/tools/dispatch-admission.ts +14 -3
  402. package/src/tools/dispatch-arguments.ts +20 -20
  403. package/src/tools/dispatch-run-events.ts +134 -19
  404. package/src/tools/dispatch-runner.ts +29 -7
  405. package/src/tools/dispatch-types.ts +15 -3
  406. package/src/tools/dispatch.ts +1 -1
  407. package/src/tools/executables.ts +17 -14
  408. package/src/tools/observation.ts +54 -4
  409. package/src/tools/panes-surface.ts +38 -0
  410. package/src/tools/panes.ts +112 -0
  411. package/src/tools/policy.ts +10 -1
  412. package/src/tools/presentation.ts +1 -0
  413. package/dist/chunk-D73KXYPF.js +0 -37
  414. package/dist/chunk-MLOK6ZOS.js +0 -2888
  415. package/dist/chunk-YKOFT37S.js +0 -279
  416. package/dist/doctor-TWBWFK5V.js +0 -165
@@ -1,7 +1,7 @@
1
1
  # Configuration, Targets, Runtimes, and Auth
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive configuration validator, target resolver, and CLI command generator is located at [docs/html/configuration_blueprint.html](html/configuration_blueprint.html) (Version: 0.3.9).
4
+ > **Interactive Spec Available:** An interactive configuration validator, target resolver, and CLI command generator is located at [docs/html/configuration_blueprint.html](html/configuration_blueprint.html) (Version: 0.4.0).
5
5
 
6
6
  Clio Coder is target-first: chat and fleet dispatch resolve through configured targets in `settings.yaml`, not through provider-specific ad hoc flags. Chat and print targets are HTTP and native engine-backed runtimes. Fleet dispatch can also target the sanctioned Claude Code subscription runtimes described below.
7
7
 
@@ -29,7 +29,7 @@ Default config file:
29
29
  <configDir>/settings.yaml
30
30
  ```
31
31
 
32
- Role contents: config holds user-authored files (settings, credentials, agents, skills, prompts, extensions, runtimes); data holds durable artifacts (memory, evidence, evals); state holds machine-produced session state (sessions, audit, receipts, runs.json, recent-models.json, install.json, interop.json, interviews, scratch); cache holds disposable derived files.
32
+ Role contents: config holds user-authored files (settings, credentials, agents, skills, prompts, extensions, runtimes); data holds durable artifacts (memory, evidence, evals, vendored external tools); state holds machine-produced session state (sessions, audit, receipts, runs.json, recent-models.json, install.json, interop.json, interviews, scratch); cache holds disposable derived files.
33
33
 
34
34
  The `library` settings block configures the private resource catalog. `library.catalog` is an optional path and defaults to `<configDir>/library.yaml`. `library.remote` is an optional git remote URL, and the catalog repository must name that git remote `library`. `library.sync` defaults to `false`, which makes sync and push refuse before spawning git. `library.confirmedRemote` is written by `clio-coder library remote confirm <url>` and must exactly match `library.remote` before sync or push can run. Confirmation sets both values when `library.remote` is unset and refuses a differing configured URL with `library_remote_mismatch`. See [resource-library.md](resource-library.md).
35
35
 
@@ -508,19 +508,19 @@ The Settings Center organizes all configuration under four non-selectable group
508
508
 
509
509
  | Group | Section | Rows, in order |
510
510
  | --- | --- | --- |
511
- | **CORE** | Autonomy & Safety (`safety`) | `autonomy`, `workers.onPermission`, `delegation.defaults.toolGovernance`, `skills.trustProjectCompatRoots`, and the read-only safety-net fact. |
512
- | **CORE** | Orchestrator (`orchestrator`) | `orchestrator.thinkingLevel`, `orchestrator.target`, `orchestrator.model`, the memory plane (`background.target`, `background.model`, `background.thinkingLevel`), and the proactive-memory knobs (`memory.intervention.enabled`, `.everyNTools`, `.windowSteps`, `.maxTokens`, `.timeoutMs`). Changing target rebases model and thinking choices. |
513
- | **ROUTING** | Fleet (`fleet`) | `workers.default.target`, `workers.default.model`, `workers.default.thinkingLevel`, `workers.maxRetries`, `workers.profiles`, and `workers.agentBindings`, rendered under the group headers `Defaults`, `Profiles`, `Agent routes`, and `Placement`. Profile rows carry a `◆ Edit` drill-down and a destructive removal preflight; placement rows are read-only node status. |
511
+ | **CORE** | Autonomy & Safety (`safety`) | `autonomy`, `workers.onPermission`, the escalation bounds that keep that posture non-stall (`workers.escalation.timeoutMs`, `workers.escalation.fallback`), `delegation.defaults.toolGovernance`, `skills.trustProjectCompatRoots`, and the read-only safety-net fact. |
512
+ | **CORE** | Orchestrator (`orchestrator`) | `orchestrator.thinkingLevel`, `orchestrator.target`, `orchestrator.model`, the memory plane (`background.target`, `background.model`, `background.thinkingLevel`), and the proactive-memory knobs (`memory.intervention.enabled`, `.everyNTools`, `.windowSteps`, `.maxTokens`, `.timeoutMs`), and `prewarm.enabled`. Changing target rebases model and thinking choices. |
513
+ | **ROUTING** | Fleet (`fleet`) | `workers.default.target`, `workers.default.model`, `workers.default.thinkingLevel`, `workers.maxRetries`, `workers.resilienceCooldownMs`, `workers.profiles`, `workers.agentBindings`, and the routing activation set (`routing.activeRoles`, `routing.activePostures`, and the read-only `routing.agentAutomation.activeAgentRoles`), rendered under the group headers `Defaults`, `Profiles`, `Agent routes`, `Route activation`, and `Placement`. Profile rows carry a `◆ Edit` drill-down and a destructive removal preflight; placement rows are read-only node status. |
514
514
  | **ROUTING** | Targets (`targets`) | The `targets` console table (`HEALTH`, `ID`, `ROLES`, `RUNTIME`, `LATENCY`) with an in-place action and detail drawer for URL, default model, last probe, and failure reason. Actions include `Use`, `Connect`, `Probe`, and `Remove`. |
515
515
  | **ROUTING** | Models (`models`) | `scope`, `modelSelector.recentLimit`, and `modelSelector.favorites`, rendered as a provider-backed checklist with target-level and target/model entries, `Space` toggle, capability inspector, and a preserved `Unavailable` group. Deep link `/scoped-models`. |
516
- | **RUNTIME** | Budget (`budget`) | `budget.sessionCeilingUsd`, `defaults.maxTokens`, and `budget.concurrency` (restart required). |
517
- | **RUNTIME** | Compaction (`compaction`) | `compaction.auto`, `compaction.threshold`, and `compaction.excludeLastTurns`. |
518
- | **RUNTIME** | Retry (`retry`) | `retry.enabled`, `retry.maxRetries`, `retry.baseDelayMs`, and `retry.maxDelayMs`. |
516
+ | **RUNTIME** | Budget (`budget`) | `budget.sessionCeilingUsd`, `defaults.maxTokens`, `budget.concurrency` (restart required), and the six `guardrails.*` backstops under a `Guardrails` group header. |
517
+ | **RUNTIME** | Compaction (`compaction`) | `compaction.auto`, `compaction.threshold`, `compaction.excludeLastTurns`, and the five `context.workingSet.*` keys under a `Working set` group header. |
518
+ | **RUNTIME** | Retry (`retry`) | `retry.enabled`, `retry.maxRetries`, `retry.baseDelayMs`, `retry.maxDelayMs`, and `retry.streamStallMs`. |
519
519
  | **EXPERIENCE** | Terminal (`terminal`) | `terminal.showTerminalProgress`, `terminal.outputVerbosity` (`minimal`, `default`, `verbose`), `terminal.tuiMode` (`regular`, `fullscreen`), `terminal.fullscreenScrollbar` (`hidden`, `auto`, `always`), `terminal.smoothStreaming` (`off`, `auto`, `on`), `terminal.notify`, and `theme`. |
520
520
  | **EXPERIENCE** | Watchdog (`watchdog`) | `watchdog.enabled`, `watchdog.target`, and `watchdog.cadenceToolCalls`. The two optional keys are editable text rows that render their absence as `(session target)` and `(turn end only)`; submitting an empty value removes the key from `settings.yaml` rather than storing a blank. |
521
- | **EXPERIENCE** | Advanced (`advanced`) | `runtimePlugins`, `attribution.gitCommits`, `compaction.model`, `compaction.systemPrompt`, `delegation.defaults.connectTimeoutMs`, `delegation.defaults.turnTimeoutMs`, `delegation.defaults.permissionTimeoutMs`, `keybindings`, and `delegation.agents`. |
521
+ | **EXPERIENCE** | Advanced (`advanced`) | `runtimePlugins`, `attribution.gitCommits`, `compaction.model`, `compaction.systemPrompt`, `delegation.defaults.connectTimeoutMs`, `delegation.defaults.turnTimeoutMs`, `delegation.defaults.permissionTimeoutMs`, `keybindings`, `delegation.agents`, and the four `library.*` keys under a `Library` group header. `library.confirmedRemote` is read-only: the confirm flow writes it, because confirming a remote from its own row would be the trust record confirming itself. |
522
522
 
523
- `retry.streamStallMs` has no Settings Center row; edit it in `settings.yaml`.
523
+ Every key `settings.yaml` accepts now has a row, except the ones the Center cannot edit as a nested structure: `workers.rosters` and `routing.agentAutomation.activeAgentRoles` are authored in `settings.yaml`, and the latter has a read-only row that reports the active pairs. `tests/contracts/settings-center.test.ts` enforces this against `DEFAULT_SETTINGS`.
524
524
 
525
525
  Label to config path mapping:
526
526
 
@@ -528,6 +528,8 @@ Label to config path mapping:
528
528
  | --- | --- |
529
529
  | Autonomy level | `autonomy` |
530
530
  | Fleet approvals routing | `workers.onPermission` |
531
+ | Escalation timeout (ms) | `workers.escalation.timeoutMs` |
532
+ | Escalation fallback | `workers.escalation.fallback` (`deny` or `fail`) |
531
533
  | Delegation governance | `delegation.defaults.toolGovernance` |
532
534
  | Trust project skill roots | `skills.trustProjectCompatRoots` |
533
535
  | Safety net | read-only fact, no config path |
@@ -542,10 +544,15 @@ Label to config path mapping:
542
544
  | Memory trajectory steps | `memory.intervention.windowSteps` |
543
545
  | Memory reminder tokens | `memory.intervention.maxTokens` |
544
546
  | Memory timeout (ms) | `memory.intervention.timeoutMs` |
547
+ | Prompt pre-warm | `prewarm.enabled` |
545
548
  | Default target | `workers.default.target` |
546
549
  | Default model | `workers.default.model` |
547
550
  | Default thinking level | `workers.default.thinkingLevel` |
548
551
  | Fleet retries | `workers.maxRetries` |
552
+ | Resilience cooldown (ms) | `workers.resilienceCooldownMs` (0 disables the cooldown) |
553
+ | Active routing roles | `routing.activeRoles` (comma-separated from `researcher`, `verifier`, `reviewer`, `judge`) |
554
+ | Active routing postures | `routing.activePostures` (comma-separated from `quality`, `balanced`, `latency`, `economy`) |
555
+ | Active agent routes | `routing.agentAutomation.activeAgentRoles` (read-only; edit the pairs in `settings.yaml`) |
549
556
  | Add profile | `workers.profiles` |
550
557
  | Add agent route | `workers.agentBindings` |
551
558
  | Configured targets | `targets` |
@@ -555,13 +562,25 @@ Label to config path mapping:
555
562
  | Session ceiling (USD) | `budget.sessionCeilingUsd` |
556
563
  | Output budget (tokens) | `defaults.maxTokens` |
557
564
  | Fleet concurrency | `budget.concurrency` (restart required) |
565
+ | Turn tool-call budget | `guardrails.turnToolCallBudget` |
566
+ | Worker tool-call cap | `guardrails.workerToolCallCap` |
567
+ | Run ledger retention | `guardrails.maxDispatchRuns` |
568
+ | Read byte cap | `guardrails.readMaxBytes` |
569
+ | Observation byte pool | `guardrails.observationTurnBudgetBytes` |
570
+ | Internal dispatch timeout (ms) | `guardrails.internalDispatchTimeoutMs` |
558
571
  | Auto-compact | `compaction.auto` |
559
572
  | Compaction threshold | `compaction.threshold` |
560
573
  | Protected recent turns | `compaction.excludeLastTurns` |
574
+ | Working-set eviction | `context.workingSet.enabled` |
575
+ | Eviction policy | `context.workingSet.policy` (`structural-v1` or `age-horizon`) |
576
+ | Eviction target pressure | `context.workingSet.target` (greater than 0, less than 1) |
577
+ | Turns protected from eviction | `context.workingSet.protectLastTurns` |
578
+ | Minimum evictable tokens | `context.workingSet.minEvictableTokens` |
561
579
  | Retry transient errors | `retry.enabled` |
562
580
  | Max retries | `retry.maxRetries` |
563
581
  | Base delay (ms) | `retry.baseDelayMs` |
564
582
  | Max delay (ms) | `retry.maxDelayMs` |
583
+ | Stream stall timeout (ms) | `retry.streamStallMs` |
565
584
  | Terminal progress badges | `terminal.showTerminalProgress` |
566
585
  | Output detail | `terminal.outputVerbosity` (`minimal`, `default`, or `verbose`) |
567
586
  | TUI mode | `terminal.tuiMode` (`regular` or `fullscreen`, restart required) |
@@ -581,6 +600,10 @@ Label to config path mapping:
581
600
  | Delegate permission (ms) | `delegation.defaults.permissionTimeoutMs` |
582
601
  | Keybinding overrides | `keybindings` |
583
602
  | Delegation agents | `delegation.agents` |
603
+ | Library catalog path | `library.catalog` (blank uses the config directory) |
604
+ | Library remote | `library.remote` (blank keeps the library local) |
605
+ | Confirmed library remote | `library.confirmedRemote` (read-only; written by the confirm flow) |
606
+ | Library sync | `library.sync` |
584
607
 
585
608
  ---
586
609
 
@@ -669,6 +692,13 @@ Every one of these has an environment override for a single process; see [enviro
669
692
  | `context.workingSet.protectLastTurns` | `6` | integer ≥ 1 | next turn |
670
693
  | `context.workingSet.minEvictableTokens` | `200` | integer ≥ 0 | next turn |
671
694
  | `prewarm.enabled` | `true` | boolean | next turn |
695
+ | `panes.enabled` | `off` | `auto`, `embedded`, or `off` | restart; `--with-panes` / `--no-panes` beat it |
696
+ | `panes.notifications` | `failures` | `failures`, `all`, or `off` | next dispatch |
697
+ | `panes.journal` | `true` | boolean | next dispatch |
698
+ | `panes.yazi.enabled` | `true` | boolean | immediately, on the next files-pane open |
699
+ | `panes.yazi.mode` | `companion` | `companion` or `chooser` | immediately, on the next files-pane open |
700
+ | `panes.yazi.profile` | `managed` | `managed` or `user` | immediately, on the next files-pane open |
701
+ | `panes.yazi.followCwd` | `true` | boolean | immediately, on the next explicit files-pane open |
672
702
  | `defaults.maxTokens` | `32768` | integer ≥ 0 | next turn |
673
703
  | `budget.sessionCeilingUsd` | `5` | number ≥ 0 | immediately |
674
704
  | `budget.concurrency` | `auto` | `auto` or integer ≥ 1 | next dispatch |
@@ -1,7 +1,7 @@
1
1
  # Context Engine
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive dashboard is located at [docs/html/context_blueprint.html](html/context_blueprint.html) (Version: 0.3.9).
4
+ > **Interactive Spec Available:** An interactive dashboard is located at [docs/html/context_blueprint.html](html/context_blueprint.html) (Version: 0.4.0).
5
5
 
6
6
  Clio Coder tracks context pressure, records per-turn snapshots, and protects the provider context with bounded tool results plus single-threshold compaction.
7
7
 
@@ -56,6 +56,25 @@ commit the dependency pins, snapshot, boundary notes, and proving contracts
56
56
  together. `npm run lint` invokes the surface check automatically when the
57
57
  installed Pi versions differ from the checked-in snapshot.
58
58
 
59
+ ## Test lanes
60
+
61
+ `npm test` runs `scripts/shard-tests.mjs`. Contract and smoke files are assigned
62
+ deterministically to weighted parallel lanes, with timings from
63
+ `scripts/shard-weights.json`; `--list` shows the assignment and `--shard <n>`
64
+ reproduces one numbered lane. Tests whose assertion is itself sensitive to
65
+ wall-clock scheduling live in the explicit serial set. The runner waits for all
66
+ parallel lanes to drain, then runs that set alone with
67
+ `CLIO_TEST_CONCURRENCY=1`. Reproduce it with:
68
+
69
+ ```bash
70
+ node scripts/shard-tests.mjs --shard serial
71
+ ```
72
+
73
+ Do not repair a timing-measurement failure by widening its product bound or by
74
+ moving ordinary watchdog tests into the serial set. `tests/harness/load.ts`
75
+ scales watchdogs by the parallel lane count; the serial lane is reserved for
76
+ claims that cease to mean the same thing under contention.
77
+
59
78
  ## Issue conventions
60
79
 
61
80
  - **Title**: conventional tag plus imperative summary (`fix: memory overlay
@@ -0,0 +1,385 @@
1
+ # Typed Dispatch Intent: Migration and Refusal Policy
2
+
3
+ Typed dispatch intent is the structured declaration of what a dispatched worker
4
+ may read, may write, is expected to produce, and must verify. It replaces the
5
+ practice of reconstructing that answer from optional `writeRoots` plus path-like
6
+ tokens recalled from task and briefing prose.
7
+
8
+ This page is the migration contract. It names every dispatch producer and every
9
+ persisted structure typed intent touches, states what happens when intent is
10
+ omitted, partial, versioned differently, or contradictory, lists the stable
11
+ reason codes an operator or integrator can branch on, and states the measurable
12
+ condition under which the legacy inference fallback may be proposed for removal.
13
+
14
+ Related pages: [tool-usage.md](tool-usage.md) for the `dispatch` tool arguments,
15
+ [fleet-dispatch.md](fleet-dispatch.md) for fleet contracts,
16
+ [artifact-versions.md](artifact-versions.md) for the serialization registry, and
17
+ [safety-model.md](safety-model.md) for how a resolved write boundary is enforced.
18
+
19
+ ---
20
+
21
+ ## 1. The Shape
22
+
23
+ ```jsonc
24
+ {
25
+ "intent": {
26
+ "read_roots": ["src/domains/dispatch/"],
27
+ "write_roots": ["src/domains/dispatch/", "tests/contracts/"],
28
+ "relevant_paths": ["docs/dispatch-typed-intent.md"],
29
+ "expected_outputs": ["src/domains/dispatch/intent-compatibility.ts"],
30
+ "verification": [{ "check": "typecheck" }, { "check": "lint", "timeout_ms": 60000 }]
31
+ }
32
+ }
33
+ ```
34
+
35
+ Every path is a repository-relative POSIX path under the boundary grammar in
36
+ `src/core/path-boundary.ts`. A trailing `/` means the subtree; no trailing `/`
37
+ means that exact file. Absolute paths, `..`, `.` segments, backslashes, and
38
+ globs are refused rather than interpreted. Each list is normalized,
39
+ deduplicated, and sorted by code point, holds at most 32 entries, and each entry
40
+ is at most 512 UTF-8 bytes. `verification` holds at most 8 entries and every
41
+ `check` is a declared id resolved from package scripts or
42
+ `.clio-coder/verifiers.yaml`, never a shell command.
43
+
44
+ Normalization is in `src/domains/dispatch/intent.ts`. The normalized object
45
+ carries `version: 2` and a `pathProvenance` array binding every policy-bearing
46
+ path to the field that declared it, its provenance kind, and its confidence.
47
+ `src/domains/dispatch/path-scope.ts` resolves the request's path scope from it.
48
+ `src/domains/dispatch/intent-compatibility.ts` owns every rule on this page.
49
+
50
+ ---
51
+
52
+ ## 2. Compatibility Rules
53
+
54
+ Each rule resolves to exactly one of three decisions.
55
+
56
+ | Decision | Meaning | Where it surfaces |
57
+ | :--- | :--- | :--- |
58
+ | **accept** | The request is unambiguous. | Nothing is reported. |
59
+ | **warn** | The request is compatible, but its policy-bearing scope rests on something weaker than a declaration. The dispatch runs with the authority it would have had anyway. | The approval artifact renders the full resolved scope before a supervised dispatch runs; `pathScope` is sealed on the receipt. |
60
+ | **refuse** | The request states two incompatible things about authority, or states one this build cannot interpret. | Terminal admission error carrying the reason code. The dispatch never runs. |
61
+
62
+ The invariant that separates `warn` from `refuse`: **a warning is never the
63
+ difference between a narrow grant and a wide one.** No compatibility path widens
64
+ read, write, or verification authority to resolve an ambiguity. When the
65
+ compatible reading and the declared reading disagree about what a worker may
66
+ touch, the answer is a refusal, never the union of the two.
67
+
68
+ ### 2.1 Omitted intent
69
+
70
+ Accepted, with a warning. Policy-bearing scope is resolved by
71
+ `legacyPathScope()`: legacy `writeRoots` become the write boundary with
72
+ provenance `derived`, and path-like tokens in the task (confidence `medium`) and
73
+ briefing (confidence `low`) become working-context paths with provenance
74
+ `inferred`.
75
+
76
+ Inferred paths select project rules and compile worker context. They never
77
+ become write boundaries and never add a verification requirement. The only path
78
+ into a write boundary without a declaration is the explicit legacy `writeRoots`
79
+ field, which the caller had to set on purpose. This is what makes omission a
80
+ warning rather than a refusal: nothing about it can widen authority.
81
+
82
+ An absolute or malformed path token in prose is not silently dropped. It throws
83
+ `DispatchPathScopeInferenceError` with code `legacy_scope_path_absolute` or
84
+ `legacy_scope_path_malformed`, because a token the inference cannot normalize is
85
+ exactly where a silent omission would hide an applicable rule.
86
+
87
+ ### 2.2 Partial intent
88
+
89
+ Accepted. Every field is independently optional and an omitted list normalizes
90
+ to empty. A declaration is not required to be complete to be authoritative:
91
+ declaring only `write_roots` is a complete statement about write scope.
92
+
93
+ One partial shape gets a warning. Intent that declares `write_roots` or
94
+ `expected_outputs` but no `verification` describes work that changes the tree
95
+ with nothing the orchestrator itself runs to prove the change is sound
96
+ (`intent_partial_verification_absent`).
97
+
98
+ One partial shape is refused. An `expected_outputs` entry outside every declared
99
+ `write_root` (`intent_outputs_outside_write_roots`) means the write boundary
100
+ would block exactly the artifact the task is required to produce. Refusing that
101
+ at admission costs a rejected call; accepting it costs a full worker run that
102
+ cannot succeed.
103
+
104
+ ### 2.3 Stale or unsupported version
105
+
106
+ Refused, never migrated. `DISPATCH_INTENT_SUPPORTED_VERSIONS` is `[2]` and
107
+ membership in that list is the whole test. It is deliberately not a range: a
108
+ reader that accepts "2 or newer" accepts fields it cannot interpret, and a
109
+ reader that accepts "2 or older" reads a v1 statement about authority under v2
110
+ rules. Both are the ambiguity typed intent exists to remove.
111
+
112
+ Raw model-facing intent may echo `version: 2` so a caller can replay a
113
+ declaration it was shown. Any other value fails normalization with
114
+ `intent_version_unsupported`. A normalized intent arriving on a job spec at
115
+ another version fails admission with the same code. The remedy in both messages
116
+ is the same: restate the fields on a fresh dispatch call.
117
+
118
+ ### 2.4 Contradictory intent
119
+
120
+ Refused. Three contradictions are enumerated.
121
+
122
+ - **Legacy against declared write scope.** `writeRoots` and `intent.write_roots`
123
+ resolving to different trees is `intent_write_roots_contradiction`. Neither the
124
+ union nor the legacy field wins; the caller drops `writeRoots` and declares
125
+ once.
126
+ - **Narrowed against enclosing scope.** A per-task intent in a batch, or any
127
+ other narrowed declaration, reaching outside the intent it narrows is
128
+ `intent_scope_widening`. Narrowing is monotonic: downstream may shrink and may
129
+ never reach outside. Read scope is checked against reads plus writes, because a
130
+ declared write root is necessarily readable.
131
+ - **Write scope against run authority.** `write_roots` declared on a request
132
+ whose autonomy is `read-only` is `intent_write_without_authority`. Silently
133
+ dropping the declaration would leave the request claiming a write scope nothing
134
+ enforces.
135
+
136
+ The declared-versus-inferred case is not a contradiction and is not refused.
137
+ When a request declares intent, prose inference stops resolving scope entirely;
138
+ paths mentioned only in prose are reported as omitted through
139
+ `typed_scope_replaced_inferred_paths` and take no part in rule selection or
140
+ authority. Declared always outranks inferred.
141
+
142
+ ---
143
+
144
+ ## 3. Producer Compatibility Table
145
+
146
+ Every producer that can reach a worker passes through `validateJobSpec()` in
147
+ `src/domains/dispatch/validation.ts`, which is where the classifier runs. The
148
+ rules above therefore hold for every row below, including the rows that cannot
149
+ declare intent yet: those rows resolve scope by inference and are refused only
150
+ when they state a contradiction.
151
+
152
+ | Dispatch producer | Source | Typed intent | Behavior without declaration | Refuses on |
153
+ | :--- | :--- | :--- | :--- | :--- |
154
+ | **`dispatch` tool, singular `task`** | `src/tools/dispatch-arguments.ts` | Declared, top-level `intent` | Legacy inference from `writeRoots` + task/briefing tokens | All codes |
155
+ | **`dispatch` tool, batch `tasks[]`** | `src/tools/dispatch-arguments.ts` | Declared per task, shallow-merged over the top-level default | Same as singular, per task | All codes, plus `intent_scope_widening` against the top-level ceiling |
156
+ | **`dispatch` modes parallel / sequential / pipeline / detached** | `src/tools/dispatch-admission.ts` | Inherited unchanged from the task that declared it | Legacy inference | All codes |
157
+ | **`dispatch` mode compete, candidates** | `src/tools/dispatch-admission.ts` | Inherited unchanged from the single base task | Legacy inference | All codes. `verification` is refused for the mode (`verification_unsupported_for_mode`) |
158
+ | **`dispatch` mode compete, judge** | `src/tools/dispatch-admission.ts` | None. The judge is a fresh read-only request | Legacy inference over the judge's own task | All codes |
159
+ | **`dispatch` mode council, members** | `src/tools/dispatch-admission.ts` | Inherited, narrowed to read-only: declared write roots arrive as read roots | Legacy inference | All codes. `verification` is refused for the mode (`council_verification_unsupported`) |
160
+ | **`dispatch` mode council, synthesis judge** | `src/tools/dispatch-admission.ts` | None. Fresh read-only request | Legacy inference over the judge's own task | All codes |
161
+ | **`dispatch` review gate, builder** | `src/tools/dispatch-admission.ts` | Inherited unchanged | Legacy inference | All codes |
162
+ | **`dispatch` review gate, reviewer** | `src/tools/dispatch-admission.ts` | None on the request. `expected_outputs` and `verification` reach the reviewer as rendered *requirements*, never as evidence | Legacy inference over the reviewer's own task | All codes |
163
+ | **`dispatch` `apply_winner`** | `src/tools/dispatch-admission.ts` | Not applicable. Branch application runs no worker | Not applicable | Branch-shape refusals only |
164
+ | **`from_scout` continuation** | `src/tools/dispatch-scout-admission.ts` | **None today.** The compiled continuation plan carries no intent | Legacy inference per step | Contradiction codes only |
165
+ | **Fleet contract agent step (v4+ `writes:`)** | `src/domains/dispatch/fleet-run.ts` | Declared. The contract's `writes:` compiles to `relevant_paths` | Legacy inference for pre-v4 contracts and readonly steps | All codes |
166
+ | **Fleet contract gate / plan step** | `src/domains/dispatch/fleet-run.ts` | Declared, same path (`writes` is the gate path or the plan step's boundary) | Legacy inference when undeclared | All codes |
167
+ | **Fleet delegation-plan spliced step** | `src/domains/dispatch/fleet-run.ts` | Declared from the validated plan task's `writes` | Legacy inference when the task declares none | All codes |
168
+ | **Fleet code step** | `src/domains/dispatch/code-step.ts` | Not applicable. Runs a declared command, not a worker | Not applicable | Not applicable |
169
+ | **ACP delegation target** | `src/domains/dispatch/extension.ts` | Accepted and carried into the plan, but the external agent runs its own tool surface | Legacy inference | All codes, plus a hard refusal of any resolved `writeRoots` on this transport |
170
+ | **Custom agent recipe** | `src/domains/agents/` | Not a producer. A recipe narrows the tool surface and capability class; it never declares dispatch scope | Not applicable | Not applicable |
171
+ | **Extension-authored `DispatchRequest`** | Any `DispatchContract` consumer | Declared, if the extension builds one through `declaredScopeIntent()` or the normalizer | Legacy inference | All codes |
172
+ | **`clio-coder run --agent`** | `src/cli/run.ts` | **None today** | Legacy inference | Contradiction codes only |
173
+ | **`clio-coder wiki generate`** | `src/cli/wiki-generate.ts` | **None today.** Sets legacy `writeRoots` | Legacy inference plus a derived write boundary | Contradiction codes only |
174
+ | **`clio-coder bootstrap generate`** | `src/cli/bootstrap-generate.ts` | **None today** | Legacy inference | Contradiction codes only |
175
+ | **Interactive slash commands, overlays, watchdog** | `src/interactive/` | **None today** | Legacy inference | Contradiction codes only |
176
+
177
+ "All codes" means every code in section 5 that can apply to the row's shape.
178
+ "Contradiction codes only" means the row cannot declare intent, so only the
179
+ `intent_absent_legacy_inference` warning and the legacy inference errors apply.
180
+
181
+ ---
182
+
183
+ ## 4. Persisted and Serialized Contract Table
184
+
185
+ | Contract | Version | Carries intent | Migration policy |
186
+ | :--- | :--- | :--- | :--- |
187
+ | **`DispatchIntent`** | `2` | It *is* the intent | **Refused, never migrated.** Any other version fails admission with `intent_version_unsupported`. A stored declaration is restated on a fresh call. |
188
+ | **`DispatchPathScopeProvenance`** | `1` | Resolved scope with field source and confidence, never source prose | Sealed inside the receipt; shares the receipt's policy. |
189
+ | **Run Receipt** | `20` | `intent` and `pathScope`, both inside the integrity digest | **Refused, never migrated.** A receipt below v20 is reported as retired: intact, but never read as evidence. |
190
+ | **`ResolvedDispatchPlanArtifact`** | `3` | `intent` and `resolvedVerification` per task | **Refused, never migrated.** `resolvedDispatchPlanFromArgs` returns `null` for any version but 3, and a task whose `intent` fails `isDispatchIntent` invalidates the whole artifact. The call falls back to unresolved admission rather than executing a half-understood plan. |
191
+ | **Dispatch plan approval text and hash** | Rendered, hashed | `intent_sha256` for a declared task; the full inferred scope table for a legacy task | Not persisted across versions. The hash binds the exact rendering an operator approved. |
192
+ | **Worker Spec** | `3` | **No.** Carries the *resolved* `writeRoots`, not the declaration | Fail-closed preflight rejection. Deliberate: a worker receives an enforced boundary, never a statement of intent it could reinterpret. |
193
+ | **Execution Plan** | `4` | **No.** Carries per-step `writes` | Preflight rejects unsupported plan versions. Intent is built from `writes` at request construction, so the plan hash is unchanged by this. |
194
+ | **Fleet Contract** | `1..5` | **No.** v4+ carries per-step `writes:` | Reader refuses contracts whose version features it does not support. A pre-v4 contract declares nothing and stays on inference. |
195
+ | **Fleet Run Record** | `1` | **No** | Resume refuses a changed plan hash. Adding intent to steps does not change the hash, so existing records stay resumable. |
196
+ | **Durable Assignment Store** | `1` | **No** | Unsupported or unreadable store reads as empty. |
197
+ | **Detached Batch Store** | `1` | **No** | Unsupported version reads as empty. |
198
+ | **Code Step Record** | `1` | **No.** Deterministic command, not a worker | Records at other versions are skipped. |
199
+
200
+ Nothing is archived. Every affected structure either refuses an unsupported
201
+ version or ignores the record; no reader rewrites a stored artifact in place, so
202
+ a downgrade never encounters a file a newer build silently rewrote.
203
+
204
+ ### 4.1 Determinism across source and installed-package paths
205
+
206
+ `intent-compatibility.ts` and the version rules in `intent.ts` read no
207
+ filesystem, no clock, no environment, and no package layout. The supported
208
+ version set is a compiled-in constant, not a lookup. A source checkout, a global
209
+ npm install, and a bundled `dist/` therefore classify identical input
210
+ identically, which is what makes the version policy verifiable rather than
211
+ environmental. `tests/contracts/dispatch-intent-compatibility.test.ts` asserts it
212
+ by classifying the same input from two different working directories.
213
+
214
+ The one input that is legitimately environmental is the *verification catalog*:
215
+ `check` ids resolve from the project's `package.json` scripts and
216
+ `.clio-coder/verifiers.yaml`, which are properties of the workspace, not of the
217
+ Clio installation. An undeclared id fails closed with
218
+ `verification_check_undeclared` naming both sources.
219
+
220
+ ---
221
+
222
+ ## 5. Reason Codes
223
+
224
+ Every code is stable and appears as the prefix of its diagnostic, in the form
225
+ `<code>: <what is wrong and what to do about it>`.
226
+
227
+ | Code | Decision | Meaning |
228
+ | :--- | :--- | :--- |
229
+ | `intent_absent_legacy_inference` | warn | No typed intent; scope came from legacy inference. |
230
+ | `intent_partial_verification_absent` | warn | Declares tree-changing work with no verification requirement. |
231
+ | `typed_scope_replaced_inferred_paths` | warn | Typed intent was declared, so prose-only paths took no part in scope. |
232
+ | `legacy_scope_inferred` | warn | Legacy dispatch resolved policy-bearing scope with no declaration. |
233
+ | `legacy_scope_empty` | warn | Legacy dispatch inferred no policy-bearing path at all. |
234
+ | `intent_version_unsupported` | refuse | `intent.version` names a version this build does not speak. |
235
+ | `intent_malformed` | refuse | Not a normalized intent for a reason other than its version. |
236
+ | `intent_write_roots_contradiction` | refuse | Legacy `writeRoots` and `intent.write_roots` name different trees. |
237
+ | `intent_outputs_outside_write_roots` | refuse | A declared output lies outside every declared write root. |
238
+ | `intent_write_without_authority` | refuse | Write roots declared on a read-only request. |
239
+ | `intent_scope_widening` | refuse | A narrowed intent reaches outside the intent it narrows. |
240
+ | `intent_path_absolute` | refuse | A declared path is absolute rather than repository-relative. |
241
+ | `intent_path_escapes_root` | refuse | A declared path escapes the repository root. |
242
+ | `intent_path_malformed` | refuse | A declared path fails the boundary grammar. |
243
+ | `intent_path_over_cap` | refuse | A list exceeds 32 entries or an entry exceeds 512 bytes. |
244
+ | `verification_malformed` | refuse | A verification entry is not `{check, timeout_ms?}`. |
245
+ | `verification_over_cap` | refuse | More than 8 verification entries. |
246
+ | `verification_check_undeclared` | refuse | A `check` id is not declared by any catalog source. |
247
+ | `gate_and_intent_verification_conflict` | refuse | `gate` combined with `intent.verification`. |
248
+ | `legacy_scope_path_absolute` | refuse | Prose inference met an absolute path token. |
249
+ | `legacy_scope_path_malformed` | refuse | Prose inference met a malformed path token. |
250
+
251
+ ---
252
+
253
+ ## 6. Examples
254
+
255
+ Typed intent is the default for every example below. A call that omits it still
256
+ works; it just resolves its scope from weaker evidence.
257
+
258
+ ### 6.1 Main-agent call, single writer
259
+
260
+ ```jsonc
261
+ {
262
+ "agent": "coder",
263
+ "task": "Add the compatibility classifier and wire it into job-spec validation.",
264
+ "intent": {
265
+ "read_roots": ["src/domains/dispatch/"],
266
+ "write_roots": ["src/domains/dispatch/", "tests/contracts/"],
267
+ "expected_outputs": ["src/domains/dispatch/intent-compatibility.ts"],
268
+ "verification": [{ "check": "typecheck" }, { "check": "lint" }]
269
+ }
270
+ }
271
+ ```
272
+
273
+ The `expected_outputs` entry sits under a declared write root, so it is
274
+ producible. `verification` ids resolve before approval, and the orchestrator, not
275
+ the worker, runs them.
276
+
277
+ ### 6.2 Batch with a shared ceiling and per-task narrowing
278
+
279
+ ```jsonc
280
+ {
281
+ "agent": "coder",
282
+ "intent": { "read_roots": ["src/"], "write_roots": ["src/domains/"] },
283
+ "tasks": [
284
+ { "task": "Refactor the ledger hub.", "intent": { "write_roots": ["src/domains/dispatch/"] } },
285
+ { "task": "Refactor rule selection.", "intent": { "write_roots": ["src/domains/context/"] } }
286
+ ]
287
+ }
288
+ ```
289
+
290
+ Per-task intent shallow-merges over the top-level default and is then checked
291
+ against it as a ceiling. `"write_roots": ["docs/"]` on a task would be refused
292
+ with `intent_scope_widening`; the top-level declaration is the maximum.
293
+
294
+ ### 6.3 Read-only fan-out
295
+
296
+ ```jsonc
297
+ {
298
+ "agent": "scout",
299
+ "tasks": [
300
+ { "task": "Map every reader of the fleet config and cite file paths.",
301
+ "intent": { "read_roots": ["src/domains/agents/", "src/cli/"] } }
302
+ ]
303
+ }
304
+ ```
305
+
306
+ Declaring `read_roots` on a read-only dispatch does not grant anything. It
307
+ selects the project rules that apply to those trees and pins the worker's
308
+ context, which is what stops an applicable rule from being missed because the
309
+ task text happened not to spell a path.
310
+
311
+ ### 6.4 Fleet contract
312
+
313
+ A fleet contract declares scope in its own artifact; no `intent` key is written
314
+ by hand.
315
+
316
+ ```yaml
317
+ version: 5
318
+ name: refactor-dispatch
319
+ steps:
320
+ - id: implement
321
+ kind: agent
322
+ agent: coder
323
+ scope: workspace
324
+ writes: ["src/domains/dispatch/", "tests/contracts/"]
325
+ ```
326
+
327
+ `writes:` is compiled into the step's typed intent as `relevant_paths`, so the
328
+ contract's declaration selects project rules and compiles worker context. The
329
+ declaration keeps being *enforced* by the fleet write-boundary enforcer after
330
+ the step, which is why it is not restated as `write_roots`: that would mint a
331
+ second grant, enforced at the per-tool worker seam, which refuses outright on
332
+ the subprocess and ACP runtimes a fleet may legitimately route a step to.
333
+
334
+ ### 6.5 Extension-authored request
335
+
336
+ An extension holding repository-relative paths builds intent through the domain
337
+ rather than assembling the normalized object by hand:
338
+
339
+ ```ts
340
+ import { declaredScopeIntent } from "../domains/dispatch/index.js";
341
+
342
+ const built = declaredScopeIntent({ readRoots: ["src/"], writeRoots: ["src/generated/"] });
343
+ if (!built.ok) throw new Error(`${built.reason}: ${built.message}`);
344
+ await dispatch.dispatch({ agentId: "coder", executionRole: "builder", task, intent: built.intent });
345
+ ```
346
+
347
+ `declaredScopeIntent` runs the same normalization, caps, and provenance
348
+ construction the dispatch tool uses, so an extension cannot mint an intent shape
349
+ the tool could not. It deliberately does not accept `verification`: a declared
350
+ check id means nothing until it is resolved against the workspace catalog, and
351
+ that resolution belongs to the admission controller that owns the catalog.
352
+
353
+ ### 6.6 ACP delegation
354
+
355
+ Typed intent is accepted on a delegation request and is rendered into the
356
+ approval artifact, so an operator sees the declared scope before an external
357
+ agent starts. It grants nothing on that transport: the external agent runs its
358
+ own tool surface, Clio mediates no per-tool call, and any resolved `writeRoots`
359
+ is refused outright rather than accepted and left unenforced.
360
+
361
+ ---
362
+
363
+ ## 7. Retirement Criterion for Legacy Inference
364
+
365
+ Removing the inference fallback requires a later explicit issue. This is the
366
+ gate that issue has to clear, and it is measured rather than argued.
367
+
368
+ `pathScope.mode` is sealed on every receipt, so the share of dispatches still
369
+ resolving policy-bearing scope from prose is a fact in the evidence store.
370
+ `dispatchIntentAdoption()` in `src/domains/dispatch/intent-compatibility.ts`
371
+ computes it, reading nothing but that mode field so the aggregate is safe to
372
+ report from receipts whose prose must not be quoted.
373
+
374
+ The criterion is met when, over a window of receipts:
375
+
376
+ - at least `DISPATCH_INTENT_RETIREMENT_MIN_SAMPLE` (200) receipts carry a
377
+ resolved `pathScope`, and
378
+ - at most `DISPATCH_INTENT_RETIREMENT_MAX_LEGACY_SHARE` (2%) of them have
379
+ `mode: "legacy-inferred"`.
380
+
381
+ A window with no measured receipts reports `legacyShare: null` and is never
382
+ ready, so an empty evidence store cannot read as full adoption. The producer
383
+ rows in section 3 marked **None today** are the concrete work that has to land
384
+ before the share can fall: each is a producer that cannot currently declare, so
385
+ each one contributes to the legacy count no matter how the model behaves.
@@ -1,6 +1,6 @@
1
1
  # Clio Coder Documentation Coverage Matrix
2
2
 
3
- This matrix maps every top-level directory in `src/` and every domain directory under `src/domains/` to its authoritative documentation page. It records coverage status (`documented`, `partial`, `undocumented`), missing concepts, and key source contracts for `v0.3.7`.
3
+ This matrix maps every top-level directory in `src/` and every domain directory under `src/domains/` to its authoritative documentation page. It records coverage status (`documented`, `partial`, `undocumented`), missing concepts, and key source contracts for `v0.4.0`.
4
4
 
5
5
  ## Coverage Matrix
6
6
 
@@ -35,7 +35,7 @@ This matrix maps every top-level directory in `src/` and every domain directory
35
35
  | `src/domains/scheduling/` | Capacity lease acquisition, heartbeats, expiry, cross-process locks, cluster scheduling | [capacity-and-scheduling.md](capacity-and-scheduling.md), [fleet-dispatch.md](fleet-dispatch.md) | `documented` | Dedicated capacity leasing, heartbeat TTL, and cross-process lock reference. |
36
36
  | `src/domains/session/` | Session ledger format v4, tree branching (`/tree`), `/fork`, `/resume`, checkpoints, protected-artifact journal | [session-lifecycle.md](session-lifecycle.md), [context-working-set.md](context-working-set.md) | `documented` | Dedicated session lifecycle guide covering branching, journal, and recovery; the `contextEviction` and `contextRecall` records added at format v4 are specified in the working-set guide. |
37
37
  | `src/domains/share/` | Portable share archive bundles, manifest verification, import/export flows | [extensions-and-sharing.md](extensions-and-sharing.md) | `documented` | Share archives and portable bundle formats documented in extensions guide. |
38
- | `src/domains/webhook/` | Empty directory | None (Inert) | `inert` | Directory contains no active modules or exports in v0.3.7. |
38
+ | `src/domains/webhook/` | Empty directory | None (Inert) | `inert` | Directory contains no active modules or exports in v0.4.0. |
39
39
 
40
40
  ## Cross-Cutting Reference Guides
41
41
 
@@ -1,7 +1,7 @@
1
1
  # Documentation Standards and Codebase Alignment
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive documentation link linter, phrasing/claim evaluator, and alignment portal is located at [docs/html/documentation_blueprint.html](html/documentation_blueprint.html) (Version: 0.3.9).
4
+ > **Interactive Spec Available:** An interactive documentation link linter, phrasing/claim evaluator, and alignment portal is located at [docs/html/documentation_blueprint.html](html/documentation_blueprint.html) (Version: 0.4.0).
5
5
 
6
6
  Clio Coder is an experimental community alpha. Documentation should help contributors and early users work from the source of truth without overstating maturity. When docs drift, prefer the current source and tests over older prose or aspirational roadmap notes.
7
7
 
@@ -42,6 +42,7 @@ Durable values live in the `guardrails:` section of settings.yaml (see [configur
42
42
  | `CLIO_CODER_SKILL_CATALOG_DIR` | unset | Local skill-catalog directory override (`src/domains/resources/skills/marketplace.ts`). |
43
43
  | `CLIO_CODER_SKILL_MARKETPLACE_INDEX` | unset | Skill-marketplace index path override (`src/domains/resources/skills/marketplace.ts`). |
44
44
  | `CLIO_CODER_MODEL_CATALOG_DIRS` | unset | Extra model-catalog directories (`src/domains/providers/knowledge-base-path.ts`). |
45
+ | `CLIO_CODER_ENDPOINT_SLOTS_TTL_MS` | 86400000 | How long a persisted endpoint slot count answers for an endpoint nothing has probed in this process. A record past the bound is ignored and pruned rather than allowed to over-admit (`src/domains/providers/endpoint-slots-store.ts`). |
45
46
  | `CLIO_CODER_NO_NETWORK_TOOLS` | off | `1` strips network tools from every registry in the process; the skills-eval harness sets it for hermetic arms; `--allow-network` clears it (`src/tools/network-policy.ts`). |
46
47
  | `CLIO_CODER_SMOOTH_STREAM` | settings value | Per-process override for `terminal.smoothStreaming`: `0`/`off`/`false`, `auto`, or `1`/`on`/`true`. A valid value wins over settings; an invalid value fails safely to `off`. |
47
48
  | `CLIO_CODER_REDUCE_MOTION` | off | `1` makes smooth-streaming `auto` use the immediate coalescer. Explicit `on` remains an operator request, while stdout backpressure still pauses frame production. |
@@ -1,7 +1,7 @@
1
1
  # Clio Coder Local Evaluation Runner
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive task suite validator, subprocess execution simulator, and compare calculator is located at [docs/html/eval_blueprint.html](html/eval_blueprint.html) (Version: 0.3.9).
4
+ > **Interactive Spec Available:** An interactive task suite validator, subprocess execution simulator, and compare calculator is located at [docs/html/eval_blueprint.html](html/eval_blueprint.html) (Version: 0.4.0).
5
5
 
6
6
  The local evaluation runner executes repository-local YAML task suites as deterministic subprocess checks. It is useful for comparing harness changes, prompts, tools, or local workflows.
7
7
 
@@ -1,7 +1,7 @@
1
1
  # Internal Eval Suites
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive blueprint is available at [docs/html/evals_internal_blueprint.html](html/evals_internal_blueprint.html) (Version: 0.3.9).
4
+ > **Interactive Spec Available:** An interactive blueprint is available at [docs/html/evals_internal_blueprint.html](html/evals_internal_blueprint.html) (Version: 0.4.0).
5
5
 
6
6
  Private suites should live outside this repository. Keep datasets, prompts,
7
7
  live fleet coordinates, calibration outputs, and raw run artifacts in a private
@@ -1,9 +1,9 @@
1
1
  # Evidence Corpus and Long-Term Memory
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive memory lifecycle dashboard and simulator is located at [docs/html/memory_blueprint.html](html/memory_blueprint.html) (Version: 0.3.9). Use it to design, validate, and simulate memory proposals, approval loops, pruning rules, and token budgets.
4
+ > **Interactive Spec Available:** An interactive memory lifecycle dashboard and simulator is located at [docs/html/memory_blueprint.html](html/memory_blueprint.html) (Version: 0.4.0). Use it to design, validate, and simulate memory proposals, approval loops, pruning rules, and token budgets.
5
5
 
6
- Clio Coder treats run claims and agent lessons as structured artifacts to support reproducibility and scientific provenance. In evaluations such as [SWE-bench](https://www.swebench.com), capturing granular execution evidence is essential for validating agent claims. Evidence corpora are deterministic directories built from run ledgers, receipts, sessions, audits, and eval artifacts. In v0.3.7, forensic evidence auto-builds on dispatch run completion: when a run finalizes, the observability domain automatically compiles the evidence bundle under `<dataDir>/evidence/run-<id>/` and updates a compact sidecar index row in `<stateDir>/evidence-index.json`. Long-term memory records are local, evidence-linked, and only injected after explicit approval. Use the TUI [`/view`](observability.md) command for interactive inspection of receipts, dispatch output, durable tool output, compaction summaries, and session accountability before building or citing evidence.
6
+ Clio Coder treats run claims and agent lessons as structured artifacts to support reproducibility and scientific provenance. In evaluations such as [SWE-bench](https://www.swebench.com), capturing granular execution evidence is essential for validating agent claims. Evidence corpora are deterministic directories built from run ledgers, receipts, sessions, audits, and eval artifacts. In v0.4.0, forensic evidence auto-builds on dispatch run completion: when a run finalizes, the observability domain automatically compiles the evidence bundle under `<dataDir>/evidence/run-<id>/` and updates a compact sidecar index row in `<stateDir>/evidence-index.json`. Long-term memory records are local, evidence-linked, and only injected after explicit approval. Use the TUI [`/view`](observability.md) command for interactive inspection of receipts, dispatch output, durable tool output, compaction summaries, and session accountability before building or citing evidence.
7
7
 
8
8
  Source of truth: `src/domains/evidence/**`, `src/domains/memory/**`, `src/cli/evidence.ts`, and `src/cli/memory.ts`.
9
9
 
package/docs/evolution.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Evolution and Change Manifests
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive change manifest editor, authority risk assessor, and checklist workspace is located at [docs/html/evolution_blueprint.html](html/evolution_blueprint.html) (Version: 0.3.9).
4
+ > **Interactive Spec Available:** An interactive change manifest editor, authority risk assessor, and checklist workspace is located at [docs/html/evolution_blueprint.html](html/evolution_blueprint.html) (Version: 0.4.0).
5
5
 
6
6
  Clio Coder uses change manifests to make harness changes reviewable, falsifiable, and rollback-friendly. CLIO stands for Context Layer for Input/Output, named for the Greek muse of history. A manifest is JSON, generated or checked with `clio-coder evolve manifest`, and should describe what changed, why, what evidence supports it, what could regress, how to validate it, and how to roll it back.
7
7