cool-workflow 0.1.78
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 +20 -0
- package/.codex-plugin/mcp.json +10 -0
- package/.codex-plugin/plugin.json +38 -0
- package/.mcp.json +10 -0
- package/LICENSE +24 -0
- package/README.md +638 -0
- package/apps/architecture-review/app.json +51 -0
- package/apps/architecture-review/workflow.js +116 -0
- package/apps/end-to-end-golden-path/app.json +30 -0
- package/apps/end-to-end-golden-path/workflow.js +33 -0
- package/apps/pr-review-fix-ci/app.json +59 -0
- package/apps/pr-review-fix-ci/workflow.js +90 -0
- package/apps/release-cut/app.json +54 -0
- package/apps/release-cut/workflow.js +82 -0
- package/apps/research-synthesis/app.json +50 -0
- package/apps/research-synthesis/workflow.js +76 -0
- package/apps/workflow-app-framework-demo/app.json +29 -0
- package/apps/workflow-app-framework-demo/workflow.js +44 -0
- package/dist/agent-config.js +223 -0
- package/dist/candidate-scoring.js +715 -0
- package/dist/capability-core.js +630 -0
- package/dist/capability-dispatcher.js +86 -0
- package/dist/capability-registry.js +523 -0
- package/dist/cli.js +1276 -0
- package/dist/collaboration.js +727 -0
- package/dist/commit.js +570 -0
- package/dist/contract-migration.js +234 -0
- package/dist/coordinator.js +1163 -0
- package/dist/daemon.js +44 -0
- package/dist/dispatch.js +201 -0
- package/dist/drive.js +503 -0
- package/dist/error-feedback.js +415 -0
- package/dist/evidence-grounding.js +179 -0
- package/dist/evidence-reasoning.js +733 -0
- package/dist/execution-backend.js +1279 -0
- package/dist/harness.js +61 -0
- package/dist/mcp-server.js +1615 -0
- package/dist/multi-agent-eval.js +857 -0
- package/dist/multi-agent-host.js +764 -0
- package/dist/multi-agent-operator-ux.js +537 -0
- package/dist/multi-agent-trust.js +366 -0
- package/dist/multi-agent.js +1173 -0
- package/dist/node-snapshot.js +270 -0
- package/dist/observability.js +922 -0
- package/dist/operator-ux.js +971 -0
- package/dist/orchestrator/audit-operations.js +182 -0
- package/dist/orchestrator/candidate-operations.js +117 -0
- package/dist/orchestrator/cli-options.js +288 -0
- package/dist/orchestrator/collaboration-operations.js +86 -0
- package/dist/orchestrator/feedback-operations.js +81 -0
- package/dist/orchestrator/host-operations.js +78 -0
- package/dist/orchestrator/lifecycle-operations.js +462 -0
- package/dist/orchestrator/migration-operations.js +44 -0
- package/dist/orchestrator/multi-agent-operations.js +362 -0
- package/dist/orchestrator/report.js +369 -0
- package/dist/orchestrator/topology-operations.js +84 -0
- package/dist/orchestrator.js +874 -0
- package/dist/pipeline-contract.js +92 -0
- package/dist/pipeline-runner.js +285 -0
- package/dist/reclamation.js +882 -0
- package/dist/result-normalize.js +194 -0
- package/dist/run-export.js +64 -0
- package/dist/run-registry.js +1347 -0
- package/dist/run-state-schema.js +67 -0
- package/dist/sandbox-profile.js +471 -0
- package/dist/scheduler.js +266 -0
- package/dist/scheduling.js +184 -0
- package/dist/schema-validate.js +98 -0
- package/dist/state-explosion.js +1213 -0
- package/dist/state-migrations.js +463 -0
- package/dist/state-node.js +301 -0
- package/dist/state.js +308 -0
- package/dist/telemetry-attestation.js +156 -0
- package/dist/telemetry-ledger.js +145 -0
- package/dist/topology.js +527 -0
- package/dist/triggers.js +159 -0
- package/dist/trust-audit.js +475 -0
- package/dist/types/blackboard.js +2 -0
- package/dist/types/boundary.js +29 -0
- package/dist/types/candidate.js +2 -0
- package/dist/types/collaboration.js +2 -0
- package/dist/types/core.js +2 -0
- package/dist/types/drive.js +10 -0
- package/dist/types/error-feedback.js +2 -0
- package/dist/types/evidence-reasoning.js +2 -0
- package/dist/types/execution-backend.js +2 -0
- package/dist/types/multi-agent.js +2 -0
- package/dist/types/observability.js +2 -0
- package/dist/types/pipeline.js +2 -0
- package/dist/types/reclamation.js +8 -0
- package/dist/types/result.js +2 -0
- package/dist/types/run-registry.js +2 -0
- package/dist/types/run.js +2 -0
- package/dist/types/sandbox.js +2 -0
- package/dist/types/schedule.js +2 -0
- package/dist/types/state-node.js +2 -0
- package/dist/types/topology.js +2 -0
- package/dist/types/trust.js +2 -0
- package/dist/types/workbench.js +2 -0
- package/dist/types/worker.js +2 -0
- package/dist/types/workflow-app.js +2 -0
- package/dist/types.js +43 -0
- package/dist/verifier-registry.js +46 -0
- package/dist/verifier.js +78 -0
- package/dist/version.js +8 -0
- package/dist/workbench-host.js +172 -0
- package/dist/workbench.js +190 -0
- package/dist/worker-isolation.js +1028 -0
- package/dist/workflow-api.js +98 -0
- package/dist/workflow-app-framework.js +626 -0
- package/docs/agent-delegation-drive.7.md +190 -0
- package/docs/agent-framework.md +176 -0
- package/docs/candidate-scoring.7.md +106 -0
- package/docs/canonical-workflow-apps.7.md +137 -0
- package/docs/capability-topology-registry.7.md +168 -0
- package/docs/cli-mcp-parity.7.md +373 -0
- package/docs/contract-migration-tooling.7.md +123 -0
- package/docs/control-plane-scheduling.7.md +110 -0
- package/docs/coordinator-blackboard.7.md +183 -0
- package/docs/dogfood/architecture-review-cool-workflow.md +16 -0
- package/docs/dogfood-one-real-repo.7.md +168 -0
- package/docs/durable-state-and-locking.7.md +107 -0
- package/docs/end-to-end-golden-path.7.md +117 -0
- package/docs/error-feedback.7.md +153 -0
- package/docs/evidence-adoption-reasoning-chain.7.md +270 -0
- package/docs/execution-backends.7.md +300 -0
- package/docs/getting-started.md +99 -0
- package/docs/index.md +41 -0
- package/docs/mcp-app-surface.7.md +235 -0
- package/docs/multi-agent-cli-mcp-surface.7.md +265 -0
- package/docs/multi-agent-eval-replay-harness.7.md +302 -0
- package/docs/multi-agent-operator-ux.7.md +314 -0
- package/docs/multi-agent-runtime-core.7.md +231 -0
- package/docs/multi-agent-topologies.7.md +103 -0
- package/docs/multi-agent-trust-policy-audit.7.md +154 -0
- package/docs/node-snapshot-diff-replay.7.md +135 -0
- package/docs/observability-cost-accounting.7.md +194 -0
- package/docs/operator-ux.7.md +180 -0
- package/docs/pipeline-runner.7.md +136 -0
- package/docs/project-index.md +261 -0
- package/docs/real-execution-backends.7.md +142 -0
- package/docs/release-and-migration.7.md +280 -0
- package/docs/release-tooling.7.md +159 -0
- package/docs/routines.md +48 -0
- package/docs/run-registry-control-plane.7.md +312 -0
- package/docs/run-retention-reclamation.7.md +191 -0
- package/docs/sandbox-profiles.7.md +137 -0
- package/docs/scheduled-tasks.md +80 -0
- package/docs/security-trust-hardening.7.md +117 -0
- package/docs/state-explosion-management.7.md +264 -0
- package/docs/state-node.7.md +96 -0
- package/docs/team-collaboration.7.md +207 -0
- package/docs/unix-principles.md +192 -0
- package/docs/verifier-gated-commit.7.md +140 -0
- package/docs/web-desktop-workbench.7.md +215 -0
- package/docs/worker-isolation.7.md +167 -0
- package/docs/workflow-app-framework.7.md +274 -0
- package/manifest/README.md +43 -0
- package/manifest/plugin.manifest.json +316 -0
- package/manifest/pricing.policy.json +14 -0
- package/package.json +79 -0
- package/scripts/agents/claude-p-agent.js +104 -0
- package/scripts/agents/claude-p-agent.sh +9 -0
- package/scripts/agents/cw-attest-keygen.js +55 -0
- package/scripts/agents/cw-attest-wrap.js +143 -0
- package/scripts/block-unapproved-tag.sh +39 -0
- package/scripts/bump-version.js +249 -0
- package/scripts/canonical-apps.js +171 -0
- package/scripts/cw.js +4 -0
- package/scripts/dist-drift-check.js +79 -0
- package/scripts/dogfood-architecture-review.js +237 -0
- package/scripts/dogfood-release.js +624 -0
- package/scripts/forward-ref-docs.js +73 -0
- package/scripts/gen-manifests.js +232 -0
- package/scripts/golden-path.js +300 -0
- package/scripts/mcp-server.js +4 -0
- package/scripts/new-feature.js +121 -0
- package/scripts/parity-check.js +213 -0
- package/scripts/release-check.js +118 -0
- package/scripts/release-flow.js +272 -0
- package/scripts/release-gate.sh +85 -0
- package/scripts/sync-project-index.js +387 -0
- package/scripts/validate-run-state-schema.js +126 -0
- package/scripts/verify-container-selfref.js +64 -0
- package/scripts/version-sync-check.js +237 -0
- package/skills/cool-workflow/SKILL.md +162 -0
- package/skills/cool-workflow/references/commands.md +282 -0
- package/tsconfig.json +16 -0
- package/ui/workbench/app.css +76 -0
- package/ui/workbench/app.js +159 -0
- package/ui/workbench/index.html +32 -0
- package/workflows/architecture-review.workflow.js +84 -0
- package/workflows/research-synthesis.workflow.js +47 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
# Release And Migration Discipline
|
|
2
|
+
|
|
3
|
+
CW v0.1.14 made release checks and durable run-state compatibility explicit.
|
|
4
|
+
|
|
5
|
+
## Who Is Affected
|
|
6
|
+
|
|
7
|
+
Maintainers cutting CW releases should use `npm run release:check` from
|
|
8
|
+
`plugins/cool-workflow`. Operators loading old `.cw/runs/<run-id>/state.json`
|
|
9
|
+
files can inspect compatibility with:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
node scripts/cw.js state check <run-id>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Use `--state /path/to/state.json` when checking a state file outside the
|
|
16
|
+
current `.cw/runs` tree. Add `--write` only when you deliberately want to write
|
|
17
|
+
the normalized/migrated state back to disk.
|
|
18
|
+
|
|
19
|
+
## State Policy
|
|
20
|
+
|
|
21
|
+
The current durable run-state schema is `1`, defined by
|
|
22
|
+
`CURRENT_RUN_STATE_SCHEMA_VERSION` in `src/version.ts`.
|
|
23
|
+
|
|
24
|
+
Loading state follows this order:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
read JSON -> detect schema -> migrate -> normalize -> validate -> report
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
CW supports legacy run state with no `schemaVersion` as historical schema `0`
|
|
31
|
+
and migrates it to schema `1`. Schema versions newer than the runtime fail
|
|
32
|
+
closed. Invalid state objects fail closed. Unknown user data is preserved by
|
|
33
|
+
copying and adding required fields instead of rebuilding state from scratch.
|
|
34
|
+
|
|
35
|
+
## Dry Run
|
|
36
|
+
|
|
37
|
+
`state check` is dry-run by default. It reports:
|
|
38
|
+
|
|
39
|
+
- detected and current schema versions
|
|
40
|
+
- compatibility status: `current`, `migrated`, `normalized`, or `unsupported`
|
|
41
|
+
- whether writing would be required
|
|
42
|
+
- every field CW would add or normalize
|
|
43
|
+
- warnings and errors
|
|
44
|
+
|
|
45
|
+
## Backward Compatibility Fixtures
|
|
46
|
+
|
|
47
|
+
Fixture runs live in `test/fixtures/runs/` and cover:
|
|
48
|
+
|
|
49
|
+
- pre-app/simple run state
|
|
50
|
+
- Sandbox Profiles
|
|
51
|
+
- Workflow App framework metadata
|
|
52
|
+
- End-to-End Golden Path
|
|
53
|
+
- Operator UX
|
|
54
|
+
- v0.1.13 MCP/App Surface
|
|
55
|
+
|
|
56
|
+
`npm run fixture-compat` copies each fixture into a temporary `.cw/runs` tree,
|
|
57
|
+
runs migration, and proves `status`, `graph`, and `report` still operate. The
|
|
58
|
+
fixture files are hashed before and after the test to prove they were not
|
|
59
|
+
mutated.
|
|
60
|
+
|
|
61
|
+
## Release Check
|
|
62
|
+
|
|
63
|
+
`npm run release:check` is the release gate for v0.1.14 and later. It runs:
|
|
64
|
+
|
|
65
|
+
- docs presence checks
|
|
66
|
+
- `npm run build`
|
|
67
|
+
- `npm run check`
|
|
68
|
+
- `npm test`
|
|
69
|
+
- `node test/multi-agent-runtime-core-smoke.js`
|
|
70
|
+
- `node test/coordinator-blackboard-smoke.js`
|
|
71
|
+
- `node test/multi-agent-topologies-smoke.js`
|
|
72
|
+
- `node test/multi-agent-eval-replay-harness-smoke.js`
|
|
73
|
+
- `npm run eval:replay`
|
|
74
|
+
- dogfood release smoke coverage
|
|
75
|
+
- `npm run canonical-apps`
|
|
76
|
+
- `npm run golden-path`
|
|
77
|
+
- `npm run fixture-compat`
|
|
78
|
+
- `npm run version:sync`
|
|
79
|
+
|
|
80
|
+
The command is dry-run and non-destructive. Tagging, pushing, and publishing
|
|
81
|
+
remain manual release actions after the gate passes.
|
|
82
|
+
|
|
83
|
+
For v0.1.15, the same gate also includes the Security / Trust Hardening smoke
|
|
84
|
+
test so audit/provenance coverage remains part of release discipline.
|
|
85
|
+
|
|
86
|
+
For v0.1.18, the gate includes Coordinator / Blackboard smoke coverage and
|
|
87
|
+
fixture normalization for empty blackboard state on older runs.
|
|
88
|
+
|
|
89
|
+
For v0.1.19, the gate includes Multi-Agent Topologies smoke coverage and
|
|
90
|
+
fixture normalization for empty topology state on older runs.
|
|
91
|
+
|
|
92
|
+
For v0.1.20, the gate includes Multi-Agent CLI + MCP Surface smoke coverage.
|
|
93
|
+
|
|
94
|
+
For v0.1.21, the gate includes Multi-Agent Operator UX smoke coverage for
|
|
95
|
+
derived graph, dependency, failure, evidence adoption, report, and MCP parity
|
|
96
|
+
views.
|
|
97
|
+
|
|
98
|
+
For v0.1.22, the gate includes Multi-Agent Trust / Policy / Audit smoke
|
|
99
|
+
coverage for role policy, permission decisions, blackboard write audit, message
|
|
100
|
+
provenance, judge rationale, panel decisions, policy violations, report output,
|
|
101
|
+
audit provenance, and MCP parity.
|
|
102
|
+
|
|
103
|
+
For v0.1.24, the gate includes Multi-Agent Eval & Replay Harness smoke
|
|
104
|
+
coverage for replay snapshots, isolated replay runs, normalized comparison,
|
|
105
|
+
scoring, fail-closed regression detection, report output, and MCP parity.
|
|
106
|
+
|
|
107
|
+
For v0.1.25, the gate includes State Explosion Management smoke coverage for
|
|
108
|
+
durable summary records, compact and focused graph views, blackboard digests,
|
|
109
|
+
critical-path preservation, fail-closed stale-summary detection, eval/replay
|
|
110
|
+
summary metrics (`summary_freshness`, `compact_graph_parity`,
|
|
111
|
+
`blackboard_digest_parity`, `critical_path_parity`, `evidence_digest_parity`,
|
|
112
|
+
`expansion_ref_integrity`), and CLI/MCP parity. Summaries are derived userland
|
|
113
|
+
indexes; raw blackboard, graph, audit, and evidence records are never deleted,
|
|
114
|
+
and migrations remain backward compatible (pre-0.1.25 eval snapshots load with
|
|
115
|
+
empty summary sections).
|
|
116
|
+
|
|
117
|
+
For v0.1.26, the gate includes Evidence Adoption Reasoning Chain smoke coverage
|
|
118
|
+
for derived, fingerprinted reasoning chains, fail-closed `unexplained` detection,
|
|
119
|
+
reasoning steps exempt from compaction, eval/replay reasoning metrics
|
|
120
|
+
(`reasoning_freshness`, `reasoning_chain_parity`, `reasoning_unexplained_parity`),
|
|
121
|
+
and CLI/MCP parity. The reasoning chain is derived, never authoritative over raw
|
|
122
|
+
state, and pre-0.1.26 snapshots load with empty reasoning sections.
|
|
123
|
+
|
|
124
|
+
The host loop must preserve CLI/MCP parity, stable JSON responses,
|
|
125
|
+
blackboard/audit provenance, evidence-required scoring, fail-closed selection,
|
|
126
|
+
and compatibility with the lower-level topology, multi-agent, blackboard, and
|
|
127
|
+
candidate primitives.
|
|
128
|
+
|
|
129
|
+
For v0.1.16, release discipline adds Dogfood One Real Repo. `npm run
|
|
130
|
+
dogfood:release` runs the canonical `release-cut` app against the real Cool
|
|
131
|
+
Workflow repository in dry-run mode and produces a CW report, audit summary,
|
|
132
|
+
provenance, release candidate, score, selection, and verifier-gated
|
|
133
|
+
commit/checkpoint. `npm run release:check` includes the dogfood smoke test so
|
|
134
|
+
the wiring stays covered without recursively running the full release gate.
|
|
135
|
+
|
|
136
|
+
For v0.1.17, release discipline added Multi-Agent Runtime Core coverage.
|
|
137
|
+
`npm run release:check` runs `test/multi-agent-runtime-core-smoke.js` directly
|
|
138
|
+
and through `npm test`. Older fixture runs normalize with empty multi-agent
|
|
139
|
+
state under `multiAgent` and `.cw/runs/<run-id>/multi-agent/`, while unknown
|
|
140
|
+
user data remains preserved.
|
|
141
|
+
|
|
142
|
+
## Unsupported Cases
|
|
143
|
+
|
|
144
|
+
CW does not silently load:
|
|
145
|
+
|
|
146
|
+
- non-object JSON run state
|
|
147
|
+
- run state with a schema version newer than the runtime
|
|
148
|
+
- run state with a schema version below the supported minimum
|
|
149
|
+
- state that cannot be normalized into the required runtime fields
|
|
150
|
+
|
|
151
|
+
When compatibility is ambiguous, hold the release and add a fixture or migration
|
|
152
|
+
step before proceeding.
|
|
153
|
+
## v0.1.27 — CLI ↔ MCP Parity
|
|
154
|
+
|
|
155
|
+
v0.1.27 adds a declared capability registry and a fail-closed `npm run
|
|
156
|
+
parity:check` (wired into `release:check`) guaranteeing the CLI and MCP surfaces
|
|
157
|
+
are two renderings of one data source. No run-state schema change: pre-0.1.27
|
|
158
|
+
runs load unchanged, and every pre-0.1.27 CLI command and MCP tool keeps working.
|
|
159
|
+
See [cli-mcp-parity.7.md](cli-mcp-parity.7.md).
|
|
160
|
+
|
|
161
|
+
## Run Registry / Control Plane (v0.1.28)
|
|
162
|
+
|
|
163
|
+
v0.1.28 adds a derived, rebuildable run registry over the same durable run state.
|
|
164
|
+
No run-state schema change: pre-0.1.28 single-repo runs and existing `.cw/runs/`
|
|
165
|
+
layouts keep working with an empty registry (`registry show` reports `absent`
|
|
166
|
+
until the first `registry refresh`), and the registry, archive/provenance
|
|
167
|
+
overlays, queue, and home discovery set are all derivable files that can be
|
|
168
|
+
deleted and rebuilt from source. See
|
|
169
|
+
[run-registry-control-plane.7.md](run-registry-control-plane.7.md).
|
|
170
|
+
|
|
171
|
+
## Execution Backends (v0.1.29)
|
|
172
|
+
|
|
173
|
+
v0.1.29 lifts execution into a pluggable driver layer: one narrow `ExecutionBackend`
|
|
174
|
+
contract with interchangeable `node`/`bun`/`shell`/`container`/`remote`/`ci`
|
|
175
|
+
drivers, selected by `--backend` (parallel to `--sandbox`) and inspected via
|
|
176
|
+
`backend list|show|probe`. The result/evidence envelope is schema-identical across
|
|
177
|
+
backends; the backend id + sandbox attestation are recorded as provenance, so this
|
|
178
|
+
surface is unchanged regardless of which backend executed a run. See
|
|
179
|
+
[execution-backends.7.md](execution-backends.7.md).
|
|
180
|
+
## Web / Desktop Workbench (v0.1.30)
|
|
181
|
+
|
|
182
|
+
v0.1.30 adds the Web / Desktop Workbench: a read-only, localhost-only human
|
|
183
|
+
console that renders this surface (and the other four operator panels — run
|
|
184
|
+
graph, blackboard, worker logs, candidate compare, audit timeline) for any run,
|
|
185
|
+
reading the SAME capability `--json` payloads. It is a THIRD FRONT DOOR alongside
|
|
186
|
+
the CLI and MCP that holds no authoritative state and forks no schema: each panel
|
|
187
|
+
equals its `cw <cmd> --json` payload byte-for-byte (parity-gated), and refresh
|
|
188
|
+
re-derives everything from disk. See
|
|
189
|
+
[web-desktop-workbench.7.md](web-desktop-workbench.7.md).
|
|
190
|
+
|
|
191
|
+
## Observability + Cost Accounting (v0.1.31)
|
|
192
|
+
|
|
193
|
+
v0.1.31 adds Observability + Cost Accounting: `metrics show`/`metrics summary`
|
|
194
|
+
derive time/duration, failure/verifier/acceptance rates (with sample counts and
|
|
195
|
+
fail-closed `n/a`), and token/cost from existing durable run state — no metrics
|
|
196
|
+
database, no collector daemon, no hidden counter. The migration is ADDITIVE and
|
|
197
|
+
backward compatible: an optional, host-attested `UsageRecord` rides on the
|
|
198
|
+
task/worker record via the EXISTING result/worker intake (absent ⇒ `unreported`,
|
|
199
|
+
never 0); `ResultEnvelope` and the run-state schema are unchanged (schema version
|
|
200
|
+
stays 1), so old runs load and report `unreported` cost while still yielding
|
|
201
|
+
correct time and rate metrics from their recorded timestamps and outcomes. Cost
|
|
202
|
+
is `attested` only from attested usage × a recorded pricing policy; assumed
|
|
203
|
+
pricing is a separate `estimated` figure. Pricing is POLICY supplied as data
|
|
204
|
+
(`--pricing <path>|default`), out of the kernel. The per-run report persists a
|
|
205
|
+
rebuildable, fingerprinted snapshot under `.cw/runs/<id>/metrics/`, and the
|
|
206
|
+
cross-repo summary reports each snapshot's `valid|stale|absent` freshness against
|
|
207
|
+
current source. See
|
|
208
|
+
[observability-cost-accounting.7.md](observability-cost-accounting.7.md).
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
## Team Collaboration (v0.1.32)
|
|
212
|
+
|
|
213
|
+
v0.1.32 adds Team Collaboration: a host-attested actor and append-only
|
|
214
|
+
approvals/rejections/comments/handoffs provenance-linked to a durable target,
|
|
215
|
+
plus a review gate that STACKS ON the verifier gate — required approvals from
|
|
216
|
+
authorized roles, enforced inside `resolveCommitGate` AFTER the verifier checks
|
|
217
|
+
and never instead of them, failing closed on quorum/authority/self-approval and
|
|
218
|
+
recording who approved the very artifact that shipped. Policy (required approvals,
|
|
219
|
+
authorized roles, self-approval) is data, default off (pre-v0.1.32 behavior
|
|
220
|
+
unchanged). The verbs are parity-gated and render read-only in the v0.1.30
|
|
221
|
+
Workbench. See [Team Collaboration](team-collaboration.7.md).
|
|
222
|
+
|
|
223
|
+
## Release Tooling (v0.1.33)
|
|
224
|
+
|
|
225
|
+
the per-tag mechanical surfaces (version bump across 17 surfaces, feature scaffold, and the forward-reference docs) become deterministic scripts, with a de-duplicated release gate. See release-tooling(7).
|
|
226
|
+
|
|
227
|
+
## Real Execution Backend Integrations (v0.1.34)
|
|
228
|
+
|
|
229
|
+
container/remote/ci backends really execute (docker/podman run, remote/CI POST-and-poll) under the sandbox contract, with byte-stable evidence vs node and fail-closed refusal when a runtime/endpoint is unavailable. See real-execution-backends(7).
|
|
230
|
+
|
|
231
|
+
## Node Snapshot / Diff / Replay (v0.1.35)
|
|
232
|
+
|
|
233
|
+
per-node snapshot, structural diff, and isolated deterministic replay over StateNode, reusing the v0.1.23 eval harness; fail-closed on source drift (valid|stale|absent). See node-snapshot-diff-replay(7).
|
|
234
|
+
|
|
235
|
+
## Contract Migration Tooling (v0.1.36)
|
|
236
|
+
|
|
237
|
+
first-class declared migration registry (run-state + workflow-app) with per-edge compatibility proofs, fail-closed reachability, and a round-trip/non-destruction prover. See contract-migration-tooling(7).
|
|
238
|
+
|
|
239
|
+
## Control-Plane Scheduling (v0.1.37)
|
|
240
|
+
|
|
241
|
+
priority + concurrency limits + lease lifecycle + retry/backoff + fail-closed park over the v0.1.28 Run Registry queue; policy-as-data, deterministic. See control-plane-scheduling(7).
|
|
242
|
+
|
|
243
|
+
## Agent Delegation Drive (v0.1.38)
|
|
244
|
+
|
|
245
|
+
spawn an external agent process per worker, capture result.md + attestation, auto-drive plan->dispatch->fulfill->accept->commit
|
|
246
|
+
|
|
247
|
+
## Run Retention & Provable Reclamation (v0.1.39)
|
|
248
|
+
|
|
249
|
+
tiered, append-only, cryptographically-verifiable run reclamation: seal the audit skeleton, free the reconstructable bulk, prove it
|
|
250
|
+
|
|
251
|
+
## Durable State & Locking (v0.1.40)
|
|
252
|
+
|
|
253
|
+
atomic temp->rename writes + fsync-durability for authoritative stores; portable stale-stealing file lock serializing the cross-process read-modify-write stores
|
|
254
|
+
|
|
255
|
+
## Self-Audit Hardening & Pure-Router Decomposition (v0.1.41)
|
|
256
|
+
|
|
257
|
+
evidence grounding + durable audit append + symlink-hardened containment + deterministic worker ids + recursive redaction; BackendRegistry self-describing drivers (no per-id switches); orchestrator god-object decomposed into per-domain operation modules (pure loadRun->delegate router)
|
|
258
|
+
|
|
259
|
+
## Robust Result Ingest (v0.1.42)
|
|
260
|
+
|
|
261
|
+
capture findings/evidence from any reasonable agent shape (alt keys + prose), CW derives grounded evidence itself, warn on empty capture — closes the v0.1.41 live-drive 'accepted with 0 captured' failure
|
|
262
|
+
|
|
263
|
+
## No-False-Green Gate & Launch Prep (v0.1.43)
|
|
264
|
+
|
|
265
|
+
Hard gate blocking empty-capture verifier-gated commits, plus quickstart and launch-prep docs.
|
|
266
|
+
|
|
267
|
+
## Release-Gate Determinism & Agents Vendor (v0.1.44)
|
|
268
|
+
|
|
269
|
+
Release-readiness checks now validate the committed blob (`git show HEAD:<path>`) instead of the mutable working tree — eliminating false-red/false-green from concurrent working-tree writes (iCloud/Spotlight/editor). Adds the `agents` vendor manifest target: a generated `.agents/plugins/cool-workflow/` adapter giving any non-Claude AI agent one common interface to CW.
|
|
270
|
+
|
|
271
|
+
## P1-P2 Fixes & CI Content Surfaces (v0.1.49)
|
|
272
|
+
|
|
273
|
+
Migration DAG with reversible edges (v0.1.45), capability auto-discovery (v0.1.46), vendor-adapter registry (v0.1.47), state auto-compaction and P2 fixes (v0.1.48), plus CI content-surface determinism hardening (v0.1.49).
|
|
274
|
+
0.1.51
|
|
275
|
+
|
|
276
|
+
0.1.76
|
|
277
|
+
|
|
278
|
+
0.1.77
|
|
279
|
+
|
|
280
|
+
0.1.78
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Release Tooling
|
|
2
|
+
|
|
3
|
+
CW v0.1.33 adds Release Tooling: the mechanical, repetitive part of cutting a tag
|
|
4
|
+
becomes three deterministic scripts plus a de-duplicated release gate. Before
|
|
5
|
+
v0.1.33 a release meant hand-editing the version across ~17 surfaces and recreating
|
|
6
|
+
the same doc/test/CHANGELOG shapes by hand — slow, and the source of stale-version
|
|
7
|
+
gate failures. This release leaves the kernel runtime untouched and moves the toil
|
|
8
|
+
into tooling, so an author spends time on the feature, not the boilerplate.
|
|
9
|
+
|
|
10
|
+
The discipline is the same base-system separation used elsewhere: there is one
|
|
11
|
+
source of truth, and the mechanical surfaces are DERIVED from it, fail-closed.
|
|
12
|
+
|
|
13
|
+
## bump:version
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
node scripts/bump-version.js <new-version>
|
|
17
|
+
npm run bump:version -- 0.1.33
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
One command rewrites every STRUCTURED version surface from a single source
|
|
21
|
+
(`package.json`): `package.json`, `package-lock.json`, `src/version.ts`,
|
|
22
|
+
`manifest/plugin.manifest.json` (then `gen:manifests` propagates to the vendor
|
|
23
|
+
manifests), every `apps/*/app.json` (top-level `version` only, never
|
|
24
|
+
`compatibility.minVersion`), and the scripts/tests that hard-code the current
|
|
25
|
+
version as a current-version reference. The version string is swapped with a
|
|
26
|
+
TARGETED `old -> new` replace, so historical references (a prior `minVersion`, a
|
|
27
|
+
`pre-vX` note, a fixed demo version) are preserved. It then rebuilds `dist/`, runs
|
|
28
|
+
`version:sync`, and reports the remaining prose-doc surfaces.
|
|
29
|
+
|
|
30
|
+
`version-sync-check.js` reads the expected version from `package.json`, so the
|
|
31
|
+
checker can never drift from the bump source.
|
|
32
|
+
|
|
33
|
+
## new:feature
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
node scripts/new-feature.js <slug> "<Title>" ["summary"]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Scaffolds the per-tag boilerplate: the `docs/<slug>.7.md` skeleton, a runnable
|
|
40
|
+
`test/<slug>-smoke.js` stub, and a `CHANGELOG` entry, then PRINTS the exact
|
|
41
|
+
gate-file edits (capability registry, `version:sync` assertions, the `docs presence`
|
|
42
|
+
list, the `npm test` chain). Gate files are printed, never auto-edited, so a
|
|
43
|
+
scaffold can never silently break a release gate.
|
|
44
|
+
|
|
45
|
+
## forward-ref
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
node scripts/forward-ref-docs.js "<Title>" "<summary>"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Appends a `## <Title> (vX)` forward-reference section to every doc `version:sync`
|
|
52
|
+
requires to carry the current version (the repo's per-release documentation
|
|
53
|
+
pattern). APPEND-ONLY and idempotent: it never rewrites a historical version label
|
|
54
|
+
and re-running for the same version is a no-op.
|
|
55
|
+
|
|
56
|
+
## De-duplicated release:check
|
|
57
|
+
|
|
58
|
+
`release:check` previously ran `npm test` AND then re-ran ~15 of those same smoke
|
|
59
|
+
tests individually (plus redundant `eval:replay`/`fixture-compat` re-runs). Every
|
|
60
|
+
individual step is already covered by `npm test`, so they were removed — the gate
|
|
61
|
+
keeps full coverage while dropping the duplicate wall time. The steps that remain
|
|
62
|
+
are the ones NOT covered by `npm test`: build, type check, `npm test`,
|
|
63
|
+
canonical-apps, golden-path, parity, vendor-manifest drift, and `version:sync`.
|
|
64
|
+
|
|
65
|
+
## Boundary
|
|
66
|
+
|
|
67
|
+
Release Tooling touches only the build/release surfaces. It adds no runtime
|
|
68
|
+
capability, no CLI/MCP verb, and no run-state schema change; the kernel is
|
|
69
|
+
unchanged. Older releases cut by hand remain valid — the scripts only standardize
|
|
70
|
+
the mechanical surfaces a tag must update.
|
|
71
|
+
|
|
72
|
+
## See Also
|
|
73
|
+
|
|
74
|
+
cli-mcp-parity(7), release-and-migration(7), dogfood-one-real-repo(7)
|
|
75
|
+
|
|
76
|
+
## Real Execution Backend Integrations (v0.1.34)
|
|
77
|
+
|
|
78
|
+
container/remote/ci backends really execute (docker/podman run, remote/CI POST-and-poll) under the sandbox contract, with byte-stable evidence vs node and fail-closed refusal when a runtime/endpoint is unavailable. See real-execution-backends(7).
|
|
79
|
+
|
|
80
|
+
## Node Snapshot / Diff / Replay (v0.1.35)
|
|
81
|
+
|
|
82
|
+
per-node snapshot, structural diff, and isolated deterministic replay over StateNode, reusing the v0.1.23 eval harness; fail-closed on source drift (valid|stale|absent). See node-snapshot-diff-replay(7).
|
|
83
|
+
|
|
84
|
+
## Contract Migration Tooling (v0.1.36)
|
|
85
|
+
|
|
86
|
+
first-class declared migration registry (run-state + workflow-app) with per-edge compatibility proofs, fail-closed reachability, and a round-trip/non-destruction prover. See contract-migration-tooling(7).
|
|
87
|
+
|
|
88
|
+
## Control-Plane Scheduling (v0.1.37)
|
|
89
|
+
|
|
90
|
+
priority + concurrency limits + lease lifecycle + retry/backoff + fail-closed park over the v0.1.28 Run Registry queue; policy-as-data, deterministic. See control-plane-scheduling(7).
|
|
91
|
+
|
|
92
|
+
## Agent Delegation Drive (v0.1.38)
|
|
93
|
+
|
|
94
|
+
spawn an external agent process per worker, capture result.md + attestation, auto-drive plan->dispatch->fulfill->accept->commit
|
|
95
|
+
|
|
96
|
+
## Run Retention & Provable Reclamation (v0.1.39)
|
|
97
|
+
|
|
98
|
+
tiered, append-only, cryptographically-verifiable run reclamation: seal the audit skeleton, free the reconstructable bulk, prove it
|
|
99
|
+
|
|
100
|
+
## Durable State & Locking (v0.1.40)
|
|
101
|
+
|
|
102
|
+
atomic temp->rename writes + fsync-durability for authoritative stores; portable stale-stealing file lock serializing the cross-process read-modify-write stores
|
|
103
|
+
|
|
104
|
+
## Self-Audit Hardening & Pure-Router Decomposition (v0.1.41)
|
|
105
|
+
|
|
106
|
+
evidence grounding + durable audit append + symlink-hardened containment + deterministic worker ids + recursive redaction; BackendRegistry self-describing drivers (no per-id switches); orchestrator god-object decomposed into per-domain operation modules (pure loadRun->delegate router)
|
|
107
|
+
|
|
108
|
+
## Robust Result Ingest (v0.1.42)
|
|
109
|
+
|
|
110
|
+
capture findings/evidence from any reasonable agent shape (alt keys + prose), CW derives grounded evidence itself, warn on empty capture — closes the v0.1.41 live-drive 'accepted with 0 captured' failure
|
|
111
|
+
|
|
112
|
+
## No-False-Green Gate & Launch Prep (v0.1.43)
|
|
113
|
+
|
|
114
|
+
Hard gate blocking empty-capture verifier-gated commits, plus quickstart and launch-prep docs.
|
|
115
|
+
|
|
116
|
+
## Release-Gate Determinism & Agents Vendor (v0.1.44)
|
|
117
|
+
|
|
118
|
+
Release-readiness checks now validate the committed blob (`git show HEAD:<path>`) instead of the mutable working tree — eliminating false-red/false-green from concurrent working-tree writes (iCloud/Spotlight/editor). Adds the `agents` vendor manifest target: a generated `.agents/plugins/cool-workflow/` adapter giving any non-Claude AI agent one common interface to CW.
|
|
119
|
+
|
|
120
|
+
## P1-P2 Fixes & CI Content Surfaces (v0.1.49)
|
|
121
|
+
|
|
122
|
+
Migration DAG with reversible edges (v0.1.45), capability auto-discovery (v0.1.46), vendor-adapter registry (v0.1.47), state auto-compaction and P2 fixes (v0.1.48), plus CI content-surface determinism hardening (v0.1.49).
|
|
123
|
+
|
|
124
|
+
## Multi-platform release flow (`scripts/release-flow.js`)
|
|
125
|
+
|
|
126
|
+
The gated release ritual — deterministic gate → independent reviewer → verdict →
|
|
127
|
+
(tag) — is now ONE zero-dependency Node orchestrator that runs the same under any
|
|
128
|
+
harness. It does not depend on a host's agent-orchestration primitive; the only
|
|
129
|
+
LLM step (the reviewer) is **delegated** through CW's agent backend, so whichever
|
|
130
|
+
model you configure does the review. CW spawns the agent argv-style (`shell:false`),
|
|
131
|
+
inherits the agent's own credentials, and imports no model SDK — the red line.
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# check only (gate + independent review, no mutation):
|
|
135
|
+
node plugins/cool-workflow/scripts/release-flow.js --check
|
|
136
|
+
# cut a tag once review is green:
|
|
137
|
+
node plugins/cool-workflow/scripts/release-flow.js --cut --version 0.1.77 [--push]
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The per-platform difference is config, not code — set the reviewer agent:
|
|
141
|
+
|
|
142
|
+
| Platform | Reviewer config |
|
|
143
|
+
|---|---|
|
|
144
|
+
| Claude | `CW_AGENT_COMMAND="claude -p {{input}}"` |
|
|
145
|
+
| Codex | `CW_AGENT_COMMAND="codex exec {{input}}"` |
|
|
146
|
+
| Gemini | `CW_AGENT_COMMAND="gemini -p {{input}}"` |
|
|
147
|
+
| OpenCode | `CW_AGENT_COMMAND="opencode run -m <provider/model> {{input}}"` |
|
|
148
|
+
| DeepSeek | via OpenCode (`-m deepseek/deepseek-chat`) or `CW_AGENT_ENDPOINT=<deepseek-compatible HTTP agent>` |
|
|
149
|
+
|
|
150
|
+
`{{input}}` is substituted with the reviewer prompt file path. Gemini and OpenCode
|
|
151
|
+
also get generated MCP manifests (`.gemini-plugin/`, `.opencode-plugin/`) so the
|
|
152
|
+
`cw_*` tools are available as MCP tools in those hosts. The verdict path
|
|
153
|
+
(`.cw-release/review-<sha>.verdict`) and the tag-push CI backstop are unchanged.
|
|
154
|
+
|
|
155
|
+
0.1.51
|
|
156
|
+
|
|
157
|
+
0.1.76
|
|
158
|
+
|
|
159
|
+
0.1.78
|
package/docs/routines.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Routines
|
|
2
|
+
|
|
3
|
+
CW routines define a trigger, an event payload, match rules, and a generated
|
|
4
|
+
prompt that an agent host can execute.
|
|
5
|
+
|
|
6
|
+
CW stores routine data in:
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
.cw/routines/triggers.json
|
|
10
|
+
.cw/routines/payloads/
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Commands
|
|
14
|
+
|
|
15
|
+
Create an API trigger:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
node scripts/cw.js routine create \
|
|
19
|
+
--kind api \
|
|
20
|
+
--prompt "Handle this API event."
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Create a GitHub trigger:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
node scripts/cw.js routine create \
|
|
27
|
+
--kind github \
|
|
28
|
+
--prompt "Review this GitHub event." \
|
|
29
|
+
--match '{"action":"opened"}'
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Fire a trigger from a payload file:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
node scripts/cw.js routine fire github payload.json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Inspect events:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
node scripts/cw.js routine events
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Boundary
|
|
45
|
+
|
|
46
|
+
CW v0.1.1 does not provide managed cloud infrastructure. It provides a local
|
|
47
|
+
routine bridge that can be connected to GitHub Actions, webhooks, cron, or a
|
|
48
|
+
small HTTP adapter in a future release.
|