@iowarp/clio-coder 0.3.6 → 0.3.7

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 (258) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +16 -5
  3. package/dist/{acp-2BEHC4DL.js → acp-SK4MD6MM.js} +10 -10
  4. package/dist/{agents-LNNFTM53.js → agents-2FN2K6ME.js} +30 -25
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-KXXFI2VS.js → auth-QIYZWM5I.js} +13 -13
  7. package/dist/{chunk-KHSFENX2.js → chunk-3HAPLH5M.js} +10 -10
  8. package/dist/{chunk-24I7BN55.js → chunk-465YSENW.js} +2 -2
  9. package/dist/{chunk-4OC57DA6.js → chunk-4DGYLA73.js} +53 -2
  10. package/dist/{chunk-CYQKWTG3.js → chunk-4DWFMQDR.js} +4 -4
  11. package/dist/{chunk-E2ER4LJF.js → chunk-5C3AQNDW.js} +25 -1
  12. package/dist/{chunk-22NAGB7X.js → chunk-5C77SEEY.js} +5 -94
  13. package/dist/{chunk-43AOLP7E.js → chunk-5FR74PWO.js} +2 -1
  14. package/dist/{chunk-K7T3E2SR.js → chunk-5UJ6ECTS.js} +10 -9
  15. package/dist/{chunk-6US73PDB.js → chunk-6M7VS3J3.js} +5 -5
  16. package/dist/{chunk-CJUB2JJ2.js → chunk-6TUKSZVF.js} +5 -5
  17. package/dist/{chunk-5JGRAMKL.js → chunk-AB4XIIVB.js} +8 -6
  18. package/dist/{chunk-R46L2BIR.js → chunk-BMWK7ZIZ.js} +14 -20
  19. package/dist/{chunk-4BPJXDWC.js → chunk-C4JBQ5SR.js} +30 -14
  20. package/dist/{chunk-XXQNGV4M.js → chunk-CEYBNUGC.js} +243 -63
  21. package/dist/{chunk-VEZEGCGW.js → chunk-D4MDIG46.js} +20 -18
  22. package/dist/chunk-DJNLUABN.js +843 -0
  23. package/dist/{chunk-RY3LY4J5.js → chunk-DMD2AGVS.js} +5 -4
  24. package/dist/{chunk-KOHPCX4K.js → chunk-DOOEX22V.js} +2 -2
  25. package/dist/chunk-DQA7QLMD.js +123 -0
  26. package/dist/chunk-DR52UMZW.js +21 -0
  27. package/dist/{chunk-XF5N4U5A.js → chunk-EBEFWSGL.js} +6 -5
  28. package/dist/{chunk-EYPA3EGJ.js → chunk-EELBMBT6.js} +120 -13
  29. package/dist/{chunk-CKXWIANG.js → chunk-EOOQZZDE.js} +16 -14
  30. package/dist/{chunk-WR67VIZY.js → chunk-FOT2FX5J.js} +63 -5
  31. package/dist/{chunk-FYYLNIL5.js → chunk-GH5622CP.js} +2 -2
  32. package/dist/chunk-GWS3VEIW.js +195 -0
  33. package/dist/{chunk-LYF7OHWH.js → chunk-J7PIKKWC.js} +8 -463
  34. package/dist/{chunk-NILBFAPG.js → chunk-JNXPYBB4.js} +2 -2
  35. package/dist/{chunk-4VP4KH3K.js → chunk-JRIO5UD2.js} +4 -4
  36. package/dist/{chunk-6XXKFVSN.js → chunk-JTSEDYVQ.js} +7 -7
  37. package/dist/{chunk-QKMUKYO7.js → chunk-KCMKRQX4.js} +236 -84
  38. package/dist/chunk-KZ2H5X4G.js +1026 -0
  39. package/dist/{chunk-QNQHSOLF.js → chunk-LADCF22A.js} +12 -12
  40. package/dist/chunk-M4AKACEO.js +382 -0
  41. package/dist/{chunk-XYDYPRZI.js → chunk-MXI6J5JF.js} +7 -7
  42. package/dist/{chunk-G7MUEIGA.js → chunk-OB5HIGJY.js} +1 -1
  43. package/dist/{chunk-EKY57CSP.js → chunk-OBMAI2DP.js} +61 -767
  44. package/dist/chunk-PD3MESLB.js +242 -0
  45. package/dist/{chunk-ZRGEBJ4T.js → chunk-QCTRSGHQ.js} +21 -21
  46. package/dist/chunk-RVG5JXAL.js +41 -0
  47. package/dist/{chunk-RD5U66HV.js → chunk-SROCI7ZU.js} +7 -7
  48. package/dist/{chunk-MFFY33HR.js → chunk-THKY7CD7.js} +466 -205
  49. package/dist/{chunk-PCZJO5TI.js → chunk-UFQ3F4FW.js} +13 -178
  50. package/dist/{chunk-AD2SYQYC.js → chunk-UHXRNZ2J.js} +121 -3
  51. package/dist/chunk-UND3GU2L.js +103 -0
  52. package/dist/{chunk-QM3F2GKX.js → chunk-UUANF5CR.js} +2247 -2096
  53. package/dist/chunk-UVDSQ6LW.js +472 -0
  54. package/dist/{chunk-DJVECN66.js → chunk-VQNODYQ4.js} +14 -14
  55. package/dist/{chunk-3BPUFZDL.js → chunk-VREKEFLL.js} +3 -3
  56. package/dist/{chunk-PBTHKCPN.js → chunk-WJHBC77E.js} +6 -6
  57. package/dist/{chunk-XE2VEJHX.js → chunk-X2KV5FXT.js} +2 -2
  58. package/dist/{chunk-ZXF4XRKW.js → chunk-XEGB6BCN.js} +157 -7
  59. package/dist/{chunk-E25LMLRW.js → chunk-YD734TPH.js} +2 -2
  60. package/dist/{verifiers-NCBTHHN2.js → chunk-YTYFXUI3.js} +65 -322
  61. package/dist/{chunk-OH3TOQTB.js → chunk-ZGH7FGS5.js} +13 -7
  62. package/dist/cli/index.js +32 -30
  63. package/dist/{clio-M2KGYUFZ.js → clio-WBVQEBKO.js} +7 -7
  64. package/dist/{code-nav-GQNL7XA6.js → code-nav-FGGFIE7L.js} +3 -3
  65. package/dist/{components-5TTYYX6G.js → components-F7OEATSO.js} +4 -4
  66. package/dist/{config-XUUYQIWO.js → config-TRBL3RCF.js} +34 -29
  67. package/dist/{configure-IHJ7YOMV.js → configure-OLCVPHNM.js} +15 -15
  68. package/dist/{context-74JLXAWD.js → context-MJIJ6GOX.js} +11 -11
  69. package/dist/{context-ZQ7SIFJV.js → context-WFPKQSM6.js} +19 -3
  70. package/dist/{context-75MIWW3U.js → context-XEWE3MOJ.js} +31 -26
  71. package/dist/{context-clear-GYKWNUML.js → context-clear-KNOS2JPB.js} +31 -26
  72. package/dist/{context-working-set-UX5KEP4J.js → context-working-set-EUXAZI6N.js} +8 -8
  73. package/dist/{dispatch-runner-GIJBHNFL.js → dispatch-runner-B7MTOVKL.js} +313 -53
  74. package/dist/{docs-6FZSCG5B.js → docs-FLJTIDSE.js} +4 -4
  75. package/dist/{doctor-SVJ5BZCW.js → doctor-RN4YKO2X.js} +14 -14
  76. package/dist/{eval-CG6LLBLD.js → eval-RUBJVSNQ.js} +8 -7
  77. package/dist/{evidence-ZYFIEN42.js → evidence-JZNBUOQZ.js} +30 -25
  78. package/dist/{evolve-QGEXEMDW.js → evolve-FJVC4KKI.js} +30 -25
  79. package/dist/{extensions-ADGNCJJD.js → extensions-IQL36S7K.js} +4 -4
  80. package/dist/{fleet-S5R4ZOQY.js → fleet-BDKYJFCP.js} +214 -360
  81. package/dist/fleet-commands-ZFIWZSB3.js +70 -0
  82. package/dist/fleet-graph-Y6HPXIVF.js +125 -0
  83. package/dist/fleet-new-RDVJLHHH.js +48 -0
  84. package/dist/fleet-validate-BIYREGIK.js +79 -0
  85. package/dist/{init-5DRU55YR.js → init-LQUB5COQ.js} +44 -37
  86. package/dist/library-NJAHIGG4.js +217 -0
  87. package/dist/{memory-7YKKR6UC.js → memory-OG6HOYKM.js} +31 -26
  88. package/dist/{models-ZPOLRU2C.js → models-5ZG5XY7J.js} +21 -20
  89. package/dist/{monitor-US5F5YGZ.js → monitor-TJ7AMTGB.js} +49 -30
  90. package/dist/{orchestrator-E2AL4T5N.js → orchestrator-WZYB54DM.js} +3827 -581
  91. package/dist/{paths-E7KYAQWE.js → paths-XUC7GS6E.js} +4 -4
  92. package/dist/{reset-KZ652EK6.js → reset-PXQT45IY.js} +7 -7
  93. package/dist/{run-SRNBKDWD.js → run-FQ74YF62.js} +53 -45
  94. package/dist/{share-CGZE33UP.js → share-FW7SVCL3.js} +33 -9
  95. package/dist/{skills-S2X4DLY5.js → skills-7E7IRB3R.js} +24 -8
  96. package/dist/{skills-eval-W2GGIC4R.js → skills-eval-LI75W6OK.js} +34 -27
  97. package/dist/{targets-54SWINWB.js → targets-4CIFKCTW.js} +23 -22
  98. package/dist/{terminal-lease-SAIF2OGY.js → terminal-lease-WUZY7ZV5.js} +4 -4
  99. package/dist/{uninstall-BVLWXKBT.js → uninstall-7FV7IP4E.js} +4 -4
  100. package/dist/{upgrade-JKAR27XC.js → upgrade-K2HVIVMQ.js} +20 -19
  101. package/dist/{usage-MSAWCLX4.js → usage-GTZELZQX.js} +116 -49
  102. package/dist/verifiers-RLAHT27O.js +336 -0
  103. package/dist/{verify-X5HDROLA.js → verify-BX3BRKH5.js} +7 -6
  104. package/dist/{wiki-generate-GUSOQ6ZP.js → wiki-generate-ASIFASCN.js} +45 -37
  105. package/dist/worker/entry.js +38 -35
  106. package/docs/README.md +3 -2
  107. package/docs/acp.md +1 -1
  108. package/docs/alcf-provider.md +1 -1
  109. package/docs/architecture.md +2 -2
  110. package/docs/artifact-versions.md +10 -6
  111. package/docs/built-in-agents.md +26 -2
  112. package/docs/capacity-and-scheduling.md +1 -1
  113. package/docs/commands-and-modes.md +82 -2
  114. package/docs/configuration-and-targets.md +79 -2
  115. package/docs/context-engine.md +1 -1
  116. package/docs/development-pipeline.md +1 -1
  117. package/docs/dispatch-architecture-rationale.md +1 -1
  118. package/docs/documentation-coverage.md +3 -3
  119. package/docs/documentation-guide.md +3 -3
  120. package/docs/eval-runner.md +1 -1
  121. package/docs/evals-internal.md +1 -1
  122. package/docs/evidence-and-memory.md +5 -5
  123. package/docs/evolution.md +1 -1
  124. package/docs/exit-codes-and-output.md +4 -1
  125. package/docs/extensions-and-sharing.md +6 -2
  126. package/docs/fleet-demo-runbook.md +2 -2
  127. package/docs/fleet-dispatch.md +197 -10
  128. package/docs/git-commit-provenance.md +2 -2
  129. package/docs/glossary.md +1 -1
  130. package/docs/installation-and-lifecycle.md +2 -2
  131. package/docs/middleware-and-components.md +2 -1
  132. package/docs/model-catalog.md +1 -1
  133. package/docs/observability.md +55 -8
  134. package/docs/proactive-memory.md +1 -1
  135. package/docs/prompt-envelope-and-tools.md +1 -1
  136. package/docs/provider-adapter-cookbook.md +1 -1
  137. package/docs/release-cut-checklist.md +79 -64
  138. package/docs/resource-library.md +59 -0
  139. package/docs/safety-model.md +2 -2
  140. package/docs/scientific-validation.md +3 -3
  141. package/docs/session-lifecycle.md +37 -1
  142. package/docs/skills-marketplace.md +16 -3
  143. package/docs/tool-usage.md +14 -7
  144. package/docs/trace-store.md +1 -1
  145. package/docs/troubleshooting.md +1 -1
  146. package/docs/tui-design.md +1 -1
  147. package/docs/worker-dispatch-mechanics.md +3 -3
  148. package/package.json +1 -1
  149. package/src/cli/fleet-commands.ts +37 -0
  150. package/src/cli/fleet-graph.ts +102 -0
  151. package/src/cli/fleet-new.ts +36 -0
  152. package/src/cli/fleet-preflight.ts +121 -0
  153. package/src/cli/fleet-validate.ts +30 -0
  154. package/src/cli/fleet.ts +173 -335
  155. package/src/cli/index.ts +3 -1
  156. package/src/cli/library.ts +190 -0
  157. package/src/cli/share.ts +13 -1
  158. package/src/cli/usage.ts +111 -19
  159. package/src/core/bus-events.ts +4 -0
  160. package/src/core/commit-attribution.ts +4 -4
  161. package/src/core/config.ts +130 -0
  162. package/src/core/defaults.ts +81 -0
  163. package/src/domains/agents/builtins/architect.md +1 -0
  164. package/src/domains/agents/builtins/oracle.md +33 -0
  165. package/src/domains/agents/catalog.ts +13 -1
  166. package/src/domains/agents/fleet-contract.ts +278 -16
  167. package/src/domains/agents/index.ts +14 -0
  168. package/src/domains/agents/result-contract.ts +235 -1
  169. package/src/domains/config/classify.ts +4 -0
  170. package/src/domains/dispatch/active-route-planner.ts +14 -0
  171. package/src/domains/dispatch/backoff.ts +2 -1
  172. package/src/domains/dispatch/capability-match.ts +1 -0
  173. package/src/domains/dispatch/checkout-writer-lease.ts +175 -0
  174. package/src/domains/dispatch/contract.ts +34 -0
  175. package/src/domains/dispatch/delegation-plan.ts +167 -0
  176. package/src/domains/dispatch/execution-plan.ts +76 -5
  177. package/src/domains/dispatch/execution-role.ts +3 -1
  178. package/src/domains/dispatch/execution-scheduler.ts +183 -67
  179. package/src/domains/dispatch/extension.ts +258 -9
  180. package/src/domains/dispatch/fleet-gate.ts +14 -0
  181. package/src/domains/dispatch/fleet-plan.ts +63 -3
  182. package/src/domains/dispatch/fleet-run.ts +737 -0
  183. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  184. package/src/domains/dispatch/host-verification.ts +178 -0
  185. package/src/domains/dispatch/index.ts +38 -0
  186. package/src/domains/dispatch/intent.ts +159 -0
  187. package/src/domains/dispatch/receipt-integrity.ts +8 -4
  188. package/src/domains/dispatch/state.ts +36 -3
  189. package/src/domains/dispatch/types.ts +51 -6
  190. package/src/domains/dispatch/validation.ts +66 -6
  191. package/src/domains/evidence/trust-status.ts +10 -1
  192. package/src/domains/middleware/index.ts +15 -0
  193. package/src/domains/middleware/watchdog.ts +281 -0
  194. package/src/domains/observability/contract.ts +3 -1
  195. package/src/domains/observability/cost.ts +12 -1
  196. package/src/domains/observability/extension.ts +2 -2
  197. package/src/domains/observability/index.ts +10 -0
  198. package/src/domains/observability/out-of-turn-usage.ts +223 -0
  199. package/src/domains/resources/index.ts +20 -0
  200. package/src/domains/resources/library.ts +326 -0
  201. package/src/domains/resources/skills/marketplace.ts +37 -12
  202. package/src/domains/session/handoff.ts +629 -0
  203. package/src/domains/share/archive.ts +67 -2
  204. package/src/entry/orchestrator.ts +37 -0
  205. package/src/interactive/bus-notices.ts +26 -0
  206. package/src/interactive/chat-loop.ts +235 -1
  207. package/src/interactive/chat-renderer.ts +22 -0
  208. package/src/interactive/cost-overlay.ts +31 -3
  209. package/src/interactive/council-dispatch.ts +30 -0
  210. package/src/interactive/council-grid.ts +213 -0
  211. package/src/interactive/council.ts +99 -0
  212. package/src/interactive/dispatch-board.ts +260 -16
  213. package/src/interactive/fleet-run-preview.ts +307 -0
  214. package/src/interactive/footer/notifications.ts +219 -0
  215. package/src/interactive/handoff-round.ts +56 -0
  216. package/src/interactive/interactive-application.ts +43 -1
  217. package/src/interactive/interactive-event-projection.ts +9 -1
  218. package/src/interactive/interactive-slash-runtime.ts +52 -2
  219. package/src/interactive/interactive-subscriptions.ts +14 -2
  220. package/src/interactive/oracle.ts +179 -0
  221. package/src/interactive/overlay-ask-user-lifecycle.ts +6 -0
  222. package/src/interactive/overlay-general-openers.ts +190 -1
  223. package/src/interactive/overlay-key-routing.ts +17 -1
  224. package/src/interactive/overlay-lifecycle.ts +41 -1
  225. package/src/interactive/overlay-permission-lifecycle.ts +10 -0
  226. package/src/interactive/overlay-resource-openers.ts +11 -3
  227. package/src/interactive/overlay-session-lifecycle.ts +234 -2
  228. package/src/interactive/overlays/fleet-run-approval.ts +208 -0
  229. package/src/interactive/overlays/handoff-review.ts +185 -0
  230. package/src/interactive/overlays/library-install-confirm.ts +151 -0
  231. package/src/interactive/overlays/list-overlay.ts +168 -2
  232. package/src/interactive/overlays/settings.ts +101 -4
  233. package/src/interactive/overlays/side-question.ts +139 -0
  234. package/src/interactive/overlays/skills-hub.ts +401 -15
  235. package/src/interactive/side-question.ts +171 -0
  236. package/src/interactive/slash-commands.ts +432 -5
  237. package/src/interactive/slash-spec.ts +19 -6
  238. package/src/interactive/theme/tokens.ts +30 -0
  239. package/src/interactive/turn-middleware.ts +15 -1
  240. package/src/interactive/watchdog-run.ts +75 -0
  241. package/src/interactive/worker-share.ts +56 -1
  242. package/src/interactive/worker-stream.ts +7 -0
  243. package/src/tools/bootstrap.ts +3 -0
  244. package/src/tools/compete-worktrees.ts +13 -79
  245. package/src/tools/dispatch-admission.ts +242 -8
  246. package/src/tools/dispatch-arguments.ts +57 -1
  247. package/src/tools/dispatch-plan.ts +136 -6
  248. package/src/tools/dispatch-runner.ts +319 -13
  249. package/src/tools/dispatch-types.ts +20 -1
  250. package/src/tools/dispatch.ts +72 -2
  251. package/src/tools/monitor.ts +16 -0
  252. package/src/tools/profiles.ts +18 -4
  253. package/src/tools/task-worktree.ts +238 -0
  254. package/src/tools/verify/authoring.ts +61 -1
  255. package/src/tools/verify/scripts.ts +62 -0
  256. package/src/tools/worker-evidence.ts +2 -1
  257. package/src/worker/spec-contract.ts +1 -0
  258. package/dist/chunk-HC4CLZ2Y.js +0 -68
