@iowarp/clio-coder 0.3.4 → 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.
- package/CHANGELOG.md +65 -2
- package/CONTRIBUTING.md +6 -6
- package/README.md +16 -5
- package/dist/{acp-S5R4RR5B.js → acp-SK4MD6MM.js} +11 -11
- package/dist/{agents-P6DMMVZY.js → agents-2FN2K6ME.js} +33 -26
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-2XCZLPKS.js → auth-QIYZWM5I.js} +15 -15
- package/dist/{chunk-EKMEHE4H.js → chunk-33YXPOE3.js} +2 -3
- package/dist/{chunk-VAWWTKDP.js → chunk-3HAPLH5M.js} +11 -11
- package/dist/{chunk-YCWGATWI.js → chunk-465YSENW.js} +3 -3
- package/dist/{chunk-4OC57DA6.js → chunk-4DGYLA73.js} +53 -2
- package/dist/{chunk-UZHIZC5S.js → chunk-4DWFMQDR.js} +61 -76
- package/dist/{chunk-ZWMF7253.js → chunk-5C3AQNDW.js} +328 -9
- package/dist/{chunk-22NAGB7X.js → chunk-5C77SEEY.js} +5 -94
- package/dist/{chunk-WPQLXFOZ.js → chunk-5FR74PWO.js} +3 -2
- package/dist/{chunk-35MKKU5R.js → chunk-5UJ6ECTS.js} +18 -10
- package/dist/{chunk-BRXQQJFP.js → chunk-6M7VS3J3.js} +571 -50
- package/dist/{chunk-QQK64KLB.js → chunk-6TUKSZVF.js} +141 -23
- package/dist/{chunk-N4CZJQRK.js → chunk-AB4XIIVB.js} +8 -6
- package/dist/{chunk-KRPY7NTG.js → chunk-BMWK7ZIZ.js} +14 -20
- package/dist/{chunk-4BPJXDWC.js → chunk-C4JBQ5SR.js} +30 -14
- package/dist/{chunk-ZYKPLLNQ.js → chunk-CEYBNUGC.js} +821 -83
- package/dist/{chunk-VEZEGCGW.js → chunk-D4MDIG46.js} +20 -18
- package/dist/chunk-DJNLUABN.js +843 -0
- package/dist/{chunk-BP4OYD6A.js → chunk-DMD2AGVS.js} +21 -2
- package/dist/{chunk-KOHPCX4K.js → chunk-DOOEX22V.js} +2 -2
- package/dist/chunk-DQA7QLMD.js +123 -0
- package/dist/chunk-DR52UMZW.js +21 -0
- package/dist/{chunk-3HZ5RWN2.js → chunk-EBEFWSGL.js} +9 -7
- package/dist/{chunk-EDRHSCIE.js → chunk-EELBMBT6.js} +128 -13
- package/dist/{chunk-HV5X7OR2.js → chunk-EOOQZZDE.js} +16 -14
- package/dist/{chunk-WR67VIZY.js → chunk-FOT2FX5J.js} +63 -5
- package/dist/{chunk-BPGS2WCQ.js → chunk-GEYXPTRF.js} +2 -1
- package/dist/{chunk-FYYLNIL5.js → chunk-GH5622CP.js} +2 -2
- package/dist/{chunk-BEY543CS.js → chunk-GOXNB3AO.js} +5 -2
- package/dist/chunk-GWS3VEIW.js +195 -0
- package/dist/{chunk-G4BMMOKF.js → chunk-HVDIIIQW.js} +2 -2
- package/dist/chunk-HWUFFB6L.js +83 -0
- package/dist/{chunk-X6COSD2O.js → chunk-J7PIKKWC.js} +8 -436
- package/dist/{chunk-NILBFAPG.js → chunk-JNXPYBB4.js} +2 -2
- package/dist/{chunk-4VP4KH3K.js → chunk-JRIO5UD2.js} +4 -4
- package/dist/{chunk-K6WL7QZT.js → chunk-JTSEDYVQ.js} +7 -7
- package/dist/{chunk-QKMUKYO7.js → chunk-KCMKRQX4.js} +236 -84
- package/dist/chunk-KZ2H5X4G.js +1026 -0
- package/dist/{chunk-A2GZF7DC.js → chunk-LADCF22A.js} +13 -13
- package/dist/chunk-LCGCVYZ4.js +57 -0
- package/dist/chunk-M4AKACEO.js +382 -0
- package/dist/{chunk-POHLU5DW.js → chunk-M6L6IDJG.js} +3 -3
- package/dist/{chunk-4JUF2NNX.js → chunk-MXI6J5JF.js} +7 -7
- package/dist/{chunk-X4RCMKVQ.js → chunk-NDINPTJ4.js} +2 -2
- package/dist/{chunk-TTNYS3EA.js → chunk-OB5HIGJY.js} +1 -1
- package/dist/{chunk-7RXG6QRZ.js → chunk-OBMAI2DP.js} +61 -840
- package/dist/{chunk-5M54SPOL.js → chunk-ODFEOB4F.js} +161 -5
- package/dist/chunk-PD3MESLB.js +242 -0
- package/dist/{chunk-ED4KHGC3.js → chunk-PPAMZ32Z.js} +9 -2
- package/dist/{chunk-VMNQ6OZA.js → chunk-QCTRSGHQ.js} +963 -786
- package/dist/chunk-RVG5JXAL.js +41 -0
- package/dist/{chunk-RD5U66HV.js → chunk-SROCI7ZU.js} +7 -7
- package/dist/{chunk-MFFY33HR.js → chunk-THKY7CD7.js} +466 -205
- package/dist/{chunk-34475P3I.js → chunk-TSHXZTOQ.js} +5 -4
- package/dist/{chunk-PCZJO5TI.js → chunk-UFQ3F4FW.js} +13 -178
- package/dist/{chunk-AD2SYQYC.js → chunk-UHXRNZ2J.js} +121 -3
- package/dist/chunk-UND3GU2L.js +103 -0
- package/dist/{chunk-QQL5RT5M.js → chunk-UUANF5CR.js} +2323 -2114
- package/dist/{chunk-VJWL6YS5.js → chunk-UUVG37B4.js} +2 -2
- package/dist/chunk-UVDSQ6LW.js +472 -0
- package/dist/{chunk-QWU7ZBO7.js → chunk-VQNODYQ4.js} +215 -56
- package/dist/chunk-VREKEFLL.js +37 -0
- package/dist/{chunk-2TZWSW76.js → chunk-WHGPSPT5.js} +2 -2
- package/dist/{chunk-TW3WDMVS.js → chunk-WHJYKASB.js} +2 -2
- package/dist/{chunk-MEQ45TQ4.js → chunk-WJHBC77E.js} +21 -7
- package/dist/{chunk-HXG4IURW.js → chunk-X2KV5FXT.js} +2 -2
- package/dist/{chunk-YHZX5GEU.js → chunk-XAKHZX5N.js} +2 -2
- package/dist/{chunk-2LZI5CAG.js → chunk-XEGB6BCN.js} +228 -36
- package/dist/{chunk-E25LMLRW.js → chunk-YD734TPH.js} +2 -2
- package/dist/{verifiers-4UUM6TEE.js → chunk-YTYFXUI3.js} +121 -372
- package/dist/{chunk-3JLKSKD7.js → chunk-ZGH7FGS5.js} +17 -7
- package/dist/{chunk-VSNATDE6.js → chunk-ZZMN5OM4.js} +2 -2
- package/dist/cli/index.js +34 -32
- package/dist/{clio-J5JIOIDS.js → clio-WBVQEBKO.js} +7 -7
- package/dist/{code-nav-AXCXSBHX.js → code-nav-FGGFIE7L.js} +7 -7
- package/dist/codewiki/build-worker.js +4 -4
- package/dist/{components-KELWS457.js → components-F7OEATSO.js} +5 -5
- package/dist/{config-OEBMIN2U.js → config-TRBL3RCF.js} +48 -41
- package/dist/{configure-PUQOSIXQ.js → configure-OLCVPHNM.js} +17 -17
- package/dist/{context-URSXPBCK.js → context-MJIJ6GOX.js} +12 -12
- package/dist/{context-EKDCKUUZ.js → context-WFPKQSM6.js} +26 -9
- package/dist/{context-MGSE4Z2T.js → context-XEWE3MOJ.js} +44 -37
- package/dist/{context-clear-KDAJRNUK.js → context-clear-KNOS2JPB.js} +44 -37
- package/dist/{context-index-BZ4UYMTC.js → context-index-SSR5ECNE.js} +3 -3
- package/dist/{context-working-set-SBKMPPI2.js → context-working-set-EUXAZI6N.js} +14 -13
- package/dist/{dispatch-runner-MSWN72NK.js → dispatch-runner-B7MTOVKL.js} +321 -60
- package/dist/{docs-2C2LTVT2.js → docs-FLJTIDSE.js} +5 -5
- package/dist/{doctor-7BSE27PJ.js → doctor-RN4YKO2X.js} +15 -15
- package/dist/{eval-IZGDOO4H.js → eval-RUBJVSNQ.js} +52 -236
- package/dist/{evidence-SR7WXB5B.js → evidence-JZNBUOQZ.js} +39 -33
- package/dist/{evolve-K7VE2CBX.js → evolve-FJVC4KKI.js} +39 -33
- package/dist/{extensions-QVDOHDGJ.js → extensions-IQL36S7K.js} +5 -5
- package/dist/{fleet-7XMJNQNF.js → fleet-BDKYJFCP.js} +243 -370
- package/dist/fleet-commands-ZFIWZSB3.js +70 -0
- package/dist/fleet-graph-Y6HPXIVF.js +125 -0
- package/dist/fleet-new-RDVJLHHH.js +48 -0
- package/dist/{fleet-preflight-AQNAH644.js → fleet-preflight-BHSNPBMH.js} +2 -2
- package/dist/fleet-validate-BIYREGIK.js +79 -0
- package/dist/{init-JGNPAYXT.js → init-LQUB5COQ.js} +57 -48
- package/dist/library-NJAHIGG4.js +217 -0
- package/dist/memory-OG6HOYKM.js +472 -0
- package/dist/{models-ZMMLFJNN.js → models-5ZG5XY7J.js} +23 -22
- package/dist/{monitor-2F3T5KHP.js → monitor-TJ7AMTGB.js} +69 -35
- package/dist/{orchestrator-ORHT43JB.js → orchestrator-WZYB54DM.js} +4868 -1189
- package/dist/{paths-UXLN5YYZ.js → paths-XUC7GS6E.js} +5 -5
- package/dist/{reset-NXGTYNUO.js → reset-PXQT45IY.js} +8 -8
- package/dist/{run-RF4WJGMT.js → run-FQ74YF62.js} +82 -62
- package/dist/{share-UT3W6E4M.js → share-FW7SVCL3.js} +34 -10
- package/dist/{skills-PSACKC5Q.js → skills-7E7IRB3R.js} +25 -9
- package/dist/{skills-eval-WJSI55RZ.js → skills-eval-LI75W6OK.js} +43 -35
- package/dist/{targets-PIIRAOYS.js → targets-4CIFKCTW.js} +27 -24
- package/dist/{terminal-lease-ULWXWNVY.js → terminal-lease-WUZY7ZV5.js} +5 -4
- package/dist/{uninstall-FZCQCDKC.js → uninstall-7FV7IP4E.js} +5 -5
- package/dist/{upgrade-346TZ6AV.js → upgrade-K2HVIVMQ.js} +21 -20
- package/dist/{usage-6KKXR32N.js → usage-GTZELZQX.js} +159 -59
- package/dist/verifiers-RLAHT27O.js +336 -0
- package/dist/{verify-X5HDROLA.js → verify-BX3BRKH5.js} +7 -6
- package/dist/{wiki-generate-7STOCIFZ.js → wiki-generate-ASIFASCN.js} +58 -48
- package/dist/worker/entry.js +98 -84
- package/dist/{workspace-G4ZWUIPR.js → workspace-ZJ6BFM3Q.js} +4 -4
- package/docs/README.md +4 -3
- package/docs/acp.md +1 -1
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +2 -2
- package/docs/artifact-placement.md +1 -2
- package/docs/artifact-versions.md +10 -6
- package/docs/built-in-agents.md +26 -2
- package/docs/capacity-and-scheduling.md +1 -1
- package/docs/commands-and-modes.md +90 -8
- package/docs/configuration-and-targets.md +90 -2
- package/docs/context-engine.md +4 -2
- package/docs/context-working-set.md +4 -4
- package/docs/development-pipeline.md +1 -1
- package/docs/dispatch-architecture-rationale.md +1 -1
- package/docs/documentation-coverage.md +4 -4
- package/docs/documentation-guide.md +4 -4
- package/docs/eval-runner.md +1 -1
- package/docs/evals-internal.md +4 -45
- package/docs/evidence-and-memory.md +70 -10
- package/docs/evolution.md +1 -1
- package/docs/exit-codes-and-output.md +4 -1
- package/docs/extensions-and-sharing.md +6 -2
- package/docs/fleet-demo-runbook.md +2 -2
- package/docs/fleet-dispatch.md +224 -11
- package/docs/git-commit-provenance.md +2 -2
- package/docs/glossary.md +1 -1
- package/docs/installation-and-lifecycle.md +2 -2
- package/docs/middleware-and-components.md +20 -2
- package/docs/model-catalog.md +1 -1
- package/docs/observability.md +55 -8
- package/docs/proactive-memory.md +26 -16
- package/docs/prompt-envelope-and-tools.md +4 -2
- package/docs/provider-adapter-cookbook.md +1 -1
- package/docs/release-cut-checklist.md +83 -65
- package/docs/resource-library.md +59 -0
- package/docs/safety-model.md +29 -7
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +37 -1
- package/docs/skills-marketplace.md +16 -3
- package/docs/tool-usage.md +14 -7
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +1 -1
- package/docs/tui-design.md +38 -4
- package/docs/worker-dispatch-mechanics.md +3 -3
- package/package.json +7 -4
- package/src/cli/agents.ts +2 -3
- package/src/cli/argv.ts +14 -1
- package/src/cli/fleet-commands.ts +37 -0
- package/src/cli/fleet-graph.ts +102 -0
- package/src/cli/fleet-new.ts +36 -0
- package/src/cli/fleet-preflight.ts +121 -0
- package/src/cli/fleet-validate.ts +30 -0
- package/src/cli/fleet.ts +188 -335
- package/src/cli/index.ts +4 -2
- package/src/cli/library.ts +190 -0
- package/src/cli/memory.ts +272 -10
- package/src/cli/modes/json-stream.ts +2 -2
- package/src/cli/modes/print.ts +12 -1
- package/src/cli/run.ts +22 -2
- package/src/cli/share.ts +13 -1
- package/src/cli/targets.ts +12 -3
- package/src/cli/usage.ts +160 -20
- package/src/core/bus-events.ts +7 -0
- package/src/core/commit-attribution.ts +4 -4
- package/src/core/config.ts +130 -0
- package/src/core/defaults.ts +81 -0
- package/src/core/response-model-id.ts +134 -0
- package/src/core/toml.ts +62 -0
- package/src/core/workspace-files.ts +0 -1
- package/src/domains/agents/builtins/architect.md +2 -1
- package/src/domains/agents/builtins/oracle.md +33 -0
- package/src/domains/agents/catalog.ts +18 -5
- package/src/domains/agents/fleet-contract.ts +278 -16
- package/src/domains/agents/index.ts +14 -0
- package/src/domains/agents/recipe.ts +54 -14
- package/src/domains/agents/result-contract.ts +242 -5
- package/src/domains/config/classify.ts +4 -0
- package/src/domains/context/bootstrap.ts +36 -27
- package/src/domains/context/project-metadata.ts +19 -63
- package/src/domains/context/prompt-context.ts +8 -0
- package/src/domains/context/working-set/policies/index.ts +3 -4
- package/src/domains/dispatch/active-route-planner.ts +14 -0
- package/src/domains/dispatch/backoff.ts +2 -1
- package/src/domains/dispatch/budget-envelope.ts +396 -0
- package/src/domains/dispatch/capability-match.ts +1 -0
- package/src/domains/dispatch/checkout-writer-lease.ts +175 -0
- package/src/domains/dispatch/contract.ts +36 -0
- package/src/domains/dispatch/delegation-plan.ts +167 -0
- package/src/domains/dispatch/execution-plan.ts +76 -5
- package/src/domains/dispatch/execution-role.ts +3 -1
- package/src/domains/dispatch/execution-scheduler.ts +183 -67
- package/src/domains/dispatch/extension.ts +339 -36
- package/src/domains/dispatch/fleet-gate.ts +14 -0
- package/src/domains/dispatch/fleet-plan.ts +63 -3
- package/src/domains/dispatch/fleet-run.ts +737 -0
- package/src/domains/dispatch/gate-role-prompts.ts +9 -0
- package/src/domains/dispatch/host-verification.ts +178 -0
- package/src/domains/dispatch/index.ts +38 -0
- package/src/domains/dispatch/intent.ts +159 -0
- package/src/domains/dispatch/orphan-recovery.ts +1 -0
- package/src/domains/dispatch/receipt-integrity.ts +12 -4
- package/src/domains/dispatch/state.ts +37 -3
- package/src/domains/dispatch/types.ts +61 -9
- package/src/domains/dispatch/validation.ts +80 -6
- package/src/domains/dispatch/worker-spawn.ts +14 -3
- package/src/domains/eval/metrics/evidence.ts +0 -116
- package/src/domains/eval/metrics/invariants.ts +1 -1
- package/src/domains/eval/runners/clio-run.ts +1 -10
- package/src/domains/eval/runners/external-command.ts +2 -29
- package/src/domains/eval/schema/suite.ts +0 -7
- package/src/domains/eval/suites/run.ts +1 -7
- package/src/domains/evidence/trust-status.ts +10 -1
- package/src/domains/memory/index.ts +22 -0
- package/src/domains/memory/operations.ts +58 -1
- package/src/domains/memory/promotion.ts +281 -0
- package/src/domains/memory/prompt-section.ts +25 -5
- package/src/domains/memory/proposal.ts +51 -7
- package/src/domains/memory/task-bank.ts +3 -2
- package/src/domains/memory/task-memory-handoff.ts +181 -24
- package/src/domains/memory/task-memory-policy.ts +3 -1
- package/src/domains/memory/types.ts +37 -0
- package/src/domains/memory/validate.ts +178 -0
- package/src/domains/middleware/index.ts +15 -0
- package/src/domains/middleware/memory-intervention.ts +35 -25
- package/src/domains/middleware/runtime.ts +6 -0
- package/src/domains/middleware/skills-reminder.ts +19 -4
- package/src/domains/middleware/stalled-turn.ts +43 -1
- package/src/domains/middleware/types.ts +10 -0
- package/src/domains/middleware/watchdog.ts +281 -0
- package/src/domains/observability/contract.ts +9 -2
- package/src/domains/observability/cost.ts +31 -4
- package/src/domains/observability/extension.ts +2 -2
- package/src/domains/observability/index.ts +10 -0
- package/src/domains/observability/out-of-turn-usage.ts +223 -0
- package/src/domains/providers/index.ts +3 -0
- package/src/domains/providers/model-discovery.ts +9 -0
- package/src/domains/providers/runtime-resolution.ts +38 -1
- package/src/domains/providers/runtimes/common/probe-helpers.ts +97 -16
- package/src/domains/providers/types/context-window-slots.ts +18 -0
- package/src/domains/providers/types/runtime-descriptor.ts +3 -1
- package/src/domains/resources/index.ts +20 -0
- package/src/domains/resources/library.ts +326 -0
- package/src/domains/resources/skills/marketplace.ts +37 -12
- package/src/domains/safety/call-target.ts +211 -14
- package/src/domains/safety/decision-presentation.ts +268 -0
- package/src/domains/safety/redaction.ts +73 -0
- package/src/domains/session/context-ledger.ts +10 -1
- package/src/domains/session/decision-board.ts +4 -0
- package/src/domains/session/entries.ts +3 -0
- package/src/domains/session/handoff.ts +629 -0
- package/src/domains/session/history.ts +68 -19
- package/src/domains/session/usage.ts +24 -7
- package/src/domains/share/archive.ts +67 -2
- package/src/engine/acp/event-mapper.ts +7 -0
- package/src/engine/acp/server.ts +29 -2
- package/src/engine/apis/lmstudio.ts +25 -4
- package/src/engine/apis/openai-completions.ts +147 -22
- package/src/engine/claude/sdk-runtime.ts +8 -2
- package/src/engine/claude/tool-safety.ts +13 -0
- package/src/engine/loop-guard.ts +27 -3
- package/src/engine/worker-events.ts +4 -3
- package/src/engine/worker-runtime.ts +59 -54
- package/src/entry/orchestrator.ts +55 -1
- package/src/interactive/bus-notices.ts +26 -0
- package/src/interactive/chat-loop-messages.ts +22 -0
- package/src/interactive/chat-loop.ts +248 -1
- package/src/interactive/chat-renderer.ts +41 -3
- package/src/interactive/clio-editor.ts +44 -7
- package/src/interactive/context-overlay.ts +43 -5
- package/src/interactive/cost-overlay.ts +70 -11
- package/src/interactive/council-dispatch.ts +30 -0
- package/src/interactive/council-grid.ts +213 -0
- package/src/interactive/council.ts +99 -0
- package/src/interactive/dispatch-board.ts +471 -50
- package/src/interactive/fleet-run-preview.ts +307 -0
- package/src/interactive/footer/notifications.ts +219 -0
- package/src/interactive/footer/widgets.ts +13 -0
- package/src/interactive/handoff-round.ts +56 -0
- package/src/interactive/interactive-application.ts +49 -2
- package/src/interactive/interactive-event-projection.ts +9 -1
- package/src/interactive/interactive-input-runtime.ts +11 -1
- package/src/interactive/interactive-presentation.ts +11 -1
- package/src/interactive/interactive-slash-runtime.ts +52 -2
- package/src/interactive/interactive-subscriptions.ts +14 -2
- package/src/interactive/memory-overlay.ts +89 -4
- package/src/interactive/oracle.ts +179 -0
- package/src/interactive/overlay-ask-user-lifecycle.ts +7 -1
- package/src/interactive/overlay-frame.ts +5 -2
- package/src/interactive/overlay-general-openers.ts +230 -2
- package/src/interactive/overlay-key-routing.ts +58 -2
- package/src/interactive/overlay-lifecycle.ts +52 -5
- package/src/interactive/overlay-permission-lifecycle.ts +33 -8
- package/src/interactive/overlay-resource-openers.ts +11 -3
- package/src/interactive/overlay-session-lifecycle.ts +234 -2
- package/src/interactive/overlay-transitions.ts +11 -0
- package/src/interactive/overlays/ask-user.ts +74 -30
- package/src/interactive/overlays/decisions.ts +3 -1
- package/src/interactive/overlays/fleet-run-approval.ts +208 -0
- package/src/interactive/overlays/handoff-review.ts +185 -0
- package/src/interactive/overlays/library-install-confirm.ts +151 -0
- package/src/interactive/overlays/list-overlay.ts +168 -2
- package/src/interactive/overlays/settings.ts +101 -4
- package/src/interactive/overlays/side-question.ts +139 -0
- package/src/interactive/overlays/skills-hub.ts +401 -15
- package/src/interactive/permission-hint.ts +35 -0
- package/src/interactive/permission-overlay.ts +95 -45
- package/src/interactive/renderers/tool-execution.ts +19 -49
- package/src/interactive/session-last-turn.ts +8 -1
- package/src/interactive/session-usage-reseed.ts +36 -10
- package/src/interactive/side-question.ts +171 -0
- package/src/interactive/slash-commands.ts +434 -7
- package/src/interactive/slash-spec.ts +19 -6
- package/src/interactive/status/summary.ts +5 -0
- package/src/interactive/status/types.ts +5 -0
- package/src/interactive/terminal-lease.ts +1 -0
- package/src/interactive/theme/tokens.ts +30 -0
- package/src/interactive/turn-context.ts +96 -23
- package/src/interactive/turn-middleware.ts +16 -1
- package/src/interactive/turn-runtime.ts +37 -8
- package/src/interactive/turn-state.ts +3 -0
- package/src/interactive/watchdog-run.ts +75 -0
- package/src/interactive/worker-progress.ts +440 -0
- package/src/interactive/worker-share.ts +56 -1
- package/src/interactive/worker-stream.ts +58 -110
- package/src/tools/agent-tools.ts +28 -3
- package/src/tools/ask-user.ts +21 -1
- package/src/tools/bootstrap.ts +3 -0
- package/src/tools/compete-worktrees.ts +13 -79
- package/src/tools/context/index.ts +2 -2
- package/src/tools/dispatch-admission.ts +242 -8
- package/src/tools/dispatch-arguments.ts +65 -1
- package/src/tools/dispatch-event-text.ts +19 -0
- package/src/tools/dispatch-plan.ts +136 -6
- package/src/tools/dispatch-runner.ts +319 -13
- package/src/tools/dispatch-types.ts +20 -1
- package/src/tools/dispatch.ts +96 -3
- package/src/tools/monitor.ts +31 -0
- package/src/tools/profiles.ts +18 -4
- package/src/tools/registry.ts +15 -5
- package/src/tools/result-disposition.ts +156 -0
- package/src/tools/result-shaping.ts +59 -1
- package/src/tools/task-worktree.ts +238 -0
- package/src/tools/verify/authoring.ts +116 -55
- package/src/tools/verify/scripts.ts +62 -0
- package/src/tools/worker-evidence.ts +21 -1
- package/src/worker/spec-contract.ts +44 -3
- package/dist/chunk-EFADSJET.js +0 -18
- package/dist/chunk-HC4CLZ2Y.js +0 -68
- package/dist/memory-4ALKDJ4Q.js +0 -246
- package/src/domains/eval/metrics/chaos-stream.ts +0 -93
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# Evidence Corpus and Long-Term Memory
|
|
2
2
|
|
|
3
3
|
> [!TIP]
|
|
4
|
-
> **Interactive Spec Available:** An interactive memory lifecycle dashboard and simulator is located at [docs/html/memory_blueprint.html](html/memory_blueprint.html) (Version: 0.3.
|
|
4
|
+
> **Interactive Spec Available:** An interactive memory lifecycle dashboard and simulator is located at [docs/html/memory_blueprint.html](html/memory_blueprint.html) (Version: 0.3.7). Use it to design, validate, and simulate memory proposals, approval loops, pruning rules, and token budgets.
|
|
5
5
|
|
|
6
|
-
Clio Coder treats run claims and agent lessons as structured artifacts to support reproducibility and scientific provenance. In evaluations such as [SWE-bench](https://www.swebench.com), capturing granular execution evidence is essential for validating agent claims. Evidence corpora are deterministic directories built from run ledgers, receipts, sessions, audits, and eval artifacts. In v0.3.
|
|
6
|
+
Clio Coder treats run claims and agent lessons as structured artifacts to support reproducibility and scientific provenance. In evaluations such as [SWE-bench](https://www.swebench.com), capturing granular execution evidence is essential for validating agent claims. Evidence corpora are deterministic directories built from run ledgers, receipts, sessions, audits, and eval artifacts. In v0.3.7, forensic evidence auto-builds on dispatch run completion: when a run finalizes, the observability domain automatically compiles the evidence bundle under `<dataDir>/evidence/run-<id>/` and updates a compact sidecar index row in `<stateDir>/evidence-index.json`. Long-term memory records are local, evidence-linked, and only injected after explicit approval. Use the TUI [`/view`](observability.md) command for interactive inspection of receipts, dispatch output, durable tool output, compaction summaries, and session accountability before building or citing evidence.
|
|
7
7
|
|
|
8
8
|
Source of truth: `src/domains/evidence/**`, `src/domains/memory/**`, `src/cli/evidence.ts`, and `src/cli/memory.ts`.
|
|
9
9
|
|
|
@@ -148,11 +148,11 @@ Each run receipt (persisted under `<stateDir>/receipts/<runId>.json`) carries an
|
|
|
148
148
|
### Computation and Lifecycle
|
|
149
149
|
- **Circular Dependency Prevention**: To prevent circular dependencies, `findingsSummary` is calculated **cheaply in-memory** at receipt-record time using the draft envelope and tool statistics (in `src/domains/dispatch/receipt-findings.ts`). It never reads from disk or calls `buildEvidence`.
|
|
150
150
|
- **First-Pass Success**: Calculated as `true` only if the terminal outcome was `"succeeded"`, the lineage attempt was `0` (no dispatch retries), the tool stats confirm at least one successful validation tool was executed, and no failure-cause tags were detected.
|
|
151
|
-
- **Cryptographic Coverage**: Current receipts use strict
|
|
151
|
+
- **Cryptographic Coverage**: Current receipts use strict v19 and authenticate every current receipt field, including briefing and steering provenance, routing intent and decision, route quality, worker identity, execution role, result-contract conformance, council provenance, and fleet gate provenance, against the reconstructed ledger. Every version other than v19 is rejected; there is no historical receipt reader.
|
|
152
152
|
|
|
153
153
|
| Version | Verification policy | Compatibility policy |
|
|
154
154
|
|---|---|---|
|
|
155
|
-
|
|
|
155
|
+
| v19 | Current canonical projection; every current receipt and reconstructible ledger field is authenticated | Accepted |
|
|
156
156
|
| Any other version | No reader | Rejected; remove or archive the incompatible state rather than expecting migration |
|
|
157
157
|
|
|
158
158
|
Receipt integrity and evidence verification answer different questions. The
|
|
@@ -227,7 +227,7 @@ finish-contract records without changing receipt-owned axes. Findings such as
|
|
|
227
227
|
domain artifacts remain in the receipt, gate, audit, and trace files.
|
|
228
228
|
|
|
229
229
|
The canonical aggregate is an additive projection for downstream work. Receipt
|
|
230
|
-
integrity remains version
|
|
230
|
+
integrity remains version 18, evidence bundles remain version 1, gate decisions
|
|
231
231
|
remain version 2, and no persisted receipt field or cryptographic algorithm
|
|
232
232
|
changes.
|
|
233
233
|
|
|
@@ -246,7 +246,8 @@ Mutation-report receipts are grounded directly against observed tool events reco
|
|
|
246
246
|
|
|
247
247
|
```bash
|
|
248
248
|
clio-coder memory list
|
|
249
|
-
clio-coder memory propose --from-evidence <evidenceId>
|
|
249
|
+
clio-coder memory propose --from-evidence <evidenceId> [scope options]
|
|
250
|
+
clio-coder memory promote --from-handoff <path> [--entry <id>...] --scope <scope> [scope options]
|
|
250
251
|
clio-coder memory approve <memoryId>
|
|
251
252
|
clio-coder memory reject <memoryId>
|
|
252
253
|
clio-coder memory prune --stale
|
|
@@ -267,6 +268,8 @@ The store is capped at `500` records and is sorted by scope, key, creation time,
|
|
|
267
268
|
```mermaid
|
|
268
269
|
stateDiagram-v2
|
|
269
270
|
evidence --> proposed: propose --from-evidence
|
|
271
|
+
taskBank --> proposed: /memory selected-entry action
|
|
272
|
+
redactedHandoff --> proposed: promote --from-handoff
|
|
270
273
|
proposed --> approved: approve <id>
|
|
271
274
|
proposed --> rejected: reject <id>
|
|
272
275
|
approved --> rejected: reject <id>
|
|
@@ -277,6 +280,45 @@ stateDiagram-v2
|
|
|
277
280
|
|
|
278
281
|
Records must cite at least one evidence ID to be considered for prompt injection. Rejected records remain in the store until stale pruning so the same bad lesson is not immediately re-proposed from the same evidence.
|
|
279
282
|
|
|
283
|
+
Task-bank promotion is a reviewed export from transient execution memory. The
|
|
284
|
+
`/memory` overlay offers repo and global proposal actions only on selected
|
|
285
|
+
knowledge and procedural rows. Status remains private and cannot enter the
|
|
286
|
+
promotion service. The first global action arms a warning, and the second
|
|
287
|
+
action acknowledges the broader applicability. A successful action writes an
|
|
288
|
+
unapproved record and names the separate `memory approve` command required to
|
|
289
|
+
make it injectable.
|
|
290
|
+
|
|
291
|
+
The CLI consumes a version 2 `clio-task-memory` handoff snapshot. Omitting
|
|
292
|
+
`--entry` proposes every knowledge and procedural entry; repeating `--entry`
|
|
293
|
+
selects exact entry IDs. Version 2 snapshots carry source session, evidence,
|
|
294
|
+
runtime, agent, timestamps, and export-redaction facts. Version 1 snapshots
|
|
295
|
+
remain seedable but cannot be promoted because they do not carry source
|
|
296
|
+
session or evidence provenance.
|
|
297
|
+
|
|
298
|
+
Every promotion redacts secret-shaped values before `records.json` is written.
|
|
299
|
+
The durable provenance block records the source kind, session, selected entry,
|
|
300
|
+
entry class and timestamps, plus the replacement count and source field paths.
|
|
301
|
+
Promotion never approves its own output.
|
|
302
|
+
|
|
303
|
+
### Explicit scope selection
|
|
304
|
+
|
|
305
|
+
Reviewed scope options are closed to four choices:
|
|
306
|
+
|
|
307
|
+
| Scope | Required selection | Validation |
|
|
308
|
+
| --- | --- | --- |
|
|
309
|
+
| `repo` | `--repository <canonical-absolute-path>` | The path must exist and already equal its canonical absolute identity. Symlink aliases and paths containing unresolved segments are rejected. |
|
|
310
|
+
| `global` | `--acknowledge-global` | The acknowledgement is separate from `--scope global`. |
|
|
311
|
+
| `runtime` | `--runtime <id>` | The ID must be valid and must occur in the source provenance. |
|
|
312
|
+
| `agent` | `--agent <id>` | The ID must be valid and must occur in the source provenance. |
|
|
313
|
+
|
|
314
|
+
The same options may be added to `memory propose --from-evidence`. With no
|
|
315
|
+
scope option, evidence proposals keep the existing inference order. An
|
|
316
|
+
explicit repository may differ from the repository that produced the
|
|
317
|
+
evidence, which supports a reviewed lesson about repository A learned while
|
|
318
|
+
working in repository B. Runtime and agent overrides may only select an exact
|
|
319
|
+
identity already recorded by the evidence. Global scope always requires its
|
|
320
|
+
own acknowledgement. No inference path widens an explicit choice.
|
|
321
|
+
|
|
280
322
|
---
|
|
281
323
|
|
|
282
324
|
## Prompt injection rules
|
|
@@ -287,7 +329,7 @@ Defaults:
|
|
|
287
329
|
|
|
288
330
|
| Constraint | Default |
|
|
289
331
|
| --- | --- |
|
|
290
|
-
|
|
|
332
|
+
| Base scopes | `global`, `repo` |
|
|
291
333
|
| Token budget | `400` estimated tokens |
|
|
292
334
|
| Max records | `5` |
|
|
293
335
|
| Required status | `approved: true` |
|
|
@@ -296,6 +338,12 @@ Defaults:
|
|
|
296
338
|
|
|
297
339
|
Rendered memory lines always cite record ID, scope, lesson, and evidence IDs. The prompt tells the model not to extrapolate beyond cited findings.
|
|
298
340
|
|
|
341
|
+
Interactive main-agent sessions additionally admit records for the exact
|
|
342
|
+
active runtime. `clio-coder run --agent` admits records for the exact resolved
|
|
343
|
+
runtime and selected agent. Runtime and agent records use structured identity
|
|
344
|
+
fields; `appliesWhen` text cannot grant either applicability. Missing,
|
|
345
|
+
malformed, or different active identities exclude those records.
|
|
346
|
+
|
|
299
347
|
### Repository-scoped identity
|
|
300
348
|
|
|
301
349
|
Repository memory is selected by an exact canonical absolute-path identity. The interactive orchestrator and `clio-coder run --agent` compute that identity from the active working directory; symlink aliases collapse to the same key. A repository move, a different Git worktree path, a subdirectory launch, a malformed identity, or a missing identity does not inherit another repository's memory. Global records are unaffected.
|
|
@@ -308,15 +356,27 @@ Every `scope: "repo"` record must carry:
|
|
|
308
356
|
|
|
309
357
|
The structured `repository` field is the only applicability mechanism: store validation rejects repo records without it, and `appliesWhen` tokens never grant repository applicability. There is intentionally no automatic path rewrite for moved repositories or worktrees: a filesystem move produces a different identity and the record simply stops applying until it is re-scoped with new evidence.
|
|
310
358
|
|
|
359
|
+
Runtime and agent records follow the same fail-closed shape:
|
|
360
|
+
|
|
361
|
+
```json
|
|
362
|
+
{ "runtime": { "kind": "runtime", "key": "openai" } }
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
```json
|
|
366
|
+
{ "agent": { "kind": "agent", "key": "coder" } }
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
Only the field matching the record scope is present.
|
|
370
|
+
|
|
311
371
|
---
|
|
312
372
|
|
|
313
373
|
## Recommended workflow
|
|
314
374
|
|
|
315
375
|
1. Build evidence from the run/session/eval that taught the lesson.
|
|
316
376
|
2. Inspect the evidence and findings.
|
|
317
|
-
3. Propose memory from the evidence.
|
|
318
|
-
4. Review the proposed lesson
|
|
319
|
-
5. Approve only if it is durable and useful.
|
|
377
|
+
3. Propose memory from the evidence, or promote selected public task memory from `/memory` or a redacted handoff.
|
|
378
|
+
4. Review the proposed lesson, source provenance, redaction facts, and exact scope.
|
|
379
|
+
5. Approve only if it is durable and useful under that scope.
|
|
320
380
|
6. Reject incorrect or overbroad records.
|
|
321
381
|
7. Prune stale records periodically.
|
|
322
382
|
|
package/docs/evolution.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Evolution and Change Manifests
|
|
2
2
|
|
|
3
3
|
> [!TIP]
|
|
4
|
-
> **Interactive Spec Available:** An interactive change manifest editor, authority risk assessor, and checklist workspace is located at [docs/html/evolution_blueprint.html](html/evolution_blueprint.html) (Version: 0.3.
|
|
4
|
+
> **Interactive Spec Available:** An interactive change manifest editor, authority risk assessor, and checklist workspace is located at [docs/html/evolution_blueprint.html](html/evolution_blueprint.html) (Version: 0.3.7).
|
|
5
5
|
|
|
6
6
|
Clio Coder uses change manifests to make harness changes reviewable, falsifiable, and rollback-friendly. CLIO stands for Context Layer for Input/Output, named for the Greek muse of history. A manifest is JSON, generated or checked with `clio-coder evolve manifest`, and should describe what changed, why, what evidence supports it, what could regress, how to validate it, and how to roll it back.
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Exit Codes & Machine-Readable Output Contracts
|
|
2
2
|
|
|
3
|
-
This document specifies the process exit codes, machine-readable JSON streaming formats, standard I/O separation rules, and `--help` conventions across all Clio Coder CLI commands in `v0.3.
|
|
3
|
+
This document specifies the process exit codes, machine-readable JSON streaming formats, standard I/O separation rules, and `--help` conventions across all Clio Coder CLI commands in `v0.3.7`.
|
|
4
4
|
|
|
5
5
|
Source implementations: `src/cli/` and `src/entry/`.
|
|
6
6
|
|
|
@@ -66,6 +66,9 @@ Many Clio CLI subcommands provide structured JSON output for integration with sc
|
|
|
66
66
|
| `clio-coder targets` | `--json` | JSON object containing the configured `targets` array. |
|
|
67
67
|
| `clio-coder models` | `--json` | JSON array of catalog models with capability flags. |
|
|
68
68
|
| `clio-coder fleet status` | `--json` | JSON snapshot object with `generatedAt`, `admission` (`open` or `draining`), `running`, `retrying`, and `totals`. Each run row carries its `node`, defaulting to `local`. |
|
|
69
|
+
| `clio-coder fleet validate` | `--json` | JSON report with `valid`, `fleet`, and either successful `checks` plus `planHash` or failure `diagnostics`. Validation failures exit `1`; usage errors exit `2`. |
|
|
70
|
+
| `clio-coder fleet graph` | `--json` | JSON object with `fleet`, `planHash`, compiled `waves`, and expanded `loops`. Contract failures exit `1`; usage errors exit `2`. |
|
|
71
|
+
| `clio-coder fleet run --resume` | `--json` | NDJSON step records include `status: "replayed"` and the original receipt reference for replayed prefix steps. Plan or variable mismatches exit `1`. |
|
|
69
72
|
| `clio-coder trace runs` | `--json` | JSON array of trace run records. |
|
|
70
73
|
| `clio-coder trace sql` | Positional query | JSON array of rows returned by the read-only SQLite query. A single `SELECT` or read-only `WITH` statement is accepted; multiple statements and mutating keywords are refused with exit code 2. |
|
|
71
74
|
| `clio-coder paths` | `--json` | JSON object mapping platform directory names to absolute paths. |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Extensions, Prompt Templates, Skills, and Share Archives
|
|
2
2
|
|
|
3
3
|
> [!TIP]
|
|
4
|
-
> **Interactive Spec Available:** An interactive dashboard is located at [docs/html/extensions_blueprint.html](html/extensions_blueprint.html) (Version: 0.3.
|
|
4
|
+
> **Interactive Spec Available:** An interactive dashboard is located at [docs/html/extensions_blueprint.html](html/extensions_blueprint.html) (Version: 0.3.7).
|
|
5
5
|
|
|
6
6
|
Clio Coder has lightweight community-oriented resource packaging. Extensions are filesystem bundles that contribute prompts and skills. Share archives are portable JSON files for moving project/user Clio resources between machines or collaborators. Themes are built into the engine and are no longer loaded from extensions.
|
|
7
7
|
|
|
@@ -251,7 +251,7 @@ Share archives are single JSON files:
|
|
|
251
251
|
"formatVersion": 1,
|
|
252
252
|
"manifest": {
|
|
253
253
|
"format": "clio.share.v1",
|
|
254
|
-
"clioVersion": "0.3.
|
|
254
|
+
"clioVersion": "0.3.7",
|
|
255
255
|
"createdAt": "...",
|
|
256
256
|
"files": []
|
|
257
257
|
},
|
|
@@ -280,6 +280,8 @@ Options:
|
|
|
280
280
|
| `--skills` | Include skills. |
|
|
281
281
|
| `--settings` | Include non-secret settings fragment. |
|
|
282
282
|
| `--extensions` | Include extension bundle files, excluding extension `state.json`. |
|
|
283
|
+
| `--agents` | Include agent recipe files. |
|
|
284
|
+
| `--fleets` | Include fleet contract files. |
|
|
283
285
|
| `--all` | Include every supported resource class. |
|
|
284
286
|
|
|
285
287
|
If no include flags are supplied, export includes all supported classes for the selected scope.
|
|
@@ -296,6 +298,8 @@ clio-coder share import project.clio-coder-share.json --force
|
|
|
296
298
|
|
|
297
299
|
Dry-run imports produce a plan and report conflicts without writing. Without `--force`, conflicting destination files block writes. With `--force`, conflicting files are overwritten and supported settings-fragment keys are merged into the current settings file.
|
|
298
300
|
|
|
301
|
+
Archives accept `agent` and `fleet` file entry types alongside prompts and skills. Agent entries import into the user agent root and must pass the recipe parser and policy checks. Fleet entries import into the user fleet root and must pass `parseFleetContract` before any write. Dry-run plans report both types by kind.
|
|
302
|
+
|
|
299
303
|
Aliases:
|
|
300
304
|
|
|
301
305
|
```bash
|
|
@@ -136,7 +136,7 @@ clio-coder evidence inspect <evidenceId>
|
|
|
136
136
|
run ledger; a tampered or mismatched receipt fails the build with the field
|
|
137
137
|
that diverged. The receipts of the remote runs verify on the orchestrator host because the
|
|
138
138
|
ledger and receipts live on the shared filesystem. Current receipts use strict
|
|
139
|
-
|
|
139
|
+
v16 and authenticate every current receipt and reconstructed-ledger field.
|
|
140
140
|
Every other receipt version is rejected rather than reported as partial; the
|
|
141
141
|
current binary has no historical receipt reader.
|
|
142
142
|
|
|
@@ -168,7 +168,7 @@ reconstruct:
|
|
|
168
168
|
complete receipt schema and its stable ledger row. `clio-coder evidence build
|
|
169
169
|
--run <id>` recomputes and cross-checks it; `verifyReceiptIntegrity` in
|
|
170
170
|
`src/domains/dispatch/receipt-integrity.ts` is the reference
|
|
171
|
-
implementation. Current receipts use
|
|
171
|
+
implementation. Current receipts use v16 and every other version fails
|
|
172
172
|
verification. Incompatible state must be archived or removed; it is never
|
|
173
173
|
read as evidence through a compatibility verifier.
|
|
174
174
|
|
package/docs/fleet-dispatch.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Fleet Dispatch
|
|
2
2
|
|
|
3
|
-
> **Interactive Spec Available:** An interactive fleet node topology planner, scout router, receipt verifier, and failure taxonomy simulator is located at [docs/html/fleet_dispatch_blueprint.html](html/fleet_dispatch_blueprint.html) (Version: 0.3.
|
|
3
|
+
> **Interactive Spec Available:** An interactive fleet node topology planner, scout router, receipt verifier, and failure taxonomy simulator is located at [docs/html/fleet_dispatch_blueprint.html](html/fleet_dispatch_blueprint.html) (Version: 0.3.7).
|
|
4
4
|
|
|
5
5
|
Clio Coder dispatches bounded worker agents. With a fleet configured, those
|
|
6
6
|
workers run on remote machines over SSH while the orchestrator keeps every
|
|
@@ -77,7 +77,11 @@ briefing wins. Supplying both `task` and `tasks` fails instead of choosing one.
|
|
|
77
77
|
After approval, execution consumes only the registry-owned resolved plan, so
|
|
78
78
|
later mutation of raw arguments cannot change either field.
|
|
79
79
|
|
|
80
|
-
Recipes
|
|
80
|
+
Recipes declare a default with `budget: {toolCalls, readReserve, synthesis}`. They may also declare `maximum: {toolCalls, readReserve}` inside that object. A recipe without `maximum` is an exact pin, which preserves the fixed behavior of existing recipes. A ranged recipe admits the optional dispatch request `budget: {toolCalls, readReserve, retryRevision?}` only when the request is inside its maximum. `retryRevision` has the same two integer fields and preauthorizes the ceiling that a later automatic retry, bounded result-contract revision, or review revision may select. The loop guard raises a result-contract revision boundary only in this case. A phase without that ceiling cannot grow and retains the existing text-only repair behavior.
|
|
81
|
+
|
|
82
|
+
`toolCalls` is the admitted-call phase boundary. The final `readReserve` slots accept canonical `read` plus the agent's granted mutation tools, so a writer can still deliver inside its own reserve. Admission requires integers and `0 <= readReserve < toolCalls` for every declared phase. `synthesis: true` forces a text-only final round, while `false` stops after the admitted phase. `guardrails.workerToolCallCap` remains the operator-controlled lifetime ceiling and always wins when lower. A default may be clamped by a lower operator cap so default callers retain their prior behavior; an explicit request outside the operator cap is denied.
|
|
83
|
+
|
|
84
|
+
Admission computes one immutable envelope with the recipe policy, invocation request, effective worker budget, and every clamp or escalation reason. Native workers and Claude SDK enforce the effective budget. Claude Code, Antigravity, and ACP delegation reject invocation envelopes because their black-box loops cannot provide equivalent per-call mediation. Before launch, every admitted WorkerSpec v3 still contains one concrete effective budget and a settings fingerprint. The envelope provenance is sealed in the run ledger and receipt and appears in monitor, fleet status, and the live fleet card.
|
|
81
85
|
|
|
82
86
|
## Node setup
|
|
83
87
|
|
|
@@ -156,7 +160,7 @@ Use `clio-coder fleet resume [--json]` to reopen admission early. Detailed drain
|
|
|
156
160
|
|
|
157
161
|
With no fleet configured and nothing requested, placement resolves to the
|
|
158
162
|
implicit local path and optional fleet-node provenance may remain absent.
|
|
159
|
-
Every new receipt uses strict integrity
|
|
163
|
+
Every new receipt uses strict integrity v19; older receipt formats are not
|
|
160
164
|
accepted by the current reader.
|
|
161
165
|
|
|
162
166
|
## Failure semantics
|
|
@@ -198,8 +202,92 @@ request-level `autonomy` can only narrow the level (reviewers and judges run
|
|
|
198
202
|
| Detached | `detach: true` | Return logical assignment ids and a batch id immediately; collect later. |
|
|
199
203
|
| Review gate | `review: {reviewer?, max_cycles?}` | Builder, read-only reviewer verdict, bounded revise loop. |
|
|
200
204
|
| Compete | `mode: "compete", candidates: 2..4` | N candidates in scratch worktrees, read-only judge, winner applied or preserved. |
|
|
205
|
+
| Council | `mode: "council", roster: "design"` | Two to five read-only members answer the same task, with optional vote or judge synthesis. |
|
|
201
206
|
| Agent automation | `agent: "auto"` | Baselines candidate agent from task shape via shared classifier (`coder`, `tester`, `documenter`, `verifier`, `researcher`, `scout`); advisory unless activated. |
|
|
202
207
|
|
|
208
|
+
### Single-writer token
|
|
209
|
+
|
|
210
|
+
A parallel batch may declare `writers: 1`. One is the only accepted value in
|
|
211
|
+
this release, and omission retains ordinary parallel admission. The scheduler
|
|
212
|
+
admits at most one write-scope step at a time. An agent step with a nonempty
|
|
213
|
+
`writes` allowlist is a writer, as is a workspace-scope step that may mutate
|
|
214
|
+
the checkout. Read-scope steps and agent steps with `writes: []` remain
|
|
215
|
+
concurrent. Waiting writers follow the plan's declared step order and then the
|
|
216
|
+
request order. Agent ledger claims remain advisory and do not enforce the
|
|
217
|
+
token.
|
|
218
|
+
|
|
219
|
+
The first checkout writer acquires a process-owned lease under the Clio state
|
|
220
|
+
directory. Its key is the canonical checkout path, and its record contains the
|
|
221
|
+
owner pid, process birth token, and acquisition time. A live sibling process
|
|
222
|
+
causes admission to fail with `checkout_writer_lease_held` and the holder pid.
|
|
223
|
+
A dead owner or reused pid is reclaimed. The lease remains held until the last
|
|
224
|
+
writer settles, including writers collected from detached batches. Read-only
|
|
225
|
+
runs never acquire it.
|
|
226
|
+
|
|
227
|
+
### Worktree per task
|
|
228
|
+
|
|
229
|
+
A singular writer or an item in `tasks` may declare `worktree: true` and
|
|
230
|
+
`apply: "merge" | "preserve"`. The default is `merge`. Clio creates
|
|
231
|
+
`.clio-coder/worktrees/<runId>/` on `clio/task/<runId>`, maps the worker cwd and
|
|
232
|
+
protected artifacts into that checkout, and runs declared host verification
|
|
233
|
+
there. The approved execution snapshot renders both fields and freezes the
|
|
234
|
+
parent checkout as the merge destination.
|
|
235
|
+
|
|
236
|
+
After a successful worker and successful host verification, merge application
|
|
237
|
+
commits the task branch, rechecks protected paths, and uses the same guarded
|
|
238
|
+
merge path as compete. A conflict fails closed with
|
|
239
|
+
`worktree_merge_conflict` and preserves the branch and worktree. Preserve
|
|
240
|
+
application never merges and reports the branch. A detached task applies when its run finalizes, so `monitor(mode="collect")` returns the sealed application receipt.
|
|
241
|
+
Admission refuses a non-git checkout, a read-only agent, compete mode, or an
|
|
242
|
+
explicit cwd outside the parent checkout with a named reason.
|
|
243
|
+
|
|
244
|
+
### Typed intent and host-run verification
|
|
245
|
+
|
|
246
|
+
The singular request and every object in `tasks` accept an optional `intent`:
|
|
247
|
+
|
|
248
|
+
```json
|
|
249
|
+
{
|
|
250
|
+
"read_roots": ["src/domains/dispatch"],
|
|
251
|
+
"write_roots": ["src/tools"],
|
|
252
|
+
"relevant_paths": ["docs/fleet-dispatch.md"],
|
|
253
|
+
"expected_outputs": ["dist/cli.js"],
|
|
254
|
+
"verification": [{ "check": "test", "timeout_ms": 600000 }]
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
A top-level intent is inherited by batch items unless an item supplies its own
|
|
259
|
+
intent. `gate: "test"` is exact shorthand for
|
|
260
|
+
`intent.verification: [{check: "test"}]`; supplying both spellings is refused.
|
|
261
|
+
Every path is normalized into a sorted, duplicate-free repository-relative
|
|
262
|
+
POSIX path list before approval. Absolute paths, empty paths, root escapes,
|
|
263
|
+
malformed entries, and values beyond the documented caps fail admission.
|
|
264
|
+
Normalized `intent.writeRoots` feeds the existing worker write-boundary
|
|
265
|
+
enforcement when no legacy `JobSpec.writeRoots` exists. Conflicting declarations
|
|
266
|
+
are refused as `intent_write_roots_contradiction`.
|
|
267
|
+
|
|
268
|
+
Verification values are declared check ids, never shell commands. Admission
|
|
269
|
+
resolves each id from a package script or `.clio-coder/verifiers.yaml`, clamps
|
|
270
|
+
the requested timeout to the declaration, and freezes the exact argv, cwd,
|
|
271
|
+
timeout, and normalized intent into the execution snapshot and plan hash. A
|
|
272
|
+
later catalog edit cannot change the approved command. Undeclared ids fail
|
|
273
|
+
before approval with `verification_check_undeclared` and declaration guidance.
|
|
274
|
+
|
|
275
|
+
After a successful worker attempt, the orchestrator runs the frozen checks with
|
|
276
|
+
no shell, a fixed cwd, and the code-step environment allowlist. Logs are written
|
|
277
|
+
under the run artifact directory. Successful evidence is memoized by the
|
|
278
|
+
workspace fingerprint, resolved argv, cwd, and allowed environment values. A
|
|
279
|
+
memo hit names the run that produced the original evidence. A changed tree is a
|
|
280
|
+
miss. An unsuccessful worker records `hostVerification.status="skipped"` with
|
|
281
|
+
`reason="worker_not_successful"`; a failed host check records `rejected` with
|
|
282
|
+
its exit code, bounded output tail, and artifact path. Worker-reported command
|
|
283
|
+
success never populates this status.
|
|
284
|
+
|
|
285
|
+
Host checks are supported for singular, parallel, sequential, pipeline, and
|
|
286
|
+
detached native runs. Review and compete accept intent paths and outputs but
|
|
287
|
+
refuse verification entries with `verification_unsupported_for_mode`.
|
|
288
|
+
Claude Code subprocess routes refuse them with
|
|
289
|
+
`verification_unsupported_runtime`.
|
|
290
|
+
|
|
203
291
|
### Agent ledger
|
|
204
292
|
|
|
205
293
|
Every topology that runs more than one worker at once opens an agent ledger, the
|
|
@@ -317,6 +405,32 @@ the workers are quiesced but the candidates remain until that output is bound
|
|
|
317
405
|
to an integrity-verified judge receipt; a recovered winner is preserved for
|
|
318
406
|
operator inspection rather than silently auto-applied after restart.
|
|
319
407
|
|
|
408
|
+
### Council
|
|
409
|
+
|
|
410
|
+
Council is the read-only sibling of compete. Two to five members run the same
|
|
411
|
+
singular task concurrently on local HTTP or native targets. A request selects
|
|
412
|
+
exactly one configured `workers.rosters` entry or supplies inline `members`.
|
|
413
|
+
Admission pins every member to `read-only` autonomy and to the `read`, `grep`,
|
|
414
|
+
`find`, `ls`, `code_nav`, and `context` tool surface. A route that resolves to
|
|
415
|
+
an SSH fleet node is refused before approval. Council never creates a worktree
|
|
416
|
+
and never mutates the workspace.
|
|
417
|
+
|
|
418
|
+
Council supports one to three rounds. The first round gives every member the
|
|
419
|
+
same task and briefing. A later round gives each member the other members'
|
|
420
|
+
prior answers as labelled, untrusted briefing data. The member never receives
|
|
421
|
+
its own prior answer. Each briefing is limited to 8 KiB and carries an explicit
|
|
422
|
+
truncation marker when necessary. A failed peer contributes a labelled failure
|
|
423
|
+
marker and no answer text.
|
|
424
|
+
|
|
425
|
+
`synthesis: "none"` returns the final member answers directly. `vote` performs
|
|
426
|
+
a deterministic majority tally over structured `verdict` fields without a
|
|
427
|
+
model call. A vote with no majority reports `no_majority`, and a vote with no
|
|
428
|
+
verdict fields reports `no_verdict_field`. `judge` runs one additional read-only judge against all final
|
|
429
|
+
answers. Every member run seals a receipt. A judge receipt points backward to
|
|
430
|
+
every final member receipt through gate provenance. The approval artifact names
|
|
431
|
+
each member's label, target, model, thinking level, node, color, round count,
|
|
432
|
+
and synthesis mode, so the plan hash binds the whole council contract.
|
|
433
|
+
|
|
320
434
|
### ExecutionPlan and plan approval
|
|
321
435
|
|
|
322
436
|
Every orchestration shape compiles to one strict ExecutionPlan v2 DAG with
|
|
@@ -363,11 +477,36 @@ rejected.
|
|
|
363
477
|
|
|
364
478
|
Clio ships three builtin fleet contracts under `src/domains/agents/fleets/`: `build-test`, `build-review`, and `sdlc`. Projects can declare custom fleet contracts or shadow builtin fleets by placing Markdown files under `.clio-coder/fleets/<name>.md`. A file named `.clio-coder/fleets/<name>.md` shadows a builtin fleet of the same name.
|
|
365
479
|
|
|
366
|
-
Fleet contracts support schema versions 1 through
|
|
480
|
+
Fleet contracts support schema versions 1 through 5:
|
|
367
481
|
- Version 1: Supports agent steps only.
|
|
368
482
|
- Version 2: Introduces deterministic code steps.
|
|
369
483
|
- Version 3: Adds bounded check/repair loops and commit steps with `commitFrom` message sources.
|
|
370
484
|
- Version 4 (`FLEET_WRITE_BOUNDARY_VERSION = 4`): Introduces per-step declared write boundaries (`writes`) and orchestrator post-step enforcement.
|
|
485
|
+
- Version 5 (`FLEET_DYNAMIC_STEP_VERSION = 5`): Adds plan steps, executable gate steps, per-step target or worker-profile defaults, and the optional single-writer declaration.
|
|
486
|
+
|
|
487
|
+
#### Contract v5: plan, gate, and per-step target
|
|
488
|
+
|
|
489
|
+
A version 5 agent step, including an agent loop check or repair, may declare either `target: <targetId>` or `profile: <workers.profiles key>`. It may never declare both. Fleet preflight resolves these values through the same worker routing used by `/run --target` and `/run --agent-profile`. An unknown value refuses before approval and names the target or profile. Versions 1 through 4 continue to refuse both fields.
|
|
490
|
+
|
|
491
|
+
A `kind: gate` step asks its validator agent to write exactly one repository-relative `path`. The contract derives the step's write boundary from that path, so a separate `writes` property is refused. Its `run` property names a command whose argv contains one whole-token `{{path}}` placeholder. After the agent writes the executable acceptance check, the coordinator runs it without a shell against the otherwise untouched tree. A red result admits the gate. A green result refuses the run as `gate_not_discriminating`. The fleet ledger records the gate path hash. A loop may use `check: {kind: gate, gate: <stepId>}`. Only the bounded output lines beginning with `FAIL` cross that failed check edge into the repair agent.
|
|
492
|
+
|
|
493
|
+
A `kind: plan` step defaults to the builtin `architect`. It declares `roster`, `maxTasks` from 1 through 16, an optional `proposals: true`, its own scope and write boundary, and an optional target or profile default. The architect returns a `delegation-plan` object whose tasks contain `id`, `agent`, `description`, `depends_on`, `writes`, and an optional `mode` of `sequential` or `parallel`. The coordinator admits only roster agents, unique and acyclic task ids, resolvable dependencies, the declared task count, and task writes contained by the plan step boundary. Successful tasks carry lineage to the plan step and inherit its target or profile. A contract with `writers: 1` serializes write tasks through the existing single-writer token.
|
|
494
|
+
|
|
495
|
+
When `proposals: true`, every roster member first runs with read-only autonomy against the same task. Their answers reach the architect as labelled, bounded briefing data. Proposal agents do not choose targets for generated work. The plan step's contract default remains authoritative for every admitted task.
|
|
496
|
+
|
|
497
|
+
### Fleet authoring
|
|
498
|
+
|
|
499
|
+
The fleet CLI provides five authoring and inspection operations:
|
|
500
|
+
|
|
501
|
+
- `clio-coder fleet new <name> --from <builtin>` copies one of `build-review`, `build-test`, or `sdlc` into `.clio-coder/fleets/<name>.md`. The command requires a safe file stem and refuses to replace an existing contract.
|
|
502
|
+
- `clio-coder fleet validate <name> [--json]` parses the contract, validates its graph and command bindings, resolves every agent, and compiles the execution plan. It creates no state directory, ledger row, reservation, worker, or receipt.
|
|
503
|
+
- `clio-coder fleet graph <name> [--json]` renders the compiled waves with each step kind, agent or command, scope, and write boundary. Bounded loops also show their check and repair nodes beneath the loop identifier.
|
|
504
|
+
- `clio-coder fleet commands init` discovers declared package scripts, just recipes, Makefile targets, and supported `pyproject.toml` script and tool entries. It writes a fully commented `.clio-coder/fleets/commands.yaml` draft. Uncommenting an entry confirms its exact argument vector, and an existing registry is never replaced.
|
|
505
|
+
- `clio-coder fleet run <name> --resume <runId>` starts a new fleet run after replaying the successful, integrity-valid prefix recorded for the named prior fleet run.
|
|
506
|
+
|
|
507
|
+
Run resumption is separate from `clio-coder fleet resume`, which continues to reopen dispatch admission after an operator drain. A resumable fleet run records its contract name, rendered plan hash, ordered step identifiers, variables, and receipt references in the durable fleet ledger. Runs started from the TUI through `/fleet run` use the same durable record and can be resumed by the authoring CLI. The new run records the prior fleet run as its resume parent. Replayed steps are reported as `replayed`, retain their original receipt or code-report references, and do not create new receipts.
|
|
508
|
+
|
|
509
|
+
The current contract must compile to the same plan hash. A mismatch refuses before execution and prints the changed positions in the ordered step list. Variables must exactly match the original run. A different value, an added value, or an omitted value is refused even when the resulting task text would otherwise be similar.
|
|
371
510
|
|
|
372
511
|
### Per-step write boundaries (Contract v4)
|
|
373
512
|
|
|
@@ -428,7 +567,10 @@ commands:
|
|
|
428
567
|
argv: ["npm", "run", "build"]
|
|
429
568
|
timeoutMs: 600000
|
|
430
569
|
commit:
|
|
431
|
-
argv: ["git", "commit", "-m"]
|
|
570
|
+
argv: ["git", "commit", "-m", "{{commitMessage}}"]
|
|
571
|
+
timeoutMs: 60000
|
|
572
|
+
acceptance:
|
|
573
|
+
argv: ["node", "{{path}}"]
|
|
432
574
|
timeoutMs: 60000
|
|
433
575
|
```
|
|
434
576
|
|
|
@@ -439,6 +581,8 @@ Each command entry supports:
|
|
|
439
581
|
- `env` (optional): Array of extra environment variable names to pass through on top of `FLEET_COMMAND_BASE_ENV` (`PATH`, `HOME`, `LANG`, `LC_ALL`, `TZ`, `TMPDIR`).
|
|
440
582
|
- `description` (optional): Human-readable description.
|
|
441
583
|
|
|
584
|
+
The whole-token `{{commitMessage}}` substitution is available to commit steps. The whole-token `{{path}}` substitution is available to version 5 gate commands. Each substitution becomes exactly one argv element and never passes through a shell.
|
|
585
|
+
|
|
442
586
|
|
|
443
587
|
## Measured route selection and agent automation
|
|
444
588
|
|
|
@@ -522,7 +666,7 @@ assignment failed, reports the reason on stderr, and records it in the
|
|
|
522
666
|
assignment's `outcomeDetail`.
|
|
523
667
|
|
|
524
668
|
Assignment status, attempt ids, and terminal run id are stored separately in
|
|
525
|
-
`assignments.json` while each attempt keeps its own strict
|
|
669
|
+
`assignments.json` while each attempt keeps its own strict v19 receipt.
|
|
526
670
|
Pipelines and batches await assignment terminals, so downstream stages consume
|
|
527
671
|
the successful fallback output rather than an earlier failed attempt.
|
|
528
672
|
|
|
@@ -536,7 +680,7 @@ closed while a winner remains unapplied.
|
|
|
536
680
|
|
|
537
681
|
## Receipts
|
|
538
682
|
|
|
539
|
-
Receipts carry exactly one integrity version (`RUN_RECEIPT_INTEGRITY_VERSION =
|
|
683
|
+
Receipts carry exactly one integrity version (`RUN_RECEIPT_INTEGRITY_VERSION = 19`), which authenticates the complete receipt and reconstructible ledger provenance surface. There is no historical verification path: any other version is invalid, and a receipt that fails verification is never read as evidence. The fleet provenance fields covered by the digest
|
|
540
684
|
include:
|
|
541
685
|
|
|
542
686
|
- `node`: the fleet node the worker ran on (`id`, `kind`, `host`). The `node.id` explicitly identifies the worker process host executing the task, not the model host (which is represented by the `target` id). This behavior tracks issue #120.
|
|
@@ -547,11 +691,22 @@ include:
|
|
|
547
691
|
approval kind, and the registry approval identity when supervised).
|
|
548
692
|
- `briefing`: byte count and SHA-256 of the exact canonical parent briefing;
|
|
549
693
|
the prose is not retained and is distinct from bounded project context.
|
|
694
|
+
- `intent`: the normalized typed path, expected-output, and verification
|
|
695
|
+
declaration that admission sealed for the run.
|
|
696
|
+
- `verification`: the existing evidence state and basis observed from worker
|
|
697
|
+
tool execution.
|
|
698
|
+
- `hostVerification`: host-run status and the resolved check evidence, including
|
|
699
|
+
argv, cwd, exit code, duration, memo provenance, bounded output tail, and
|
|
700
|
+
optional artifact path.
|
|
701
|
+
- `worktree`: task worktree path, branch, diff hash, requested application,
|
|
702
|
+
applied status, and an optional closed failure reason.
|
|
550
703
|
- `steering`: ordered byte/hash/timestamp and acknowledgement provenance for
|
|
551
704
|
successfully written steers; steering prose is never stored.
|
|
552
705
|
- `outcomeCode`: the stable terminal classifier, including
|
|
553
706
|
`worker_final_output_missing` when an otherwise successful worker exits
|
|
554
|
-
without a nonempty receipt-sealed final answer
|
|
707
|
+
without a nonempty receipt-sealed final answer and
|
|
708
|
+
`host_verification_rejected` when a declared host check rejects the settled
|
|
709
|
+
tree. Both suppress automatic retry.
|
|
555
710
|
- `routingIntent`, `routeDecision`, and `quality`: the normalized hard bounds,
|
|
556
711
|
complete current-policy decision, exact execution role, route estimate and
|
|
557
712
|
readiness evidence, and authenticated quality sources.
|
|
@@ -571,11 +726,14 @@ retained only as `state: "partial"` diagnostics and automatic retry is
|
|
|
571
726
|
suppressed. Dispatch, monitor, ledger, receipt, terminal bus event, and retry
|
|
572
727
|
policy all consume that same final classification.
|
|
573
728
|
|
|
574
|
-
Receipt integrity and evidence verification are separate axes. Integrity says
|
|
729
|
+
Receipt integrity, host verification, and evidence verification are separate axes. Integrity says
|
|
575
730
|
that the sealed receipt matches its ledger envelope; evidence verification
|
|
576
731
|
reports whether Clio observed an applicable validation tool (or marks the
|
|
577
|
-
basis unknown/not applicable). A read-only Scout can therefore report `receipt_integrity=verified/
|
|
578
|
-
`evidence_verification=not_applicable/read-only-agent`.
|
|
732
|
+
basis unknown/not applicable). A read-only Scout can therefore report `receipt_integrity=verified/v19/sha256` alongside
|
|
733
|
+
`evidence_verification=not_applicable/read-only-agent`. Host verification is
|
|
734
|
+
rendered independently as `host_verification=verified|rejected|skipped|not_requested`.
|
|
735
|
+
A host-executed successful check projects onto canonical validation grounding as
|
|
736
|
+
authenticated validator evidence. Briefing provenance and
|
|
579
737
|
bounded `project_context` provenance are also rendered independently; neither
|
|
580
738
|
hash substitutes for the other.
|
|
581
739
|
|
|
@@ -658,15 +816,70 @@ hard block.
|
|
|
658
816
|
renders `local`), gate badges (`gate reviewer c2`), reroute badges, live
|
|
659
817
|
tool activity (names only; arguments never cross the worker stdout seam),
|
|
660
818
|
and a per-worker context meter.
|
|
819
|
+
- `Enter` on the selected Fleet Runs row opens its worker detail: the phase,
|
|
820
|
+
the running call with a redacted action descriptor (`bash running npm
|
|
821
|
+
test`), and the bounded tail of the worker's own prose. The default list
|
|
822
|
+
stays compact, so a fan-out of scouts costs one card each until an operator
|
|
823
|
+
opens one. Detail follows the cursor rather than pinning to a run.
|
|
824
|
+
- The board and the transcript worker block read one projection
|
|
825
|
+
(`src/interactive/worker-progress.ts`), so they cannot disagree about what a
|
|
826
|
+
worker is saying or touching. It keeps 40 lines and 4096 bytes of tail, 8
|
|
827
|
+
distinct tool names, 4 recent actions, and accepts 16 KB of delta bytes per
|
|
828
|
+
250 ms; what the bounds refuse is counted and named on the card beside the
|
|
829
|
+
`/view dispatch:<runId>` deep link.
|
|
830
|
+
- Action descriptors are composed where the arguments are trusted: the tool
|
|
831
|
+
registry's admission path, the Claude tool mapper, and the ACP update
|
|
832
|
+
mapper. Each reads a fixed verb vocabulary and a fixed argument-field
|
|
833
|
+
allowlist, scrubs credentials, strips escape sequences, and bounds the
|
|
834
|
+
result to 64 characters before it crosses the worker stdout seam. Raw
|
|
835
|
+
argument objects never cross at all.
|
|
836
|
+
- Reasoning content is never displayed. The detail may name a `thinking`
|
|
837
|
+
phase and the usage facts the card already carries, never the text.
|
|
838
|
+
- Settlement replaces the provisional tail with the sealed receipt's answer;
|
|
839
|
+
a run whose receipt cannot be read keeps its own last durable message.
|
|
661
840
|
- The context meter renders the worker's last-message context occupancy
|
|
662
841
|
against the model's context window: healthy below 80 percent, warn from 80,
|
|
663
842
|
critical from 95.
|
|
664
843
|
- `/fleet` opens Settings → Fleet: profiles (with the node pin), bindings,
|
|
665
844
|
and read-only node rows (state, capacity, and last-seen). Running and
|
|
666
845
|
retrying runs, with their node, live in the `Alt+W` Fleet Runs board.
|
|
846
|
+
- `/fleet run <name> [--var k=v ...]` compiles the contract's plan and opens
|
|
847
|
+
the approval overlay before anything dispatches. The overlay lists the steps
|
|
848
|
+
grouped by wave, and for each step its kind, its agent and resolved target
|
|
849
|
+
(or its command id and the exact argv from `commands.yaml` for a code step),
|
|
850
|
+
its scope, and its declared write boundary, followed by the budget ceiling
|
|
851
|
+
the run would be admitted under. Enter dispatches the plan through the same
|
|
852
|
+
path `clio-coder fleet run` uses, so admission, autonomy, receipts, and the
|
|
853
|
+
durable ledger are identical. Esc cancels with nothing dispatched and nothing
|
|
854
|
+
written. A contract that fails preflight opens the same overlay with its
|
|
855
|
+
diagnostics and no accept key. A turn in flight refuses the command with a
|
|
856
|
+
notice rather than queueing it: an approved plan describes the workspace as
|
|
857
|
+
it stands.
|
|
858
|
+
- A council is one question asked of several members, so its rows render as one
|
|
859
|
+
card rather than as three to five unrelated neighbours. On the `Alt+W` board the
|
|
860
|
+
members sit side by side, one column each, as long as every column keeps at
|
|
861
|
+
least 34 cells; below that the whole group stacks one member under another
|
|
862
|
+
rather than squeezing some columns and not others. Each column carries the
|
|
863
|
+
member label in its roster color (a member with no color takes the accent), the
|
|
864
|
+
target and model, the round, the status, and the same bounded answer tail the
|
|
865
|
+
run's own card would show. The synthesis run takes the full width under the
|
|
866
|
+
members, because it is the council's answer rather than one voice in it. A
|
|
867
|
+
council that ran several rounds still shows one column per member: each label
|
|
868
|
+
keeps its newest round, so the card describes the council rather than its
|
|
869
|
+
history.
|
|
870
|
+
- The compact Fleet Runs island shows a council as one card naming the group, how
|
|
871
|
+
many members are seated, and which round they are on. The grid belongs to the
|
|
872
|
+
board, where there is width to read an answer in. `/share` is what moves a
|
|
873
|
+
council answer into the main agent's context; the card moves nothing.
|
|
874
|
+
- Board rows a fleet plan dispatched carry a phase column naming the step's
|
|
875
|
+
wave index and step id (`w2 build`). A run that is not a fleet step renders
|
|
876
|
+
the column empty. The compact Fleet Runs island keeps its fixed width, so it
|
|
877
|
+
shows the column only when the row can still hold a readable agent label;
|
|
878
|
+
otherwise the phase appears on the expanded card.
|
|
667
879
|
- The monitor tool reports the node and reroute lineage on `status`, `list`,
|
|
668
880
|
and `collect`.
|
|
669
881
|
- `clio-coder fleet status [--json]` shows the durable ledger view cross-process.
|
|
882
|
+
- A worker permission escalation uses the `Worker escalation` consequence tier in operator presentation. The tier names the worker agent and run and describes where the one-shot answer returns. It does not approve the request, change the worker's inherited autonomy, or weaken the safety net; the existing worker escalation protocol remains the only resolution path.
|
|
670
883
|
|
|
671
884
|
## Speculation observer
|
|
672
885
|
|
|
@@ -49,11 +49,11 @@ Co-authored-by: Clio Coder <clio-coder@iowarp.ai>
|
|
|
49
49
|
Existing human trailers stay in place. A Clio trailer already present in any
|
|
50
50
|
letter case is respected rather than repeated, line endings are normalized only
|
|
51
51
|
while attribution is enabled, and repeated processing is idempotent. When a directly relevant
|
|
52
|
-
receipt-
|
|
52
|
+
receipt-v19 digest passes integrity verification, Clio may additionally add the
|
|
53
53
|
full digest:
|
|
54
54
|
|
|
55
55
|
```text
|
|
56
|
-
Clio-Evidence: receipt-
|
|
56
|
+
Clio-Evidence: receipt-v19/sha256:<64-character digest>
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
Clio does not invent, shorten, or add an unrelated digest. The role trailers do
|
package/docs/glossary.md
CHANGED
|
@@ -28,7 +28,7 @@ This document defines the 45 core architectural concepts and terminology used th
|
|
|
28
28
|
|
|
29
29
|
### 6. Receipt
|
|
30
30
|
- **Definition**: An immutable, cryptographically sealed record of a completed run containing full execution facts, tool telemetry, token accounting, validation grounding, and outcome codes.
|
|
31
|
-
- **Owning Type**: `RunReceipt` in `src/domains/dispatch/types.ts` (`RUN_RECEIPT_INTEGRITY_VERSION =
|
|
31
|
+
- **Owning Type**: `RunReceipt` in `src/domains/dispatch/types.ts` (`RUN_RECEIPT_INTEGRITY_VERSION = 19`).
|
|
32
32
|
|
|
33
33
|
### 7. Envelope
|
|
34
34
|
- **Definition**: A bounded container enforcing byte-length limits and truncation indicators on a dynamic payload. Tool output carries shown and total byte counts plus a continuation fragment; a parent briefing carries byte count and SHA-256 content hash instead.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Clio Coder is designed to be self-contained and platform-compliant. This document outlines the default directory paths, file purposes, permission levels, and lifecycle commands (`install`, `reset`, `upgrade`, and `uninstall`). Clio Coder installs from npm as `@iowarp/clio-coder` (`npm install -g @iowarp/clio-coder`, published since v0.3.0) or from a source checkout with a deterministic local symlink; the CLI classifies both install kinds and `clio-coder upgrade` handles each.
|
|
4
4
|
|
|
5
5
|
> [!TIP]
|
|
6
|
-
> **Interactive Spec Available:** An interactive dashboard with a path simulator and visual flowcharts is located at [docs/html/lifecycle_blueprint.html](html/lifecycle_blueprint.html) (Version: 0.3.
|
|
6
|
+
> **Interactive Spec Available:** An interactive dashboard with a path simulator and visual flowcharts is located at [docs/html/lifecycle_blueprint.html](html/lifecycle_blueprint.html) (Version: 0.3.7). You can open it directly in any web browser to view details dynamically.
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -229,7 +229,7 @@ Upgrading from 0.3.1 to 0.3.3 is automated:
|
|
|
229
229
|
clio-coder upgrade
|
|
230
230
|
```
|
|
231
231
|
|
|
232
|
-
Key lifecycle and operational updates in v0.3.
|
|
232
|
+
Key lifecycle and operational updates in v0.3.7:
|
|
233
233
|
- Upgraded the underlying engine SDK libraries to 0.84.0 with signal-aware OAuth cancellation.
|
|
234
234
|
- Hardened migration resilience: damaged `credentials.yaml` files no longer block upgrades when no renames are needed (#121); `--skip-migrations` is available as a recovery override.
|
|
235
235
|
- Fullscreen TUI mode (`terminal.tuiMode`, `terminal.fullscreenScrollbar`) is available via Settings → Terminal (restart required). Adaptive presentation pacing is the live `terminal.smoothStreaming` setting; 0.3.3 defaults it to `off`, with conservative `auto` and explicit `on` available from the same section.
|