cool-workflow 0.1.79 → 0.1.81
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/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +51 -3
- package/apps/architecture-review/app.json +1 -1
- package/apps/architecture-review-fast/app.json +64 -0
- package/apps/architecture-review-fast/workflow.js +153 -0
- package/apps/end-to-end-golden-path/app.json +1 -1
- package/apps/pr-review-fix-ci/app.json +1 -1
- package/apps/release-cut/app.json +1 -1
- package/apps/research-synthesis/app.json +1 -1
- package/dist/agent-config.js +21 -7
- package/dist/candidate-scoring.js +42 -22
- package/dist/capability-core.js +132 -17
- package/dist/capability-registry.js +138 -168
- package/dist/cli.js +97 -98
- package/dist/collaboration.js +5 -6
- package/dist/commit.js +20 -6
- package/dist/compare.js +18 -0
- package/dist/coordinator/classify.js +45 -0
- package/dist/coordinator/paths.js +42 -0
- package/dist/coordinator/util.js +129 -0
- package/dist/coordinator.js +127 -300
- package/dist/dispatch.js +35 -0
- package/dist/drive.js +79 -6
- package/dist/error-feedback.js +8 -4
- package/dist/evidence-reasoning.js +3 -3
- package/dist/execution-backend/agent.js +331 -0
- package/dist/execution-backend/probes.js +96 -0
- package/dist/execution-backend/util.js +47 -0
- package/dist/execution-backend.js +73 -421
- package/dist/mcp-server.js +79 -183
- package/dist/multi-agent/graph.js +84 -0
- package/dist/multi-agent/helpers.js +145 -0
- package/dist/multi-agent/paths.js +22 -0
- package/dist/multi-agent-eval/format.js +194 -0
- package/dist/multi-agent-eval/normalize.js +51 -0
- package/dist/multi-agent-eval.js +39 -244
- package/dist/multi-agent-host.js +0 -19
- package/dist/multi-agent.js +125 -314
- package/dist/node-snapshot.js +3 -3
- package/dist/observability/format.js +61 -0
- package/dist/observability/intake.js +98 -0
- package/dist/observability.js +14 -160
- package/dist/operator-ux/format.js +364 -0
- package/dist/operator-ux.js +22 -363
- package/dist/orchestrator/lifecycle-operations.js +2 -1
- package/dist/orchestrator/report.js +8 -0
- package/dist/orchestrator.js +26 -9
- package/dist/reclamation.js +26 -21
- package/dist/run-export.js +494 -25
- package/dist/run-registry/derive.js +172 -0
- package/dist/run-registry/format.js +124 -0
- package/dist/run-registry/gc.js +251 -0
- package/dist/run-registry/policy.js +16 -0
- package/dist/run-registry/queue.js +116 -0
- package/dist/run-registry.js +89 -597
- package/dist/run-state-schema.js +1 -0
- package/dist/sandbox-profile.js +43 -2
- package/dist/state-explosion/format.js +159 -0
- package/dist/state-explosion/helpers.js +82 -0
- package/dist/state-explosion.js +165 -304
- package/dist/state-node.js +19 -4
- package/dist/telemetry-attestation.js +55 -0
- package/dist/telemetry-demo.js +15 -3
- package/dist/telemetry-ledger.js +60 -15
- package/dist/topology.js +25 -8
- package/dist/triggers.js +33 -14
- package/dist/trust-audit.js +145 -33
- package/dist/version.js +1 -1
- package/dist/worker-isolation/helpers.js +51 -0
- package/dist/worker-isolation/paths.js +46 -0
- package/dist/worker-isolation.js +39 -115
- package/docs/agent-delegation-drive.7.md +71 -0
- package/docs/canonical-workflow-apps.7.md +37 -0
- package/docs/cli-mcp-parity.7.md +16 -0
- package/docs/contract-migration-tooling.7.md +6 -0
- package/docs/control-plane-scheduling.7.md +6 -0
- package/docs/dogfood/resume-drive-real-agent-2026-06-14.md +40 -0
- package/docs/durable-state-and-locking.7.md +8 -0
- package/docs/evidence-adoption-reasoning-chain.7.md +6 -0
- package/docs/execution-backends.7.md +6 -0
- package/docs/index.md +2 -0
- package/docs/launch/demo.tape +28 -0
- package/docs/launch/launch-kit.md +96 -17
- package/docs/launch/pre-launch-checklist.md +53 -0
- package/docs/multi-agent-cli-mcp-surface.7.md +8 -0
- package/docs/multi-agent-eval-replay-harness.7.md +6 -0
- package/docs/multi-agent-operator-ux.7.md +6 -0
- package/docs/multi-agent-trust-policy-audit.7.md +27 -0
- package/docs/node-snapshot-diff-replay.7.md +6 -0
- package/docs/observability-cost-accounting.7.md +6 -0
- package/docs/project-index.md +27 -6
- package/docs/real-execution-backends.7.md +6 -0
- package/docs/release-and-migration.7.md +8 -0
- package/docs/release-tooling.7.md +6 -0
- package/docs/routines.md +23 -0
- package/docs/run-registry-control-plane.7.md +89 -2
- package/docs/run-retention-reclamation.7.md +8 -0
- package/docs/source-context-profiles.7.md +119 -0
- package/docs/state-explosion-management.7.md +13 -0
- package/docs/team-collaboration.7.md +6 -0
- package/docs/trust-model.md +267 -0
- package/docs/unix-principles.md +49 -1
- package/docs/vendor-manifest-loadability.7.md +43 -0
- package/docs/web-desktop-workbench.7.md +6 -0
- package/manifest/plugin.manifest.json +1 -1
- package/manifest/source-context-profiles.json +142 -0
- package/package.json +4 -1
- package/scripts/agents/builtin-templates.json +7 -0
- package/scripts/agents/claude-p-agent.js +129 -43
- package/scripts/architecture-review-fast.js +362 -0
- package/scripts/bump-version.js +5 -10
- package/scripts/canonical-apps-list.js +64 -0
- package/scripts/canonical-apps.js +36 -4
- package/scripts/coverage-gate.js +211 -0
- package/scripts/dogfood-release.js +1 -1
- package/scripts/golden-path.js +4 -4
- package/scripts/parity-check.js +5 -0
- package/scripts/release-check.js +5 -1
- package/scripts/source-context.js +291 -0
- package/scripts/version-sync-check.js +5 -7
- package/skills/ci-triage/SKILL.md +50 -0
- package/skills/ci-triage/agents/openai.yaml +4 -0
- package/skills/cool-workflow/SKILL.md +4 -1
- package/skills/deploy-check/SKILL.md +55 -0
- package/skills/deploy-check/agents/openai.yaml +4 -0
- package/skills/design-qa/SKILL.md +49 -0
- package/skills/design-qa/agents/openai.yaml +4 -0
- package/skills/pr-review/SKILL.md +45 -0
- package/skills/pr-review/agents/openai.yaml +4 -0
- package/dist/capability-dispatcher.js +0 -86
|
@@ -6,12 +6,74 @@ Everything leads with the 30-second `npx cool-workflow demo tamper` proof.
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## ✅ FINAL — Show HN (copy-paste ready)
|
|
10
|
+
|
|
11
|
+
**Pre-flight (do these first):**
|
|
12
|
+
1. Record the demo GIF: `vhs plugins/cool-workflow/docs/launch/demo.tape` → add it to the README hero (insert the GIF near the badges/intro).
|
|
13
|
+
2. Confirm on a clean machine: `npx cool-workflow demo tamper` runs and prints `VERDICT: tamper-evidence holds ✓`.
|
|
14
|
+
3. Post during US morning (HN traffic peak); reply to the first comment with the npm + provenance link.
|
|
15
|
+
|
|
16
|
+
**Title** (exactly — HN strips most formatting):
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
Show HN: Cool Workflow – tamper-evident telemetry for agent pipelines (npx demo)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**URL field:** `https://github.com/coo1white/cool-workflow`
|
|
23
|
+
|
|
24
|
+
**First comment (paste right after posting):**
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
I kept seeing agent-orchestration tools treat the model's self-reported token
|
|
28
|
+
usage and results as ground truth. For anything auditable that's backwards — a
|
|
29
|
+
control-plane that trusts unverified self-reports audits claims, not facts, and a
|
|
30
|
+
forged "green" run looks identical to a real one.
|
|
31
|
+
|
|
32
|
+
Cool Workflow takes the opposite stance. It DELEGATES model execution to whatever
|
|
33
|
+
agent you configure (claude -p, codex exec, an HTTP endpoint) and never embeds a
|
|
34
|
+
model SDK or holds an API key. What it owns is the audit trail: each agent hop's
|
|
35
|
+
reported usage is signed (ed25519) and appended to a hash-chained ledger, so
|
|
36
|
+
editing any record — or even recomputing its local hash to cover the edit — breaks
|
|
37
|
+
the chain downstream. You re-verify a finished run offline — no telemetry service
|
|
38
|
+
to trust or breach.
|
|
39
|
+
|
|
40
|
+
30-second proof, no install:
|
|
41
|
+
|
|
42
|
+
npx cool-workflow demo tamper
|
|
43
|
+
|
|
44
|
+
It builds a real signed ledger, forges it two ways (flip a verdict + re-seal its
|
|
45
|
+
hash; inflate reported tokens + reuse the signature), and catches both offline with
|
|
46
|
+
only the public key. On a real run, `cw telemetry verify <run>` re-proves the
|
|
47
|
+
recorded ledger on disk — recomputing the chain so any later edit to a verdict or
|
|
48
|
+
usage digest is caught; add `--pubkey <public.pem>` to re-run each attested hop's
|
|
49
|
+
signature check offline too. I keep an
|
|
50
|
+
honest trust-model doc (what it does and does NOT prove, incl. the single-keyholder
|
|
51
|
+
ceiling): https://github.com/coo1white/cool-workflow/blob/main/plugins/cool-workflow/docs/trust-model.md
|
|
52
|
+
|
|
53
|
+
Also: concurrent parallel() phases with declared collapse semantics (collect-all +
|
|
54
|
+
kill-on-timeout — 16 agents with a forced hang/crash/dirty-return finish without
|
|
55
|
+
deadlock and replay who-passed-who-failed), per-task output-schema gates, token
|
|
56
|
+
budgets enforced against the host's recorded usage (opt-in gate fails closed on
|
|
57
|
+
unattested telemetry), and a one-way executor boundary welded
|
|
58
|
+
into the type system (a callable that could reach a model API fails `npm run
|
|
59
|
+
build`). Zero runtime deps, BSD-2, published to npm with provenance. Ships generated
|
|
60
|
+
plugin manifests for 5 agent platforms (claude, codex, agents, gemini, opencode);
|
|
61
|
+
`npm run manifest:load-check` boots all five from one source of truth.
|
|
62
|
+
|
|
63
|
+
It's early (v0.1.81) — I'd genuinely like to hear where the "delegate, prove,
|
|
64
|
+
replay" model breaks down for your workflows.
|
|
65
|
+
|
|
66
|
+
npm: https://www.npmjs.com/package/cool-workflow
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
9
71
|
## One-liner
|
|
10
72
|
|
|
11
73
|
> Cool Workflow is an auditable control-plane for multi-agent workflows. It
|
|
12
74
|
> *delegates* model execution — never embeds it — and makes every recorded agent
|
|
13
|
-
> telemetry verdict tamper-evident: anyone can re-verify a run offline
|
|
14
|
-
> public key.
|
|
75
|
+
> telemetry verdict tamper-evident: anyone can re-verify a run's integrity offline,
|
|
76
|
+
> and check the ed25519 attribution with the public key alone.
|
|
15
77
|
|
|
16
78
|
## Elevator (2 sentences)
|
|
17
79
|
|
|
@@ -40,8 +102,8 @@ Everything leads with the 30-second `npx cool-workflow demo tamper` proof.
|
|
|
40
102
|
> holds an API key. What it *does* own is the audit trail: each agent hop's reported
|
|
41
103
|
> usage is signed (ed25519) and appended to a hash-chained ledger, so editing any
|
|
42
104
|
> record — or even recomputing its local hash to cover the edit — breaks the chain
|
|
43
|
-
> downstream. You can re-verify a finished run
|
|
44
|
-
>
|
|
105
|
+
> downstream. You can re-verify a finished run offline — no network, no trusted
|
|
106
|
+
> server.
|
|
45
107
|
>
|
|
46
108
|
> The 30-second proof, no install:
|
|
47
109
|
>
|
|
@@ -50,18 +112,23 @@ Everything leads with the 30-second `npx cool-workflow demo tamper` proof.
|
|
|
50
112
|
> ```
|
|
51
113
|
>
|
|
52
114
|
> It builds a real signed ledger, forges it two ways (flip a verdict + re-seal its
|
|
53
|
-
> hash; inflate reported tokens + reuse the signature), and
|
|
54
|
-
>
|
|
55
|
-
>
|
|
115
|
+
> hash; inflate reported tokens + reuse the signature), and catches both offline with
|
|
116
|
+
> only the public key. On a real run, `cw telemetry verify <run>` re-proves the
|
|
117
|
+
> recorded ledger on disk — recomputing the chain so any later edit to a verdict or
|
|
118
|
+
> usage digest is caught; add `--pubkey <public.pem>` to re-run each attested hop's
|
|
119
|
+
> signature check offline too. I keep an
|
|
120
|
+
> honest [trust model & limitations](https://github.com/coo1white/cool-workflow/blob/main/plugins/cool-workflow/docs/trust-model.md)
|
|
121
|
+
> doc, including the single-keyholder ceiling.
|
|
56
122
|
>
|
|
57
123
|
> Other things it does: concurrent `parallel()` phases with declared collapse
|
|
58
124
|
> semantics (collect-all + kill-on-timeout — 16 agents with a forced hang/crash/
|
|
59
125
|
> dirty-return finish without deadlock and replay "who passed/who failed"), per-task
|
|
60
|
-
> output-schema gates, token budgets enforced against
|
|
126
|
+
> output-schema gates, token budgets enforced against the host's recorded usage
|
|
127
|
+
> (an opt-in gate fails closed on unattested telemetry), and a one-way
|
|
61
128
|
> executor boundary welded into the type system (a callable that could reach a model
|
|
62
129
|
> API fails `npm run build`).
|
|
63
130
|
>
|
|
64
|
-
> Runs anywhere Node runs; `dist/` is committed; BSD-2. It's early (v0.1.
|
|
131
|
+
> Runs anywhere Node runs; `dist/` is committed; BSD-2. It's early (v0.1.81) and I'd
|
|
65
132
|
> genuinely like to hear where the "delegate, prove, replay" model breaks down for
|
|
66
133
|
> your workflows.
|
|
67
134
|
>
|
|
@@ -80,8 +147,9 @@ catches both offline with only the public key. A control-plane that delegates
|
|
|
80
147
|
model execution but can still prove the bill is real.
|
|
81
148
|
|
|
82
149
|
3/ Also: concurrent batches that don't deadlock when an agent hangs, schema-gated
|
|
83
|
-
outputs, token budgets vs
|
|
84
|
-
API) enforced at compile time. Zero
|
|
150
|
+
outputs, token budgets vs the host's recorded usage (attested-telemetry gate is
|
|
151
|
+
opt-in), and a red line (never call a model API) enforced at compile time. Zero
|
|
152
|
+
deps, BSD-2.
|
|
85
153
|
→ https://github.com/coo1white/cool-workflow
|
|
86
154
|
|
|
87
155
|
---
|
|
@@ -92,21 +160,32 @@ API) enforced at compile time. Zero deps, BSD-2.
|
|
|
92
160
|
reported usage. The thing that *spends the money* is not the thing that *keeps
|
|
93
161
|
the books* — the property auditors require everywhere except, so far, agent
|
|
94
162
|
infra.
|
|
95
|
-
- **Offline
|
|
96
|
-
|
|
163
|
+
- **Offline verification.** No telemetry service to trust or breach. The record
|
|
164
|
+
proves its own integrity offline — re-proving the chain needs no key at all — and
|
|
165
|
+
the ed25519 attribution checks against the public key alone.
|
|
97
166
|
- **Replayable, not just logged.** CW breaks at dispatch and writes to disk, so a
|
|
98
167
|
run replays deterministically — "who passed / who failed" is reconstructable, not
|
|
99
|
-
a scrollback of a fused process.
|
|
168
|
+
a scrollback of a fused process. A finished run is portable and self-proving:
|
|
169
|
+
`cw run inspect-archive <archive>` re-proves every file digest, the manifest, and
|
|
170
|
+
the whole-archive hash without importing it; `cw run import` then
|
|
171
|
+
`cw run verify-import <run-id>` restores it and re-proves the restored digests +
|
|
172
|
+
telemetry chain — a tampered archive is caught before it is trusted.
|
|
100
173
|
- **Fail-closed by default where it counts.** Schema mismatch parks the hop;
|
|
101
174
|
unverifiable usage can be refused (opt-in); an empty-capture result can't be
|
|
102
175
|
presented as a clean commit.
|
|
176
|
+
- **Cross-vendor, and it actually boots.** One source manifest
|
|
177
|
+
(`manifest/plugin.manifest.json`) generates Claude / Codex / Gemini / OpenCode /
|
|
178
|
+
agents adapters, and `npm run manifest:load-check` boots all five (184 tools each)
|
|
179
|
+
— the neutrality moat is executable, not aspirational.
|
|
103
180
|
|
|
104
181
|
## Assets to capture before posting
|
|
105
182
|
|
|
106
|
-
- [ ]
|
|
107
|
-
|
|
183
|
+
- [ ] **Demo GIF** — reproducible, no manual screen-recording: `vhs
|
|
184
|
+
plugins/cool-workflow/docs/launch/demo.tape` → `docs/launch/demo-tamper.gif`,
|
|
185
|
+
then add it to the README hero (insert it near the badges/intro). The
|
|
186
|
+
✗ DETECTED lines are the hook.
|
|
108
187
|
- [ ] Confirm `npx cool-workflow demo tamper` works from a clean machine (no clone).
|
|
109
|
-
- [ ] Pin the npm version badge / release in the first comment.
|
|
188
|
+
- [ ] Pin the npm version badge / release + provenance link in the first comment.
|
|
110
189
|
|
|
111
190
|
## Channels
|
|
112
191
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Pre-Launch Checklist — Cool Workflow Show HN
|
|
2
|
+
|
|
3
|
+
Tick top to bottom; when it's done, post. The one non-negotiable gate is ②.
|
|
4
|
+
Copy for the post itself lives in [launch-kit.md](launch-kit.md) (the **✅ FINAL**
|
|
5
|
+
block).
|
|
6
|
+
|
|
7
|
+
## ① Prepare assets (optional, recommended)
|
|
8
|
+
|
|
9
|
+
- [ ] Install [vhs](https://github.com/charmbracelet/vhs) (`brew install vhs`).
|
|
10
|
+
- [ ] Record the GIF: `vhs plugins/cool-workflow/docs/launch/demo.tape` →
|
|
11
|
+
`docs/launch/demo-tamper.gif`.
|
|
12
|
+
- [ ] Add it to the README hero (insert
|
|
13
|
+
`` near the badges/intro), commit + push.
|
|
14
|
+
> Shippable without the GIF — the README's text `✗ DETECTED` hook already stands;
|
|
15
|
+
> the GIF is upside, not a blocker.
|
|
16
|
+
|
|
17
|
+
## ② Verify — the make-or-break gate (do not skip)
|
|
18
|
+
|
|
19
|
+
- [ ] On a **clean machine / fresh terminal**: `npx cool-workflow demo tamper`
|
|
20
|
+
prints `VERDICT: tamper-evidence holds ✓`.
|
|
21
|
+
> Every click from HN runs this. One crash wastes that traffic. This is the only
|
|
22
|
+
> non-negotiable check.
|
|
23
|
+
- [ ] Sanity: `npx cool-workflow quickstart architecture-review --repo . --question "risks?"`
|
|
24
|
+
→ `status: blocked` with no agent configured (fails closed, no crash).
|
|
25
|
+
- [ ] Resumable sanity: `cw quickstart architecture-review --resume` advances one step
|
|
26
|
+
then stops; `cw run resume <run-id> --drive` continues a stopped run — proving
|
|
27
|
+
runs break at dispatch and replay from disk.
|
|
28
|
+
|
|
29
|
+
## ③ Post (US morning, ~9–11am ET is peak)
|
|
30
|
+
|
|
31
|
+
- [ ] Open the **✅ FINAL** block in [launch-kit.md](launch-kit.md).
|
|
32
|
+
- [ ] HN title: `Show HN: Cool Workflow – tamper-evident telemetry for agent pipelines (npx demo)`
|
|
33
|
+
- [ ] URL field: `https://github.com/coo1white/cool-workflow`
|
|
34
|
+
- [ ] Immediately after posting, paste the FINAL "first comment" as the first reply.
|
|
35
|
+
|
|
36
|
+
## ④ First hour (decides the outcome)
|
|
37
|
+
|
|
38
|
+
- [ ] Watch and reply fast — early engagement weighs most on HN.
|
|
39
|
+
- [ ] On the "single key holder / no second party" critique (the audit flagged it
|
|
40
|
+
too): concede it honestly and frame it as exactly why you're looking for early
|
|
41
|
+
integration partners. **Turn the critique into an invitation; don't argue.**
|
|
42
|
+
> The canned, linkable answer is already written: [docs/trust-model.md](../trust-model.md)
|
|
43
|
+
> states the ceiling plainly (integrity ≠ source honesty; one party holding both
|
|
44
|
+
> roles; full local re-chain) and frames the partner ask. Link it; don't re-argue it.
|
|
45
|
+
- [ ] No vote-rigging, no asking friends to upvote, no deleting critical comments —
|
|
46
|
+
HN's anti-abuse will sink the post.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
### Go / no-go
|
|
51
|
+
|
|
52
|
+
> If **② — `npx cool-workflow demo tamper` prints `✓` on a clean machine** — passes,
|
|
53
|
+
> you can post. Everything else is upside.
|
|
@@ -265,3 +265,11 @@ Migration DAG with reversible edges (v0.1.45), capability auto-discovery (v0.1.4
|
|
|
265
265
|
0.1.78
|
|
266
266
|
|
|
267
267
|
0.1.79
|
|
268
|
+
|
|
269
|
+
## Fast Architecture Review (v0.1.80)
|
|
270
|
+
|
|
271
|
+
Adds the opt-in fast architecture-review lane: scoped JSONL source contexts, diff-aware exports, reusable Map and Assess results, measurable wrapper metrics, actionable background full-review handoff, and userland model policy flags for routing fast/strong workers without changing the full review contract.
|
|
272
|
+
|
|
273
|
+
## New Both-Surface Verbs (v0.1.81)
|
|
274
|
+
|
|
275
|
+
v0.1.81 adds `audit verify` (`cw_audit_verify`) and `run inspect-archive` (`cw_run_inspect_archive`) — both declared once in the capability registry and exposed identically on the CLI and MCP, fail-closed (non-zero exit / `ok:false` on an unverified chain or a tampered archive).
|
|
@@ -302,3 +302,9 @@ Migration DAG with reversible edges (v0.1.45), capability auto-discovery (v0.1.4
|
|
|
302
302
|
0.1.78
|
|
303
303
|
|
|
304
304
|
0.1.79
|
|
305
|
+
|
|
306
|
+
## Fast Architecture Review (v0.1.80)
|
|
307
|
+
|
|
308
|
+
Adds the opt-in fast architecture-review lane: scoped JSONL source contexts, diff-aware exports, reusable Map and Assess results, measurable wrapper metrics, actionable background full-review handoff, and userland model policy flags for routing fast/strong workers without changing the full review contract.
|
|
309
|
+
|
|
310
|
+
_No changes to the multi-agent eval/replay harness in v0.1.81 (the multi-agent-eval module was carved into behavior-preserving siblings; replay output is byte-identical)._
|
|
@@ -314,3 +314,9 @@ Migration DAG with reversible edges (v0.1.45), capability auto-discovery (v0.1.4
|
|
|
314
314
|
0.1.78
|
|
315
315
|
|
|
316
316
|
0.1.79
|
|
317
|
+
|
|
318
|
+
## Fast Architecture Review (v0.1.80)
|
|
319
|
+
|
|
320
|
+
Adds the opt-in fast architecture-review lane: scoped JSONL source contexts, diff-aware exports, reusable Map and Assess results, measurable wrapper metrics, actionable background full-review handoff, and userland model policy flags for routing fast/strong workers without changing the full review contract.
|
|
321
|
+
|
|
322
|
+
_No changes to the multi-agent operator UX surface in v0.1.81 (the operator-ux module was carved into behavior-preserving siblings; output is byte-identical)._
|
|
@@ -115,6 +115,32 @@ Human output includes stable panels:
|
|
|
115
115
|
- Policy Violations
|
|
116
116
|
- Next Action
|
|
117
117
|
|
|
118
|
+
## Verify (fail-closed)
|
|
119
|
+
|
|
120
|
+
`audit summary` embeds an `integrity` field but is a *reader* — it always exits 0,
|
|
121
|
+
so it cannot gate a script. `audit verify` is the gate:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
node scripts/cw.js audit verify <run-id> # exit 1 if the chain is forged
|
|
125
|
+
node scripts/cw.js audit verify <run-id> --json
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
It re-proves the run's trust-audit hash chain offline: it recomputes every event
|
|
129
|
+
hash from genesis, checks `prevEventHash` linkage, and catches the unchained-event
|
|
130
|
+
forgery (an `eventHash`-less line slipped into a chained log to be waved through as
|
|
131
|
+
"legacy"). The JSON reports `present`, `verified`, `eventCount`, `chained`,
|
|
132
|
+
`unchained`, `corruptLines`, and `failedChecks[]`.
|
|
133
|
+
|
|
134
|
+
Exit-code contract (the peer of `telemetry verify`):
|
|
135
|
+
|
|
136
|
+
- ANY **unverified** chain exits **1** — forged / edited / truncated / unchained-injected,
|
|
137
|
+
*and* a fully-corrupt log (every line unparseable, which reports `present:false` but
|
|
138
|
+
`verified:false`). The gate keys on `verified`, not `present`, so the most severe
|
|
139
|
+
tamper — garbling the whole log — cannot escape by looking "absent". So
|
|
140
|
+
`cw audit verify <run> && deploy` stops on tampering.
|
|
141
|
+
- Only a truly **absent / empty** chain is `verified:true` / exit **0** — a run with
|
|
142
|
+
no audit log (or a blank one) has nothing to prove (no false-red).
|
|
143
|
+
|
|
118
144
|
## MCP
|
|
119
145
|
|
|
120
146
|
MCP parity tools:
|
|
@@ -128,6 +154,7 @@ MCP parity tools:
|
|
|
128
154
|
The older audit tools remain available:
|
|
129
155
|
|
|
130
156
|
- `cw_audit_summary`
|
|
157
|
+
- `cw_audit_verify` — fail-closed re-prove of the trust-audit hash chain (peer of `cw_telemetry_verify`)
|
|
131
158
|
- `cw_audit_worker`
|
|
132
159
|
- `cw_audit_provenance`
|
|
133
160
|
- `cw_audit_attest`
|
|
@@ -135,3 +135,9 @@ Migration DAG with reversible edges (v0.1.45), capability auto-discovery (v0.1.4
|
|
|
135
135
|
0.1.78
|
|
136
136
|
|
|
137
137
|
0.1.79
|
|
138
|
+
|
|
139
|
+
## Fast Architecture Review (v0.1.80)
|
|
140
|
+
|
|
141
|
+
Adds the opt-in fast architecture-review lane: scoped JSONL source contexts, diff-aware exports, reusable Map and Assess results, measurable wrapper metrics, actionable background full-review handoff, and userland model policy flags for routing fast/strong workers without changing the full review contract.
|
|
142
|
+
|
|
143
|
+
_No changes to node-snapshot diff/replay in v0.1.81._
|
|
@@ -194,3 +194,9 @@ Migration DAG with reversible edges (v0.1.45), capability auto-discovery (v0.1.4
|
|
|
194
194
|
0.1.78
|
|
195
195
|
|
|
196
196
|
0.1.79
|
|
197
|
+
|
|
198
|
+
## Fast Architecture Review (v0.1.80)
|
|
199
|
+
|
|
200
|
+
Adds the opt-in fast architecture-review lane: scoped JSONL source contexts, diff-aware exports, reusable Map and Assess results, measurable wrapper metrics, actionable background full-review handoff, and userland model policy flags for routing fast/strong workers without changing the full review contract.
|
|
201
|
+
|
|
202
|
+
_No changes to the observability + cost-accounting surface in v0.1.81 (the observability module was carved into behavior-preserving siblings; output is byte-identical)._
|
package/docs/project-index.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# Cool Workflow Project Index
|
|
2
2
|
|
|
3
|
-
Generated from the current repository code on 2026-06-
|
|
3
|
+
Generated from the current repository code on 2026-06-14 by `npm run sync:project-index`.
|
|
4
4
|
|
|
5
5
|
## Snapshot
|
|
6
6
|
|
|
7
7
|
- Package: `cool-workflow`
|
|
8
|
-
- Version: `0.1.
|
|
8
|
+
- Version: `0.1.81`
|
|
9
9
|
- Source modules: `58`
|
|
10
|
-
- Workflow apps: `
|
|
11
|
-
- Docs: `
|
|
12
|
-
- Smoke tests: `
|
|
10
|
+
- Workflow apps: `7`
|
|
11
|
+
- Docs: `49`
|
|
12
|
+
- Smoke tests: `86`
|
|
13
13
|
- Repository: https://github.com/coo1white/cool-workflow
|
|
14
14
|
|
|
15
15
|
## Architecture
|
|
@@ -82,9 +82,9 @@ multi-agent host -> topology -> blackboard/coordinator
|
|
|
82
82
|
|
|
83
83
|
- [agent-config.ts](../src/agent-config.ts)
|
|
84
84
|
- [capability-core.ts](../src/capability-core.ts)
|
|
85
|
-
- [capability-dispatcher.ts](../src/capability-dispatcher.ts)
|
|
86
85
|
- [capability-registry.ts](../src/capability-registry.ts)
|
|
87
86
|
- [collaboration.ts](../src/collaboration.ts)
|
|
87
|
+
- [compare.ts](../src/compare.ts)
|
|
88
88
|
- [contract-migration.ts](../src/contract-migration.ts)
|
|
89
89
|
- [drive.ts](../src/drive.ts)
|
|
90
90
|
- [evidence-grounding.ts](../src/evidence-grounding.ts)
|
|
@@ -116,6 +116,7 @@ multi-agent host -> topology -> blackboard/coordinator
|
|
|
116
116
|
| App | Type | Inputs | Sandbox | Source |
|
|
117
117
|
| --- | --- | --- | --- | --- |
|
|
118
118
|
| `architecture-review` - Map a repository architecture, assess risks, verify important findings, and synthesize an evidence-backed verdict. | canonical | `repo`, `question`, `invariant`, `focus` | `readonly` | [manifest](../apps/architecture-review/app.json) / [workflow](../apps/architecture-review/workflow.js) |
|
|
119
|
+
| `architecture-review-fast` - Run a shorter architecture review with parallel map and assess phases for faster first results. | canonical | `repo`, `question`, `invariant`, `focus`, `sourceContext`, `sourceContextDigest` | `readonly` | [manifest](../apps/architecture-review-fast/app.json) / [workflow](../apps/architecture-review-fast/workflow.js) |
|
|
119
120
|
| `end-to-end-golden-path` - Deterministic one-worker workflow app for proving the CW integration chain. | userland | `question` | `readonly` | [manifest](../apps/end-to-end-golden-path/app.json) / [workflow](../apps/end-to-end-golden-path/workflow.js) |
|
|
120
121
|
| `pr-review-fix-ci` - Review a pull request or branch, inspect CI failures, diagnose actionable issues, optionally patch, verify, and summarize with evidence. | canonical | `repo`, `pr`, `branch`, `base`, `ci`, `mode` | `readonly`, `workspace-write` | [manifest](../apps/pr-review-fix-ci/app.json) / [workflow](../apps/pr-review-fix-ci/workflow.js) |
|
|
121
122
|
| `release-cut` - Prepare a release with checklist discipline: version checks, changelog, tests, packaging, release notes, and final verification. | canonical | `repo`, `version`, `previousVersion`, `releaseBranch`, `dryRun` | `readonly`, `workspace-write` | [manifest](../apps/release-cut/app.json) / [workflow](../apps/release-cut/workflow.js) |
|
|
@@ -162,10 +163,13 @@ multi-agent host -> topology -> blackboard/coordinator
|
|
|
162
163
|
- [SANDBOX-PROFILES(7)](sandbox-profiles.7.md)
|
|
163
164
|
- [Scheduled Tasks](scheduled-tasks.md)
|
|
164
165
|
- [Security / Trust Hardening](security-trust-hardening.7.md)
|
|
166
|
+
- [Source Context Profiles](source-context-profiles.7.md)
|
|
165
167
|
- [State Explosion Management](state-explosion-management.7.md)
|
|
166
168
|
- [STATE-NODE(7)](state-node.7.md)
|
|
167
169
|
- [Team Collaboration](team-collaboration.7.md)
|
|
170
|
+
- [Trust Model & Limitations](trust-model.md)
|
|
168
171
|
- [Unix-Inspired Workflow Principles](unix-principles.md)
|
|
172
|
+
- [Vendor Manifest Loadability](vendor-manifest-loadability.7.md)
|
|
169
173
|
- [VERIFIER-GATED-COMMIT(7)](verifier-gated-commit.7.md)
|
|
170
174
|
- [Web / Desktop Workbench](web-desktop-workbench.7.md)
|
|
171
175
|
- [WORKER-ISOLATION(7)](worker-isolation.7.md)
|
|
@@ -176,18 +180,23 @@ multi-agent host -> topology -> blackboard/coordinator
|
|
|
176
180
|
Smoke tests mirror the public contracts. The high-signal suites are:
|
|
177
181
|
|
|
178
182
|
- [agent-delegation-drive-smoke.js](../test/agent-delegation-drive-smoke.js)
|
|
183
|
+
- [architecture-review-fast-automation-smoke.js](../test/architecture-review-fast-automation-smoke.js)
|
|
184
|
+
- [architecture-review-fast-smoke.js](../test/architecture-review-fast-smoke.js)
|
|
179
185
|
- [artifact-integrity-smoke.js](../test/artifact-integrity-smoke.js)
|
|
186
|
+
- [audit-verify-smoke.js](../test/audit-verify-smoke.js)
|
|
180
187
|
- [backend-registry-smoke.js](../test/backend-registry-smoke.js)
|
|
181
188
|
- [block-unapproved-tag-smoke.js](../test/block-unapproved-tag-smoke.js)
|
|
182
189
|
- [candidate-scoring-smoke.js](../test/candidate-scoring-smoke.js)
|
|
183
190
|
- [canonical-workflow-apps-smoke.js](../test/canonical-workflow-apps-smoke.js)
|
|
184
191
|
- [claude-p-agent-wrapper-smoke.js](../test/claude-p-agent-wrapper-smoke.js)
|
|
192
|
+
- [cli-jsonmode-parity-smoke.js](../test/cli-jsonmode-parity-smoke.js)
|
|
185
193
|
- [cli-mcp-parity-smoke.js](../test/cli-mcp-parity-smoke.js)
|
|
186
194
|
- [concurrent-failure-semantics-smoke.js](../test/concurrent-failure-semantics-smoke.js)
|
|
187
195
|
- [concurrent-workflow-dsl-smoke.js](../test/concurrent-workflow-dsl-smoke.js)
|
|
188
196
|
- [contract-migration-tooling-smoke.js](../test/contract-migration-tooling-smoke.js)
|
|
189
197
|
- [control-plane-scheduling-smoke.js](../test/control-plane-scheduling-smoke.js)
|
|
190
198
|
- [coordinator-blackboard-smoke.js](../test/coordinator-blackboard-smoke.js)
|
|
199
|
+
- [det-ids-b-smoke.js](../test/det-ids-b-smoke.js)
|
|
191
200
|
- [dogfood-release-smoke.js](../test/dogfood-release-smoke.js)
|
|
192
201
|
- [durable-atomic-write-smoke.js](../test/durable-atomic-write-smoke.js)
|
|
193
202
|
- [end-to-end-demo-smoke.js](../test/end-to-end-demo-smoke.js)
|
|
@@ -197,6 +206,8 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
197
206
|
- [evidence-adoption-reasoning-smoke.js](../test/evidence-adoption-reasoning-smoke.js)
|
|
198
207
|
- [evidence-content-extraction-smoke.js](../test/evidence-content-extraction-smoke.js)
|
|
199
208
|
- [execution-backends-smoke.js](../test/execution-backends-smoke.js)
|
|
209
|
+
- [freebsd-audit-fixes-smoke.js](../test/freebsd-audit-fixes-smoke.js)
|
|
210
|
+
- [h7-custom-profile-persist-smoke.js](../test/h7-custom-profile-persist-smoke.js)
|
|
200
211
|
- [mcp-app-surface-smoke.js](../test/mcp-app-surface-smoke.js)
|
|
201
212
|
- [multi-agent-cli-mcp-surface-smoke.js](../test/multi-agent-cli-mcp-surface-smoke.js)
|
|
202
213
|
- [multi-agent-eval-replay-harness-smoke.js](../test/multi-agent-eval-replay-harness-smoke.js)
|
|
@@ -222,13 +233,20 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
222
233
|
- [result-normalize-smoke.js](../test/result-normalize-smoke.js)
|
|
223
234
|
- [robustness-hardening-smoke.js](../test/robustness-hardening-smoke.js)
|
|
224
235
|
- [run-export-import-smoke.js](../test/run-export-import-smoke.js)
|
|
236
|
+
- [run-export-restore-rerun-smoke.js](../test/run-export-restore-rerun-smoke.js)
|
|
237
|
+
- [run-export-restore-resume-smoke.js](../test/run-export-restore-resume-smoke.js)
|
|
225
238
|
- [run-fixture-compat-smoke.js](../test/run-fixture-compat-smoke.js)
|
|
239
|
+
- [run-import-tamper-failclosed-smoke.js](../test/run-import-tamper-failclosed-smoke.js)
|
|
240
|
+
- [run-inspect-archive-smoke.js](../test/run-inspect-archive-smoke.js)
|
|
226
241
|
- [run-registry-control-plane-smoke.js](../test/run-registry-control-plane-smoke.js)
|
|
242
|
+
- [run-resume-drive-smoke.js](../test/run-resume-drive-smoke.js)
|
|
227
243
|
- [run-retention-reclamation-smoke.js](../test/run-retention-reclamation-smoke.js)
|
|
228
244
|
- [sandbox-profile-smoke.js](../test/sandbox-profile-smoke.js)
|
|
245
|
+
- [schedule-routine-daemon-smoke.js](../test/schedule-routine-daemon-smoke.js)
|
|
229
246
|
- [schema-validation-smoke.js](../test/schema-validation-smoke.js)
|
|
230
247
|
- [security-trust-hardening-smoke.js](../test/security-trust-hardening-smoke.js)
|
|
231
248
|
- [self-audit-hardening-smoke.js](../test/self-audit-hardening-smoke.js)
|
|
249
|
+
- [source-context-profile-smoke.js](../test/source-context-profile-smoke.js)
|
|
232
250
|
- [state-explosion-management-smoke.js](../test/state-explosion-management-smoke.js)
|
|
233
251
|
- [state-node-smoke.js](../test/state-node-smoke.js)
|
|
234
252
|
- [tamper-evidence-demo-smoke.js](../test/tamper-evidence-demo-smoke.js)
|
|
@@ -238,8 +256,11 @@ Smoke tests mirror the public contracts. The high-signal suites are:
|
|
|
238
256
|
- [telemetry-fail-closed-smoke.js](../test/telemetry-fail-closed-smoke.js)
|
|
239
257
|
- [telemetry-ledger-smoke.js](../test/telemetry-ledger-smoke.js)
|
|
240
258
|
- [telemetry-metrics-coverage-smoke.js](../test/telemetry-metrics-coverage-smoke.js)
|
|
259
|
+
- [telemetry-verify-signatures-smoke.js](../test/telemetry-verify-signatures-smoke.js)
|
|
241
260
|
- [token-budget-enforcement-smoke.js](../test/token-budget-enforcement-smoke.js)
|
|
261
|
+
- [vendor-manifest-load-smoke.js](../test/vendor-manifest-load-smoke.js)
|
|
242
262
|
- [verifier-gated-commit-smoke.js](../test/verifier-gated-commit-smoke.js)
|
|
263
|
+
- [verify-import-audit-chain-smoke.js](../test/verify-import-audit-chain-smoke.js)
|
|
243
264
|
- [web-desktop-workbench-smoke.js](../test/web-desktop-workbench-smoke.js)
|
|
244
265
|
- [worker-isolation-smoke.js](../test/worker-isolation-smoke.js)
|
|
245
266
|
- [worker-retry-count-smoke.js](../test/worker-retry-count-smoke.js)
|
|
@@ -142,3 +142,9 @@ Migration DAG with reversible edges (v0.1.45), capability auto-discovery (v0.1.4
|
|
|
142
142
|
0.1.78
|
|
143
143
|
|
|
144
144
|
0.1.79
|
|
145
|
+
|
|
146
|
+
## Fast Architecture Review (v0.1.80)
|
|
147
|
+
|
|
148
|
+
Adds the opt-in fast architecture-review lane: scoped JSONL source contexts, diff-aware exports, reusable Map and Assess results, measurable wrapper metrics, actionable background full-review handoff, and userland model policy flags for routing fast/strong workers without changing the full review contract.
|
|
149
|
+
|
|
150
|
+
_No changes to the real execution backends in v0.1.81._
|
|
@@ -280,3 +280,11 @@ Migration DAG with reversible edges (v0.1.45), capability auto-discovery (v0.1.4
|
|
|
280
280
|
0.1.78
|
|
281
281
|
|
|
282
282
|
0.1.79
|
|
283
|
+
|
|
284
|
+
## Fast Architecture Review (v0.1.80)
|
|
285
|
+
|
|
286
|
+
Adds the opt-in fast architecture-review lane: scoped JSONL source contexts, diff-aware exports, reusable Map and Assess results, measurable wrapper metrics, actionable background full-review handoff, and userland model policy flags for routing fast/strong workers without changing the full review contract.
|
|
287
|
+
|
|
288
|
+
## Migration Compatibility (v0.1.81)
|
|
289
|
+
|
|
290
|
+
v0.1.81 is additive: every change is a new flag/verb/env (`audit verify`, `run inspect-archive`, `verify-import --strict`, `CW_REQUIRE_ARCHIVE_INTEGRITY`, `quickstart --resume`, `run resume --drive`) or an internal behavior-preserving carve. Run-state schema, existing outputs, files, and exit codes are byte-identical, so runs and archives from prior versions load and verify unchanged. No migration action is required.
|
|
@@ -159,3 +159,9 @@ also get generated MCP manifests (`.gemini-plugin/`, `.opencode-plugin/`) so the
|
|
|
159
159
|
0.1.78
|
|
160
160
|
|
|
161
161
|
0.1.79
|
|
162
|
+
|
|
163
|
+
## Fast Architecture Review (v0.1.80)
|
|
164
|
+
|
|
165
|
+
Adds the opt-in fast architecture-review lane: scoped JSONL source contexts, diff-aware exports, reusable Map and Assess results, measurable wrapper metrics, actionable background full-review handoff, and userland model policy flags for routing fast/strong workers without changing the full review contract.
|
|
166
|
+
|
|
167
|
+
_No changes to the release-flow tooling in v0.1.81; this release was cut through the existing gate->review->tag flow._
|
package/docs/routines.md
CHANGED
|
@@ -41,6 +41,29 @@ Inspect events:
|
|
|
41
41
|
node scripts/cw.js routine events
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
+
## Long Architecture Reviews
|
|
45
|
+
|
|
46
|
+
Use `architecture-review-fast` for the foreground user path, then schedule the
|
|
47
|
+
full `architecture-review` app as background work when a deep audit should not
|
|
48
|
+
block an interactive session:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
node scripts/architecture-review-fast.js \
|
|
52
|
+
--repo /path/to/repo \
|
|
53
|
+
--question "Is this architecture sound?" \
|
|
54
|
+
--metrics \
|
|
55
|
+
--schedule-full
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The wrapper creates a one-shot reminder schedule whose `workflowId` is
|
|
59
|
+
`architecture-review`. The schedule prompt is policy. CW stores the schedule and
|
|
60
|
+
records due events; the external agent host decides how to run the long review.
|
|
61
|
+
The prompt includes the foreground fast run id, fast report path, source-context
|
|
62
|
+
digest/profile, and asks the background agent to return the full review report
|
|
63
|
+
path and digest.
|
|
64
|
+
The `--metrics` flag is optional and reports foreground elapsed time plus
|
|
65
|
+
agent-spawn and result-cache-hit counts for the fast run.
|
|
66
|
+
|
|
44
67
|
## Boundary
|
|
45
68
|
|
|
46
69
|
CW v0.1.1 does not provide managed cloud infrastructure. It provides a local
|
|
@@ -49,6 +49,13 @@ own `sourceFingerprint`, the covered `repos`, the `queue`, and lifecycle
|
|
|
49
49
|
a `nextAction`. Every read re-derives records from source; the persisted index is
|
|
50
50
|
only compared against, never trusted as the live status.
|
|
51
51
|
|
|
52
|
+
During one index build, repo-level overlays (`archive.json` and
|
|
53
|
+
`provenance.json`) are read once per repo and passed as an in-memory scan
|
|
54
|
+
snapshot to each run record. This is a short-lived mechanism, not a persistent
|
|
55
|
+
cache: the next registry command re-reads source state and overlays from disk, so
|
|
56
|
+
freshness, fail-closed behavior, and output shape stay unchanged while large
|
|
57
|
+
repos avoid repeated identical overlay reads.
|
|
58
|
+
|
|
52
59
|
## Lifecycle state machine
|
|
53
60
|
|
|
54
61
|
Lifecycle is CLASSIFIED from existing state, never invented. `deriveLifecycle`
|
|
@@ -108,6 +115,14 @@ cwd — loads its durable state, and returns the next runnable tasks and next
|
|
|
108
115
|
actions for the host to execute. Resume is read-only over source: it never
|
|
109
116
|
mutates `state.json` and never un-archives a run.
|
|
110
117
|
|
|
118
|
+
`run resume <run-id> --drive` (or `--once` for a single step) hands the resolved
|
|
119
|
+
run straight to the existing agent-delegation drive loop — it re-plans nothing and
|
|
120
|
+
picks up the pending/running tasks deterministically from durable state — and
|
|
121
|
+
augments the result with the drive outcome under a `drive` field. The default (no
|
|
122
|
+
`--drive`) payload and `nextActions` stay byte-identical. An unconfigured agent
|
|
123
|
+
yields `drive.status="blocked"` (fail-closed, never a fabricated completion); CW
|
|
124
|
+
delegates worker execution to your agent and never runs a model itself.
|
|
125
|
+
|
|
111
126
|
## Queue
|
|
112
127
|
|
|
113
128
|
`queue add` appends a durable entry to `$CW_HOME/registry/queue.json` with an
|
|
@@ -136,6 +151,65 @@ in the repo's `registry/provenance.json`. The original failed run is PRESERVED
|
|
|
136
151
|
for audit — the past is never overwritten. Rerunning a rerun increments
|
|
137
152
|
`generation` and keeps `originRunId` pinned to the chain root.
|
|
138
153
|
|
|
154
|
+
## Portable export, import, and restore verification
|
|
155
|
+
|
|
156
|
+
`run export <run-id> --output PATH` writes a portable JSON archive for a run. The
|
|
157
|
+
archive includes the run state plus run-local files, committed artifacts, audit
|
|
158
|
+
overlays, telemetry ledger files, per-file sha256 digests, file sizes, and a
|
|
159
|
+
manifest digest. External repo-local artifact paths referenced by the run are
|
|
160
|
+
copied into the archive under `external-artifacts/` and recorded with their
|
|
161
|
+
original `sourcePath`; the source run is never mutated.
|
|
162
|
+
|
|
163
|
+
`run import PATH --target DIR` restores the archive under
|
|
164
|
+
`DIR/.cw/runs/<run-id>/`, rebases paths to the target repo, writes an
|
|
165
|
+
`import-manifest.json`, refreshes the target repo registry, and immediately runs
|
|
166
|
+
the same verification used by `run verify-import`. Restored partial runs can be
|
|
167
|
+
resumed from the target repo; restored failed runs remain discoverable from the
|
|
168
|
+
home registry and can be rerun as new linked runs. The import does not alter the
|
|
169
|
+
source repository or the source run.
|
|
170
|
+
|
|
171
|
+
**Import-time refusal (fail-closed before any write).** Import verifies every
|
|
172
|
+
file digest, every file size, the file count, and the manifest digest *before*
|
|
173
|
+
creating the target run directory — so a tampered archive is refused with a
|
|
174
|
+
non-zero exit and a single `cw:` stderr line, leaving nothing on disk (no partial
|
|
175
|
+
restore). Set `CW_REQUIRE_ARCHIVE_INTEGRITY=1` to additionally refuse an archive
|
|
176
|
+
whose top-level integrity block is *absent* — closing the legacy fail-open seam
|
|
177
|
+
where a stripped-integrity archive imported unverified. Unset (the default) keeps
|
|
178
|
+
legacy integrity-less archives byte-identical; the flag is mechanism, not policy.
|
|
179
|
+
|
|
180
|
+
`run verify-import <run-id> [--cwd DIR]` re-reads the restore manifest, recomputes
|
|
181
|
+
every restored file digest, checks the manifest digest, verifies the telemetry
|
|
182
|
+
ledger when one was restored, and re-proves the **trust-audit hash chain** (the
|
|
183
|
+
decisions / sandbox / commit-gate log, also restored under `audit/`). Missing
|
|
184
|
+
manifests, digest mismatches, path escapes, unsupported archive schemas, unreadable
|
|
185
|
+
files, telemetry-chain failures, or a forged audit chain (`trust-audit-invalid`)
|
|
186
|
+
return explicit failed checks instead of a fabricated success. An archive with no
|
|
187
|
+
audit log yields a passing `trust-audit` check (nothing to prove — no false-red).
|
|
188
|
+
|
|
189
|
+
By default `verify-import` prints the result and exits 0 even when a check fails
|
|
190
|
+
(it is a report). Pass `--strict` to make any failed restore check exit non-zero,
|
|
191
|
+
so `cw run verify-import <run> --strict && restore` stops on a tampered archive.
|
|
192
|
+
|
|
193
|
+
**Inspect an archive before restoring.** `run inspect-archive PATH [--json]`
|
|
194
|
+
re-proves a portable archive's integrity *without writing anything* — contrast
|
|
195
|
+
with `run import`, which validates as a side-effect of restoring a full
|
|
196
|
+
`.cw/runs/<id>/` tree. It re-computes every embedded file's sha256 and size, the
|
|
197
|
+
`integrity.fileCount` and manifest digest, and the whole-archive sha256, returning
|
|
198
|
+
a structured `checks[]` — each failure names the offending `relativePath` with a
|
|
199
|
+
`digest-mismatch` / `size-mismatch` / `manifest-digest-mismatch` /
|
|
200
|
+
`file-count-mismatch` code. It never throws: an unreadable path, invalid JSON, or an
|
|
201
|
+
unknown `schemaVersion` (`schemaSupported:false`) is reported as a check, not a
|
|
202
|
+
stacktrace — stdout is always valid JSON, diagnostics go to stderr. It exits `1`
|
|
203
|
+
when `ok:false`, so `cw run inspect-archive <path> && cw run import <path>` stops
|
|
204
|
+
before importing a bad archive. It is a faithful preview of import: under
|
|
205
|
+
`CW_REQUIRE_ARCHIVE_INTEGRITY=1` a stripped-integrity archive (which import would
|
|
206
|
+
refuse) also inspects as `ok:false`; with the env unset (default) an absent integrity
|
|
207
|
+
block is merely reported, not failed.
|
|
208
|
+
|
|
209
|
+
MCP exposes the same mechanisms as `cw_run_export`, `cw_run_import`,
|
|
210
|
+
`cw_run_verify_import`, and `cw_run_inspect_archive`; the CLI and MCP paths share
|
|
211
|
+
the same runtime functions.
|
|
212
|
+
|
|
139
213
|
## Cross-repo history
|
|
140
214
|
|
|
141
215
|
`history` reads a unified timeline of runs across all registered repos
|
|
@@ -151,10 +225,14 @@ node scripts/cw.js registry show [--scope repo|home] [--json]
|
|
|
151
225
|
node scripts/cw.js run search [--app ID] [--status STATE] [--text Q] [--repo PATH] [--since ISO] [--until ISO] [--limit N] [--offset N] [--scope repo|home] [--json]
|
|
152
226
|
node scripts/cw.js run list [--scope repo|home] [--json]
|
|
153
227
|
node scripts/cw.js run show <run-id> [--scope repo|home] [--json]
|
|
154
|
-
node scripts/cw.js run resume <run-id> [--limit N] [--json]
|
|
228
|
+
node scripts/cw.js run resume <run-id> [--limit N] [--drive [--once]] [--json]
|
|
155
229
|
node scripts/cw.js run archive <run-id> [--reason TEXT] [--unarchive]
|
|
156
230
|
node scripts/cw.js run archive --older-than-days N [--state completed --state failed]
|
|
157
231
|
node scripts/cw.js run rerun <run-id> [--reason TEXT]
|
|
232
|
+
node scripts/cw.js run export <run-id> --output PATH
|
|
233
|
+
node scripts/cw.js run import PATH --target DIR
|
|
234
|
+
node scripts/cw.js run verify-import <run-id> [--cwd DIR]
|
|
235
|
+
node scripts/cw.js run inspect-archive PATH [--json]
|
|
158
236
|
node scripts/cw.js queue add [--app ID|--workflow ID|--runId ID] [--repo PATH] [--priority N] [--note TEXT]
|
|
159
237
|
node scripts/cw.js queue list [--status STATE] [--repo PATH] [--json]
|
|
160
238
|
node scripts/cw.js queue show <queue-id>
|
|
@@ -174,7 +252,8 @@ passes `npm run parity:check`:
|
|
|
174
252
|
|
|
175
253
|
- `cw_registry_refresh`, `cw_registry_show`
|
|
176
254
|
- `cw_run_search`, `cw_run_list`, `cw_run_show`, `cw_run_resume`,
|
|
177
|
-
`cw_run_archive`, `cw_run_rerun`
|
|
255
|
+
`cw_run_archive`, `cw_run_rerun`, `cw_run_export`, `cw_run_import`,
|
|
256
|
+
`cw_run_verify_import`
|
|
178
257
|
- `cw_queue_add`, `cw_queue_list`, `cw_queue_drain`, `cw_queue_show`
|
|
179
258
|
- `cw_history`
|
|
180
259
|
|
|
@@ -312,3 +391,11 @@ Migration DAG with reversible edges (v0.1.45), capability auto-discovery (v0.1.4
|
|
|
312
391
|
0.1.78
|
|
313
392
|
|
|
314
393
|
0.1.79
|
|
394
|
+
|
|
395
|
+
## Fast Architecture Review (v0.1.80)
|
|
396
|
+
|
|
397
|
+
Adds the opt-in fast architecture-review lane: scoped JSONL source contexts, diff-aware exports, reusable Map and Assess results, measurable wrapper metrics, actionable background full-review handoff, and userland model policy flags for routing fast/strong workers without changing the full review contract.
|
|
398
|
+
|
|
399
|
+
## Resume Drive, Inspect-Archive & Restore Re-Prove (v0.1.81)
|
|
400
|
+
|
|
401
|
+
v0.1.81 adds `run resume <id> --drive/--once` (continue an interrupted run via the agent-drive loop; default resume stays read-only and byte-identical), `run inspect-archive PATH` (read-only archive integrity check that names any offending file without importing), and restore-time hardening: `verify-import` now re-proves the trust-audit chain on restore and gains `--strict`, and `CW_REQUIRE_ARCHIVE_INTEGRITY=1` refuses a stripped-integrity archive before any write.
|