@@ -1,6 +1,6 @@
1
1
  # Proactive task memory
2
2
 
3
- > **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.6).
3
+ > **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.7).
4
4
 
5
5
  Clio's proactive task memory protects long-running work from behavioral state
6
6
  decay: a requirement, environment fact, failed attempt, or diagnosis can still
@@ -1,7 +1,7 @@
1
1
  # Prompt Envelope and Tools
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive dashboard is located at [docs/html/tools_blueprint.html](html/tools_blueprint.html) (Version: 0.3.6).
4
+ > **Interactive Spec Available:** An interactive dashboard is located at [docs/html/tools_blueprint.html](html/tools_blueprint.html) (Version: 0.3.7).
5
5
 
6
6
  Clio Coder keeps the model-facing envelope stable and moves enforcement into the runtime registry and safety policy.
7
7
 
@@ -1,7 +1,7 @@
1
1
  # Provider Adapter Cookbook
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive runtime adapter descriptor builder and probe sequence capability checklist is located at [docs/html/provider_adapter_blueprint.html](html/provider_adapter_blueprint.html) (Version: 0.3.6).
4
+ > **Interactive Spec Available:** An interactive runtime adapter descriptor builder and probe sequence capability checklist is located at [docs/html/provider_adapter_blueprint.html](html/provider_adapter_blueprint.html) (Version: 0.3.7).
5
5
 
