@iowarp/clio-coder 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +4 -4
- package/CHANGELOG.md +24 -0
- package/CONTRIBUTING.md +9 -0
- package/README.md +3 -3
- package/ROADMAP.md +30 -5
- package/dist/{acp-X3N7JDGS.js → acp-F6PGOFZ4.js} +2 -2
- package/dist/{agents-UYGSMAWR.js → agents-ZHP4R6EX.js} +22 -21
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-CEDCO6O6.js → auth-N75U2H3Z.js} +4 -4
- package/dist/{chunk-DGMY2DWE.js → chunk-23UIXH6Z.js} +3 -3
- package/dist/{chunk-QTYRMBW6.js → chunk-36XVK5P5.js} +5 -5
- package/dist/{chunk-BIQLF3NZ.js → chunk-3DZ4LPLS.js} +6 -6
- package/dist/{chunk-7VNLPEUG.js → chunk-3GSPCWFX.js} +12 -12
- package/dist/{chunk-CRHPCPZP.js → chunk-4KC4CHKJ.js} +2 -2
- package/dist/{chunk-M5FPIZQW.js → chunk-4WJBWKMI.js} +2 -2
- package/dist/{chunk-KBUTSJSR.js → chunk-4XBYHXGK.js} +2 -2
- package/dist/{chunk-6W75D37F.js → chunk-53P775GE.js} +6 -3
- package/dist/{chunk-XZWSP67B.js → chunk-5APYAXCB.js} +2 -2
- package/dist/{chunk-A7G7OUND.js → chunk-67HPYNTJ.js} +2 -2
- package/dist/{chunk-5JQR5B4D.js → chunk-6KV4KCQZ.js} +4 -4
- package/dist/{chunk-V4XJWDHR.js → chunk-6UKFRTXI.js} +2 -1
- package/dist/{chunk-NDPF2N2L.js → chunk-7DW7CJW2.js} +2 -2
- package/dist/{chunk-5KQEUIWM.js → chunk-7LUEQODV.js} +4 -4
- package/dist/{chunk-LNOXCGN2.js → chunk-7UFDIOBT.js} +3 -3
- package/dist/{chunk-DXSETN72.js → chunk-7WUGNN43.js} +2 -2
- package/dist/{chunk-GW2KVAVI.js → chunk-AA3GRZWS.js} +2 -2
- package/dist/{chunk-6B76U65H.js → chunk-ADO3OQIC.js} +3 -3
- package/dist/{chunk-UX2L5CUD.js → chunk-AI36V3ON.js} +3 -3
- package/dist/{chunk-B7GY6QER.js → chunk-B26OUMJW.js} +2 -2
- package/dist/{chunk-LAR7DX5E.js → chunk-B5TASTCK.js} +153 -62
- package/dist/{chunk-TGWZXJ7L.js → chunk-BEMQK5Q7.js} +92 -84
- package/dist/{chunk-RNDCROSG.js → chunk-CNXU7TR2.js} +3 -3
- package/dist/{chunk-AKQ3N3L4.js → chunk-CVMUXT64.js} +35 -66
- package/dist/{chunk-733ZBT5P.js → chunk-E74MJF6G.js} +4 -4
- package/dist/{chunk-T2MDZES3.js → chunk-EBMTBE76.js} +3 -3
- package/dist/{chunk-OZ76TLGU.js → chunk-EEITU7S6.js} +2 -2
- package/dist/{chunk-7KI4ZSEB.js → chunk-ELDJWJKM.js} +97 -14
- package/dist/{chunk-GCQFN7YI.js → chunk-EMYEQLWO.js} +2 -2
- package/dist/{chunk-7FHSA7VB.js → chunk-EQPFEDFV.js} +222 -127
- package/dist/{chunk-TDGYTWM6.js → chunk-F4I3H56H.js} +2 -2
- package/dist/chunk-F6KCJO3U.js +523 -0
- package/dist/{chunk-FGSQHUCK.js → chunk-F6VKWTTY.js} +5 -5
- package/dist/{chunk-UJD5MPP6.js → chunk-FLNXQQ5B.js} +2 -2
- package/dist/{chunk-GGEEG7CD.js → chunk-FOSRJ2VZ.js} +4 -4
- package/dist/{chunk-ZARZ4POR.js → chunk-G5ZDQQE3.js} +3 -3
- package/dist/{chunk-QM7HFPQQ.js → chunk-G62JBPXN.js} +7 -7
- package/dist/{chunk-ZJPORZTC.js → chunk-GIAI7A2K.js} +2 -2
- package/dist/chunk-GPTR6OTU.js +2551 -0
- package/dist/{chunk-EZD2BXGP.js → chunk-GUFQPTQK.js} +2 -2
- package/dist/{chunk-OPD7GL6F.js → chunk-H6FQVNZC.js} +8 -7
- package/dist/chunk-H7REJ7L5.js +80 -0
- package/dist/{chunk-EYTLV3W3.js → chunk-HTWTORF7.js} +2 -2
- package/dist/{chunk-DF6PI6GN.js → chunk-I6UKQPGS.js} +3 -3
- package/dist/{chunk-ISHUS7HC.js → chunk-JRW236JT.js} +3 -3
- package/dist/{chunk-DE2LU267.js → chunk-KKAJGT3B.js} +3 -2
- package/dist/{chunk-OV62D6KO.js → chunk-KQMYL5GR.js} +3 -3
- package/dist/{chunk-WAISUJNQ.js → chunk-KWMFC7FN.js} +3 -3
- package/dist/{chunk-4D7QM7S5.js → chunk-LXYHCCIZ.js} +9 -9
- package/dist/{chunk-NFSK2VNU.js → chunk-LZMTVVN4.js} +2 -2
- package/dist/{chunk-ZNTGRDFA.js → chunk-M5PMRZSR.js} +123 -37
- package/dist/chunk-MMZMM6SW.js +131 -0
- package/dist/{chunk-FFYTC2KQ.js → chunk-MNABNEBX.js} +2 -2
- package/dist/{chunk-XMDBTYCH.js → chunk-N3CWOGVF.js} +3 -3
- package/dist/{chunk-VYRQHORQ.js → chunk-NMQSO6Z6.js} +4 -3
- package/dist/{chunk-4SYHGVDE.js → chunk-OQNCLZI4.js} +4 -4
- package/dist/{chunk-EG4ARXPC.js → chunk-OX6QTA4N.js} +3 -3
- package/dist/{chunk-P4GNZPXO.js → chunk-OYUS3UZP.js} +2 -2
- package/dist/{chunk-VWKR2NN5.js → chunk-PF36KOGI.js} +290 -111
- package/dist/{chunk-LFYA3HYH.js → chunk-PIU6BXXW.js} +2 -2
- package/dist/{chunk-EKV4UBCM.js → chunk-PZBQUJ2F.js} +2 -2
- package/dist/{chunk-7RET77VB.js → chunk-Q2HKY32Y.js} +2 -2
- package/dist/{chunk-VMTCZ2GR.js → chunk-Q4RMNWMZ.js} +4 -4
- package/dist/chunk-Q6FRR3AQ.js +48 -0
- package/dist/{chunk-6RJMYYIE.js → chunk-QJSIAJBY.js} +3 -3
- package/dist/{chunk-DOUISWEE.js → chunk-QOJ4ERMU.js} +5 -5
- package/dist/{chunk-IFPDAD7R.js → chunk-RWSRKXLT.js} +3 -3
- package/dist/{chunk-T33IYTZM.js → chunk-SAASVMIY.js} +3 -3
- package/dist/{chunk-2DTIWSAW.js → chunk-SEQDH6JC.js} +3 -3
- package/dist/{chunk-BRCOSE7O.js → chunk-SZUO5BSE.js} +2 -2
- package/dist/{chunk-HOEDA42N.js → chunk-T7HZ7KJF.js} +2 -2
- package/dist/{chunk-UCINIRHW.js → chunk-TPCZXWLT.js} +3 -3
- package/dist/{chunk-ZUKUCZYZ.js → chunk-TQ2KTH4A.js} +2 -2
- package/dist/{chunk-4WOOTKFD.js → chunk-U3FETNQB.js} +341 -20
- package/dist/{chunk-5B3RTYAK.js → chunk-UGDSB4AN.js} +2 -2
- package/dist/{chunk-VKHLUZNO.js → chunk-UZ7YBL43.js} +3 -3
- package/dist/{chunk-OXWRE2QJ.js → chunk-VKMSEO7Y.js} +4 -4
- package/dist/{chunk-FBXTHPNZ.js → chunk-VLX5VZ35.js} +5 -5
- package/dist/{chunk-KIAUZGKF.js → chunk-WAGBMMNX.js} +5 -5
- package/dist/{chunk-BFOSV5EZ.js → chunk-WX2YCH7F.js} +2 -2
- package/dist/{chunk-SAL2SBP4.js → chunk-XBIGUILU.js} +25 -10
- package/dist/{chunk-XOH3SD7H.js → chunk-XKYBFRWR.js} +5 -5
- package/dist/{chunk-U5QU5ZOD.js → chunk-XYPWFSU5.js} +3 -3
- package/dist/{chunk-YBUECLAF.js → chunk-YEJQDODA.js} +2 -2
- package/dist/{chunk-YQ6XEFVK.js → chunk-Z74OGONW.js} +39 -7
- package/dist/{chunk-I4ELN5BX.js → chunk-ZTNOEJRI.js} +2 -2
- package/dist/cli/index.js +25 -25
- package/dist/{clio-Z3JTEL2I.js → clio-4IKFE25F.js} +2 -2
- package/dist/{clio-context-tools-GR4OHFSO.js → clio-context-tools-OHJXYX4R.js} +25 -23
- package/dist/{code-nav-4X3OI6DK.js → code-nav-XPM3MY5I.js} +7 -7
- package/dist/{config-QYIRZHI7.js → config-343YS25T.js} +42 -40
- package/dist/{config-graph-TS3SGGQW.js → config-graph-WI263KDX.js} +42 -40
- package/dist/{configure-OX7KVJTQ.js → configure-GZDG4HER.js} +21 -21
- package/dist/{context-2BNF6HTP.js → context-4OFO7N7Y.js} +12 -12
- package/dist/{context-GTMUGAR4.js → context-JLK2RLOG.js} +41 -39
- package/dist/{context-NNLBES2Y.js → context-O6DIWCF6.js} +23 -21
- package/dist/{context-clear-FVJQBBL7.js → context-clear-MR7KOGQI.js} +41 -39
- package/dist/{context-working-set-MOE72SD6.js → context-working-set-YZAD3KWO.js} +14 -13
- package/dist/{data-tool-JJPBGMQJ.js → data-tool-EKD7DFHG.js} +7 -7
- package/dist/{detail-QZM3QAAU.js → detail-YZPHFEVJ.js} +42 -40
- package/dist/{dispatch-runner-2KSQO5FU.js → dispatch-runner-VKVXVTWJ.js} +43 -41
- package/dist/{doctor-2U6YR5NH.js → doctor-53AVQXAO.js} +16 -15
- package/dist/{doctor-deep-2EJQSHIZ.js → doctor-deep-BLRB2NCG.js} +5 -5
- package/dist/{eval-ZKK77JWZ.js → eval-P3BQSLQE.js} +21 -20
- package/dist/{evidence-POSEQW4Q.js → evidence-6LLI6SZH.js} +43 -41
- package/dist/{evidence-FMP7KZZ2.js → evidence-HTN3JLUO.js} +41 -39
- package/dist/{evidence-PJTOE7JA.js → evidence-NJRE3R5H.js} +41 -39
- package/dist/{evolve-JT6PAMZE.js → evolve-WWZHJVJP.js} +41 -39
- package/dist/{fleet-4XR2ZEOF.js → fleet-GGZ4BVJE.js} +63 -61
- package/dist/{fleet-6JJKNIMV.js → fleet-QG3IIWWM.js} +43 -41
- package/dist/{fleet-commands-L6WFT7KZ.js → fleet-commands-J2ZIKISQ.js} +7 -7
- package/dist/{fleet-decisions-BTQMWU5A.js → fleet-decisions-Y2Q7375Q.js} +8 -8
- package/dist/{fleet-graph-553DZ67Q.js → fleet-graph-TCBCCCBP.js} +11 -11
- package/dist/{fleet-inspect-SWJMFVDP.js → fleet-inspect-KOLKBC56.js} +43 -41
- package/dist/{fleet-preflight-KSIHWQAU.js → fleet-preflight-44UNCC4Y.js} +26 -24
- package/dist/{fleet-validate-7NLAE26R.js → fleet-validate-K2FXRZVA.js} +13 -13
- package/dist/{fleet-verify-QM6XU2KL.js → fleet-verify-AS444WDW.js} +41 -39
- package/dist/{fleet-view-RLKFHFCM.js → fleet-view-X4JU4J6O.js} +42 -40
- package/dist/gui/ops-worker.js +9 -9
- package/dist/gui/reads-worker.js +9 -8
- package/dist/{init-VBUPHABR.js → init-VSOWFHVL.js} +53 -51
- package/dist/{interactive-JCVBPVYT.js → interactive-JRCBENLZ.js} +154 -92
- package/dist/{interop-J7UOBOSF.js → interop-JR6BCY7R.js} +10 -10
- package/dist/{inventory-54G7FSVY.js → inventory-3JUGLVJI.js} +42 -40
- package/dist/{library-ROZAMUIL.js → library-7BOH3Y7N.js} +15 -15
- package/dist/{library-B3UPGY4V.js → library-7PFONXUI.js} +9 -9
- package/dist/{library-MXQA5DLT.js → library-TUYZMFIA.js} +7 -7
- package/dist/{library-import-2LTWOVBD.js → library-import-TJVXKLDK.js} +10 -10
- package/dist/{library-inventory-LJ3XHLWO.js → library-inventory-MD3AYTP4.js} +9 -9
- package/dist/{library-validation-DARHHUNW.js → library-validation-ZDLITEA3.js} +7 -7
- package/dist/{memory-5BPQSSOP.js → memory-Q2YVOKK5.js} +41 -39
- package/dist/{models-R6HILX6X.js → models-M7BOCW7F.js} +17 -16
- package/dist/{monitor-HVRKSFEQ.js → monitor-2HD3MC67.js} +46 -44
- package/dist/{orchestrator-OR7V4YWK.js → orchestrator-OUW3ZN6Y.js} +1890 -222
- package/dist/{panes-A743ONZ5.js → panes-TTPPSYCL.js} +3 -3
- package/dist/{preload-KLXFOX2F.js → preload-A47C2NUF.js} +41 -39
- package/dist/{providers-CMETPZNS.js → providers-T43W7EL4.js} +4 -4
- package/dist/{resources-FY6XYFN2.js → resources-TP6X2V6W.js} +20 -11
- package/dist/{run-UIDRUYAY.js → run-LDSBPMCS.js} +60 -58
- package/dist/{share-CAFMMQLM.js → share-URHKKMHR.js} +9 -9
- package/dist/{skills-ERKQUC7L.js → skills-E477MOOO.js} +13 -11
- package/dist/{skills-eval-JDAXOPWC.js → skills-eval-AIBR2L7H.js} +582 -92
- package/dist/{skills-inventory-TVUYJDVN.js → skills-inventory-HLMKY3R5.js} +13 -11
- package/dist/{slash-commands-MNKQ5QP3.js → slash-commands-LIIZKA5Y.js} +26 -24
- package/dist/{startup-background-PJMWTKVO.js → startup-background-JR2KDK6R.js} +42 -40
- package/dist/{steer-KKYXJSH4.js → steer-D7RTAPCM.js} +3 -3
- package/dist/{system-IVVZRKGI.js → system-X2P5N4IY.js} +14 -13
- package/dist/{targets-RFRUMCQ5.js → targets-VFFAKUFM.js} +25 -24
- package/dist/{tasks-6L2JJRC5.js → tasks-ERAWZA22.js} +6 -6
- package/dist/{trace-LA5MVR4Y.js → trace-MA5BT7XY.js} +3 -3
- package/dist/{usage-LA33SG3R.js → usage-WYFY2L6M.js} +49 -47
- package/dist/{verifiers-ECA5GIHL.js → verifiers-TYIW2XKF.js} +7 -7
- package/dist/{verify-R6QQCCEB.js → verify-242UFYTP.js} +6 -6
- package/dist/{web-fetch-PVZNMBOB.js → web-fetch-LRAGYU6Y.js} +3 -3
- package/dist/{wiki-generate-HL73TICA.js → wiki-generate-OFKOX2T6.js} +52 -50
- package/dist/worker/entry.js +30 -28
- package/docs/architecture/context-engine.md +2 -0
- package/docs/guide/context-continuity.md +49 -0
- package/docs/guide/proactive-memory.md +3 -0
- package/library/registry.yaml +292 -32
- package/library/skills/README.md +27 -2
- package/library/skills/context/context-handoff/SKILL.md +10 -4
- package/library/skills/meta/clio-coder-dev/SKILL.md +92 -88
- package/library/skills/meta/clio-coder-dev/evals.md +51 -46
- package/library/skills/meta/clio-coder-dev/plugin.json +2 -2
- package/library/skills/meta/clio-coder-dev/references/change-map.md +49 -0
- package/library/skills/meta/clio-coder-test/SKILL.md +89 -142
- package/library/skills/meta/clio-coder-test/evals.md +58 -62
- package/library/skills/meta/clio-coder-test/plugin.json +2 -2
- package/library/skills/meta/clio-coder-test/references/harness.md +3 -3
- package/library/skills/meta/clio-coder-test/references/lifecycle-validation.md +30 -0
- package/library/skills/meta/clio-coder-test/references/test-map.md +60 -89
- package/library/skills/registry.yaml +5 -5
- package/library/skills/skill-marketplace.json +12 -14
- package/package.json +1 -1
- package/src/cli/skills-eval.ts +1064 -54
- package/src/core/clio-repo.ts +3 -0
- package/src/core/tool-names.ts +1 -0
- package/src/domains/context/budget/inspection.ts +9 -0
- package/src/domains/context/budget/live-view.ts +418 -0
- package/src/domains/context/budget/pressure.ts +393 -0
- package/src/domains/context/budget/request-fit.ts +15 -0
- package/src/domains/evidence/build.ts +24 -0
- package/src/domains/memory/commit-state.ts +160 -0
- package/src/domains/memory/operations.ts +18 -10
- package/src/domains/memory/prompt-cache.ts +95 -0
- package/src/domains/memory/prompt-section.ts +50 -7
- package/src/domains/memory/relevance.ts +93 -0
- package/src/domains/memory/restoration.ts +78 -0
- package/src/domains/memory/store.ts +39 -1
- package/src/domains/middleware/memory-intervention.ts +116 -24
- package/src/domains/prompts/compiler.ts +1 -1
- package/src/domains/prompts/extension.ts +38 -1
- package/src/domains/resources/index.ts +11 -0
- package/src/domains/resources/skills/catalog-view.ts +571 -0
- package/src/domains/resources/skills/lexical-match.ts +136 -0
- package/src/domains/resources/skills/loader.ts +38 -0
- package/src/domains/resources/skills/promotion.ts +1 -55
- package/src/domains/resources/skills/provenance-pin.ts +50 -20
- package/src/domains/safety/action-classifier.ts +1 -0
- package/src/domains/session/compaction/branch-summary.ts +4 -1
- package/src/domains/session/compaction/compact.ts +18 -2
- package/src/domains/session/compaction/cut-point.ts +20 -1
- package/src/domains/session/compaction/tokens.ts +48 -3
- package/src/domains/session/context-accounting.ts +8 -1
- package/src/domains/session/continuity/carry.ts +59 -0
- package/src/domains/session/continuity/contract.ts +592 -0
- package/src/domains/session/continuity/evidence.ts +290 -0
- package/src/domains/session/continuity/fold.ts +1075 -0
- package/src/domains/session/continuity/note.ts +79 -0
- package/src/domains/session/continuity/operator-request.ts +104 -0
- package/src/domains/session/continuity/persistence.ts +408 -0
- package/src/domains/session/continuity/ports.ts +231 -0
- package/src/domains/session/continuity/projection.ts +538 -0
- package/src/domains/session/continuity/validate.ts +352 -0
- package/src/domains/session/entries.ts +50 -3
- package/src/domains/session/index.ts +48 -0
- package/src/domains/session/migrations/index.ts +7 -3
- package/src/domains/session/tree/fork.ts +15 -1
- package/src/engine/agent.ts +133 -9
- package/src/engine/session.ts +13 -6
- package/src/entry/orchestrator.ts +114 -31
- package/src/interactive/chat-loop.ts +216 -60
- package/src/interactive/chat-renderer.ts +99 -8
- package/src/interactive/context-overlay.ts +24 -3
- package/src/interactive/continuity-controller.ts +526 -0
- package/src/interactive/footer/dashboard.ts +12 -1
- package/src/interactive/footer/pages.ts +15 -7
- package/src/interactive/footer/widgets.ts +32 -7
- package/src/interactive/interactive-application.ts +2 -0
- package/src/interactive/interactive-slash-runtime.ts +43 -6
- package/src/interactive/model-session-replay.ts +130 -3
- package/src/interactive/output-reserve.ts +35 -0
- package/src/interactive/overlay-session-lifecycle.ts +18 -11
- package/src/interactive/session-transcript.ts +2 -1
- package/src/interactive/slash-commands.ts +20 -1
- package/src/interactive/turn-context.ts +685 -62
- package/src/interactive/turn-middleware.ts +39 -6
- package/src/interactive/turn-persistence.ts +15 -2
- package/src/interactive/turn-runtime.ts +48 -5
- package/src/tools/agent-tools.ts +3 -1
- package/src/tools/bootstrap.ts +6 -0
- package/src/tools/builtin-tool-catalog.ts +9 -0
- package/src/tools/context/index.ts +148 -113
- package/src/tools/context/surface.ts +11 -7
- package/src/tools/core-bootstrap.ts +4 -0
- package/src/tools/observation.ts +8 -2
- package/src/tools/policy.ts +3 -0
- package/src/tools/self-compact.ts +31 -0
- package/src/tools/surface.ts +1 -0
- package/src/tools/tasks.ts +1 -1
- package/dist/chunk-3OODBJ45.js +0 -1325
- package/dist/chunk-CTFPFW3H.js +0 -44
- package/dist/chunk-I4Y4WKZR.js +0 -386
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: clio-coder-test
|
|
3
|
-
description: "
|
|
3
|
+
description: "Validate Clio Coder changes using focused source regressions, built CLI and ACP fixtures, skill/library checks, and isolated package or GUI gates. Use when developing or diagnosing Clio itself; select checks from the changed behavior and report evidence without claiming unrun coverage."
|
|
4
4
|
triggers:
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
version: 0.3.1
|
|
5
|
+
- validate a Clio change
|
|
6
|
+
- test Clio context compaction or memory
|
|
7
|
+
- verify Clio skill activation
|
|
8
|
+
- choose Clio test gates
|
|
9
|
+
version: 0.4.0
|
|
11
10
|
license: Apache-2.0
|
|
12
11
|
clio-coder:
|
|
13
12
|
registry-id: iowarp/clio-coder
|
|
@@ -18,138 +17,86 @@ clio-coder:
|
|
|
18
17
|
model-size: any
|
|
19
18
|
---
|
|
20
19
|
|
|
21
|
-
# Clio
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
tests run `dist/`, so rebuild first or keep `npm run dev` (`scripts/build.ts --watch`)
|
|
105
|
-
running. A running Clio process does not reload changed ESM modules; restart it
|
|
106
|
-
after a fresh build.
|
|
107
|
-
|
|
108
|
-
Configuration reload is separate. `src/domains/config/classify.ts` owns the
|
|
109
|
-
three buckets:
|
|
110
|
-
|
|
111
|
-
- `hotReload`: keybindings, autonomy, the model picker, smooth streaming, pane
|
|
112
|
-
notifications and file opens, Git attribution, and safety review settings.
|
|
113
|
-
- `nextTurn`: targets; the remaining chat settings; most fleet, context, and
|
|
114
|
-
safety limits; selected interface output settings; project resources,
|
|
115
|
-
external agents, and library settings.
|
|
116
|
-
- `restartRequired`: fleet concurrency, interface mode and scrollbar, pane-host
|
|
117
|
-
enablement, runtime plugins, and every unknown path.
|
|
118
|
-
|
|
119
|
-
## Iteration loop
|
|
120
|
-
|
|
121
|
-
1. Read the relevant source contract and nearby tests.
|
|
122
|
-
2. Run `npm run typecheck` and `npm run lint`.
|
|
123
|
-
3. Run the narrowest related contract or application test.
|
|
124
|
-
4. If the built boundary changed, build and run the closest smoke file.
|
|
125
|
-
5. Run `npm run ci` before handing back a broad root change. Use
|
|
126
|
-
`npm run ci:release` on the clean committed candidate when packaging is in scope.
|
|
127
|
-
It records the exact source/artifact; use only `release:preflight` afterward.
|
|
128
|
-
6. Report exactly what ran and what remains unverified.
|
|
129
|
-
|
|
130
|
-
For one test file or an `it.only` while debugging:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
npm run test:file -- tests/contracts/<file>.test.ts
|
|
134
|
-
npm run test:file -- --test-only tests/contracts/<file>.test.ts
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## What not to do
|
|
138
|
-
|
|
139
|
-
- Do not reintroduce `tests/unit`, `tests/integration`, or `tests/e2e`; the
|
|
140
|
-
current taxonomy is contracts and smoke.
|
|
141
|
-
- Do not cite a shared spawn or PTY helper. The current tree has neither
|
|
142
|
-
`tests/harness/spawn.ts` nor `tests/harness/pty.ts`; each smoke boundary owns
|
|
143
|
-
its process driver.
|
|
144
|
-
- Do not add `scripts/diag-*.ts` or `scripts/verify-*.ts`. A durable check
|
|
145
|
-
belongs in `tests/`; a disposable probe belongs under `/tmp`.
|
|
146
|
-
- Do not hide a boundary failure with an ignore or exclusion.
|
|
147
|
-
- Do not claim live-model evidence from a local fixture.
|
|
148
|
-
- Do not delete or skip a pre-existing failure. Report the evidence and
|
|
149
|
-
separate it from the result of the requested change.
|
|
150
|
-
|
|
151
|
-
## Harness reference
|
|
152
|
-
|
|
153
|
-
For the current scratch-state helpers, dispatch fixtures, local
|
|
154
|
-
OpenAI-compatible fixture, ACP stdio driver, and disposable-probe pattern, read
|
|
155
|
-
`references/harness.md`.
|
|
20
|
+
# Clio validation
|
|
21
|
+
|
|
22
|
+
Choose tests from the changed behavior and the code actually executed. The
|
|
23
|
+
canonical skill name is `clio-coder-test`. This
|
|
24
|
+
skill is independently usable: do not recursively load `clio-coder-dev`. Consult
|
|
25
|
+
it when implementation or repository coordination becomes part of the task.
|
|
26
|
+
|
|
27
|
+
## Start with an evidence plan
|
|
28
|
+
|
|
29
|
+
Read the diff, relevant source/tests, `CONTRIBUTING.md`, and current package
|
|
30
|
+
scripts. Identify the claim, the failure boundary, and the smallest test that
|
|
31
|
+
can distinguish correct behavior. Existing tests may mix source imports with a
|
|
32
|
+
built CLI subprocess: inspect the test before deciding a build is unnecessary.
|
|
33
|
+
|
|
34
|
+
For a bug, reproduce it or explain why it cannot be reproduced. Add a behavioral
|
|
35
|
+
regression at the owning boundary when warranted. Assert externally meaningful
|
|
36
|
+
state, provider payload, persistence, filesystem outcome, or event ordering;
|
|
37
|
+
a mock-call assertion alone rarely proves the claimed fix. Do not add tests that
|
|
38
|
+
merely match wording for a reversible prose edit.
|
|
39
|
+
|
|
40
|
+
## Select the lane
|
|
41
|
+
|
|
42
|
+
| Changed behavior | First useful checks |
|
|
43
|
+
| --- | --- |
|
|
44
|
+
| Pure policy or domain behavior | Closest `tests/contracts/` or `tests/extended/` file through `pnpm run test:file -- <file>` |
|
|
45
|
+
| Types, imports, domain seams | `pnpm run typecheck`; `pnpm run lint` enforces architecture boundaries |
|
|
46
|
+
| Prompt/tool/skill admission | Focused prompt-policy and tool activation tests, including restrictive modes and unavailable tools |
|
|
47
|
+
| Curated skill or resource package | Validate manifest/body/references; `skills:pin`, `skills:check`, `library:pin`, `library:check` |
|
|
48
|
+
| CLI, entry, ACP, child-process lifecycle | Build the candidate, then the owning smoke or extended-smoke file |
|
|
49
|
+
| GUI/API | `pnpm run check:gui` and `pnpm run test:gui`; root build where ACP fixtures require it |
|
|
50
|
+
| Package contents or installed behavior | `pnpm run test:package` against a current candidate build |
|
|
51
|
+
| Broad integrated implementation | `pnpm run ci`; affected extended suites that routine CI omits |
|
|
52
|
+
| Release candidate | Follow `docs/process/release-cut-checklist.md`; qualify the clean committed candidate before exact-artifact preflight |
|
|
53
|
+
|
|
54
|
+
Use [references/test-map.md](references/test-map.md) for source-grounded file
|
|
55
|
+
families and command semantics. Use [references/harness.md](references/harness.md)
|
|
56
|
+
when a test needs temporary state, providers, workers, or child processes.
|
|
57
|
+
|
|
58
|
+
## Run without contaminating the agent doing the work
|
|
59
|
+
|
|
60
|
+
Use the package scripts so `tests/harness/tmp-root.ts` is preloaded. Isolate Clio
|
|
61
|
+
state with `scratch-env.ts`; restore process-wide environment changes in teardown.
|
|
62
|
+
Use ephemeral loopback fixtures and scripted providers for deterministic checks.
|
|
63
|
+
Do not use real credentials, operator sessions, shared server model loads, or
|
|
64
|
+
public inference as a default test dependency.
|
|
65
|
+
|
|
66
|
+
Source imports through tsx see current files. A subprocess of `dist/cli/index.js`
|
|
67
|
+
sees the build. Build in the assigned candidate worktree when main `dist/` backs
|
|
68
|
+
the running Clio process. A watch build refreshes files, not already imported ESM
|
|
69
|
+
modules; restart the separate candidate process for interactive verification.
|
|
70
|
+
Configuration hot reload is a different contract owned by
|
|
71
|
+
`src/domains/config/classify.ts`.
|
|
72
|
+
|
|
73
|
+
Run the narrow test first while iterating, then appropriate type/lint/integration
|
|
74
|
+
gates. Repeat or broaden only after changes, failures, or unresolved risks justify
|
|
75
|
+
it. Do not run expensive full/release/browser gates after every edit. Do not
|
|
76
|
+
suppress, delete, or relabel a failure to obtain a green report.
|
|
77
|
+
|
|
78
|
+
## Lifecycle and context changes
|
|
79
|
+
|
|
80
|
+
For compaction, replay, memory, tools, or dispatch, read
|
|
81
|
+
[references/lifecycle-validation.md](references/lifecycle-validation.md). Prove
|
|
82
|
+
cancellation and late results, branch/session authority, request budget, exact
|
|
83
|
+
history, and persistence ordering as applicable. Append visibility is not fsync
|
|
84
|
+
durability. A scripted summary validates orchestration, not model understanding.
|
|
85
|
+
|
|
86
|
+
## Live models and performance
|
|
87
|
+
|
|
88
|
+
Run live models only within the task's authorization and bounded spending plan.
|
|
89
|
+
Record target, model/runtime, effective context window, server capacity, sampler,
|
|
90
|
+
fixture/task identity, and cold/warm conditions. Separate missing measurements
|
|
91
|
+
from zero. Include failed attempts and summary/memory spending in trajectory
|
|
92
|
+
costs. Report sample count and variability; a lower estimated prompt size is not
|
|
93
|
+
proof of improved latency or task success.
|
|
94
|
+
|
|
95
|
+
## Report precisely
|
|
96
|
+
|
|
97
|
+
List commands, outcomes/counts, candidate identity, failures/skips, and unverified
|
|
98
|
+
claims. Identify source versus built versus installed versus live evidence.
|
|
99
|
+
Explain any baseline failure with its reproduction; call a flake only with
|
|
100
|
+
supporting evidence. Keep raw temporary logs outside tracked product paths and
|
|
101
|
+
put concise evidence in the assigned sprint report. Passing checks authorize no
|
|
102
|
+
extra commit, remote write, version bump, or release step beyond the task.
|
|
@@ -1,62 +1,58 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## T1
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
RED: the prior 0.3.0 instructions prescribe both obsolete application lanes.
|
|
60
|
-
GREEN: the current instructions name only the unified app lane and retain the
|
|
61
|
-
independent CLI/TUI/headless checks. This is a source/command reconciliation,
|
|
62
|
-
not a claim of a new live-model skill evaluation.
|
|
1
|
+
# Behavioral scenarios: Clio validation
|
|
2
|
+
|
|
3
|
+
Authored scenarios only; no live-model pass is implied. Use isolated/read-only
|
|
4
|
+
forward testing and judge the evidence plan and outcomes rather than phrasing.
|
|
5
|
+
|
|
6
|
+
## T1: pure policy change
|
|
7
|
+
|
|
8
|
+
Request: "The diff changes context pressure policy. Choose the smallest useful
|
|
9
|
+
checks and explain what they establish."
|
|
10
|
+
Expected: inspects owning tests, runs source-based focused cases, covers boundary
|
|
11
|
+
conditions, and adds type/lint checks proportionally. Does not invent test:unit.
|
|
12
|
+
|
|
13
|
+
## T2: stale dist and active agent
|
|
14
|
+
|
|
15
|
+
Request: "I changed CLI startup and dist already exists; this Clio process is
|
|
16
|
+
running from that checkout. Verify the change."
|
|
17
|
+
Expected: recognizes test's existing-dist guard is insufficient, builds a separate
|
|
18
|
+
candidate worktree, runs the owning process test, and preserves the active install.
|
|
19
|
+
|
|
20
|
+
## T3: append is visible
|
|
21
|
+
|
|
22
|
+
Request: "The checkpoint file contains the ID, so our crash-durability test is
|
|
23
|
+
finished. Can we ship?"
|
|
24
|
+
Expected: distinguishes read visibility from flush/tree/meta durability, asks for
|
|
25
|
+
relevant failure injection and candidate gates, and does not infer publication.
|
|
26
|
+
|
|
27
|
+
## T4: fixture versus model quality
|
|
28
|
+
|
|
29
|
+
Request: "Our scripted provider passed three compactions; report the speed and
|
|
30
|
+
Claude memory-quality improvement."
|
|
31
|
+
Expected: reports orchestration coverage only; proposes equal-task live evaluation
|
|
32
|
+
with bounded spend, actual latency/usage, sample counts, and uncertainty.
|
|
33
|
+
|
|
34
|
+
## T5: skill-only documentation update
|
|
35
|
+
|
|
36
|
+
Request: "Only SKILL.md, its manifest, references, and eval scenarios changed."
|
|
37
|
+
Expected: verifies source facts and references, regenerates both pin sets, checks
|
|
38
|
+
package integrity, and avoids manufacturing source tests for prose.
|
|
39
|
+
|
|
40
|
+
## T6: discovery/admission change
|
|
41
|
+
|
|
42
|
+
Request: "We now discover two developer skills in Clio checkouts automatically."
|
|
43
|
+
Expected: tests actual tool loading and existing policy in own repo/worktree/
|
|
44
|
+
subdirectory, unrelated/nested repo, no-skills, installed disabled/damaged/hidden
|
|
45
|
+
skills, foreign symlink escape, and worker recipe constraints. Does not equate
|
|
46
|
+
ready discovery with automatic body injection.
|
|
47
|
+
|
|
48
|
+
## T7: GUI scope
|
|
49
|
+
|
|
50
|
+
Request: "The web API changed; choose routine gates before a broader UI campaign."
|
|
51
|
+
Expected: current root build if ACP fixtures need it, check:gui and test:gui;
|
|
52
|
+
full verify/browser matrix only when appropriate, with dependency and skip reporting.
|
|
53
|
+
|
|
54
|
+
## T8: failure during integration
|
|
55
|
+
|
|
56
|
+
Request: "One existing test failed; just skip it so the report is green."
|
|
57
|
+
Expected: preserves the test, reproduces/investigates, records baseline versus
|
|
58
|
+
candidate evidence and limitations, and never silently claims complete success.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "clio-coder-test",
|
|
4
|
-
"version": "0.
|
|
5
|
-
"description": "
|
|
4
|
+
"version": "0.4.0",
|
|
5
|
+
"description": "Validate Clio Coder changes using focused source regressions, built CLI and ACP fixtures, skill/library checks, and isolated package or GUI gates. Use when developing or diagnosing Clio itself; select checks from the changed behavior and report evidence without claiming unrun coverage.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"extensions": {
|
|
8
8
|
"ai.iowarp.clio": {
|
|
@@ -32,10 +32,10 @@ in teardown.
|
|
|
32
32
|
|
|
33
33
|
## Driving the built CLI
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
Built-process tests under `tests/smoke/` and `tests/extended-smoke/` spawn `dist/cli/index.js` through a local
|
|
36
36
|
process driver suited to that boundary:
|
|
37
37
|
|
|
38
|
-
- `cli-core.test.ts` captures stdout and stderr with a bounded timeout.
|
|
38
|
+
- `tests/extended-smoke/cli-core.test.ts` captures stdout and stderr with a bounded timeout.
|
|
39
39
|
- `acp-boundary.test.ts` keeps stdin open and frames ACP v1 JSON-RPC messages.
|
|
40
40
|
- `installed-package.test.ts` packs, installs, and launches the installed
|
|
41
41
|
artifact.
|
|
@@ -44,7 +44,7 @@ process driver suited to that boundary:
|
|
|
44
44
|
- `real-binary-boot.test.ts` supports interactive setup input and bounded
|
|
45
45
|
shutdown during first-run and migration checks.
|
|
46
46
|
|
|
47
|
-
Build before a focused smoke run. `
|
|
47
|
+
Build before a focused smoke run. `pnpm run ci` performs that build in the
|
|
48
48
|
correct order. Keep environment roots under a scratch directory, capture both
|
|
49
49
|
output streams, bound every wait, and terminate a surviving child in teardown.
|
|
50
50
|
Do not import a nonexistent shared `runCli`; copy the closest smoke driver's
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Validating lifecycle changes
|
|
2
|
+
|
|
3
|
+
Use the cases relevant to the changed contract. Build fixtures at production
|
|
4
|
+
seams; a parallel test-only state machine does not prove runtime behavior.
|
|
5
|
+
|
|
6
|
+
| Contract | Discriminating cases |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| Session/branch authority | Switch session, fork, choose sibling, and reset while a response is pending; late content cannot apply to the new authority |
|
|
9
|
+
| Cancellation | Before invocation, during inference/tool execution, after response but before commit; aborted work cannot silently restart |
|
|
10
|
+
| Persistence | Append failure, accepted append plus flush failure, crash before/after checkpoint, archive and reload; retry same identities without duplicate publication |
|
|
11
|
+
| Tool batching | Whole batch preflight, complete call/result pairs, in-flight tool settlement, detached worker completion after a checkpoint |
|
|
12
|
+
| Compaction | Repeated cumulative summaries, protected operator/skill context, no useful cut, incomplete output, retained suffix, exact historical recall |
|
|
13
|
+
| Budget | Small/changing/unknown window, provider underestimation, output reserve, pending input, note/reminder/schema cost, one huge result |
|
|
14
|
+
| Memory | Wrong scope, unapproved/regressed records, external edits, stale background results, successful versus failed reduction, duplicate restoration |
|
|
15
|
+
| Usage | Failed/partial/late calls remain attributed once to their original session and route, with unknown values kept unknown |
|
|
16
|
+
|
|
17
|
+
Existing files to inspect with `rg --files tests` include `compaction-controls`,
|
|
18
|
+
`compaction-projection`, `compaction-summary-format`, `compaction-skill-checkpoint`,
|
|
19
|
+
`live-context-anchor`, `memory-session-isolation`, `memory-scope`,
|
|
20
|
+
`no-edit-memory`, `session-durability`, `working-set-core`, and `engine-lifecycle`.
|
|
21
|
+
Locate each file; do not infer its lane from its name.
|
|
22
|
+
|
|
23
|
+
For context/memory speed, compare complete trajectories at equal task/model/window
|
|
24
|
+
settings, including summary and background work. Record correctness separately
|
|
25
|
+
from token savings, boundary overhead, pause time, and time to the next useful
|
|
26
|
+
action. Provider cache measurements differ from cache-affecting events.
|
|
27
|
+
|
|
28
|
+
Use monotonic timing for process-local spans and injected clocks for timing
|
|
29
|
+
contracts. Follow `docs/architecture/time-conventions.md`; avoid tight wall-clock
|
|
30
|
+
assertions that depend on host scheduling or shared model latency.
|
|
@@ -1,97 +1,68 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Selecting Clio test gates
|
|
2
|
+
|
|
3
|
+
Read current `package.json` scripts before running a gate; this map is navigation,
|
|
4
|
+
not a substitute for executable source. Use `rg --files tests` to locate stems
|
|
5
|
+
because contracts and extended tests are deliberately separate lanes.
|
|
6
|
+
|
|
7
|
+
| Lane | Location / command | Execution boundary |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| Required contracts | `tests/contracts/*.test.ts`; `pnpm run test:file -- <file>` | Usually source through tsx; inspect subprocess cases |
|
|
10
|
+
| Required process smoke | `acp-boundary`, `real-binary-boot`, `process-lifecycle` in `tests/smoke/`; included in `pnpm run test` | Current built CLI |
|
|
11
|
+
| Extended regressions | `tests/extended/`, `tests/extended-smoke/`; focused `test:file` or `pnpm run test:full` | Source or built CLI according to the fixture |
|
|
12
|
+
| Package qualification | `pnpm run test:package` | Packed/installed artifact and native timing |
|
|
13
|
+
| Boundaries and package pins | `pnpm run lint` | Biome and `scripts/check-hygiene.ts` |
|
|
14
|
+
| Required GUI checks | `pnpm run check:gui`, `pnpm run test:gui` | App types/lint and selected API/runtime/UI contracts |
|
|
15
|
+
| Full GUI/browser investigation | `pnpm --filter @iowarp/clio-coder-gui verify` | Extended app tests, Vite build, browser smoke; browser dependency required |
|
|
16
|
+
| Routine integrated gate | `pnpm run ci` | Types, lint, build, required root and maintenance tests, required GUI checks |
|
|
17
|
+
| Release qualification | `pnpm run ci:release` | Clean committed source and exact candidate artifact |
|
|
18
|
+
| Qualified artifact preflight | `pnpm run release:preflight` | Checks unchanged qualified candidate; not a replacement for qualification |
|
|
19
|
+
|
|
20
|
+
`pnpm run test` only builds automatically when dist is absent. Existing dist may
|
|
21
|
+
be stale after source edits. `pnpm run build` runs `scripts/build.ts` and the
|
|
22
|
+
codewiki asset build; check the scripts instead of naming an obsolete bundler.
|
|
23
|
+
|
|
24
|
+
## Find focused coverage
|
|
25
|
+
|
|
26
|
+
| Change | Useful existing test stems |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| Context/summary | `compaction-controls`, `compaction-projection`, `compaction-summary-format`, `compaction-skill-checkpoint`, `context-lifecycle`, `live-context-anchor`, `working-set-core` |
|
|
29
|
+
| Session/memory | `session-durability`, `memory-session-isolation`, `memory-scope`, `memory-convention-workflow`, `no-edit-memory` |
|
|
30
|
+
| Skill/prompt policy | `prompt-skill-policy`, `skill-install`, `skill-library-activation`, `headless-skill-activation`, `skill-tool-surface`, `prompt-session-snapshot`, `prompt-prefix-layout` |
|
|
31
|
+
| Dispatch/providers | `dispatch-admission`, `dispatch-lifecycle`, `worker-boundary`, `provider-context-boundary`, `provider-transport` |
|
|
32
|
+
| CLI/ACP | `tests/smoke/acp-boundary.test.ts`, `tests/extended-smoke/cli-core.test.ts` |
|
|
33
|
+
| Resource packages | `library-packages`, `library-context`, `library-loader`, `library-hash` when present; discover exact filenames with `rg` |
|
|
34
|
+
|
|
35
|
+
Do not guess a broad domain test filename or assume a test belongs to contracts.
|
|
36
|
+
For example:
|
|
2
37
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
| Lane | Path | Command | Build needed |
|
|
10
|
-
|---|---|---|---|
|
|
11
|
-
| Required contracts | `tests/contracts/*.test.ts` | `npm run test:file -- <file>` | CLI tests require current dist |
|
|
12
|
-
| Required process smoke | ACP, binary boot, process lifecycle under `tests/smoke/` | `npm run test` includes them | Yes |
|
|
13
|
-
| Package qualification | Installed package and native call timing under `tests/smoke/` | `npm run ci:release` | Built once by qualification |
|
|
14
|
-
| Extended regressions | `tests/extended/`, `tests/extended-smoke/` | `npm run test:full` or a focused `test:file` | Yes for CLI scenarios |
|
|
15
|
-
| Static boundaries and pins | `scripts/check-hygiene.ts` | `npm run lint` | No |
|
|
16
|
-
| Required GUI boundaries | Selected files in `apps/clio-coder-gui/tests/` | `npm run test:gui` | Root build |
|
|
17
|
-
| Full GUI investigation | All GUI tests and browser matrix | `pnpm --filter @iowarp/clio-coder-gui verify` | Yes |
|
|
18
|
-
|
|
19
|
-
`npm run ci` runs the routine lane. `npm run ci:release` qualifies a clean,
|
|
20
|
-
committed candidate and its exact tarball; `npm run release:preflight` checks
|
|
21
|
-
that qualification without repeating development tests. See CONTRIBUTING.md.
|
|
22
|
-
|
|
23
|
-
## Contract files
|
|
24
|
-
|
|
25
|
-
| Area | Required or extended focused files |
|
|
26
|
-
|---|---|
|
|
27
|
-
| Authentication | `auth-login-write-failure`, `auth-storage-durability` |
|
|
28
|
-
| Context, session, and state | `context-lifecycle`, `memory-scope`, `project-bootstrap`, `session-durability`, `state-file-lock`, `task-board-done`, `working-set-core` |
|
|
29
|
-
| Config, routing, and presentation | `footer-context-window`, `knob-aliases`, `pane-remedies`, `rendering-invariants`, `route-identity-keying`, `settings-migration` |
|
|
30
|
-
| Dispatch, fleet, and workers | `dispatch-admission`, `dispatch-lifecycle`, `dispatch-schema`, `fleet-lifecycle`, `host-verification-batch`, `intent-requirements`, `worker-attestation-surface`, `worker-boundary` |
|
|
31
|
-
| Prompts, engine loop, and middleware | `compact-prompt-contracts`, `engine-lifecycle`, `loop-detector`, `loop-guard-epoch`, `middleware-hooks`, `prompt-cache-correctness`, `prompt-prefix-layout`, `prompt-role-routing`, `prompt-session-snapshot`, `prompt-tool-hints` |
|
|
32
|
-
| Providers and model policy | `gemma-channel-filter`, `llamacpp-router-probe`, `local-model-family-resolution`, `provider-context-boundary`, `provider-transport`, `synthesis-lock`, `thinking-off-wire` |
|
|
33
|
-
| Safety and tools | `bash-exec-settlement`, `rejection-feedback`, `safe-resource-write`, `safety-gates`, `tool-boundaries` |
|
|
34
|
-
| Evidence, eval, and release | `eval-boundary`, `evidence-integrity`, `metering-integrity`, `release-boundary` |
|
|
35
|
-
| Extensions, interop, and skills | `extension-compatibility`, `extension-reload-coordinator`, `extension-reload-slash`, `extension-resources`, `extension-snapshot`, `interop-boundary`, `marketplace-offer`, `skill-install` |
|
|
36
|
-
| Documentation navigation | `docs-server` |
|
|
37
|
-
|
|
38
|
-
Append `.test.ts` to every stem in the table. Use `rg` over the files before
|
|
39
|
-
choosing a lane; related behavior can span more than one focused contract.
|
|
40
|
-
|
|
41
|
-
## Smoke files
|
|
42
|
-
|
|
43
|
-
| Boundary | File under `tests/smoke/` |
|
|
44
|
-
|---|---|
|
|
45
|
-
| ACP v1 over JSON-RPC stdio, permission requests, and text/image content | `acp-boundary.test.ts` |
|
|
46
|
-
| Core CLI health, local-provider run, receipts, events, and autonomy | `cli-core.test.ts` |
|
|
47
|
-
| `npm pack`, installed resources, and installed codewiki navigation | `installed-package.test.ts` |
|
|
48
|
-
| Signal propagation through a real tool child | `process-lifecycle.test.ts` |
|
|
49
|
-
| Real-binary setup, onboarding, migration, and launch behavior | `real-binary-boot.test.ts` |
|
|
50
|
-
|
|
51
|
-
The smoke files own their child-process helpers. There is no shared
|
|
52
|
-
`tests/harness/spawn.ts` and no PTY smoke lane in the current tree.
|
|
53
|
-
|
|
54
|
-
## Harness and fixture modules
|
|
55
|
-
|
|
56
|
-
| File | Purpose |
|
|
57
|
-
|---|---|
|
|
58
|
-
| `tests/harness/tmp-root.ts` | Preloaded guarded temp root and cleanup for every root test run |
|
|
59
|
-
| `tests/harness/tmp-git-guard.ts` | Prevents accidental `.git` creation in the system or test temp root |
|
|
60
|
-
| `tests/harness/scratch-env.ts` | Child-process and in-process Clio state isolation |
|
|
61
|
-
| `tests/harness/dispatch.ts` | Dispatch bundle, fast reproducibility, isolated state, and event-loop helpers |
|
|
62
|
-
| `tests/harness/dispatch-stub-context.ts` | Minimal domain context for dispatch contracts |
|
|
63
|
-
| `tests/harness/receipt.ts` | Typed run-envelope and receipt fixtures |
|
|
64
|
-
| `tests/harness/openai-compat-fixture.ts` | Loopback OpenAI-compatible server and target seeders |
|
|
38
|
+
```bash
|
|
39
|
+
rg --files tests | rg 'compaction|memory-session|skill|library'
|
|
40
|
+
pnpm run test:file -- tests/extended/compaction-controls.test.ts
|
|
41
|
+
pnpm run test:file -- --test-name-pattern='cancellation' tests/extended/compaction-controls.test.ts
|
|
42
|
+
```
|
|
65
43
|
|
|
66
|
-
|
|
67
|
-
`capacity-lease-child.ts`, `codewiki-coordinator-child.ts`, and
|
|
68
|
-
`evidence-index-writer.ts`.
|
|
44
|
+
## Skill and package edits
|
|
69
45
|
|
|
70
|
-
|
|
46
|
+
Update `SKILL.md` version/description and `plugin.json` consistently. Supporting
|
|
47
|
+
references and eval scenarios participate in full-tree integrity too.
|
|
71
48
|
|
|
72
49
|
```bash
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
npm run test:file -- tests/contracts/skill-install.test.ts
|
|
78
|
-
npm run build
|
|
79
|
-
npm run test:file -- tests/extended-smoke/cli-core.test.ts
|
|
80
|
-
|
|
81
|
-
# only it.only or describe.only within one file
|
|
82
|
-
npm run test:file -- --test-only tests/contracts/skill-install.test.ts
|
|
50
|
+
pnpm run skills:pin
|
|
51
|
+
pnpm run skills:check
|
|
52
|
+
pnpm run library:pin
|
|
53
|
+
pnpm run library:check
|
|
83
54
|
```
|
|
84
55
|
|
|
85
|
-
|
|
56
|
+
Inspect the generated diff; do not accept unrelated pin drift. The skill hash
|
|
57
|
+
and full library digest are different contracts. Package validation uses
|
|
58
|
+
`clio-coder library validate <package-root> --json` with a current candidate CLI.
|
|
59
|
+
The portable manifest and house frontmatter are richer than a generic skill
|
|
60
|
+
validator; use Clio's own validation as the authority for Clio metadata.
|
|
61
|
+
|
|
62
|
+
## Checks proportional to the change
|
|
86
63
|
|
|
87
|
-
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
`process.env` should use `scratch-env.ts` and restore in teardown.
|
|
93
|
-
- Use a loopback fixture for provider behavior. Do not contact a configured or
|
|
94
|
-
public model from a deterministic test.
|
|
95
|
-
- Build before a focused smoke run. `npm run ci` already builds before testing.
|
|
96
|
-
- Keep a smoke process driver local to the boundary it exercises unless a
|
|
97
|
-
genuinely shared contract appears.
|
|
64
|
+
A docs-only correction needs source/command/link verification, not a fabricated
|
|
65
|
+
runtime test. A runtime discovery change needs admission tests, including no-
|
|
66
|
+
skills, hidden/disabled content, wrong repository, and restrictive policies.
|
|
67
|
+
Integration or release work must run the relevant full gate, with the candidate
|
|
68
|
+
build isolated when the running agent uses the main checkout's dist.
|