@iowarp/clio-coder 0.4.0 → 0.4.2

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 (751) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/CONTRIBUTING.md +59 -36
  3. package/README.md +407 -375
  4. package/SECURITY.md +2 -1
  5. package/dist/{acp-G5WJBNCT.js → acp-TMDQZDIG.js} +14 -14
  6. package/dist/{agents-FMV2Q5G4.js → agents-5N5NG3XG.js} +45 -34
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-3IDSJEIK.js → auth-Z5CCBXKQ.js} +22 -21
  9. package/dist/{builtins-XCZWXSC7.js → builtins-K6TNDT24.js} +6 -6
  10. package/dist/{chunk-GR5G2PVF.js → chunk-2HFQNRV3.js} +15 -10
  11. package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
  12. package/dist/{chunk-HJJTYUHX.js → chunk-2NHR3NAY.js} +168 -1406
  13. package/dist/chunk-2X4RYJTJ.js +39 -0
  14. package/dist/{chunk-UXMFQ54G.js → chunk-2Z2IKEXI.js} +39 -43
  15. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  16. package/dist/chunk-34BHNEE3.js +1846 -0
  17. package/dist/{chunk-YJX4SHTD.js → chunk-35MSIRKH.js} +9 -4
  18. package/dist/chunk-3EBYEESD.js +314 -0
  19. package/dist/{chunk-CTJ4RNAA.js → chunk-3F7VUY77.js} +2 -2
  20. package/dist/chunk-3KIPBMUA.js +308 -0
  21. package/dist/chunk-3M6DQK6S.js +362 -0
  22. package/dist/{chunk-BPKCPIL7.js → chunk-462T4EGZ.js} +3 -3
  23. package/dist/{chunk-QLFS5GO2.js → chunk-4JDLP6ZS.js} +44 -37
  24. package/dist/{chunk-LDQ2ZF2M.js → chunk-4O6MANBS.js} +6 -6
  25. package/dist/{chunk-O6TL7WWY.js → chunk-54ODD65L.js} +6 -6
  26. package/dist/{chunk-JDG2WCRO.js → chunk-5KW52TEP.js} +5 -5
  27. package/dist/{chunk-NHLBIGRH.js → chunk-5PFYMY2V.js} +41 -18
  28. package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
  29. package/dist/chunk-77QIVUZB.js +1334 -0
  30. package/dist/{chunk-HWHKMHUA.js → chunk-7BHIY2MW.js} +9 -15
  31. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  32. package/dist/{chunk-VAZSBTKF.js → chunk-AZ4WMN4W.js} +2 -2
  33. package/dist/{chunk-B7OBL7PK.js → chunk-B74PXLU7.js} +21 -11
  34. package/dist/{chunk-CY6FY24N.js → chunk-B7HM5Z7T.js} +15 -15
  35. package/dist/{chunk-ULC6OTWO.js → chunk-BO7Y52RY.js} +88 -27
  36. package/dist/chunk-BTK3SSSK.js +67 -0
  37. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  38. package/dist/{chunk-DQITNCXG.js → chunk-BYMNWQ7O.js} +149 -159
  39. package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
  40. package/dist/{chunk-Z4TXYIEG.js → chunk-CRFOIAX3.js} +10 -10
  41. package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
  42. package/dist/{chunk-3BT2XMV4.js → chunk-CYZW7JHJ.js} +53 -60
  43. package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
  44. package/dist/chunk-D7E7WCDF.js +27 -0
  45. package/dist/{chunk-X3YGUTOB.js → chunk-DYHAXKHD.js} +90 -62
  46. package/dist/{chunk-QBJA7R7N.js → chunk-DZAW46HP.js} +3 -3
  47. package/dist/{chunk-MLKNTWH2.js → chunk-DZEK6CJN.js} +22 -22
  48. package/dist/{chunk-K5C3NCBD.js → chunk-E7GT7O5N.js} +5 -5
  49. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  50. package/dist/chunk-F2I26BDK.js +66 -0
  51. package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
  52. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  53. package/dist/{chunk-32KWKNSF.js → chunk-FVDGR2ZL.js} +4 -4
  54. package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
  55. package/dist/{chunk-SJ5ZKQ4S.js → chunk-HIICAHCJ.js} +2 -2
  56. package/dist/chunk-HJWWJ6IL.js +184 -0
  57. package/dist/{chunk-WZR7K7ZX.js → chunk-HKMD33FO.js} +32 -83
  58. package/dist/chunk-HLAFFSEK.js +360 -0
  59. package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
  60. package/dist/{chunk-KFZI4NIL.js → chunk-I64IFBLB.js} +152 -31
  61. package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
  62. package/dist/{chunk-BUMFYQFY.js → chunk-I66ZTYNP.js} +543 -267
  63. package/dist/{chunk-2OQE55CK.js → chunk-I7XBWTYH.js} +2 -2
  64. package/dist/{chunk-GKF55TAZ.js → chunk-IDNA72AH.js} +104 -3
  65. package/dist/{chunk-GCSMB2KY.js → chunk-IKOZFYBN.js} +1 -1
  66. package/dist/{chunk-J4W7KFM7.js → chunk-IKSLQ4XV.js} +5439 -3475
  67. package/dist/{chunk-6DB53AJS.js → chunk-IMXMHHMQ.js} +171 -30
  68. package/dist/{chunk-AB44T6BB.js → chunk-JBCS7CRR.js} +8 -7
  69. package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
  70. package/dist/{chunk-SP2RXXYO.js → chunk-JWJGP5DQ.js} +10 -10
  71. package/dist/{chunk-HZHHCK24.js → chunk-KKOJXO6R.js} +527 -325
  72. package/dist/chunk-KPXDY6QF.js +47 -0
  73. package/dist/{chunk-LQ3DZAMX.js → chunk-LJID3DYZ.js} +8 -2
  74. package/dist/{chunk-7MCTRUCE.js → chunk-M2DAX4F6.js} +2 -2
  75. package/dist/{chunk-VEO4AP2K.js → chunk-M2WXEHER.js} +4 -3
  76. package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
  77. package/dist/{chunk-YDFRH54B.js → chunk-MCMZMDAC.js} +4 -4
  78. package/dist/{chunk-J5Q24KAG.js → chunk-MNJGS2IN.js} +5 -6
  79. package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
  80. package/dist/chunk-NDDGJUXD.js +81 -0
  81. package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
  82. package/dist/chunk-NMJXSHBJ.js +283 -0
  83. package/dist/{chunk-VYMXRQI6.js → chunk-O3YUNJZ2.js} +88 -100
  84. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  85. package/dist/{chunk-Z2RR6MAK.js → chunk-P75RZCJW.js} +28 -6
  86. package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
  87. package/dist/{chunk-DYJP44XW.js → chunk-PGF63K6I.js} +2 -2
  88. package/dist/chunk-PJX3WQUQ.js +42 -0
  89. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  90. package/dist/{chunk-2JDWVJND.js → chunk-Q4XWMHX6.js} +5 -7
  91. package/dist/{chunk-W5VSYASO.js → chunk-QQLGQY2A.js} +46 -87
  92. package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
  93. package/dist/{chunk-C2LTL2W6.js → chunk-RLYRBIYQ.js} +463 -180
  94. package/dist/{chunk-4ZG3XFUR.js → chunk-S66XZJOF.js} +14 -23
  95. package/dist/{chunk-I5VEOC6I.js → chunk-SSEYRH53.js} +13 -14
  96. package/dist/chunk-SZAA6XDG.js +30 -0
  97. package/dist/{chunk-CODPRO7Q.js → chunk-TPEQIQIE.js} +7 -7
  98. package/dist/{chunk-QLL7ILRG.js → chunk-UBRFI4HS.js} +1151 -614
  99. package/dist/{chunk-O4XIVISU.js → chunk-UH347SHR.js} +227 -47
  100. package/dist/{chunk-OQBA45DZ.js → chunk-UH632ZYL.js} +2 -2
  101. package/dist/chunk-UXCU4E3T.js +303 -0
  102. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  103. package/dist/{chunk-IQ7KR472.js → chunk-VIA6RFQZ.js} +8 -13
  104. package/dist/{chunk-V5DHCITQ.js → chunk-VKPAQYEB.js} +49 -19
  105. package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
  106. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  107. package/dist/{chunk-3XML7CDN.js → chunk-W4YEMFBX.js} +3 -3
  108. package/dist/{chunk-U77AMWDL.js → chunk-W6NIE6OW.js} +44 -23
  109. package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
  110. package/dist/{chunk-QREDIESB.js → chunk-X7IARSHT.js} +15 -9
  111. package/dist/{chunk-3URVFKWK.js → chunk-XE3PCIXH.js} +5 -5
  112. package/dist/{chunk-FEFIFZTL.js → chunk-XGDPUNND.js} +2 -2
  113. package/dist/{chunk-F4CKPOEQ.js → chunk-XOXV5GKE.js} +119 -38
  114. package/dist/chunk-XQRY4DTA.js +657 -0
  115. package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
  116. package/dist/{chunk-NQQH3YT7.js → chunk-YJISEZKC.js} +3 -3
  117. package/dist/{chunk-X75E3D2N.js → chunk-ZGNYYXQ6.js} +18 -16
  118. package/dist/{chunk-LY4S7GJC.js → chunk-ZNT2M6TG.js} +20 -18
  119. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  120. package/dist/{chunk-IBEBSCYA.js → chunk-ZW4HH5JJ.js} +43 -34
  121. package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
  122. package/dist/cli/index.js +38 -37
  123. package/dist/{clio-2JXHBBY5.js → clio-7VB377CC.js} +12 -13
  124. package/dist/{code-nav-3YYRMYNF.js → code-nav-YVLCYA7V.js} +86 -18
  125. package/dist/codewiki/build-worker.js +1 -1
  126. package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
  127. package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
  128. package/dist/{config-QZPCMYSO.js → config-4HVOS65E.js} +112 -63
  129. package/dist/{configure-TEGEBYCA.js → configure-PIWO7B24.js} +25 -22
  130. package/dist/{context-E6H5RNMC.js → context-IYEHL3WQ.js} +53 -47
  131. package/dist/{context-GSXUE4CT.js → context-KQYIWPWT.js} +68 -42
  132. package/dist/{context-AV7OEZ4D.js → context-N6ZE3LGJ.js} +11 -11
  133. package/dist/{context-clear-SHIBYK6T.js → context-clear-G4OGZJDS.js} +53 -47
  134. package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-BWLF6LJP.js} +12 -11
  135. package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-2QQAITS3.js} +67 -58
  136. package/dist/{docs-23KQS3XK.js → docs-PD3EXDKU.js} +20 -25
  137. package/dist/doctor-LHBD36VU.js +773 -0
  138. package/dist/{eval-TFBYQH4H.js → eval-C45FYRJ6.js} +68 -49
  139. package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-6DEJPLBF.js} +7 -8
  140. package/dist/{evidence-ERGESKGN.js → evidence-6SHONYAF.js} +50 -44
  141. package/dist/{evolve-VDXTSYCJ.js → evolve-KRKMV72X.js} +49 -43
  142. package/dist/{extensions-7BGBHN57.js → extensions-KPZ2UHBB.js} +8 -6
  143. package/dist/{fleet-2RRVDF2V.js → fleet-IVTCKDHT.js} +93 -79
  144. package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EDWL3IT7.js} +10 -9
  145. package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-YP3YEFGK.js} +6 -6
  146. package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-ZFWKHY2M.js} +19 -15
  147. package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-FVUNCBML.js} +50 -45
  148. package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-UN5XED4R.js} +5 -9
  149. package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-XOWC4HSX.js} +22 -17
  150. package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-UN3SODEL.js} +48 -43
  151. package/dist/fleet-view-TWHJKCN6.js +96 -0
  152. package/dist/{init-DN2WWLFE.js → init-T2QORQ3Y.js} +72 -66
  153. package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
  154. package/dist/{interop-OZBKXAYL.js → interop-IN5I2A66.js} +13 -11
  155. package/dist/{library-YWZG7IMW.js → library-LSCATDLZ.js} +23 -18
  156. package/dist/{memory-I4C4HMLW.js → memory-HYOKAGGJ.js} +51 -45
  157. package/dist/{models-CEYXJBO6.js → models-2GPMFYCM.js} +42 -33
  158. package/dist/{monitor-NZ6GCI3P.js → monitor-E4ASVUJH.js} +56 -50
  159. package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-DDMPR3PY.js} +2676 -1507
  160. package/dist/{panes-KY6W3V2E.js → panes-E3RUXOW5.js} +5 -5
  161. package/dist/panes-IXKLOKA2.js +75 -0
  162. package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
  163. package/dist/{reset-DQ6FGCSH.js → reset-OAQP3W4O.js} +7 -8
  164. package/dist/{resources-BB3MVJMD.js → resources-OTRSN34L.js} +23 -17
  165. package/dist/{run-H2GQDUER.js → run-5DEYH5QK.js} +95 -84
  166. package/dist/{share-GTJN6A5O.js → share-IHWTLO3M.js} +26 -19
  167. package/dist/{skills-L55TEW6R.js → skills-IYMXMKW4.js} +25 -20
  168. package/dist/{skills-eval-XVXPH2JI.js → skills-eval-DROHSJAR.js} +63 -65
  169. package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-D7X4L4ZX.js} +21 -16
  170. package/dist/{slash-commands-ZSGASKJC.js → slash-commands-QBM7UZ3B.js} +38 -33
  171. package/dist/{steer-RZGSCY4R.js → steer-Z5DO23FJ.js} +3 -3
  172. package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
  173. package/dist/{targets-NCPZ644J.js → targets-P2FUC4IL.js} +64 -61
  174. package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-YREJ3JX2.js} +15 -10
  175. package/dist/{tools-DAF3DI3C.js → tools-5B7RO6MV.js} +10 -8
  176. package/dist/{trace-FYVW2MQA.js → trace-YMGMUM6A.js} +101 -8
  177. package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
  178. package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
  179. package/dist/{upgrade-3XPP6OQL.js → upgrade-PXK3S2YM.js} +36 -61
  180. package/dist/{usage-3NLHGTU2.js → usage-ME5MPXGX.js} +58 -53
  181. package/dist/{verifiers-SSQONKRT.js → verifiers-BVZ7IWOO.js} +10 -9
  182. package/dist/{verify-3U6J7FZI.js → verify-5K7ZKQFC.js} +9 -8
  183. package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPARV2K7.js} +2 -3
  184. package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-F5W5QTYY.js} +74 -70
  185. package/dist/{with-panes-MKB46MPQ.js → with-panes-BYOJCLAM.js} +78 -246
  186. package/dist/worker/entry.js +83 -63
  187. package/docs/README.md +176 -81
  188. package/docs/{acp.md → architecture/acp.md} +36 -20
  189. package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
  190. package/docs/{architecture.md → architecture/architecture.md} +43 -22
  191. package/docs/{artifact-placement.md → architecture/artifact-placement.md} +26 -23
  192. package/docs/architecture/artifact-versions.md +90 -0
  193. package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
  194. package/docs/{context-engine.md → architecture/context-engine.md} +25 -25
  195. package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
  196. package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
  197. package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
  198. package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
  199. package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
  200. package/docs/{model-catalog.md → architecture/model-catalog.md} +40 -17
  201. package/docs/{observability.md → architecture/observability.md} +26 -13
  202. package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
  203. package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +55 -20
  204. package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +35 -24
  205. package/docs/{safety-model.md → architecture/safety-model.md} +20 -15
  206. package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
  207. package/docs/architecture/time-conventions.md +125 -0
  208. package/docs/{trace-store.md → architecture/trace-store.md} +26 -13
  209. package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
  210. package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
  211. package/docs/{built-in-agents.md → guide/built-in-agents.md} +70 -46
  212. package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +73 -62
  213. package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -444
  214. package/docs/guide/configuration-reference.md +1158 -0
  215. package/docs/{environment-variables.md → guide/environment-variables.md} +31 -27
  216. package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +8 -3
  217. package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
  218. package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +47 -49
  219. package/docs/{glossary.md → guide/glossary.md} +14 -11
  220. package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +45 -14
  221. package/docs/guide/panes-and-files.md +290 -0
  222. package/docs/{proactive-memory.md → guide/proactive-memory.md} +79 -66
  223. package/docs/{resource-library.md → guide/resource-library.md} +13 -4
  224. package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +7 -3
  225. package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
  226. package/docs/{troubleshooting.md → guide/troubleshooting.md} +10 -5
  227. package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +13 -10
  228. package/docs/history/release-cut-checklist.md +207 -0
  229. package/docs/{development-pipeline.md → process/development-pipeline.md} +24 -26
  230. package/docs/process/documentation-coverage.md +100 -0
  231. package/docs/process/documentation-guide.md +187 -0
  232. package/docs/{eval-runner.md → process/eval-runner.md} +41 -50
  233. package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
  234. package/docs/{evolution.md → process/evolution.md} +2 -2
  235. package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +17 -10
  236. package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
  237. package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
  238. package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
  239. package/evals/README.md +5 -0
  240. package/evals/behavioral-corpus-grader.mjs +103 -0
  241. package/evals/behavioral-machinery-baseline.json +2276 -0
  242. package/evals/behavioral-machinery-driver.ts +250 -0
  243. package/evals/behavioral-machinery-support.ts +253 -0
  244. package/evals/behavioral-machinery.yaml +614 -0
  245. package/evals/behavioral-model-negative-control.yaml +68 -0
  246. package/evals/behavioral-model.yaml +216 -0
  247. package/evals/fixtures/behavioral-facts.txt +3 -0
  248. package/evals/fixtures/behavioral-main.ts +7 -0
  249. package/evals/fixtures/decoy/note.txt +2 -0
  250. package/evals/fixtures/private/credentials.txt +1 -0
  251. package/evals/tracked-metrics-baseline.yaml +229 -0
  252. package/evals/tracked-metrics-grader.mjs +129 -0
  253. package/package.json +13 -21
  254. package/skills/README.md +51 -42
  255. package/skills/coding/ast-grep/SKILL.md +9 -3
  256. package/skills/coding/coding-standards/SKILL.md +9 -3
  257. package/skills/coding/prototype/SKILL.md +9 -3
  258. package/skills/coding/tdd/SKILL.md +9 -3
  259. package/skills/context/context-handoff/SKILL.md +13 -4
  260. package/skills/context/context-handoff/evals.md +3 -3
  261. package/skills/context/context-prime/SKILL.md +9 -3
  262. package/skills/context/context-prime/evals.md +2 -2
  263. package/skills/git/file-ticket/SKILL.md +10 -5
  264. package/skills/git/file-ticket/evals.md +2 -2
  265. package/skills/git/fix-issue/SKILL.md +12 -5
  266. package/skills/git/fix-issue/evals.md +4 -4
  267. package/skills/git/resolve-merge-conflicts/SKILL.md +9 -3
  268. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  269. package/skills/git/ship/SKILL.md +10 -4
  270. package/skills/git/ship/evals.md +4 -4
  271. package/skills/git/worktree-create/SKILL.md +8 -3
  272. package/skills/git/worktree-create/evals.md +6 -6
  273. package/skills/git/worktree-merge/SKILL.md +8 -3
  274. package/skills/git/worktree-merge/evals.md +6 -6
  275. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +22 -12
  276. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +5 -4
  277. package/skills/meta/clio-coder-test/SKILL.md +146 -0
  278. package/skills/meta/{clio-test → clio-coder-test}/evals.md +10 -5
  279. package/skills/meta/clio-coder-test/references/harness.md +102 -0
  280. package/skills/meta/clio-coder-test/references/test-map.md +96 -0
  281. package/skills/meta/credentials/SKILL.md +10 -3
  282. package/skills/meta/find-skills/SKILL.md +9 -3
  283. package/skills/meta/herdr/SKILL.md +9 -3
  284. package/skills/meta/skill-craft/SKILL.md +39 -16
  285. package/skills/planning/architecture/SKILL.md +9 -3
  286. package/skills/planning/backlog/SKILL.md +9 -3
  287. package/skills/planning/prd/SKILL.md +9 -3
  288. package/skills/planning/product-intent/SKILL.md +9 -3
  289. package/skills/planning/tech-spec/SKILL.md +9 -3
  290. package/skills/registry.yaml +66 -66
  291. package/skills/research/arxiv-literature/SKILL.md +9 -3
  292. package/skills/research/experiment-protocol/SKILL.md +10 -3
  293. package/skills/research/scientific-debugging/SKILL.md +10 -3
  294. package/skills/research/scientific-debugging/evals.md +2 -2
  295. package/skills/research/scientific-modernization/SKILL.md +10 -3
  296. package/skills/skill-marketplace.json +285 -66
  297. package/skills/workflow/cut-it/SKILL.md +11 -3
  298. package/skills/workflow/design-council/SKILL.md +12 -3
  299. package/skills/workflow/grill-me/SKILL.md +9 -3
  300. package/skills/workflow/workflow-distiller/SKILL.md +9 -3
  301. package/src/cli/acp.ts +2 -2
  302. package/src/cli/args.ts +2 -2
  303. package/src/cli/auth.ts +2 -2
  304. package/src/cli/bootstrap-generate.ts +6 -6
  305. package/src/cli/clio.ts +6 -1
  306. package/src/cli/config-inspect.ts +68 -15
  307. package/src/cli/configure-interop.ts +1 -1
  308. package/src/cli/configure.ts +27 -31
  309. package/src/cli/default-target.ts +1 -1
  310. package/src/cli/docs.ts +28 -20
  311. package/src/cli/doctor-naming.ts +323 -0
  312. package/src/cli/doctor-panes.ts +46 -14
  313. package/src/cli/doctor-toolchain.ts +31 -10
  314. package/src/cli/doctor.ts +15 -1
  315. package/src/cli/eval-inventory.ts +8 -8
  316. package/src/cli/eval.ts +1 -2
  317. package/src/cli/evidence-detail.ts +1 -1
  318. package/src/cli/evidence-inventory.ts +1 -1
  319. package/src/cli/extensions.ts +2 -1
  320. package/src/cli/fleet-decisions.ts +1 -1
  321. package/src/cli/fleet-inspect.ts +1 -1
  322. package/src/cli/fleet-preflight.ts +1 -1
  323. package/src/cli/fleet-verify.ts +1 -1
  324. package/src/cli/fleet-view.ts +40 -23
  325. package/src/cli/fleet.ts +9 -6
  326. package/src/cli/index.ts +2 -1
  327. package/src/cli/internal-dispatch.ts +3 -4
  328. package/src/cli/interop-inspect.ts +2 -2
  329. package/src/cli/models.ts +3 -3
  330. package/src/cli/modes/print.ts +1 -1
  331. package/src/cli/panes.ts +19 -5
  332. package/src/cli/reset.ts +1 -1
  333. package/src/cli/run.ts +13 -17
  334. package/src/cli/share.ts +6 -2
  335. package/src/cli/skills-eval.ts +14 -14
  336. package/src/cli/targets.ts +25 -30
  337. package/src/cli/trace-inspect.ts +1 -1
  338. package/src/cli/trace.ts +96 -4
  339. package/src/cli/uninstall.ts +2 -2
  340. package/src/cli/upgrade.ts +29 -34
  341. package/src/cli/usage.ts +2 -2
  342. package/src/cli/validate-model.ts +1 -1
  343. package/src/cli/verifiers-inspect.ts +1 -1
  344. package/src/cli/wiki-generate.ts +6 -6
  345. package/src/core/artifact-paths.ts +1 -1
  346. package/src/core/bash-exec.ts +132 -87
  347. package/src/core/boot-trace.ts +3 -3
  348. package/src/core/bus-events.ts +51 -6
  349. package/src/core/bus-trace.ts +2 -2
  350. package/src/core/compile-cache.ts +1 -1
  351. package/src/core/config.ts +1066 -886
  352. package/src/core/defaults.ts +326 -530
  353. package/src/core/dispatch-outcome.ts +16 -0
  354. package/src/core/domain-loader.ts +6 -4
  355. package/src/core/event-bus.ts +1 -1
  356. package/src/core/file-references.ts +78 -88
  357. package/src/core/git-commit-attribution.ts +3 -9
  358. package/src/core/guardrails.ts +33 -52
  359. package/src/core/naming-compat.ts +45 -0
  360. package/src/core/naming-events.ts +62 -0
  361. package/src/core/prompt-hint.ts +9 -0
  362. package/src/core/recent-models.ts +1 -7
  363. package/src/core/residency-protection.ts +4 -8
  364. package/src/core/resolve-config-value.ts +1 -1
  365. package/src/core/response-model-id.ts +0 -14
  366. package/src/core/session-routing.ts +84 -74
  367. package/src/core/skill-activation.ts +18 -0
  368. package/src/core/termination.ts +4 -4
  369. package/src/core/timers.ts +2 -12
  370. package/src/domains/agents/builtins/architect.md +2 -3
  371. package/src/domains/agents/builtins/coder.md +3 -2
  372. package/src/domains/agents/builtins/debugger.md +2 -2
  373. package/src/domains/agents/builtins/documenter.md +2 -2
  374. package/src/domains/agents/builtins/git-master.md +1 -1
  375. package/src/domains/agents/builtins/oracle.md +1 -1
  376. package/src/domains/agents/builtins/provenance.md +1 -1
  377. package/src/domains/agents/builtins/researcher.md +1 -1
  378. package/src/domains/agents/builtins/scout.md +1 -1
  379. package/src/domains/agents/builtins/tester.md +2 -2
  380. package/src/domains/agents/builtins/verifier.md +2 -2
  381. package/src/domains/agents/builtins/wiki-writer.md +1 -1
  382. package/src/domains/agents/catalog.ts +14 -26
  383. package/src/domains/agents/contract.ts +2 -0
  384. package/src/domains/agents/extension.ts +26 -4
  385. package/src/domains/agents/registry.ts +7 -7
  386. package/src/domains/agents/result-contract.ts +1 -1
  387. package/src/domains/agents/spec.ts +0 -11
  388. package/src/domains/config/classify.ts +35 -47
  389. package/src/domains/config/extension.ts +5 -5
  390. package/src/domains/config/keybindings.ts +56 -47
  391. package/src/domains/config/watcher.ts +1 -1
  392. package/src/domains/context/codewiki/indexer.ts +1 -1
  393. package/src/domains/context/extension.ts +3 -6
  394. package/src/domains/context/prompt-context.ts +1 -1
  395. package/src/domains/context/wiki/assemble.ts +2 -2
  396. package/src/domains/context/working-set/path-index.ts +1 -0
  397. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  398. package/src/domains/context/working-set/replay/report.ts +1 -1
  399. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  400. package/src/domains/dispatch/active-route-planner.ts +2 -2
  401. package/src/domains/dispatch/agent-candidates.ts +1 -1
  402. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  403. package/src/domains/dispatch/agent-ledger.ts +1 -1
  404. package/src/domains/dispatch/assignment.ts +5 -5
  405. package/src/domains/dispatch/capability-match.ts +10 -0
  406. package/src/domains/dispatch/capacity-lease.ts +2 -5
  407. package/src/domains/dispatch/code-step.ts +1 -1
  408. package/src/domains/dispatch/contract.ts +2 -2
  409. package/src/domains/dispatch/extension.ts +169 -82
  410. package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
  411. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  412. package/src/domains/dispatch/fleet-run.ts +0 -7
  413. package/src/domains/dispatch/gate-decisions.ts +25 -14
  414. package/src/domains/dispatch/host-verification.ts +435 -39
  415. package/src/domains/dispatch/intent-requirements.ts +10 -0
  416. package/src/domains/dispatch/intent.ts +18 -1
  417. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  418. package/src/domains/dispatch/path-scope.ts +220 -70
  419. package/src/domains/dispatch/placement.ts +2 -2
  420. package/src/domains/dispatch/receipt-findings.ts +1 -1
  421. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  422. package/src/domains/dispatch/reservation-store.ts +0 -23
  423. package/src/domains/dispatch/route-decision.ts +1 -1
  424. package/src/domains/dispatch/route-history.ts +1 -1
  425. package/src/domains/dispatch/route-policy.ts +1 -1
  426. package/src/domains/dispatch/route-readiness.ts +0 -28
  427. package/src/domains/dispatch/run-event-journal.ts +9 -19
  428. package/src/domains/dispatch/state.ts +2 -3
  429. package/src/domains/dispatch/tool-stats.ts +1 -1
  430. package/src/domains/dispatch/transport.ts +47 -40
  431. package/src/domains/dispatch/types.ts +58 -6
  432. package/src/domains/dispatch/worker-protocol.ts +2 -2
  433. package/src/domains/eval/artifacts/store.ts +10 -4
  434. package/src/domains/eval/compare/thresholds.ts +0 -8
  435. package/src/domains/eval/execution-provenance.ts +1 -1
  436. package/src/domains/eval/metrics/token-stream.ts +0 -7
  437. package/src/domains/eval/report.ts +1 -1
  438. package/src/domains/eval/runner.ts +1 -1
  439. package/src/domains/eval/runners/clio-run.ts +7 -6
  440. package/src/domains/eval/runners/external-command.ts +4 -3
  441. package/src/domains/eval/schema/artifact.ts +1 -1
  442. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  443. package/src/domains/eval/schema/behavioral.ts +7 -6
  444. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  445. package/src/domains/eval/schema/naming.ts +10 -0
  446. package/src/domains/eval/schema/suite.ts +2 -2
  447. package/src/domains/eval/schema/validate.ts +9 -5
  448. package/src/domains/eval/schema/verdict.ts +4 -2
  449. package/src/domains/eval/store.ts +20 -3
  450. package/src/domains/eval/suites/run.ts +12 -6
  451. package/src/domains/eval/types.ts +1 -1
  452. package/src/domains/eval/workspaces/git.ts +1 -1
  453. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  454. package/src/domains/evidence/build.ts +13 -5
  455. package/src/domains/evidence/trust-status.ts +10 -1
  456. package/src/domains/extensions/contract.ts +15 -1
  457. package/src/domains/extensions/discovery.ts +238 -41
  458. package/src/domains/extensions/extension.ts +105 -6
  459. package/src/domains/extensions/index.ts +24 -0
  460. package/src/domains/extensions/integrity.ts +189 -0
  461. package/src/domains/extensions/manager.ts +17 -1
  462. package/src/domains/extensions/resource-path.ts +27 -0
  463. package/src/domains/extensions/resources.ts +18 -38
  464. package/src/domains/extensions/snapshot-store.ts +39 -0
  465. package/src/domains/extensions/snapshot.ts +180 -0
  466. package/src/domains/extensions/state.ts +385 -57
  467. package/src/domains/extensions/types.ts +118 -1
  468. package/src/domains/interop/consent.ts +7 -7
  469. package/src/domains/interop/extension.ts +1 -1
  470. package/src/domains/lifecycle/doctor.ts +27 -21
  471. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  472. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
  473. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  474. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  475. package/src/domains/lifecycle/migrations/index.ts +22 -1
  476. package/src/domains/lifecycle/naming-history.ts +153 -0
  477. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  478. package/src/domains/lifecycle/naming-resources.ts +276 -0
  479. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  480. package/src/domains/lifecycle/naming-yazi.ts +86 -0
  481. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  482. package/src/domains/memory/task-memory-handoff.ts +6 -3
  483. package/src/domains/middleware/contract.ts +26 -0
  484. package/src/domains/middleware/extension.ts +24 -24
  485. package/src/domains/middleware/hook-receipts.ts +27 -4
  486. package/src/domains/middleware/hooks-io.ts +65 -32
  487. package/src/domains/middleware/hooks.ts +64 -0
  488. package/src/domains/middleware/index.ts +35 -4
  489. package/src/domains/middleware/marketplace-offer.ts +339 -0
  490. package/src/domains/middleware/registrations.ts +326 -0
  491. package/src/domains/middleware/runtime.ts +30 -2
  492. package/src/domains/middleware/snapshot.ts +20 -7
  493. package/src/domains/mux/contract.ts +195 -25
  494. package/src/domains/mux/detect.ts +23 -6
  495. package/src/domains/mux/dock-controller.ts +365 -0
  496. package/src/domains/mux/extension.ts +7 -1
  497. package/src/domains/mux/index.ts +21 -1
  498. package/src/domains/mux/operations.ts +72 -5
  499. package/src/domains/mux/protocol.ts +19 -6
  500. package/src/domains/mux/socket-client.ts +167 -19
  501. package/src/domains/mux/types.ts +49 -6
  502. package/src/domains/mux/yazi/assets/yazi.toml +2 -2
  503. package/src/domains/mux/yazi/event-stream.ts +6 -4
  504. package/src/domains/mux/yazi/profile.ts +1 -1
  505. package/src/domains/mux/yazi/session.ts +79 -7
  506. package/src/domains/mux/yazi/theme.ts +117 -17
  507. package/src/domains/observability/contract.ts +10 -11
  508. package/src/domains/observability/extension.ts +12 -4
  509. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  510. package/src/domains/observability/projection.ts +15 -91
  511. package/src/domains/observability/trace-store.ts +65 -19
  512. package/src/domains/prompts/compiler.ts +75 -55
  513. package/src/domains/prompts/contract.ts +15 -3
  514. package/src/domains/prompts/extension.ts +100 -12
  515. package/src/domains/prompts/fragments/identity/clio-worker.md +2 -4
  516. package/src/domains/prompts/fragments/identity/clio.md +6 -12
  517. package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
  518. package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
  519. package/src/domains/prompts/fragments/operating/contract.md +7 -15
  520. package/src/domains/prompts/fragments/operating/delegation.md +32 -34
  521. package/src/domains/prompts/fragments/operating/skills.md +11 -18
  522. package/src/domains/prompts/fragments/operating/worker.md +1 -8
  523. package/src/domains/providers/extension.ts +5 -5
  524. package/src/domains/providers/index.ts +1 -1
  525. package/src/domains/providers/knowledge-base-path.ts +1 -1
  526. package/src/domains/providers/model-runtime-capabilities.ts +99 -23
  527. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  528. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +671 -106
  529. package/src/domains/providers/plugins.ts +1 -1
  530. package/src/domains/providers/resolver.ts +1 -1
  531. package/src/domains/providers/runtime-resolution.ts +31 -0
  532. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  533. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  534. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  535. package/src/domains/providers/runtimes/common/probe-helpers.ts +9 -4
  536. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  537. package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
  538. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  539. package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
  540. package/src/domains/providers/types/cost-provenance.ts +19 -0
  541. package/src/domains/providers/types/knowledge-base.ts +13 -0
  542. package/src/domains/providers/types/local-model-quirks.ts +87 -39
  543. package/src/domains/providers/types/target-descriptor.ts +3 -3
  544. package/src/domains/resources/extension.ts +1 -1
  545. package/src/domains/resources/library.ts +6 -6
  546. package/src/domains/resources/prompts/loader.ts +1 -1
  547. package/src/domains/resources/skills/content-hash.ts +7 -6
  548. package/src/domains/resources/skills/evals.ts +1 -1
  549. package/src/domains/resources/skills/install.ts +36 -12
  550. package/src/domains/resources/skills/loader.ts +41 -18
  551. package/src/domains/resources/skills/marketplace.ts +21 -2
  552. package/src/domains/resources/skills/promotion.ts +214 -0
  553. package/src/domains/safety/audit.ts +2 -2
  554. package/src/domains/safety/call-target.ts +1 -1
  555. package/src/domains/safety/finish-contract.ts +2 -1
  556. package/src/domains/safety/loop-detector.ts +7 -4
  557. package/src/domains/safety/run-effects.ts +1 -1
  558. package/src/domains/scheduling/extension.ts +4 -4
  559. package/src/domains/session/archive-readers.ts +9 -1
  560. package/src/domains/session/compaction/branch-summary.ts +4 -0
  561. package/src/domains/session/compaction/compact.ts +1 -1
  562. package/src/domains/session/compaction/tokens.ts +4 -0
  563. package/src/domains/session/context-accounting.ts +1 -1
  564. package/src/domains/session/decision-board.ts +1 -1
  565. package/src/domains/session/extension.ts +1 -1
  566. package/src/domains/session/handoff.ts +2 -2
  567. package/src/domains/session/prompt-manifest.ts +0 -5
  568. package/src/domains/session/protected-artifact-journal.ts +12 -6
  569. package/src/domains/session/retry.ts +1 -1
  570. package/src/domains/session/task-board.ts +10 -9
  571. package/src/domains/share/archive.ts +249 -43
  572. package/src/domains/toolchain/install.ts +1 -1
  573. package/src/engine/acp/adapter.ts +3 -3
  574. package/src/engine/acp/event-mapper.ts +3 -3
  575. package/src/engine/acp/server.ts +89 -35
  576. package/src/engine/acp/tool-mediator.ts +2 -2
  577. package/src/engine/acp/types.ts +1 -1
  578. package/src/engine/alcf-oauth.ts +5 -5
  579. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  580. package/src/engine/api-registry.ts +1 -1
  581. package/src/engine/apis/llamacpp-residency.ts +4 -23
  582. package/src/engine/apis/lmstudio.ts +4 -9
  583. package/src/engine/apis/ollama-native.ts +9 -9
  584. package/src/engine/apis/openai-completions.ts +30 -27
  585. package/src/engine/apis/output-budget.ts +8 -18
  586. package/src/engine/apis/residency.ts +10 -35
  587. package/src/engine/claude/sdk-module.ts +1 -12
  588. package/src/engine/claude/sdk-runtime.ts +6 -6
  589. package/src/engine/claude/subprocess-runtime.ts +1 -1
  590. package/src/engine/claude/tool-safety.ts +4 -4
  591. package/src/engine/gemma-channel-filter.ts +19 -0
  592. package/src/engine/loop-guard.ts +92 -17
  593. package/src/engine/session.ts +14 -7
  594. package/src/engine/tui-primitives.ts +1 -1
  595. package/src/engine/worker-events.ts +6 -6
  596. package/src/engine/worker-runtime.ts +54 -24
  597. package/src/engine/worker-tools.ts +3 -1
  598. package/src/entry/extension-hook-sources.ts +28 -0
  599. package/src/entry/extension-reload.ts +309 -0
  600. package/src/entry/orchestrator.ts +163 -120
  601. package/src/interactive/application-controller.ts +23 -22
  602. package/src/interactive/bus-notices.ts +10 -3
  603. package/src/interactive/chat-loop-messages.ts +3 -13
  604. package/src/interactive/chat-loop.ts +18 -9
  605. package/src/interactive/chat-panel.ts +37 -14
  606. package/src/interactive/chat-renderer.ts +71 -7
  607. package/src/interactive/clio-editor.ts +105 -1
  608. package/src/interactive/context-activity.ts +8 -6
  609. package/src/interactive/context-meter.ts +3 -6
  610. package/src/interactive/context-overlay.ts +1 -1
  611. package/src/interactive/cost-overlay.ts +1 -1
  612. package/src/interactive/council-grid.ts +2 -2
  613. package/src/interactive/dispatch-board.ts +36 -44
  614. package/src/interactive/editor-bash.ts +21 -0
  615. package/src/interactive/editor-steer.ts +9 -4
  616. package/src/interactive/editor-submit.ts +24 -18
  617. package/src/interactive/external-editor.ts +1 -1
  618. package/src/interactive/file-reference-completion.ts +360 -0
  619. package/src/interactive/footer/dashboard.ts +15 -17
  620. package/src/interactive/footer/notifications.ts +14 -8
  621. package/src/interactive/footer/widgets.ts +15 -44
  622. package/src/interactive/interactive-application.ts +116 -61
  623. package/src/interactive/interactive-event-projection.ts +1 -1
  624. package/src/interactive/interactive-input-runtime.ts +6 -2
  625. package/src/interactive/interactive-presentation.ts +22 -17
  626. package/src/interactive/interactive-shell.ts +2 -2
  627. package/src/interactive/interactive-slash-runtime.ts +65 -17
  628. package/src/interactive/interactive-subscriptions.ts +1 -1
  629. package/src/interactive/interactive-tickers.ts +1 -1
  630. package/src/interactive/keybinding-manager.ts +4 -4
  631. package/src/interactive/layout.ts +1 -1
  632. package/src/interactive/memory-overlay.ts +2 -2
  633. package/src/interactive/modal-marker.ts +2 -21
  634. package/src/interactive/mutation-preview.ts +1 -1
  635. package/src/interactive/overlay-frame.ts +4 -12
  636. package/src/interactive/overlay-general-openers.ts +6 -2
  637. package/src/interactive/overlay-key-routing.ts +7 -7
  638. package/src/interactive/overlay-lifecycle.ts +1 -1
  639. package/src/interactive/overlay-model-selectors.ts +3 -3
  640. package/src/interactive/overlays/agents.ts +2 -2
  641. package/src/interactive/overlays/ask-user.ts +25 -11
  642. package/src/interactive/overlays/context-reset.ts +28 -4
  643. package/src/interactive/overlays/cwd-fallback.ts +28 -4
  644. package/src/interactive/overlays/decisions.ts +4 -2
  645. package/src/interactive/overlays/extensions.ts +9 -1
  646. package/src/interactive/overlays/fleet-run-approval.ts +3 -3
  647. package/src/interactive/overlays/handoff-review.ts +2 -2
  648. package/src/interactive/overlays/help-reference.ts +13 -0
  649. package/src/interactive/overlays/interop.ts +1 -1
  650. package/src/interactive/overlays/library-install-confirm.ts +1 -1
  651. package/src/interactive/overlays/message-picker.ts +1 -1
  652. package/src/interactive/overlays/model-selector.ts +39 -31
  653. package/src/interactive/overlays/prompts.ts +10 -4
  654. package/src/interactive/overlays/session-selector.ts +2 -2
  655. package/src/interactive/overlays/settings.ts +360 -303
  656. package/src/interactive/overlays/side-question.ts +2 -2
  657. package/src/interactive/overlays/skills-hub.ts +8 -8
  658. package/src/interactive/overlays/tree-selector.ts +2 -2
  659. package/src/interactive/panes-runtime.ts +145 -43
  660. package/src/interactive/permission-overlay.ts +2 -2
  661. package/src/interactive/prompt-cache-identity.ts +88 -0
  662. package/src/interactive/renderers/retry-status.ts +12 -4
  663. package/src/interactive/renderers/tool-execution.ts +4 -4
  664. package/src/interactive/session-transcript.ts +3 -3
  665. package/src/interactive/slash-autocomplete.ts +454 -165
  666. package/src/interactive/slash-commands.ts +401 -190
  667. package/src/interactive/slash-spec.ts +160 -17
  668. package/src/interactive/status/controller.ts +2 -2
  669. package/src/interactive/stream-pacing-policy.ts +1 -24
  670. package/src/interactive/tasks-overlay.ts +20 -13
  671. package/src/interactive/terminal-lease.ts +6 -7
  672. package/src/interactive/turn-context.ts +41 -26
  673. package/src/interactive/turn-persistence.ts +2 -2
  674. package/src/interactive/turn-prewarm.ts +2 -2
  675. package/src/interactive/turn-runtime.ts +8 -8
  676. package/src/interactive/turn-state.ts +1 -1
  677. package/src/interactive/view/artifacts.ts +12 -9
  678. package/src/interactive/view/view-overlay.ts +13 -10
  679. package/src/interactive/watch-pane.ts +38 -10
  680. package/src/interactive/welcome-dashboard.ts +15 -15
  681. package/src/interactive/worker-progress.ts +4 -4
  682. package/src/interactive/worker-receipts.ts +1 -1
  683. package/src/interactive/worker-stream.ts +1 -4
  684. package/src/interactive/yazi-bridge.ts +72 -11
  685. package/src/tools/agent-tools.ts +30 -1
  686. package/src/tools/artifact.ts +2 -2
  687. package/src/tools/ask-user.ts +6 -6
  688. package/src/tools/bash.ts +2 -2
  689. package/src/tools/bootstrap.ts +4 -0
  690. package/src/tools/builtin-tool-catalog.ts +52 -22
  691. package/src/tools/codewiki/code-nav-surface.ts +6 -0
  692. package/src/tools/codewiki/code-nav.ts +99 -13
  693. package/src/tools/compete-worktrees.ts +27 -17
  694. package/src/tools/context/docs-engine.ts +20 -7
  695. package/src/tools/context/index.ts +44 -13
  696. package/src/tools/core-bootstrap.ts +28 -6
  697. package/src/tools/credential-present.ts +1 -2
  698. package/src/tools/dispatch-admission.ts +4 -2
  699. package/src/tools/dispatch-arguments.ts +6 -2
  700. package/src/tools/dispatch-plan.ts +48 -15
  701. package/src/tools/dispatch-run-events.ts +13 -11
  702. package/src/tools/dispatch-runner.ts +11 -6
  703. package/src/tools/dispatch-schema.ts +338 -0
  704. package/src/tools/dispatch-types.ts +3 -0
  705. package/src/tools/dispatch.ts +9 -254
  706. package/src/tools/find.ts +1 -6
  707. package/src/tools/ledger.ts +3 -5
  708. package/src/tools/monitor-surface.ts +5 -13
  709. package/src/tools/monitor.ts +4 -4
  710. package/src/tools/observation.ts +4 -5
  711. package/src/tools/observers.ts +0 -33
  712. package/src/tools/panes-surface.ts +4 -11
  713. package/src/tools/panes.ts +4 -2
  714. package/src/tools/policy.ts +15 -2
  715. package/src/tools/read.ts +5 -6
  716. package/src/tools/registry.ts +30 -7
  717. package/src/tools/result-shaping.ts +18 -14
  718. package/src/tools/steer-surface.ts +1 -1
  719. package/src/tools/task-worktree.ts +28 -7
  720. package/src/tools/tasks.ts +1 -1
  721. package/src/tools/truncate.ts +6 -5
  722. package/src/tools/verify/authoring.ts +3 -6
  723. package/src/tools/verify/frontend.ts +1 -1
  724. package/src/tools/verify/surface.ts +6 -12
  725. package/src/tools/web-fetch-surface.ts +1 -3
  726. package/src/tools/web-fetch.ts +1 -1
  727. package/src/worker/entry.ts +4 -3
  728. package/src/worker/protocol.ts +16 -14
  729. package/src/worker/spec-contract.ts +2 -2
  730. package/src/worker/stdin-demux.ts +2 -2
  731. package/dist/chunk-36EJLSQQ.js +0 -814
  732. package/dist/chunk-GXNLGKAB.js +0 -571
  733. package/dist/chunk-K7VKOLQQ.js +0 -15
  734. package/dist/chunk-PMZCIOCJ.js +0 -25
  735. package/dist/chunk-SUCTJL45.js +0 -45
  736. package/dist/chunk-SUW5DORT.js +0 -819
  737. package/dist/chunk-TZ3SGWZZ.js +0 -48
  738. package/dist/chunk-UOV2BYIW.js +0 -107
  739. package/dist/chunk-VFA6GDY5.js +0 -1625
  740. package/dist/doctor-QOA5FNY5.js +0 -313
  741. package/dist/fleet-view-ZCON35AG.js +0 -102
  742. package/dist/panes-HMABYVO4.js +0 -58
  743. package/docs/artifact-versions.md +0 -67
  744. package/docs/documentation-coverage.md +0 -46
  745. package/docs/documentation-guide.md +0 -167
  746. package/docs/release-cut-checklist.md +0 -193
  747. package/docs/time-conventions.md +0 -101
  748. package/skills/meta/clio-test/SKILL.md +0 -133
  749. package/skills/meta/clio-test/references/harness.md +0 -126
  750. package/skills/meta/clio-test/references/test-map.md +0 -69
  751. package/src/engine/apis/degraded-inference.ts +0 -95