6
6
  This cookbook guides developers through implementing custom model runtimes and inference server integrations within Clio Coder. It explains the runtime descriptor interfaces, probing protocols, model synthesis, and how to configure reasoning and thinking behaviors.
7
7
 
@@ -1,6 +1,6 @@
1
- # v0.3.6 Release-Cut Checklist
1
+ # v0.3.7 Release-Cut Checklist
2
2
 
3
- The ordered steps that turn the prepared `v0.3.6` branch into a published
3
+ The ordered steps that turn the prepared `v0.3.7` branch into a published
4
4
  release. Everything above the line marked **AUTHORIZATION BOUNDARY** is
5
5
  repeatable and reversible and is run locally before the cut. Everything below
6
6
  it is external or irreversible and needs an explicit decision from the
@@ -11,14 +11,15 @@ state of every step.
11
11
 
12
12
  | Item | State |
13
13
  | --- | --- |
14
- | Branch | `v0.3.6`, local only; pushed with the explicit refspec `refs/heads/v0.3.6` when the operator decides, never as a bare name that a tag could shadow |
15
- | `package.json` version | `0.3.6`; the top `CHANGELOG.md` heading is `## 0.3.6 - 2026-08-23` |
16
- | `main` | `590fda7d`, which already carries the v0.3.5 content and the CI diet; it is an ancestor of `v0.3.6` and moves only at Part 4. |
17
- | `origin/main` | `590fda7d`, matching `main` with the v0.3.5 content and the CI diet |
18
- | Tags | none for 0.3.6, local or remote |
19
- | GitHub Release | none for 0.3.6 |
20
- | npm registry | `@iowarp/clio-coder@0.3.6` absent; `latest` is `0.3.4` |
21
- | npm history | `@iowarp/clio-coder` has published versions 0.3.0 through 0.3.4, with `latest` at 0.3.4. Version 0.3.5 was published and withdrawn, so `@iowarp/clio-coder@0.3.5` can never be reused. |
14
+ | Branch | `v0.3.7`, pushed to `origin` under the explicit refspec `refs/heads/v0.3.7`; sixteen feature and docs commits, the version-bump commit, and the fix commits the interactive release testing produced, ahead of `main` |
15
+ | `package.json` version | `0.3.7`; the top `CHANGELOG.md` heading is `## 0.3.7 - 2026-08-24` |
16
+ | `main` | `9b54219d`, the v0.3.6 release SHA; it is an ancestor of `v0.3.7` and moves only at Part 4 |
17
+ | `origin/main` | `9b54219d`, matching `main` |
18
+ | Tags | `v0.3.6` exists on `9b54219d`; none for 0.3.7, local or remote |
19
+ | GitHub Release | `v0.3.6` published 2026-08-24; none for 0.3.7 |
20
+ | npm registry | `@iowarp/clio-coder@0.3.7` absent; `latest` is `0.3.6` |
21
+ | npm history | Published versions 0.3.0 through 0.3.4 and 0.3.6. Version 0.3.5 was published and withdrawn and can never be reused. |
22
+ | Milestone | `v0.3.7` holds the thirteen issues this branch closes (#155, #204, #206 through #216); the ten off-map items (#156, #158 through #164, #198, #199) moved to `v0.3.8` on 2026-08-24 |
22
23
  | Commit provenance identity | Post-release maintainer follow-up, not a gate: verifying `clio-coder@iowarp.ai` on IOWarp-controlled GitHub and GitLab identities (such as `clio-coder-bot` or `iowarp-clio`, with `assets/clio-coder-avatar-512.png` as the avatar) only changes how those platforms render the trailers. |
23
24
 
24
25
  ---
@@ -53,35 +54,50 @@ Run against the exact final candidate with `NO_COLOR` unset and
53
54
  `docs/html/`, `apps/workbench`, `.superpowers`, `tests/`, `scripts/`,
54
55
  `benchmarks/`, scratch files, and source maps are absent. Record the
55
56
  filename, packed and unpacked sizes, integrity, and shasum.
56
- 12. Install that tarball into a clean temporary prefix with empty XDG roots and
57
- verify `--version`, `--help`, an empty-state non-TTY launch, `doctor`, and
58
- `uninstall --dry-run` without developer-local state.
57
+ 12. Install that tarball into a clean temporary prefix with an empty
58
+ `CLIO_CODER_HOME` and verify `--version`, `--help`, an empty-state non-TTY
59
+ launch, `doctor`, and `uninstall --dry-run` without developer-local state.
60
+ 13. Interactive release testing, which this cut added because the release is
61
+ almost entirely interactive surface: a tester agent drives the step-12
62
+ install through real TUI sessions in a throwaway repository, one session
63
+ per shipped feature, against local targets for the main session and a
64
+ cloud target for council members and advice, and writes a per-feature
65
+ PASS / FAIL / BLOCKED table with evidence. A FAIL on a deterministic
66
+ behavior (a refusal, a file, a receipt field, CLI output) blocks the cut;
67
+ a BLOCKED(model) on a model decision does not.
59
68
 
60
69
  ## Part 2: version and notes (repeatable)
61
70
 
62
- 13. Files carrying a version reference, to update together if the number
63
- changes: `package.json` and `package-lock.json`, the `## 0.3.6 - <date>`
64
- heading in `CHANGELOG.md`, the `(Version: 0.3.6)` markers in `docs/*.md`,
65
- the `Blueprint (v0.3.6)` titles in `docs/html/*.html`, the `--branch`
71
+ 14. Files carrying a version reference, to update together if the number
72
+ changes: `package.json` and `package-lock.json`, the `## 0.3.7 - <date>`
73
+ heading in `CHANGELOG.md`, the `(Version: 0.3.7)` markers in `docs/*.md`,
74
+ the `Blueprint (v0.3.7)` titles in `docs/html/*.html`, the `--branch`
66
75
  pin in the README install block (the hygiene lint checks it), and the
67
76
  measured-at figures in `scripts/check-release.mjs` if the package size
68
- moved materially.
69
- 14. Confirm the `## 0.3.6` section of `CHANGELOG.md` describes every
70
- user-visible behavior change, including the ones that alter existing
71
- behavior, and carries no Workbench release narrative. The release workflow
72
- uses this section verbatim as the GitHub Release body.
73
- 15. Re-run `npm run ci:release` after any version edit and commit as one
74
- commit on `v0.3.6`.
77
+ moved materially. For 0.3.7 the tarball measured 6.5 MB packed and
78
+ 37.9 MB unpacked, inside the 10 MB and 50 MB ceilings set for 0.3.6.
79
+ 15. Confirm the `## 0.3.7` section of `CHANGELOG.md` describes every
80
+ user-visible behavior change under `### Added`, and every change to an
81
+ existing behavior under `### Changed`, and carries no Workbench release
82
+ narrative. The release workflow uses this section verbatim as the GitHub
83
+ Release body.
84
+ 16. `docs/artifact-versions.md` lists every persisted artifact this release
85
+ added or re-versioned: run receipt integrity v19, fleet contract v5, the
86
+ fleet run record, the checkout writer lease, the out-of-turn usage ledger,
87
+ and the library pin file.
88
+ 17. Re-run `npm run ci:release` after any version edit and commit as one
89
+ commit on `v0.3.7`.
75
90
 
76
91
  ## Part 3: present the gate
77
92
 
78
- 16. Report to the operator before touching `main`: the exact final `v0.3.6`
93
+ 18. Report to the operator before touching `main`: the exact final `v0.3.7`
79
94
  SHA and clean status, the commits added since the handoff SHA, the gate
80
- commands with pass/fail totals for both Node majors, the package version
81
- and changelog heading, the tarball audit, the clean-install results and any
82
- deferred live check, confirmation that no tag, GitHub Release, or npm
83
- version exists yet, the proposed commands for Parts 4 through 6, and the
84
- proposed npm dist-tag. The dist-tag is the operator's call; never guess it.
95
+ commands with pass/fail totals, the package version and changelog heading,
96
+ the tarball audit, the clean-install results, the interactive test table,
97
+ and any deferred live check, confirmation that no tag, GitHub Release, or
98
+ npm version exists yet, the proposed commands for Parts 4 through 6, and
99
+ the npm dist-tag. The dist-tag is the operator's call; for 0.3.7 the
100
+ operator chose `latest` on 2026-08-24.
85
101
 
86
102
  ---
87
103
 
@@ -93,54 +109,53 @@ confirming the exact SHA and the commands.
93
109
 
94
110
  ## Part 4: fast-forward `main`
95
111
 
96
- 17. `git fetch origin` immediately before integrating; require `origin/main`
97
- to be an ancestor of the reviewed `v0.3.6` tip and confirm no other
112
+ 19. `git fetch origin` immediately before integrating; require `origin/main`
113
+ to be an ancestor of the reviewed `v0.3.7` tip and confirm no other
98
114
  worktree has `main` checked out.
99
- 18. `git checkout main && git merge --ff-only v0.3.6`. No merge commit, no
115
+ 20. `git checkout main && git merge --ff-only v0.3.7`. No merge commit, no
100
116
  rebase, no reset. Verify `main` equals the reviewed SHA and is clean.
101
- 19. `git fetch origin` once more; stop on any unexpected remote movement. Then
102
- `git push origin main`. Never `--force` or `--force-with-lease`.
117
+ 21. `git fetch origin` once more; stop on any unexpected remote movement. Then
118
+ `git push origin main`. Never `--force` or `--force-with-lease`. The push
119
+ closes the thirteen milestone issues through their `Fixes` trailers.
103
120
 
104
121
  ## Part 5: exact-SHA CI, tag, GitHub Release
105
122
 
106
- 20. The `main` push triggers the `ci` workflow. It is a useful signal but no
107
- longer a gate on tagging, because `release.yml` runs the same gate on the
108
- tagged tree itself. A red run still blocks the cut; investigate it rather
109
- than tagging around it, and never silence a flake with an unrelated
110
- change.
111
- 21. Reconfirm that tag `v0.3.6` and the GitHub Release do not exist, then
112
- `git tag -a v0.3.6 -m "Clio Coder 0.3.6"` on the green SHA and
113
- `git push origin refs/tags/v0.3.6`.
114
- 22. The tag push triggers `.github/workflows/release.yml`, which verifies the
123
+ 22. The `main` push triggers the `ci` workflow. It is a useful signal but not
124
+ a gate on tagging, because `release.yml` runs the same gate on the tagged
125
+ tree itself. A red run still blocks the cut; investigate it rather than
126
+ tagging around it, and never silence a flake with an unrelated change.
127
+ 23. Reconfirm that tag `v0.3.7` and the GitHub Release do not exist, then
128
+ `git tag -a v0.3.7 -m "Clio Coder 0.3.7"` on the green SHA and
129
+ `git push origin refs/tags/v0.3.7`.
130
+ 24. The tag push triggers `.github/workflows/release.yml`, which verifies the
115
131
  tag matches `package.json`, runs `npm run ci:release` on the tagged tree,
116
- extracts the `## 0.3.6` section of `CHANGELOG.md` as the release body, and
117
- attaches the tarball.
118
- Do not create a release by hand. Verify the run's SHA, the notes, the
119
- attached tarball, and the URL.
132
+ extracts the `## 0.3.7` section of `CHANGELOG.md` as the release body, and
133
+ attaches the tarball. Do not create a release by hand. Verify the run's
134
+ SHA, the notes, the attached tarball, and the URL.
120
135
 
121
136
  ## Part 6: npm publication (irreversible)
122
137
 
123
- 23. `npm whoami` and confirm the registry and account; reconfirm
124
- `@iowarp/clio-coder@0.3.6` is still absent.
125
- 24. Obtain the operator's explicit dist-tag decision. `latest` makes this the
126
- default install for every user; `--tag next` keeps `0.3.4` as the default.
127
- 25. Run `npm publish` (or `npm publish --tag next`) once. `prepublishOnly`
128
- re-runs `ci:release` as a safety net; it is not a substitute for Part 1.
129
- 26. A published version cannot be replaced. `npm unpublish` is restricted and
138
+ 25. `npm whoami` and confirm the registry and account; reconfirm
139
+ `@iowarp/clio-coder@0.3.7` is still absent.
140
+ 26. Obtain the operator's explicit dist-tag decision. `latest` makes this the
141
+ default install for every user; `--tag next` keeps `0.3.6` as the default.
142
+ 27. Run `npm publish` once. `prepublishOnly` re-runs `ci:release` as a safety
143
+ net; it is not a substitute for Part 1.
144
+ 28. A published version cannot be replaced. `npm unpublish` is restricted and
130
145
  time-limited; a mistake is corrected by publishing a higher version.
131
146
 
132
147
  ## Part 7: post-publish verification and follow-ups
133
148
 
134
- 27. `npm view @iowarp/clio-coder@0.3.6` and the selected dist-tag.
135
- 28. On a clean machine, `npm install -g @iowarp/clio-coder` from the registry
149
+ 29. `npm view @iowarp/clio-coder@0.3.7` and the selected dist-tag.
150
+ 30. On a clean machine, `npm install -g @iowarp/clio-coder` from the registry
136
151
  rather than from a local tarball, then repeat step 12 against it, plus
137
152
  `configure` to a real target and one real turn when one is authorized.
138
153
  This is the only step that tests what users actually receive.
139
- 29. From an installation of 0.3.4, verify `clio-coder upgrade` finds and
140
- applies 0.3.6.
141
- 30. Record the SHA, CI URL, tag, GitHub Release URL, npm version and dist-tag,
154
+ 31. From an installation of 0.3.6, verify `clio-coder upgrade` finds and
155
+ applies 0.3.7.
156
+ 32. Record the SHA, CI URL, tag, GitHub Release URL, npm version and dist-tag,
142
157
  tarball evidence, and the post-publish verification in the release report.
143
- 31. Maintainer follow-up, independent of the release: verify the commit
158
+ 33. Maintainer follow-up, independent of the release: verify the commit
144
159
  provenance email `clio-coder@iowarp.ai` on IOWarp-controlled GitHub and
145
160
  GitLab identities such as `clio-coder-bot` or `iowarp-clio`, and upload
146
161
  `assets/clio-coder-avatar-512.png` as the account avatar where PNG is
@@ -153,7 +168,7 @@ confirming the exact SHA and the commands.
153
168
 
154
169
  ## Rollback
155
170
 
156
- There is no rollback for step 25. Before it, every step is reversible: steps
157
- 21 and 22 by deleting the local and remote tag and the draft release, steps 17
158
- through 19 by a new forward commit on `main` (never by rewriting it), and
171
+ There is no rollback for step 27. Before it, every step is reversible: steps
172
+ 23 and 24 by deleting the local and remote tag and the draft release, steps 19
173
+ through 21 by a new forward commit on `main` (never by rewriting it), and
159
174
  everything in Parts 1 and 2 by `git checkout`.
@@ -0,0 +1,59 @@
1
+ # Resource Library
2
+
3
+ The resource library extends the existing local skills marketplace catalog to carry agent recipes, prompt templates, and fleet contracts. It does not change the Agent Skills format, discovery roots, trust gating, or existing skill installation sources.
4
+
5
+ ## Catalog schema
6
+
7
+ A catalog is a JSON or YAML list, or an object whose `skills` property contains the list. The historical property name remains accepted so every existing skill marketplace index works unchanged.
8
+
9
+ ```yaml
10
+ skills:
11
+ - kind: fleet
12
+ name: release
13
+ description: Build and verify a release.
14
+ sourceUrl: ./fleets/release.md
15
+ requires:
16
+ - agent:release-builder
17
+ - skill:ship
18
+ ```
19
+
20
+ `kind` accepts `skill`, `agent`, `prompt`, or `fleet` and defaults to `skill`. `requires` accepts typed references with those same four prefixes. Clio resolves requirements recursively across the selected catalog and the private catalog. Missing, malformed, and cyclic requirements are refused with stable `library_requirement_*` diagnostics. A requirement is satisfied when its typed reference exists in `<configDir>/library-pins.yaml` or its kind-specific destination exists. Add output lists satisfied and unsatisfied requirements separately. Requirements are reported without installation unless `library add` receives `--with-requirements`. That flag installs only the unsatisfied dependencies in dependency order before the requested entry.
21
+
22
+ ## Private catalog and remote gating
23
+
24
+ `library.catalog` selects a private catalog and defaults to `<configDir>/library.yaml`. Relative sources in that file resolve beside the catalog. `library.remote` records an optional git remote URL. `library.sync` defaults to false, and no git process is started while it remains false.
25
+
26
+ The private catalog repository must name its git remote `library`. Clio checks it with `git remote get-url library`. Run `clio-coder library remote confirm <url>` once after reviewing the configured URL. When `library.remote` is unset, confirmation records the URL as both the configured and confirmed remote. A confirmation that differs from an existing `library.remote` refuses with `library_remote_mismatch`. A missing confirmation or a later settings change refuses synchronization and publishing with `library_remote_unconfirmed`.
27
+
28
+ When `library.sync` is false, both `library sync` and `library push` refuse with `library_sync_disabled` before any process starts. When synchronization is enabled, `library sync` runs `git fetch library` followed by `git merge --ff-only FETCH_HEAD`, and `library push` runs `git push library`. Both commands execute git as an argument vector without a shell.
29
+
30
+ ## CLI
31
+
32
+ ```text
33
+ clio-coder library list [--kind k] [--json]
34
+ clio-coder library search <query> [--kind k] [--json]
35
+ clio-coder library add <ref> [--from <catalog|path>] [--with-requirements] [--yes] [--json]
36
+ clio-coder library use <kind> <name>
37
+ clio-coder library push
38
+ clio-coder library sync
39
+ clio-coder library remote confirm <url>
40
+ ```
41
+
42
+ `library add` prints every destination and SHA-256 hash before it writes. It writes nothing until `--yes` is present. `library use` prints the invocation to paste into the relevant surface.
43
+
44
+ ## In the TUI
45
+
46
+ The Skills Hub carries one tab per kind. `/library <kind>` opens it on that kind's tab and `/library` alone opens it on Skills, which is also where `/skill` opens. Each tab lists the entries this same discovery finds, with the requirements an entry still needs named in the warning token. Installing from a row runs the same plan-then-write pair `library add` runs, behind a confirmation that states every destination and hash and writes nothing when it is cancelled, and an entry with unresolved requirements is refused by name before an install-with-requirements confirmation offers to write them all. `Enter` on an installed row leads where that kind is invoked from: the composer for an agent, a prompt, or a skill, and the `/fleet run` approval preview for a fleet. See [skills-marketplace.md](skills-marketplace.md) for the key table.
47
+
48
+ ## Installation roots and validation
49
+
50
+ | Kind | User installation root | Validation before write |
51
+ | --- | --- | --- |
52
+ | skill | `<configDir>/skills/<name>/SKILL.md` | Existing skill loader and installer |
53
+ | agent | `<configDir>/agents/<name>.md` | Agent recipe schema and policy |
54
+ | prompt | `<configDir>/prompts/<name>.md` | Prompt template loader |
55
+ | fleet | `<configDir>/fleets/<name>.md` | Fleet contract parser |
56
+
57
+ Every installed item records a kind-qualified hash in `<configDir>/library-pins.yaml`. Agent recipes become visible through `clio-coder agents`. User fleet contracts participate between built-in and project fleet precedence, so a project contract still wins. Prompts use the existing user prompt root.
58
+
59
+ Share archives may carry agent and fleet entries. Import always validates these formats before writing, and fleet entries land in the user fleet root.
@@ -1,7 +1,7 @@
1
1
  # Clio Coder Safety Model
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive dashboard is located at [docs/html/safety_blueprint.html](html/safety_blueprint.html) (Version: 0.3.6).
4
+ > **Interactive Spec Available:** An interactive dashboard is located at [docs/html/safety_blueprint.html](html/safety_blueprint.html) (Version: 0.3.7).
5
5
 
6
6
  Clio Coder's safety posture is code-enforced, not prompt-only. As the orchestrator coding agent in the [IOWarp](https://iowarp.ai) ecosystem developed by the [Gnosis Research Center](https://grc.iit.edu) at Illinois Tech under NSF Award [#2411318](https://www.nsf.gov/awardsearch/showAward?AWD_ID=2411318), Clio gates execution by target capabilities, the tool registry, the safety policy engine, project policies, protected-artifact checks, and audit receipts.
7
7
 
@@ -13,7 +13,7 @@ Source of truth: `src/domains/safety/**`, `src/tools/registry.ts`, `src/tools/bo
13
13
 
14
14
  The `autonomy` setting (`read-only` | `suggest` | `auto-edit` | `full-auto`) is an enforced dial. It controls exactly one thing: which action classes run immediately, which park for operator approval, and which are auto-denied. The safety net (damage-control rules, path policy, protected artifacts, loop guard, dispatch scope admission) is independent of the dial and identical at every level. When a `[safety-net]` notice appears at full-auto, that is the always-on net working as designed, not a contradiction of the level.
15
15
 
16
- In Clio Coder v0.3.6, effective autonomy resolution is strictly centralized in `src/entry/orchestrator.ts` through `resolveEffectiveAutonomy` and `resolveBaselineAutonomy`. Every admission surface (tool registry admission, dispatch plan provenance, and ACP session snapshots) delegates to this pair of functions so that fallback paths cannot diverge across execution contexts. `resolveBaselineAutonomy` evaluates dispatch settings overrides, headless CLI options, and configuration settings before applying the default `auto-edit` level. `resolveEffectiveAutonomy` combines any active ACP session autonomy level with the baseline resolution.
16
+ In Clio Coder v0.3.7, effective autonomy resolution is strictly centralized in `src/entry/orchestrator.ts` through `resolveEffectiveAutonomy` and `resolveBaselineAutonomy`. Every admission surface (tool registry admission, dispatch plan provenance, and ACP session snapshots) delegates to this pair of functions so that fallback paths cannot diverge across execution contexts. `resolveBaselineAutonomy` evaluates dispatch settings overrides, headless CLI options, and configuration settings before applying the default `auto-edit` level. `resolveEffectiveAutonomy` combines any active ACP session autonomy level with the baseline resolution.
17
17
 
18
18
  ### Autonomy levels
19
19
 
@@ -1,11 +1,11 @@
1
1
  # Clio Coder Scientific Validation Contracts
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive numerical tolerance calculator and HPC queue execution simulator is located at [docs/html/validation_blueprint.html](html/validation_blueprint.html) (Version: 0.3.6).
4
+ > **Interactive Spec Available:** An interactive numerical tolerance calculator and HPC queue execution simulator is located at [docs/html/validation_blueprint.html](html/validation_blueprint.html) (Version: 0.3.7).
5
5
 
6
6
  Scientific software development cannot treat simple file presence as proof of correctness. A simulation script that crashes on rank 48, or writes out NetCDF arrays filled with `NaN`s, may still successfully write a file to the disk.
7
7
 
8
- Clio Coder recognizes **scientific validation contract files** as an opt-in signal for a higher evidence bar. In v0.3.6, the session rigor resolver does not parse or enforce a scientific contract schema. The presence of `.clio-coder/validation.yaml`, `.clio-coder/validation.yml`, `validation.yaml`, `validation.yml`, or `VALIDATION.md` at the workspace root raises the default rigor level to `high`; the file contents are advisory material for developers, project agents, and external validators.
8
+ Clio Coder recognizes **scientific validation contract files** as an opt-in signal for a higher evidence bar. In v0.3.7, the session rigor resolver does not parse or enforce a scientific contract schema. The presence of `.clio-coder/validation.yaml`, `.clio-coder/validation.yml`, `validation.yaml`, `validation.yml`, or `VALIDATION.md` at the workspace root raises the default rigor level to `high`; the file contents are advisory material for developers, project agents, and external validators.
9
9
 
10
10
  This advisory convention is separate from the executable project verifier catalog at `.clio-coder/verifiers.yaml`. The verifier catalog has a strict version-1 schema and admits exact argv vectors to the `verify` tool. Scientific validation contracts and handbook expectations do not grant command authority: prose such as `validators: ["python tools/check_grid.py"]` remains guidance until the project owner confirms the equivalent argv, cwd, timeout, and tags in `verifiers.yaml`. The executable catalog does not interpret numerical tolerances or artifact expectations; it only runs the explicitly declared process vector through safe-exec.
11
11
 
@@ -95,7 +95,7 @@ Comparing floating-point values in scientific computations must accommodate roun
95
95
 
96
96
  ## Common Scientific Artifact Families
97
97
 
98
- The following labels are useful project conventions for validation contracts and reports. They are not a closed, core-enforced enum in v0.3.6:
98
+ The following labels are useful project conventions for validation contracts and reports. They are not a closed, core-enforced enum in v0.3.7:
99
99
 
100
100
  - **`HDF5` / `NetCDF` / `Zarr`:** Multi-dimensional scientific array files.
101
101
  - **`FITS`:** Flexible Image Transport System (used in astrophysics).
@@ -1,6 +1,6 @@
1
1
  # Session Lifecycle
2
2
 
3
- This document is the authoritative specification for Clio Coder interactive and headless session lifecycles, on-disk ledger structures, tree-based conversation branching, checkpoints, and recovery protocols in `v0.3.6`.
3
+ This document is the authoritative specification for Clio Coder interactive and headless session lifecycles, on-disk ledger structures, tree-based conversation branching, checkpoints, and recovery protocols in `v0.3.7`.
4
4
 
5
5
  Source implementations: `src/engine/session.ts` and `src/domains/session/`.
6
6
 
@@ -127,6 +127,42 @@ The `/fork` command (`src/domains/session/tree/fork.ts:forkFromParentTurn`) init
127
127
  3. Traces ancestry up to `parentTurnId` and copies exactly the active path entries (excluding later unanchored sidecars) into the new session ledger.
128
128
  4. Stamps `parentSession` and `parentTurnId` in the new session header.
129
129
 
130
+ ### Handoff (`/handoff <goal>`)
131
+
132
+ `/handoff` mints a successor session seeded with a reviewed document describing
133
+ what the current session settled. It is a session operation and only that: it
134
+ writes no memory promotion candidate, touches no memory record, and never calls
135
+ the task-memory bank.
136
+
137
+ The rule that makes the document trustworthy is read-ledger validation. Clio folds
138
+ this session's persisted `read`, `edit`, `write`, `ls`, `find`, `grep`, and
139
+ `artifact` tool calls (plus its `fileEntry` records) into a set of
140
+ workspace-relative paths, through `filterEntriesToActivePath` so an abandoned
141
+ `/tree` branch contributes nothing, exactly as the task board folds its own inputs.
142
+ Every path the extraction round names is checked against that set and never against
143
+ the filesystem. A file that exists on disk but that this session never opened is
144
+ still an invention, so it is dropped and listed in the review document under
145
+ `dropped (not in this session's read ledger)`.
146
+
147
+ Extracted decisions merge with the session's settled decision board
148
+ (`src/domains/session/decision-board.ts`); board entries win on conflict and are
149
+ marked as settled. Superseded board decisions are history and do not travel.
150
+
151
+ On accept, the new session opens with one `custom` entry of type `handoffSeed`
152
+ carrying the reviewed document, the originating session id, and the goal. It
153
+ projects into the model's replay as one user-role context message labelled as a
154
+ handoff from the named session, on the same seam compaction and branch summaries
155
+ use; it is never written as a fabricated user turn. The old session's
156
+ `skillActivation` entries are replayed into the new session so loaded skills carry
157
+ forward. The old session gains exactly one `custom` entry of type `handoffNote`
158
+ recording the target session id, and is otherwise untouched. Esc during review
159
+ cancels the whole handoff with nothing written in either session.
160
+
161
+ The extraction round itself runs on the out-of-turn seam `/btw` uses: one call
162
+ against the session's live target and model, the compiled message history as
163
+ read-only input, no tools, and no entry in the ledger. Its provider usage is
164
+ reported to `/cost` under a handoffs row and excluded from the turn count.
165
+
130
166
  ### Streaming Turn Settlement During Session Transitions
131
167
 
132
168
  When an operator issues `/new`, `/resume`, `/tree`, or `/fork` while an assistant turn is actively streaming, `settleChatBeforeSessionSwitch` (`src/interactive/session-switch-settlement.ts`) cancels the in-flight stream and awaits completion. This guarantees that partial assistant records and completed tool executions seal cleanly into the active session ledger before the session writer is replaced, preventing orphaned records in new sessions or unanswered prompts in original sessions (#114). Synchronous session transitions when chat is idle continue to execute immediately.
@@ -1,7 +1,7 @@
1
1
  # Skills Marketplace
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive dashboard is located at [docs/html/skills_blueprint.html](html/skills_blueprint.html) (Version: 0.3.6).
4
+ > **Interactive Spec Available:** An interactive dashboard is located at [docs/html/skills_blueprint.html](html/skills_blueprint.html) (Version: 0.3.7).
5
5
 
6
6
  The Skills Hub (`/skill`) shows project skills, user skills, and the marketplace. Every marketplace row comes from the same local lookup that `clio-coder skills install <name>` and `/skill <name>` resolve through, so the hub lists nothing it cannot install.
7
7
 
@@ -28,18 +28,31 @@ skills/ catalog.
28
28
 
29
29
  The CLI reports the same state as `no local skill marketplace catalog or index configured`. A marketplace source that exists but fails (an unreadable index, a broken catalog package) is a diagnostic row in the hub, not a silent omission.
30
30
 
31
+ The same index machinery can also describe agent recipes, prompt templates, and fleet contracts through typed entries and requirements. See [resource-library.md](resource-library.md) for the schema, private catalog, installation roots, and `clio-coder library` commands. Those kinds render on their own tabs in the hub, described below.
32
+
31
33
  ## Using the hub
32
34
 
33
35
  | Key | Action |
34
36
  |---|---|
35
37
  | type | Filter all groups |
36
- | `Enter` | Insert `/skill <name> ` into the editor for the task text |
38
+ | `←`/`→` | Switch tabs |
39
+ | `Enter` | Use the selected row: insert `/skill <name> ` into the editor for the task text, or the invocation the row's kind is called by |
37
40
  | `Tab` | Toggle the detail pane (split layout on wide terminals) |
38
- | `i` | Install the selected marketplace skill into the project scope through the local marketplace resolver |
41
+ | `i` | Install the selected row through the resolver its kind installs by |
39
42
  | `PgUp`/`PgDn` | Scroll the detail pane |
40
43
 
41
44
  Invoking an uninstalled marketplace skill with `/skill <name>` prompts before installing it. `i` runs the same install path eagerly from the hub.
42
45
 
46
+ ## Tabs
47
+
48
+ The hub carries one tab per resource library kind: Skills, Agents, Prompts, and Fleets. `←` and `→` move between them, which is the key vocabulary the Settings Center already uses to move between sections. The frame title names the active tab and the footer states its row count, so the numbers on screen always describe the tab being read. `/skill` opens the hub on Skills. `/library <kind>` opens it on that kind's tab, and `/library` alone opens it on Skills.
49
+
50
+ The Skills tab is unchanged. The other three list the entries of their kind from `discoverLibrary()`, which is the same discovery `clio-coder library list --kind <kind>` reads, so the hub and the CLI never disagree about what exists. Each row carries the entry's origin and version, whether it is installed or available, the short form of its recorded pin hash, and, in the warning token, the names of any requirements it still needs. An entry the catalog refuses outright, because a requirement is missing, malformed, or cyclic, appears as a diagnostic row rather than being omitted.
51
+
52
+ `Enter` uses the selected row. An agent inserts `/run <agent> ` into the composer, a prompt inserts its `/<id> ` invocation, a skill does what the Skills tab does, and a fleet closes the hub and opens the `/fleet run` approval preview for that contract. A row that is not installed says so instead and points at `i`.
53
+
54
+ `i` installs, through the same plan-then-write pair `clio-coder library add` runs. A framed confirmation states every destination path and SHA-256 hash before anything is written, which is the TUI spelling of the CLI's `--yes` gate; `Esc` there leaves every destination untouched. An entry whose requirements are not all installed is refused by name on the first `i`, and a second `i` opens the install-with-requirements confirmation, which names every entry it would write in dependency order.
55
+
43
56
  The CLI `clio-coder skills` commands manage local skill discovery, validation, and
44
57
  creation. Extension resource roots and share archives are documented in
45
58
  [extensions-and-sharing.md](extensions-and-sharing.md); this page owns the TUI
@@ -1,11 +1,11 @@
1
1
  # Tool Usage Reference
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive seven-plane tool atlas and observation envelope truncation/offload calculator is located at [docs/html/tool_usage_blueprint.html](html/tool_usage_blueprint.html) (Version: 0.3.6).
4
+ > **Interactive Spec Available:** An interactive seven-plane tool atlas and observation envelope truncation/offload calculator is located at [docs/html/tool_usage_blueprint.html](html/tool_usage_blueprint.html) (Version: 0.3.7).
5
5
 
6
6
  This is the deep usage reference behind the deliberately terse tool descriptions in the prompt envelope. Toolkit v2 keeps rich guidance out of tool descriptions and puts it here, where `context(scope="docs", query=...)` retrieves it section by section. Each tool below has its own self-contained `##` section covering the argument surface, defaults, truncation and continuation behavior, and concrete calls. Source of truth is `src/tools/`.
7
7
 
8
- In Clio Coder v0.3.6, `src/tools/agent-tools.ts` serves as the single agent-tool adapter across both orchestrator and worker runtimes. Both surfaces resolve their executable tools through the exact same `effectiveToolNames` narrowing, ensuring that attested tool schemas never drift from the tools available at runtime. Tools are keyed strictly by the `ToolName` union with no alias table. Argument leniency for weak-model callers is provided exclusively by per-tool `prepareArguments` normalizers declared on `ToolSpec`.
8
+ In Clio Coder v0.3.7, `src/tools/agent-tools.ts` serves as the single agent-tool adapter across both orchestrator and worker runtimes. Both surfaces resolve their executable tools through the exact same `effectiveToolNames` narrowing, ensuring that attested tool schemas never drift from the tools available at runtime. Tools are keyed strictly by the `ToolName` union with no alias table. Argument leniency for weak-model callers is provided exclusively by per-tool `prepareArguments` normalizers declared on `ToolSpec`.
9
9
 
10
10
  ## Observation envelope: truncation notices, offload, next hints, and the turn budget
11
11
 
@@ -234,8 +234,13 @@ Dispatches one or more tasks to Clio fleet agents and returns per-run receipt su
234
234
  Arguments:
235
235
 
236
236
  - `task` (required for the singular form unless `list:true`). One worker assignment/instruction string. It is distinct from briefing.
237
- - `tasks` (required for the batch form unless `list:true`). Array of task strings or `{task, agent, target, model, cwd, briefing}` objects. Per-item fields override the top-level defaults below. Supplying both `task` and `tasks` is an error.
238
- - `mode` (optional). `parallel` (default) runs items concurrently; `sequential` runs them one at a time, each completing before the next dispatches. A single task always runs down the sequential path.
237
+ - `tasks` (required for the batch form unless `list:true`). Array of task strings or `{task, agent, target, model, cwd, briefing, intent, gate}` objects. Per-item fields override the top-level defaults below. Supplying both `task` and `tasks` is an error.
238
+ - `mode` (optional). `parallel` (default) runs items concurrently; `sequential` runs them one at a time, each completing before the next dispatches. `pipeline`, `compete`, and `council` select their named topologies. A single ordinary task always runs down the sequential path.
239
+ - `roster` (council only). Names one `workers.rosters` entry. Supply exactly one of `roster` or `members`.
240
+ - `members` (council only). Supplies two to five inline `{label,target,model?,thinking?}` entries.
241
+ - `synthesis` (council only). Accepts `none`, `judge`, or `vote`; the default is `none`.
242
+ - `rounds` (council only). Accepts an integer from 1 through 3; the default is 1.
243
+ - `judge` (council only with judge synthesis, or compete). Accepts optional `agent`, `model`, `target`, and `node` route fields.
239
244
  - `detach` (optional boolean). For parallel fan-out, returns the durable batch id and assignment ids after registration while the shared event consumer continues in the background. An assignment id equals its first attempt's run id. This is the parent model's route to mid-run monitor/steer; ordinary synchronous, sequential, and pipeline calls auto-wait for each assignment's terminal attempt.
240
245
  - `list` (optional boolean). Returns the agent catalog instead of dispatching.
241
246
  - `agent` (optional). Default agent recipe for items that do not name one; default `coder`. `agent_id` is accepted as an alias inside items.
@@ -248,13 +253,15 @@ Arguments:
248
253
  - `cwd` (optional). Default agent working directory.
249
254
  - `timeout_ms` (optional). Aborts the whole dispatch; in sequential mode remaining tasks are skipped and the skip is reported.
250
255
  - `briefing` (optional string, top-level default or per-task override). Parent-composed context/data, not worker instructions: it cannot replace `task`. It is trimmed and omitted when blank, rejected above 12,000 UTF-8 bytes, sent as its own delimited untrusted dynamic message, and retained only as byte/hash provenance. The shared value applies to string tasks and object tasks without an override; an object-level briefing wins.
256
+ - `intent` (optional object, top-level default or per-task override). Declares `read_roots`, `write_roots`, `relevant_paths`, `expected_outputs`, and `verification`. Path arrays contain normalized repository-relative POSIX paths. Verification entries contain a declared `check` id and optional `timeout_ms`; ids are resolved from package scripts and `.clio-coder/verifiers.yaml` before approval. Checks are ids, not shell commands.
257
+ - `gate` (optional string, top-level default or per-task override). Exact shorthand for `intent.verification=[{check: gate}]`. Supplying it together with `intent.verification` is refused.
251
258
  - `max_output_bytes` (optional). Summary byte budget; default 20000, split across runs with at least 1024 bytes each.
252
259
 
253
260
  Argument tolerance: `tasks` sent as a JSON string is parsed and a single object or bare string is wrapped into an array. The top-level singular `task` is first-class. Briefing-only calls fail with guidance that briefing is context and cannot replace a task.
254
261
 
255
262
  Output is one batch-shaped summary even for a single task: a header `dispatch (<mode>) total=N failed=M`, the assignment id list, then one terminal-attempt receipt line per assignment (run id, agent, exit code, target, model, tokens, receipt path, verification state, failure message if any) followed by the worker's final assistant text. `details = {mode, assignmentIds, receiptCount, failedCount, runs[]}`, and each `runs[]` entry carries distinct `assignmentId` and terminal `runId` fields plus the structured `verification` state and `receiptIntegrity` result. There is no `runIds` compatibility alias. Any terminal attempt with a nonzero exit turns the whole result into an error carrying the same summary. A run that succeeded without a single successful tool call carries a `note=` marker; do not treat such a run as validated work.
256
263
 
257
- The summary separates four things that must never be conflated: `receipt_integrity=verified/v15/sha256` comes only from verification against the ledger; `evidence_verification=<state>/<basis>` describes validation evidence; `briefing=bytes:<n> sha256:<hash>` authenticates parent-supplied data; and `project_context=...` authenticates the independently rendered bounded project message. A tampered receipt renders a head-anchored `RECEIPT INTEGRITY FAILED` banner. A read-only Scout can have verified integrity with `not_applicable/read-only-agent` evidence. Missing briefing is `briefing=none`, never a project-context hash.
264
+ The summary separates five things that must never be conflated: `receipt_integrity=verified/v19/sha256` comes only from verification against the ledger; `host_verification=<status>` describes orchestrator-executed declared checks; `evidence_verification=<state>/<basis>` describes worker-tool validation evidence; `briefing=bytes:<n> sha256:<hash>` authenticates parent-supplied data; and `project_context=...` authenticates the independently rendered bounded project message. A tampered receipt renders a head-anchored `RECEIPT INTEGRITY FAILED` banner. A read-only Scout can have verified integrity with `not_applicable/read-only-agent` evidence. Missing briefing is `briefing=none`, never a project-context hash.
258
265
 
259
266
  Exit zero is insufficient without a durable deliverable. A successful native or ACP run must seal a nonempty `output.state="final"`. Otherwise it fails with `worker_final_output_missing`; any unfinished text remains partial diagnostics and automatic retry is suppressed. Live tool-use preambles never replace a missing receipt answer.
260
267
 
@@ -262,11 +269,11 @@ Sealed receipts are the durable evidence; worker prose remains advisory until ve
262
269
 
263
270
  ```text
264
271
  dispatch(list=true)
265
- dispatch(agent="debugger", task="Adversarially verify the strict v15 receipt boundary", briefing="Prior receipt R1 cited receipt-integrity.ts and left these claims unresolved", detach=true)
272
+ dispatch(agent="debugger", task="Adversarially verify the strict v19 receipt boundary", briefing="Prior receipt R1 cited receipt-integrity.ts and left these claims unresolved", detach=true)
266
273
  dispatch(tasks=["Run the contract tests in tests/contracts/dispatch.test.ts and report each failure with its assertion"])
267
274
  dispatch(tasks=[
268
275
  {agent: "researcher", task: "Map every caller of finalizeObservation and summarize the envelope shapes"},
269
- {agent: "coder", task: "Fix the failing assertion in tests/contracts/safety.test.ts; run verify(check=\"test\") before finishing"}
276
+ {agent: "coder", task: "Fix the failing assertion in tests/contracts/safety.test.ts", intent: {write_roots: ["tests/contracts"], verification: [{check: "test"}]}}
270
277
  ], mode="parallel")
271
278
  dispatch(tasks=["Refactor step 1", "Refactor step 2"], mode="sequential", timeout_ms=600000)
272
279
  ```
@@ -1,7 +1,7 @@
1
1
  # Trace store contract
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive trace database viewer, schema inspector, and SQL query validator simulator is located at [docs/html/trace_blueprint.html](html/trace_blueprint.html) (Version: 0.3.6).
4
+ > **Interactive Spec Available:** An interactive trace database viewer, schema inspector, and SQL query validator simulator is located at [docs/html/trace_blueprint.html](html/trace_blueprint.html) (Version: 0.3.7).
5
5
 
6
6
  Clio's trace database is a rebuildable, queryable mirror. Receipts, session
7
7
  ledgers, gate artifacts, and evidence remain the source of truth. Removing
@@ -1,6 +1,6 @@
1
1
  # Troubleshooting & Error Remediation
2
2
 
3
- This guide provides concrete, actionable remediation procedures for operational errors, permission denials, target connection failures, and system diagnostics in Clio Coder `v0.3.6`.
3
+ This guide provides concrete, actionable remediation procedures for operational errors, permission denials, target connection failures, and system diagnostics in Clio Coder `v0.3.7`.
4
4
 
5
5
  ---
6
6
 
@@ -1,7 +1,7 @@
1
1
  # Clio TUI Design System
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive color/glyph token laboratory and terminal transcript preview renderer is located at [docs/html/tui_design_blueprint.html](html/tui_design_blueprint.html) (Version: 0.3.6).
4
+ > **Interactive Spec Available:** An interactive color/glyph token laboratory and terminal transcript preview renderer is located at [docs/html/tui_design_blueprint.html](html/tui_design_blueprint.html) (Version: 0.3.7).
5
5
 
6
6
  This document is the reference specification for the Clio Coder TUI visual layout, styling, and behavior. It describes color semantics, the glyph vocabulary, structural recipes, and state choreography for all surfaces under [src/interactive/](../src/interactive/).
7
7
 
@@ -1,7 +1,7 @@
1
1
  # Worker Dispatch Mechanics
2
2
 
3
3
  > [!TIP]
4
- > **Interactive Spec Available:** An interactive NDJSON protocol timeline stream and heartbeat watchdog simulator is located at [docs/html/worker_dispatch_blueprint.html](html/worker_dispatch_blueprint.html) (Version: 0.3.6).
4
+ > **Interactive Spec Available:** An interactive NDJSON protocol timeline stream and heartbeat watchdog simulator is located at [docs/html/worker_dispatch_blueprint.html](html/worker_dispatch_blueprint.html) (Version: 0.3.7).
5
5
 
6
6
  This document describes the design and lifecycle of Clio Coder dispatched workers, focusing on the spawning sequence, execution isolation, the standard input/output NDJSON communication loop, and permission escalation routing.
7
7
 
@@ -207,11 +207,11 @@ The coordinator classifies failures into 13 explicit categories (`src/domains/di
207
207
 
208
208
  ### 5.2 Canonical Receipt Integrity Serialization
209
209
 
210
- Receipts carry exactly one integrity version (`RUN_RECEIPT_INTEGRITY_VERSION = 15`); any other version is invalid. It computes a cryptographic SHA-256 digest over a strictly sorted, canonical JSON representation (`serializeCanonical` in `src/domains/dispatch/receipt-integrity.ts`).
210
+ Receipts carry exactly one integrity version (`RUN_RECEIPT_INTEGRITY_VERSION = 19`); any other version is invalid. It computes a cryptographic SHA-256 digest over a strictly sorted, canonical JSON representation (`serializeCanonical` in `src/domains/dispatch/receipt-integrity.ts`).
211
211
 
212
212
  - **Object Key Sorting**: Keys are sorted lexicographically before serialization (`Object.keys(obj).sort()`).
213
213
  - **Strict Primitive Handling**: `undefined` object properties are omitted; non-finite numbers (`NaN`, `Infinity`) or `bigint` throw an explicit serialization error.
214
- - **Coverage**: Includes every current receipt field and reconstructible ledger field, including route intent/decision/quality, execution role, worker identity, result-contract conformance, node/reroute/gate/plan provenance, briefing, steering, and `outcomeCode`.
214
+ - **Coverage**: Includes every current receipt field and reconstructible ledger field, including route intent/decision/quality, execution role, worker identity, result-contract conformance, node/reroute/gate/plan/council provenance, briefing, steering, task worktree application, and `outcomeCode`.
215
215
 
216
216
  Integrity is only the artifact-integrity axis of the canonical trust status.
217
217
  The other axes are validation grounding, independent review, context
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iowarp/clio-coder",
3
- "version": "0.3.6",
3
+ "version": "0.3.7",
4
4
  "description": "Coding agent for HPC and scientific-software developers, part of IOWarp's CLIO ecosystem of agentic science.",
5
5
  "keywords": [
6
6
  "ai",
@@ -0,0 +1,37 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { discoverDeclaredProjectCommands } from "../tools/verify/authoring.js";
4
+
5
+ function quoted(value: string): string {
6
+ return JSON.stringify(value);
7
+ }
8
+
9
+ export function runFleetCommands(args: ReadonlyArray<string>): number {
10
+ if (args.length !== 1 || args[0] !== "init") {
11
+ process.stderr.write("clio-coder fleet: commands: usage: clio-coder fleet commands init\n");
12
+ return 2;
13
+ }
14
+ const destination = join(process.cwd(), ".clio-coder", "fleets", "commands.yaml");
15
+ if (existsSync(destination)) {
16
+ process.stderr.write(`clio-coder fleet: commands init: destination already exists: ${destination}\n`);
17
+ return 2;
18
+ }
19
+ const entries = discoverDeclaredProjectCommands(process.cwd());
20
+ const lines = [
21
+ "# Draft fleet command registry.",
22
+ "# Every entry was discovered from a project declaration. Uncommenting an entry confirms its exact invocation.",
23
+ "# version: 1",
24
+ "# commands:",
25
+ ];
26
+ for (const entry of entries) {
27
+ lines.push(
28
+ `# ${entry.id}:`,
29
+ `# argv: [${entry.command.map(quoted).join(", ")}]`,
30
+ `# description: ${quoted(`Discovered from ${entry.provenance.path}: ${entry.provenance.detail}`)}`,
31
+ );
32
+ }
33
+ mkdirSync(dirname(destination), { recursive: true });
34
+ writeFileSync(destination, `${lines.join("\n")}\n`, { flag: "wx" });
35
+ process.stdout.write(`${destination}\n`);
36
+ return 0;
37
+ }