@@ -77,6 +77,7 @@ import type { PromptsContract } from "../prompts/contract.js";
77
77
  import { type EffectivePricing, resolveEffectivePricing } from "../providers/catalog.js";
78
78
  import {
79
79
  type CapabilityFlags,
80
+ canonicalEndpointKey,
80
81
  canonicalizeWireModelId,
81
82
  type EndpointCapacity,
82
83
  endpointCapacityFor,
@@ -181,7 +182,12 @@ import {
181
182
  type HeartbeatStatus,
182
183
  heartbeatMonotonicAt,
183
184
  } from "./heartbeat.js";
184
- import { hostVerificationRejection, runHostVerification } from "./host-verification.js";
185
+ import {
186
+ type BatchVerificationGate,
187
+ createBatchVerificationGate,
188
+ hostVerificationRejection,
189
+ runHostVerification,
190
+ } from "./host-verification.js";
185
191
  import { renderDispatchIntentRequirements } from "./intent-requirements.js";
186
192
  import { adaptJointRouteInput } from "./joint-route-adapter.js";
187
193
  import {
@@ -201,6 +207,8 @@ import {
201
207
  type DispatchPathScope,
202
208
  declaredScopeReplacementDiagnostic,
203
209
  declaredScopeReplacementNotice,
210
+ inferredScopeParentTokenDiagnostic,
211
+ inferredScopeParentTokenNotice,
204
212
  resolveDispatchPathScope,
205
213
  } from "./path-scope.js";
206
214
  import { deriveEnvelopePhaseDurations, deriveRunPhaseDurations, recordRunTimingBestEffort } from "./phase-timing.js";
@@ -456,8 +464,8 @@ function calculateUsageCostUsd(meter: RunTokenMeter, pricing: EffectivePricing["
456
464
  * admit a route before settings are resolved, and it defers to the one place
457
465
  * that owns the default rather than restating the number here.
458
466
  */
459
- export function admissionMaxOutputTokens(settings: EffectiveSettings): number {
460
- return settings?.defaults.maxTokens ?? DEFAULT_SETTINGS.defaults.maxTokens;
467
+ function admissionMaxOutputTokens(settings: EffectiveSettings): number {
468
+ return settings?.chat.maxOutputTokens ?? DEFAULT_SETTINGS.chat.maxOutputTokens;
461
469
  }
462
470
 
463
471
  function conservativeRouteAdmissionEstimateUsd(pricing: EffectivePricing, maxOutputTokens: number): number {
@@ -509,7 +517,7 @@ function eventContainsFirstModelToken(event: Record<string, unknown>): boolean {
509
517
  }
510
518
 
511
519
  function eventStartsTool(event: Record<string, unknown>): boolean {
512
- return event.type === "tool_execution_start" || event.type === "clio_tool_start";
520
+ return event.type === "tool_execution_start" || event.type === "clio_coder_tool_start";
513
521
  }
514
522
 
515
523
  function finitePositive(value: unknown): number | undefined {
@@ -686,7 +694,7 @@ async function awaitEventDrain(drained: Promise<void>, graceMs = DISPATCH_DRAIN_
686
694
  function reportDispatchDiagnostic(scope: string, error: unknown): void {
687
695
  const message = error instanceof Error ? error.message : String(error);
688
696
  try {
689
- process.stderr.write(`[clio:dispatch] ${scope}: ${message}\n`);
697
+ process.stderr.write(`[clio-coder:dispatch] ${scope}: ${message}\n`);
690
698
  } catch {
691
699
  // stderr itself is best-effort
692
700
  }
@@ -892,7 +900,7 @@ export interface WorkspaceRootFacts {
892
900
  * claimed `npm test` then "validated" in 4ms. None of that is a model failure.
893
901
  * The harness knows the cwd exactly and was sending it nowhere.
894
902
  */
895
- export function readWorkspaceRootFacts(
903
+ function readWorkspaceRootFacts(
896
904
  cwd: string,
897
905
  readEntries: (dir: string) => Dirent[] = readDirentsSafely,
898
906
  ): WorkspaceRootFacts {
@@ -922,7 +930,7 @@ function readDirentsSafely(dir: string): Dirent[] {
922
930
  * projection of CLIO-CODER.md: a read-only scout that cannot afford the handbook read
923
931
  * still needs its first shell call to land in the right place.
924
932
  */
925
- export function renderWorkerWorkspaceContext(workspace: WorkspaceRootFacts): string {
933
+ function renderWorkerWorkspaceContext(workspace: WorkspaceRootFacts): string {
926
934
  const lines = ["# Workspace", `Root: ${workspace.root}`, "Your process starts here; relative paths resolve from it."];
927
935
  if (workspace.entries.length > 0) {
928
936
  lines.push(`Top level: ${workspace.entries.join(", ")}${workspace.truncated ? ", …" : ""}`);
@@ -975,7 +983,7 @@ function renderPipelineInput(input: PipelineInput): PipelineInputRender {
975
983
  * the command actually printed rather than a summary of it. Like pipeline
976
984
  * input, this is data and is never presented as instructions.
977
985
  */
978
- export function renderPredecessorHandoffs(handoffs: ReadonlyArray<ExecutionHandoff>): WorkerPromptMessage | null {
986
+ function renderPredecessorHandoffs(handoffs: ReadonlyArray<ExecutionHandoff>): WorkerPromptMessage | null {
979
987
  if (handoffs.length === 0) return null;
980
988
  const body = [
981
989
  "Outputs from this step's declared predecessors, in dependency order.",
@@ -1105,7 +1113,7 @@ export interface WorkerDynamicContext {
1105
1113
  * the projected "Verification expectations" body (verification-class runs
1106
1114
  * only); when off, output is byte-identical to the historical renderer.
1107
1115
  */
1108
- export function renderWorkerProjectContext(
1116
+ function renderWorkerProjectContext(
1109
1117
  project: ProjectStructuredContext,
1110
1118
  options: { includeVerification?: boolean } = {},
1111
1119
  ): string {
@@ -1147,7 +1155,7 @@ function workerProjectContextIncludesVerification(body: string): boolean {
1147
1155
  return body.includes("\nVerification expectations:\n");
1148
1156
  }
1149
1157
 
1150
- export function buildDynamicPromptMessages(
1158
+ function buildDynamicPromptMessages(
1151
1159
  req: DispatchRequest,
1152
1160
  dynamicContext: WorkerDynamicContext = {},
1153
1161
  ): WorkerPromptMessage[] {
@@ -1355,7 +1363,7 @@ interface DispatchLifecycleStage {
1355
1363
  interface AcpDelegationLifecycleStage {
1356
1364
  admission: DispatchAdmissionStage;
1357
1365
  pathScope: DispatchPathScope;
1358
- agentConfig: ReturnType<ConfigContract["get"]>["delegation"]["agents"][number];
1366
+ agentConfig: ReturnType<ConfigContract["get"]>["integrations"]["externalAgents"]["entries"][number];
1359
1367
  cwd: string;
1360
1368
  systemPrompt: string;
1361
1369
  dynamicPromptMessages: ReadonlyArray<WorkerPromptMessage>;
@@ -1603,11 +1611,7 @@ function assertPostRuntimeToolCompatibility(
1603
1611
  }
1604
1612
 
1605
1613
  function workerToolCallHardCap(settings: EffectiveSettings): number {
1606
- const rawEnvCap = process.env.CLIO_CODER_WORKER_TOOL_CALL_CAP?.trim();
1607
- const parsedEnvCap = rawEnvCap && /^[1-9]\d*$/.test(rawEnvCap) ? Number(rawEnvCap) : Number.NaN;
1608
- return Number.isSafeInteger(parsedEnvCap)
1609
- ? parsedEnvCap
1610
- : (settings?.guardrails.workerToolCallCap ?? GUARDRAIL_DEFAULTS.workerToolCallCap);
1614
+ return settings?.fleet.limits.toolCallsPerRun ?? GUARDRAIL_DEFAULTS.workerToolCallCap;
1611
1615
  }
1612
1616
 
1613
1617
  function resolveEffectiveWorkerBudget(input: {
@@ -1735,15 +1739,15 @@ function acpRuntimeLimitations(): string[] {
1735
1739
  }
1736
1740
 
1737
1741
  function readWorkerTargets(settings: ReturnType<ConfigContract["get"]> | undefined): WorkerTargets {
1738
- const workerDefault = settings?.workers?.default
1742
+ const workerDefault = settings?.fleet?.default
1739
1743
  ? {
1740
- target: settings.workers.default.target ?? null,
1741
- model: settings.workers.default.model ?? null,
1742
- thinkingLevel: (settings.workers.default.thinkingLevel ?? "off") as ThinkingLevel,
1744
+ target: settings.fleet.default.target ?? null,
1745
+ model: settings.fleet.default.model ?? null,
1746
+ thinkingLevel: (settings.fleet.default.thinkingLevel ?? "off") as ThinkingLevel,
1743
1747
  }
1744
1748
  : null;
1745
1749
  const workerProfiles: WorkerProfileMap = {};
1746
- for (const [name, profile] of Object.entries(settings?.workers?.profiles ?? {})) {
1750
+ for (const [name, profile] of Object.entries(settings?.fleet?.profiles ?? {})) {
1747
1751
  workerProfiles[name] = {
1748
1752
  target: profile.target ?? null,
1749
1753
  model: profile.model ?? null,
@@ -1751,7 +1755,7 @@ function readWorkerTargets(settings: ReturnType<ConfigContract["get"]> | undefin
1751
1755
  };
1752
1756
  }
1753
1757
  const agentBindings: WorkerAgentBindingMap = {};
1754
- for (const [agentId, profileName] of Object.entries(settings?.workers?.agentBindings ?? {})) {
1758
+ for (const [agentId, profileName] of Object.entries(settings?.fleet?.agentProfiles ?? {})) {
1755
1759
  const id = agentId.trim();
1756
1760
  const profile = profileName.trim();
1757
1761
  if (id.length > 0 && profile.length > 0) agentBindings[id] = profile;
@@ -1928,17 +1932,17 @@ function buildDispatchWorkerSpec(input: DispatchWorkerSpecInput, config?: Config
1928
1932
  if (input.req.trustProjectCompatRoots !== undefined) {
1929
1933
  spec.trustProjectCompatRoots = input.req.trustProjectCompatRoots;
1930
1934
  } else if (settings) {
1931
- spec.trustProjectCompatRoots = settings.skills.trustProjectCompatRoots === true;
1935
+ spec.trustProjectCompatRoots = settings.integrations.projectResources.trustProjectImports === true;
1932
1936
  }
1933
- spec.gitCommitAttribution = settings?.attribution.gitCommits ?? true;
1937
+ spec.gitCommitAttribution = settings?.integrations.git.commitAttribution ?? true;
1934
1938
  // Non-stall posture (Symphony §10.5): a dispatched worker has no operator
1935
1939
  // to answer a permission prompt by default, so the resolution policy ships
1936
1940
  // with the spec and the worker enforces it within bounded time. Under the
1937
1941
  // escalate posture the configured timeout/fallback bounds ride along so the
1938
1942
  // worker still cannot hang when no operator resolves the ask.
1939
- spec.onPermission = settings?.workers.onPermission ?? "deny";
1943
+ spec.onPermission = settings?.fleet.permissions.mode ?? "deny";
1940
1944
  if (spec.onPermission === "escalate") {
1941
- const escalation = settings?.workers.escalation;
1945
+ const escalation = settings?.fleet.permissions.escalation;
1942
1946
  if (escalation) spec.escalation = { timeoutMs: escalation.timeoutMs, fallback: escalation.fallback };
1943
1947
  }
1944
1948
  assertRuntimeCanHonorWorkerPermissionMode(input.target.runtime, spec.onPermission);
@@ -2032,7 +2036,7 @@ function autonomyEnforcementForAcpDelegation(
2032
2036
  dangerousBypass: true,
2033
2037
  };
2034
2038
  }
2035
- // clio-policy applies the exact autonomy mapping to every permission
2039
+ // clio-coder-policy applies the exact autonomy mapping to every permission
2036
2040
  // request. deny-all is stricter than every autonomy level, but is still a
2037
2041
  // Clio-mediated upper bound rather than an external approximation.
2038
2042
  return { grade: "mediated", autonomy, ...authorityEvidence, externalMode: toolGovernance };
@@ -2426,7 +2430,7 @@ export function createDispatchBundle(
2426
2430
  const heartbeatIntervalMs = options?.heartbeatIntervalMs ?? DEFAULT_HEARTBEAT_INTERVAL_MS;
2427
2431
  const getResilienceCooldownMs = (): number => {
2428
2432
  if (options?.resilienceCooldownMs !== undefined) return options.resilienceCooldownMs;
2429
- const settingsVal = getEffectiveSettings()?.workers?.resilienceCooldownMs;
2433
+ const settingsVal = getEffectiveSettings()?.fleet?.retry.routeCooldownMs;
2430
2434
  if (settingsVal !== undefined && settingsVal >= 0) return settingsVal;
2431
2435
  return DEFAULT_RESILIENCE_COOLDOWN_MS;
2432
2436
  };
@@ -2500,6 +2504,29 @@ export function createDispatchBundle(
2500
2504
  return Object.fromEntries(Object.entries(configuredEndpointCapacities()).map(([key, value]) => [key, value.limit]));
2501
2505
  }
2502
2506
 
2507
+ /**
2508
+ * Endpoints still bound by the blind one-slot default have never been
2509
+ * probed by any process, or their record expired. A fresh home carried that
2510
+ * bound into its first batch and refused two tasks on a server running
2511
+ * four, until the operator happened to run `targets --probe`. Probe each
2512
+ * such endpoint once per process, in the background and without the
2513
+ * inference-based reasoning check: the slot count is a header read, and the
2514
+ * model's first dispatch call is seconds away at the earliest. The probe
2515
+ * lands in the provider statuses and the durable slot store, which is where
2516
+ * admission already looks.
2517
+ */
2518
+ const probedDefaultBoundEndpoints = new Set<string>();
2519
+ function probeEndpointsAtDefaultBound(): void {
2520
+ const capacities = configuredEndpointCapacities();
2521
+ for (const target of getEffectiveSettings()?.targets ?? []) {
2522
+ const key = canonicalEndpointKey(target);
2523
+ if (key === null || capacities[key]?.source !== "local-native-default") continue;
2524
+ if (probedDefaultBoundEndpoints.has(key)) continue;
2525
+ probedDefaultBoundEndpoints.add(key);
2526
+ void providers.probeTarget(target.id, { reasoning: false }).catch(() => undefined);
2527
+ }
2528
+ }
2529
+
2503
2530
  function endpointCapacityForTarget(targetId: string): EndpointCapacity | null {
2504
2531
  const status = providers.list().find((entry) => entry.target.id === targetId);
2505
2532
  const target = status?.target ?? providers.getTarget(targetId);
@@ -2598,7 +2625,7 @@ export function createDispatchBundle(
2598
2625
  }
2599
2626
 
2600
2627
  function configuredGlobalCapacity(settings: EffectiveSettings): number {
2601
- const configured = settings?.budget.concurrency;
2628
+ const configured = settings?.fleet.concurrency;
2602
2629
  return scheduling.maxWorkers?.() ?? (configured === "auto" || configured === undefined ? 4 : Math.max(1, configured));
2603
2630
  }
2604
2631
 
@@ -2724,7 +2751,7 @@ export function createDispatchBundle(
2724
2751
  const finalizedCosts: Array<{ usd: number; provenance: import("../providers/index.js").CostProvenance }> = [];
2725
2752
 
2726
2753
  function workersMaxRetries(settings: EffectiveSettings = getEffectiveSettings()): number {
2727
- const value = settings?.workers?.maxRetries;
2754
+ const value = settings?.fleet?.retry.maxRetries;
2728
2755
  return typeof value === "number" && Number.isInteger(value) && value >= 0 ? value : 2;
2729
2756
  }
2730
2757
 
@@ -3369,6 +3396,23 @@ export function createDispatchBundle(
3369
3396
  agentId: req.agentId,
3370
3397
  });
3371
3398
  }
3399
+ // A reinterpreted "../" token is the one legacy-mode scope fact that earns
3400
+ // the channel: it fires only where the dispatch used to fail outright, so
3401
+ // it cannot warn on the ordinary intent-less dispatch the comment above
3402
+ // keeps quiet. Anchoring is reported alongside dropping because it is the
3403
+ // half that adds to scope, putting a path in working context that the
3404
+ // prose never literally spelled.
3405
+ const parentTokenDiagnostic = inferredScopeParentTokenDiagnostic(pathScope);
3406
+ if (parentTokenDiagnostic !== null) {
3407
+ reportDispatchDiagnostic("inferred scope parent tokens", new Error(parentTokenDiagnostic));
3408
+ }
3409
+ const parentTokenNotice = inferredScopeParentTokenNotice(pathScope);
3410
+ if (parentTokenNotice !== null) {
3411
+ context.bus.emit(BusChannels.DispatchScopeNotice, {
3412
+ ...parentTokenNotice,
3413
+ agentId: req.agentId,
3414
+ });
3415
+ }
3372
3416
  }
3373
3417
 
3374
3418
  async function resolveLifecycle(req: DispatchRequest, settings: EffectiveSettings): Promise<DispatchLifecycleStage> {
@@ -3402,6 +3446,7 @@ export function createDispatchBundle(
3402
3446
  autoSelected: req.agentSelection?.mode === "auto",
3403
3447
  resultContractKind: spec.resultContract.kind,
3404
3448
  specs: agents.listSpecs(),
3449
+ intent: req.intent ?? null,
3405
3450
  });
3406
3451
  if (capabilityMismatch?.verdict === "refuse") throw new Error(capabilityMismatch.detail);
3407
3452
  const pathScope = resolveDispatchPathScope(req);
@@ -3418,11 +3463,11 @@ export function createDispatchBundle(
3418
3463
  providers,
3419
3464
  );
3420
3465
  enforceCapabilityGate(target.target.id, target.modelCapabilities, req.requiredCapabilities);
3421
- assertRuntimeCanHonorWorkerPermissionMode(target.runtime, settings?.workers.onPermission ?? "deny");
3466
+ assertRuntimeCanHonorWorkerPermissionMode(target.runtime, settings?.fleet.permissions.mode ?? "deny");
3422
3467
  assertWorkerBudgetEnforceable(target.runtime, spec.budget !== null || req.budget !== undefined);
3423
3468
 
3424
3469
  const cwd = req.cwd ?? process.cwd();
3425
- const sessionAutonomy = settings?.autonomy ?? "auto-edit";
3470
+ const sessionAutonomy = settings?.safety.autonomy ?? "auto-edit";
3426
3471
  const effectiveAutonomy = clampWorkerAutonomy(sessionAutonomy, req.autonomy);
3427
3472
  const effectiveTools = withLedgerToolNarrowing(
3428
3473
  effectiveToolNames(admission.allowedTools, target, pathScope.writeBoundaries.length > 0, deniedToolNames(req)),
@@ -3434,18 +3479,17 @@ export function createDispatchBundle(
3434
3479
  allowedTools: effectiveTools,
3435
3480
  };
3436
3481
  const personaBody = workerPersonaBody(req, recipe, effectiveTools);
3482
+ const hasCanonicalContext = effectiveTools.includes(ToolNames.Context);
3483
+ const hasBoundSkills =
3484
+ hasCanonicalContext && recipe.skills !== undefined && recipe.skills.length > 0 && req.noSkills !== true;
3437
3485
  const compiledWorkerPrompt = await prompts.compileWorkerPrompt({
3438
3486
  autonomy: effectiveAutonomy,
3439
3487
  providerSupportsTools: target.runtime.kind === "subprocess" ? null : targetToolCapability(target),
3440
3488
  toolNames: effectiveTools,
3441
- toolPromptHints: toolPromptHintsForNames(effectiveTools),
3442
- hasCanonicalContext: effectiveTools.includes(ToolNames.Context),
3443
- hasBoundSkills:
3444
- effectiveTools.includes(ToolNames.Context) &&
3445
- recipe.skills !== undefined &&
3446
- recipe.skills.length > 0 &&
3447
- req.noSkills !== true,
3448
- onPermission: settings?.workers.onPermission ?? "deny",
3489
+ toolPromptHints: toolPromptHintsForNames(effectiveTools, hasBoundSkills ? "bound-worker" : "worker"),
3490
+ hasCanonicalContext,
3491
+ hasBoundSkills,
3492
+ onPermission: settings?.fleet.permissions.mode ?? "deny",
3449
3493
  persona: {
3450
3494
  id: `persona.${recipe.id}`,
3451
3495
  relPath: recipe.filepath,
@@ -3473,7 +3517,7 @@ export function createDispatchBundle(
3473
3517
  capabilityClass: spec.capabilityClass,
3474
3518
  projectContextTier: tier,
3475
3519
  autonomy: effectiveAutonomy,
3476
- onPermission: settings?.workers.onPermission ?? "deny",
3520
+ onPermission: settings?.fleet.permissions.mode ?? "deny",
3477
3521
  project,
3478
3522
  workspace: readWorkspaceRootFacts(cwd),
3479
3523
  });
@@ -3493,7 +3537,7 @@ export function createDispatchBundle(
3493
3537
  // Match chat-loop's LOCAL_API_KEY_FALLBACK so dispatch-spawned workers can
3494
3538
  // reach openai-compat local endpoints (LM Studio, llama.cpp) without
3495
3539
  // requiring the user to invent a credential.
3496
- const apiKey = auth?.apiKey ?? (auth === null ? "clio-local-target" : undefined);
3540
+ const apiKey = auth?.apiKey ?? (auth === null ? "clio-coder-local-target" : undefined);
3497
3541
  const runtimeKind: RunKind = target.runtime.kind;
3498
3542
  const limitations = runtimeLimitations(runtimeKind, target.runtime.id);
3499
3543
  return {
@@ -3548,16 +3592,16 @@ export function createDispatchBundle(
3548
3592
  }
3549
3593
  }
3550
3594
  if (!settings) throw new Error("dispatch: effective settings required for ACP delegation");
3551
- const configured = settings.delegation.agents.find((entry) => entry.id === agentId);
3595
+ const configured = settings.integrations.externalAgents.entries.find((entry) => entry.id === agentId);
3552
3596
  if (!configured) throw new Error(`dispatch: ACP delegation agent '${agentId}' not configured`);
3553
- const toolGovernance = configured.toolGovernance ?? "clio-policy";
3597
+ const toolGovernance = configured.toolGovernance ?? "clio-coder-policy";
3554
3598
  if (options?.autonomyOverride === true && toolGovernance === "agent-managed") {
3555
3599
  throw new Error(
3556
- `dispatch: ACP delegation agent '${agentId}' uses toolGovernance='agent-managed', which cannot enforce an explicit one-run autonomy override; choose clio-policy or deny-all governance, or omit --autonomy`,
3600
+ `dispatch: ACP delegation agent '${agentId}' uses toolGovernance='agent-managed', which cannot enforce an explicit one-run autonomy override; choose clio-coder-policy or deny-all governance, or omit --autonomy`,
3557
3601
  );
3558
3602
  }
3559
3603
  const admission = resolveDelegationAdmissionStage(req, safety);
3560
- const sessionAutonomy = settings.autonomy ?? "auto-edit";
3604
+ const sessionAutonomy = settings.safety.autonomy ?? "auto-edit";
3561
3605
  const autonomy = clampWorkerAutonomy(sessionAutonomy, req.autonomy);
3562
3606
  if (toolGovernance === "agent-managed" && autonomy !== sessionAutonomy) {
3563
3607
  throw new Error(
@@ -3755,15 +3799,15 @@ export function createDispatchBundle(
3755
3799
  if (eventContainsFirstModelToken(event)) markObservedPhase("firstModelTokenAt");
3756
3800
  if (eventStartsTool(event)) markObservedPhase("firstToolAt");
3757
3801
  }
3758
- if (event.type === "clio_tool_start" && event.payload && typeof event.payload.tool === "string") {
3802
+ if (event.type === "clio_coder_tool_start" && event.payload && typeof event.payload.tool === "string") {
3759
3803
  recordToolStart(inFlightTools, event.payload);
3760
3804
  }
3761
3805
  // ACP is an external protocol peer, never an authority for Clio's
3762
3806
  // deterministic terminal taxonomy. Ignore even syntactically valid
3763
3807
  // assertions; only a future coordinator-side classifier may set one.
3764
- if (event.type === "clio_run_outcome" && !reportedSpoofedOutcome) {
3808
+ if (event.type === "clio_coder_run_outcome" && !reportedSpoofedOutcome) {
3765
3809
  reportedSpoofedOutcome = true;
3766
- reportDispatchDiagnostic("ACP outcome event", new Error("ignored untrusted clio_run_outcome assertion"));
3810
+ reportDispatchDiagnostic("ACP outcome event", new Error("ignored untrusted clio_coder_run_outcome assertion"));
3767
3811
  }
3768
3812
  if (isRecord(event)) {
3769
3813
  const finishEntry = appendDispatchFinishContractEntry(finishContractEntries, event);
@@ -3794,7 +3838,7 @@ export function createDispatchBundle(
3794
3838
  if (message !== null) failureMessage = message;
3795
3839
  }
3796
3840
  }
3797
- if (event.type === "clio_permission_resolved" && event.payload && typeof event.payload.tool === "string") {
3841
+ if (event.type === "clio_coder_permission_resolved" && event.payload && typeof event.payload.tool === "string") {
3798
3842
  const requestId =
3799
3843
  typeof event.payload.requestId === "string" ? event.payload.requestId : `delegation-permission-${Date.now()}`;
3800
3844
  const origin = runIdForPermissionAudit !== null ? `delegation:${runIdForPermissionAudit}` : "delegation:unknown";
@@ -3820,7 +3864,7 @@ export function createDispatchBundle(
3820
3864
  ...(runIdForPermissionAudit !== null ? { requestedBy: runIdForPermissionAudit } : {}),
3821
3865
  });
3822
3866
  }
3823
- if (event.type === "clio_tool_finish" && event.payload && typeof event.payload.tool === "string") {
3867
+ if (event.type === "clio_coder_tool_finish" && event.payload && typeof event.payload.tool === "string") {
3824
3868
  recordToolCompletion(inFlightTools, event.payload);
3825
3869
  recordToolFinish(toolStats, event.payload);
3826
3870
  if (event.payload.decision === "allowed") safetyDecisionCounts.allowed += 1;
@@ -4022,7 +4066,7 @@ export function createDispatchBundle(
4022
4066
  const finalFailureMessage = result.failureMessage ?? failureMessage;
4023
4067
  const finalToolStats = snapshotToolStats(toolStats);
4024
4068
  const unfinished = snapshotUnfinishedTools(inFlightTools);
4025
- const toolGovernance = lifecycle.agentConfig.toolGovernance ?? "clio-policy";
4069
+ const toolGovernance = lifecycle.agentConfig.toolGovernance ?? "clio-coder-policy";
4026
4070
  return {
4027
4071
  runId: envelope.id,
4028
4072
  agentId: req.agentId,
@@ -4075,7 +4119,7 @@ export function createDispatchBundle(
4075
4119
  dynamicHash: lifecycle.dynamicHash,
4076
4120
  promptSignature: lifecycle.promptSignature,
4077
4121
  toolSignature: lifecycle.toolSignature,
4078
- clioVersion: readClioVersion(),
4122
+ clioCoderVersion: readClioVersion(),
4079
4123
  piMonoVersion: readPiMonoVersion(),
4080
4124
  platform: process.platform,
4081
4125
  nodeVersion: process.version,
@@ -4089,7 +4133,7 @@ export function createDispatchBundle(
4089
4133
  quality: createRunReceiptQuality({ runtimeEnforceable: false, enforcementPassed: null, resultContract: null }),
4090
4134
  autonomyEnforcement: autonomyEnforcementForAcpDelegation(
4091
4135
  lifecycle.autonomy,
4092
- lifecycle.agentConfig.toolGovernance ?? "clio-policy",
4136
+ lifecycle.agentConfig.toolGovernance ?? "clio-coder-policy",
4093
4137
  lifecycle.sessionAutonomy,
4094
4138
  req.autonomy,
4095
4139
  ),
@@ -4119,7 +4163,7 @@ export function createDispatchBundle(
4119
4163
  toolCallsRequested: result.delegation.toolCallsRequested,
4120
4164
  toolCallsApproved: result.delegation.toolCallsApproved,
4121
4165
  toolCallsDenied: result.delegation.toolCallsDenied,
4122
- toolGovernance: lifecycle.agentConfig.toolGovernance ?? "clio-policy",
4166
+ toolGovernance: lifecycle.agentConfig.toolGovernance ?? "clio-coder-policy",
4123
4167
  toolCallLog: acp.toolCallLog(),
4124
4168
  },
4125
4169
  sessionId: result.delegation.acpSessionId,
@@ -4345,6 +4389,7 @@ export function createDispatchBundle(
4345
4389
  async function dispatchAttempt(
4346
4390
  req: DispatchRequest,
4347
4391
  observer?: DispatchAdmissionObserver,
4392
+ settlement?: BatchVerificationGate,
4348
4393
  ): Promise<{
4349
4394
  runId: string;
4350
4395
  events: AsyncIterableIterator<unknown>;
@@ -4354,7 +4399,7 @@ export function createDispatchBundle(
4354
4399
  const requestedAt = new Date(now()).toISOString();
4355
4400
  const timing: RunPhaseMarks = { requestedAt, decisionStartedAt: requestedAt };
4356
4401
  const settings = getEffectiveSettings();
4357
- const isAcpAgent = settings?.delegation?.agents?.some((entry) => entry.id === req.agentId) ?? false;
4402
+ const isAcpAgent = settings?.integrations.externalAgents?.entries?.some((entry) => entry.id === req.agentId) ?? false;
4358
4403
  if (isAcpAgent && !req.delegationAgentId) {
4359
4404
  req.delegationAgentId = req.agentId;
4360
4405
  }
@@ -4374,7 +4419,7 @@ export function createDispatchBundle(
4374
4419
  const recipe = agents.get(req.agentId);
4375
4420
  const activation = consumeActiveRouteApproval({
4376
4421
  request: req,
4377
- settings: settings?.routing,
4422
+ settings: settings?.fleet.adaptiveRouting,
4378
4423
  capabilityClass: recipe === null ? null : normalizeAgentSpec(recipe).capabilityClass,
4379
4424
  failover: failoverModeFor(req),
4380
4425
  requestedAt,
@@ -4440,10 +4485,12 @@ export function createDispatchBundle(
4440
4485
  }
4441
4486
  rebindReservationSlot(req, "local", null, UNKNOWN_PRICING_ADMISSION_ESTIMATE_USD, settings);
4442
4487
  routeObservation = observeShadowRoute(req, undefined, settings);
4443
- return attachRouteObservation({
4444
- ...(await dispatchAcpDelegation(req, settings, timing, routeObservation.decision, observer)),
4445
- effectiveRequest: req,
4446
- });
4488
+ const delegated = await dispatchAcpDelegation(req, settings, timing, routeObservation.decision, observer);
4489
+ // An ACP member never runs host verification, so it can only ever leave
4490
+ // the barrier. It still edits the checkout, so the barrier has to wait
4491
+ // for it; dispatch() releases it when its finalPromise settles.
4492
+ settlement?.live(delegated.runId);
4493
+ return attachRouteObservation({ ...delegated, effectiveRequest: req });
4447
4494
  }
4448
4495
 
4449
4496
  req = routeAroundCoolingTarget(req, settings) ?? req;
@@ -4668,7 +4715,7 @@ export function createDispatchBundle(
4668
4715
  context.bus.emit(BusChannels.DispatchProgress, {
4669
4716
  runId,
4670
4717
  agentId: req.agentId,
4671
- event: { type: "clio_write_record_downgraded", payload: downgrade },
4718
+ event: { type: "clio_coder_write_record_downgraded", payload: downgrade },
4672
4719
  });
4673
4720
  },
4674
4721
  });
@@ -4722,8 +4769,8 @@ export function createDispatchBundle(
4722
4769
  policySource?: string;
4723
4770
  reason?: string;
4724
4771
  skillActivation?: unknown;
4725
- // Worker permission-escalation fields (clio_permission_escalated /
4726
- // clio_permission_resolved escalate path).
4772
+ // Worker permission-escalation fields (clio_coder_permission_escalated /
4773
+ // clio_coder_permission_resolved escalate path).
4727
4774
  requestId?: string;
4728
4775
  summary?: string;
4729
4776
  target?: string;
@@ -4736,12 +4783,12 @@ export function createDispatchBundle(
4736
4783
  if (eventContainsFirstModelToken(event)) markObservedPhase("firstModelTokenAt");
4737
4784
  if (eventStartsTool(event)) markObservedPhase("firstToolAt");
4738
4785
  }
4739
- if (event.type === "clio_tool_start" && event.payload && typeof event.payload.tool === "string") {
4786
+ if (event.type === "clio_coder_tool_start" && event.payload && typeof event.payload.tool === "string") {
4740
4787
  recordToolStart(inFlightTools, event.payload);
4741
4788
  }
4742
- if (event.type === "clio_steer_received") acknowledgeSteer(event.payload?.sequence);
4789
+ if (event.type === "clio_coder_steer_received") acknowledgeSteer(event.payload?.sequence);
4743
4790
  if (
4744
- event.type === "clio_run_outcome" &&
4791
+ event.type === "clio_coder_run_outcome" &&
4745
4792
  isRunOutcomeCode(event.payload?.outcomeCode) &&
4746
4793
  event.payload.outcomeCode !== "worker_final_output_missing" &&
4747
4794
  event.payload.outcomeCode !== "host_verification_rejected"
@@ -4764,7 +4811,11 @@ export function createDispatchBundle(
4764
4811
  }
4765
4812
  recordWorkerRunEffect(runEffects, event);
4766
4813
  }
4767
- if (event.type === "clio_permission_escalated" && event.payload && typeof event.payload.requestId === "string") {
4814
+ if (
4815
+ event.type === "clio_coder_permission_escalated" &&
4816
+ event.payload &&
4817
+ typeof event.payload.requestId === "string"
4818
+ ) {
4768
4819
  escalationCounts.requested += 1;
4769
4820
  const ctx = isRecord(event.payload.decision) ? event.payload.decision : null;
4770
4821
  const classification = ctx !== null && isRecord(ctx.classification) ? ctx.classification : null;
@@ -4825,7 +4876,7 @@ export function createDispatchBundle(
4825
4876
  if (message !== null) failureMessage = message;
4826
4877
  }
4827
4878
  }
4828
- if (event.type === "clio_permission_resolved" && event.payload && typeof event.payload.tool === "string") {
4879
+ if (event.type === "clio_coder_permission_resolved" && event.payload && typeof event.payload.tool === "string") {
4829
4880
  // Escalation resolutions already have a request event. Policy
4830
4881
  // deny/fail is non-stalling, so dispatch mints the adjacent pair.
4831
4882
  const source = event.payload.source;
@@ -4878,7 +4929,7 @@ export function createDispatchBundle(
4878
4929
  ...(runIdForPermissionAudit !== null ? { requestedBy: runIdForPermissionAudit } : {}),
4879
4930
  });
4880
4931
  }
4881
- if (event.type === "clio_tool_finish" && event.payload && typeof event.payload.tool === "string") {
4932
+ if (event.type === "clio_coder_tool_finish" && event.payload && typeof event.payload.tool === "string") {
4882
4933
  recordToolCompletion(inFlightTools, event.payload);
4883
4934
  recordToolFinish(toolStats, event.payload);
4884
4935
  if (isSkillActivation(event.payload.skillActivation)) {
@@ -5237,7 +5288,7 @@ export function createDispatchBundle(
5237
5288
  dynamicHash: lifecycle.dynamicHash,
5238
5289
  promptSignature: lifecycle.promptSignature,
5239
5290
  toolSignature: lifecycle.toolSignature,
5240
- clioVersion: readClioVersion(),
5291
+ clioCoderVersion: readClioVersion(),
5241
5292
  piMonoVersion: readPiMonoVersion(),
5242
5293
  platform: process.platform,
5243
5294
  nodeVersion: process.version,
@@ -5262,7 +5313,7 @@ export function createDispatchBundle(
5262
5313
  ...(skillActivations.length > 0 ? { skillActivations: [...skillActivations] } : {}),
5263
5314
  autonomyEnforcement: autonomyEnforcementForWorkerSpec(
5264
5315
  spec,
5265
- lifecycle.settings?.autonomy ?? "auto-edit",
5316
+ lifecycle.settings?.safety.autonomy ?? "auto-edit",
5266
5317
  req.autonomy,
5267
5318
  ),
5268
5319
  safety: {
@@ -5364,6 +5415,14 @@ export function createDispatchBundle(
5364
5415
  return { assessment, rigor };
5365
5416
  };
5366
5417
 
5418
+ // The worker is spawned and its ledger row exists, so from here it can
5419
+ // write and the batch barrier has to wait for it. Registered after the
5420
+ // try/catch at 4939-5068, which aborts the worker and releases the lease on
5421
+ // failure, so a run that never reaches the barrier is never made live.
5422
+ // Paired with the abandon in dispatch(), which fires the moment
5423
+ // finalPromise settles.
5424
+ settlement?.live(envelope.id);
5425
+
5367
5426
  const finalPromise = (async (): Promise<RunReceipt> => {
5368
5427
  try {
5369
5428
  const result = await workerDone;
@@ -5488,12 +5547,21 @@ export function createDispatchBundle(
5488
5547
  finalDetail = WORKER_FINAL_OUTPUT_MISSING_DETAIL;
5489
5548
  failureMessage = finalDetail;
5490
5549
  }
5491
- const hostVerification = await runHostVerification({
5550
+ const hostVerificationInput = {
5492
5551
  runId: envelope.id,
5493
5552
  request: req,
5494
5553
  workerSuccessful: finalOutcome === "succeeded",
5495
- onDiagnostic: (error) => reportDispatchDiagnostic(`write host verification memo for ${envelope.id}`, error),
5496
- });
5554
+ onDiagnostic: (error: unknown) =>
5555
+ reportDispatchDiagnostic(`write host verification memo for ${envelope.id}`, error),
5556
+ };
5557
+ // This await is the batch barrier. It already sits before
5558
+ // buildReceiptDraft below, which is why batch settlement needs no
5559
+ // receipt restructuring: every member parks here with its outcome
5560
+ // resolved and nothing sealed.
5561
+ const hostVerification =
5562
+ settlement === undefined
5563
+ ? await runHostVerification(hostVerificationInput)
5564
+ : await settlement.arrive(hostVerificationInput);
5497
5565
  const hostRejection = hostVerificationRejection(hostVerification);
5498
5566
  if (hostRejection !== null && finalOutcome === "succeeded") {
5499
5567
  finalOutcome = "failed";
@@ -5686,6 +5754,7 @@ export function createDispatchBundle(
5686
5754
  async function dispatch(
5687
5755
  req: DispatchRequest,
5688
5756
  observer?: DispatchAdmissionObserver,
5757
+ settlement?: BatchVerificationGate,
5689
5758
  ): Promise<{
5690
5759
  runId: string;
5691
5760
  events: AsyncIterableIterator<unknown>;
@@ -5733,7 +5802,7 @@ export function createDispatchBundle(
5733
5802
  }
5734
5803
  let handle: Awaited<ReturnType<typeof dispatchAttempt>>;
5735
5804
  try {
5736
- handle = await dispatchAttempt(prepared, observer);
5805
+ handle = await dispatchAttempt(prepared, observer, settlement);
5737
5806
  } catch (error) {
5738
5807
  writerLease?.release();
5739
5808
  if (createdWorktree !== undefined) {
@@ -5748,6 +5817,14 @@ export function createDispatchBundle(
5748
5817
  }
5749
5818
  throw error;
5750
5819
  }
5820
+ // A finalization that throws before the barrier, and an ACP handle that
5821
+ // never reaches it at all, must not park their siblings forever. A member
5822
+ // that already arrived is parked and abandon() is a no-op for it, so this
5823
+ // fires harmlessly on the normal path.
5824
+ if (settlement !== undefined) {
5825
+ const release = (): void => settlement.abandon(handle.runId);
5826
+ handle.finalPromise.then(release, release);
5827
+ }
5751
5828
  // Requests carrying lineage are internal attempts (retry or nested
5752
5829
  // orchestration) and retain the per-attempt handle contract.
5753
5830
  if (req.lineage) return { ...handle, finalPromise: handle.finalPromise.finally(() => writerLease?.release()) };
@@ -5775,7 +5852,7 @@ export function createDispatchBundle(
5775
5852
  req: DispatchRequest,
5776
5853
  settings: EffectiveSettings = getEffectiveSettings(),
5777
5854
  ): DispatchPlanTaskResolution {
5778
- const isAcpAgent = settings?.delegation?.agents?.some((entry) => entry.id === req.agentId) ?? false;
5855
+ const isAcpAgent = settings?.integrations.externalAgents?.entries?.some((entry) => entry.id === req.agentId) ?? false;
5779
5856
  if (isAcpAgent && !req.delegationAgentId) req = { ...req, delegationAgentId: req.agentId };
5780
5857
  const validation = routeValidationProjection(req, true);
5781
5858
  const validated = validateJobSpec(validation.jobSpec);
@@ -5851,7 +5928,7 @@ export function createDispatchBundle(
5851
5928
  req,
5852
5929
  );
5853
5930
  assertPostRuntimeToolCompatibility(req.agentId, agentSpec, effectiveTools, target);
5854
- assertRuntimeCanHonorWorkerPermissionMode(target.runtime, settings?.workers.onPermission ?? "deny");
5931
+ assertRuntimeCanHonorWorkerPermissionMode(target.runtime, settings?.fleet.permissions.mode ?? "deny");
5855
5932
  assertWorkerBudgetEnforceable(target.runtime, agentSpec.budget !== null || req.budget !== undefined);
5856
5933
  assertResponseSchemaEnforceable(target.runtime, target.modelCapabilities, req.responseSchema, effectiveTools.length);
5857
5934
  assertWriteRootsEnforceable(target.runtime, pathScope.writeBoundaries);
@@ -5913,7 +5990,7 @@ export function createDispatchBundle(
5913
5990
  specs,
5914
5991
  request: req,
5915
5992
  mode,
5916
- activeAgentRoles: settings?.routing.agentAutomation.activeAgentRoles ?? [],
5993
+ activeAgentRoles: settings?.fleet.adaptiveRouting.agentRoles ?? [],
5917
5994
  ...(agentIntent === undefined ? {} : { intentOverride: agentIntent }),
5918
5995
  });
5919
5996
  const settingsFingerprint = computeSettingsFingerprint(settings ?? null);
@@ -6008,7 +6085,7 @@ export function createDispatchBundle(
6008
6085
  const recipe = agents.get(req.agentId);
6009
6086
  return planActiveRoute({
6010
6087
  request: req,
6011
- settings: settings?.routing,
6088
+ settings: settings?.fleet.adaptiveRouting,
6012
6089
  capabilityClass: recipe === null ? null : normalizeAgentSpec(recipe).capabilityClass,
6013
6090
  failover: failoverModeFor(req),
6014
6091
  fixed,
@@ -6121,10 +6198,19 @@ export function createDispatchBundle(
6121
6198
  finalPromise: Promise<ReadonlyArray<RunReceipt>>;
6122
6199
  }> {
6123
6200
  if (reqs.length === 0) throw new Error("dispatch: batch requires at least one request");
6201
+ // Two or more concurrent workers share one checkout, so a declared check
6202
+ // run while a sibling is still editing judges a tree neither worker
6203
+ // authored. The barrier only exists when there is both something to verify
6204
+ // and something that could race it; a one-request batch and a batch with no
6205
+ // declared check keep today's per-run path exactly.
6206
+ const settlement =
6207
+ reqs.length > 1 && reqs.some((req) => (req.resolvedVerification?.length ?? 0) > 0)
6208
+ ? createBatchVerificationGate()
6209
+ : undefined;
6124
6210
  const handles: Array<Awaited<ReturnType<typeof dispatch>> & { agentId: string }> = [];
6125
6211
  try {
6126
6212
  for (const req of reqs) {
6127
- const handle = await dispatch(req);
6213
+ const handle = await dispatch(req, undefined, settlement);
6128
6214
  handles.push({ ...handle, agentId: req.agentId });
6129
6215
  }
6130
6216
  } catch (err) {
@@ -6219,7 +6305,7 @@ export function createDispatchBundle(
6219
6305
  costProvenance: "unknown",
6220
6306
  compiledPromptHash: null,
6221
6307
  staticCompositionHash: null,
6222
- clioVersion: readClioVersion(),
6308
+ clioCoderVersion: readClioVersion(),
6223
6309
  piMonoVersion: readPiMonoVersion(),
6224
6310
  platform: process.platform,
6225
6311
  nodeVersion: process.version,
@@ -6343,6 +6429,7 @@ export function createDispatchBundle(
6343
6429
  // Reconciliation is best-effort; a failure never blocks startup.
6344
6430
  }
6345
6431
  startHeartbeatWatchdog();
6432
+ probeEndpointsAtDefaultBound();
6346
6433
  },
6347
6434
  async stop() {
6348
6435
  // Shutdown is process-local. The durable machine-wide drain belongs to