cool-workflow 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/apps/architecture-review/app.json +1 -1
  4. package/apps/architecture-review-fast/app.json +1 -1
  5. package/apps/end-to-end-golden-path/app.json +1 -1
  6. package/apps/pr-review-fix-ci/app.json +1 -1
  7. package/apps/release-cut/app.json +1 -1
  8. package/apps/research-synthesis/app.json +1 -1
  9. package/dist/cli/dispatch.js +11 -5
  10. package/dist/cli/entry.js +41 -1
  11. package/dist/cli/io.js +6 -2
  12. package/dist/cli/parseargv.js +1 -0
  13. package/dist/core/capability-data.js +1 -0
  14. package/dist/core/format/completion.js +68 -0
  15. package/dist/core/format/help.js +25 -6
  16. package/dist/core/format/safe-json.js +73 -0
  17. package/dist/core/format/state-explosion-text.js +1 -1
  18. package/dist/core/multi-agent/candidate-scoring.js +5 -1
  19. package/dist/core/multi-agent/collaboration.js +3 -3
  20. package/dist/core/multi-agent/coordinator.js +5 -5
  21. package/dist/core/multi-agent/runtime.js +4 -4
  22. package/dist/core/multi-agent/topology.js +3 -3
  23. package/dist/core/pipeline/dispatch.js +18 -4
  24. package/dist/core/pipeline/drive-decide.js +2 -1
  25. package/dist/core/state/migrations.js +16 -1
  26. package/dist/core/state/state-explosion/digest.js +13 -13
  27. package/dist/core/state/state-explosion/graph.js +17 -11
  28. package/dist/core/state/state-explosion/report.js +6 -6
  29. package/dist/core/util/numeric-flag.js +40 -0
  30. package/dist/core/version.js +1 -1
  31. package/dist/mcp/server.js +99 -11
  32. package/dist/shell/audit-cli.js +57 -25
  33. package/dist/shell/coordinator-io.js +73 -13
  34. package/dist/shell/dispatch.js +1 -1
  35. package/dist/shell/doctor.js +80 -1
  36. package/dist/shell/drive.js +243 -49
  37. package/dist/shell/eval-text.js +2 -2
  38. package/dist/shell/evidence-reasoning.js +4 -4
  39. package/dist/shell/execution-backend/agent.js +20 -1
  40. package/dist/shell/execution-backend/container.js +4 -1
  41. package/dist/shell/execution-backend/local.js +4 -1
  42. package/dist/shell/feedback-cli.js +6 -6
  43. package/dist/shell/fs-atomic.js +218 -29
  44. package/dist/shell/man-cli.js +6 -0
  45. package/dist/shell/metrics-cli.js +2 -1
  46. package/dist/shell/multi-agent-cli.js +367 -323
  47. package/dist/shell/multi-agent-host.js +9 -9
  48. package/dist/shell/multi-agent-operator-ux.js +80 -38
  49. package/dist/shell/node-store.js +10 -4
  50. package/dist/shell/observability.js +1 -1
  51. package/dist/shell/operator-ux-text.js +22 -22
  52. package/dist/shell/operator-ux.js +15 -14
  53. package/dist/shell/orchestrator.js +49 -38
  54. package/dist/shell/pipeline-cli.js +87 -40
  55. package/dist/shell/reclamation-io.js +14 -4
  56. package/dist/shell/registry-cli.js +19 -17
  57. package/dist/shell/remote-source.js +13 -8
  58. package/dist/shell/report-cli.js +45 -0
  59. package/dist/shell/report.js +2 -1
  60. package/dist/shell/run-registry-io.js +77 -19
  61. package/dist/shell/run-store.js +74 -2
  62. package/dist/shell/scheduling-io.js +12 -13
  63. package/dist/shell/state-cli.js +2 -7
  64. package/dist/shell/state-explosion-cli.js +17 -9
  65. package/dist/shell/topology-io.js +36 -5
  66. package/dist/shell/trust-audit.js +224 -22
  67. package/dist/shell/trust-policy-io.js +1 -1
  68. package/dist/shell/worker-cli.js +35 -31
  69. package/dist/wiring/capability-table/basics.js +33 -8
  70. package/dist/wiring/capability-table/exec-backend.js +20 -11
  71. package/dist/wiring/capability-table/multi-agent.js +172 -165
  72. package/dist/wiring/capability-table/parity.js +1 -0
  73. package/dist/wiring/capability-table/pipeline.js +54 -42
  74. package/dist/wiring/capability-table/registry-core.js +29 -10
  75. package/dist/wiring/capability-table/reporting.js +137 -96
  76. package/dist/wiring/capability-table/scheduling-registry.js +195 -161
  77. package/dist/wiring/capability-table/state.js +36 -28
  78. package/dist/wiring/capability-table/trust-ledger.js +46 -22
  79. package/dist/wiring/capability-table/workflow-apps.js +83 -68
  80. package/docs/agent-delegation-drive.7.md +2 -0
  81. package/docs/candidate-scoring.7.md +1 -1
  82. package/docs/canonical-workflow-apps.7.md +7 -7
  83. package/docs/cli-mcp-parity.7.md +8 -3
  84. package/docs/contract-migration-tooling.7.md +2 -0
  85. package/docs/control-plane-scheduling.7.md +2 -0
  86. package/docs/coordinator-blackboard.7.md +17 -17
  87. package/docs/dogfood-one-real-repo.7.md +11 -11
  88. package/docs/durable-state-and-locking.7.md +2 -0
  89. package/docs/end-to-end-golden-path.7.md +14 -14
  90. package/docs/evidence-adoption-reasoning-chain.7.md +2 -0
  91. package/docs/execution-backends.7.md +2 -0
  92. package/docs/getting-started.md +37 -37
  93. package/docs/multi-agent-cli-mcp-surface.7.md +19 -17
  94. package/docs/multi-agent-eval-replay-harness.7.md +15 -13
  95. package/docs/multi-agent-operator-ux.7.md +21 -19
  96. package/docs/multi-agent-runtime-core.7.md +22 -22
  97. package/docs/multi-agent-topologies.7.md +6 -6
  98. package/docs/multi-agent-trust-policy-audit.7.md +11 -11
  99. package/docs/node-snapshot-diff-replay.7.md +2 -0
  100. package/docs/observability-cost-accounting.7.md +2 -0
  101. package/docs/operator-ux.7.md +34 -34
  102. package/docs/pipeline-runner.7.md +4 -4
  103. package/docs/project-index.md +27 -4
  104. package/docs/real-execution-backends.7.md +2 -0
  105. package/docs/release-and-migration.7.md +3 -1
  106. package/docs/release-tooling.7.md +2 -0
  107. package/docs/routines.md +4 -4
  108. package/docs/run-registry-control-plane.7.md +21 -19
  109. package/docs/run-retention-reclamation.7.md +2 -0
  110. package/docs/scheduled-tasks.md +14 -14
  111. package/docs/security-trust-hardening.7.md +15 -15
  112. package/docs/state-explosion-management.7.md +12 -10
  113. package/docs/team-collaboration.7.md +2 -0
  114. package/docs/trust-audit-anchor.7.md +2 -0
  115. package/docs/unix-principles.md +3 -1
  116. package/docs/verifier-gated-commit.7.md +1 -1
  117. package/docs/web-desktop-workbench.7.md +2 -0
  118. package/docs/workflow-app-framework.7.md +13 -13
  119. package/manifest/plugin.manifest.json +1 -1
  120. package/package.json +2 -2
  121. package/scripts/agents/claude-p-agent.js +2 -2
  122. package/scripts/block-unapproved-tag.sh +23 -2
  123. package/scripts/canonical-apps.js +4 -4
  124. package/scripts/children/batch-delegate-child.js +52 -2
  125. package/scripts/dogfood-release.js +1 -1
  126. package/scripts/fake-date-for-reproduction.js +44 -0
  127. package/scripts/golden-path.js +4 -4
  128. package/scripts/purity-baseline.json +3 -0
  129. package/scripts/release-flow.js +57 -1
  130. package/scripts/verdict-keygen.js +83 -0
  131. package/scripts/verify-bump-reproduction.sh +148 -0
  132. package/scripts/verify-verdict-signature.js +61 -0
  133. package/skills/cool-workflow/SKILL.md +9 -9
  134. package/skills/cool-workflow/references/commands.md +89 -88
  135. package/ui/workbench/app.css +37 -1
  136. package/ui/workbench/app.js +124 -6
@@ -10,7 +10,7 @@ deterministic summaries for people, while it keeps JSON for scripts and MCP.
10
10
  Human status is the default:
11
11
 
12
12
  ```bash
13
- node scripts/cw.js status <run-id>
13
+ cw status <run-id>
14
14
  ```
15
15
 
16
16
  The status view gives you run id, workflow/app id and version, loop stage, active
@@ -21,8 +21,8 @@ path, and the next command it puts forward.
21
21
  Machine-readable status is still there for you:
22
22
 
23
23
  ```bash
24
- node scripts/cw.js status <run-id> --json
25
- node scripts/cw.js status <run-id> --format json
24
+ cw status <run-id> --json
25
+ cw status <run-id> --format json
26
26
  ```
27
27
 
28
28
  `CoolWorkflowRunner.status()` and MCP `cw_status` still give back structured
@@ -39,19 +39,19 @@ The things it puts forward are deterministic and use only commands that are in
39
39
  the CW CLI. Examples:
40
40
 
41
41
  ```text
42
- node scripts/cw.js dispatch <run-id> --limit 4
42
+ cw dispatch <run-id> --limit 4
43
43
  reason: pending tasks are ready for the active phase
44
44
 
45
- node scripts/cw.js worker manifest <run-id> <worker-id>
45
+ cw worker manifest <run-id> <worker-id>
46
46
  reason: running workers need their manifests inspected
47
47
 
48
- node scripts/cw.js feedback show <run-id> <feedback-id>
48
+ cw feedback show <run-id> <feedback-id>
49
49
  reason: open feedback should be resolved before more dispatch
50
50
 
51
- node scripts/cw.js candidate register <run-id> --worker <worker-id>
51
+ cw candidate register <run-id> --worker <worker-id>
52
52
  reason: a completed worker result has not been registered as a candidate
53
53
 
54
- node scripts/cw.js commit <run-id> --selection <selection-id>
54
+ cw commit <run-id> --selection <selection-id>
55
55
  reason: a verified selected candidate is ready for a verifier-gated commit
56
56
  ```
57
57
 
@@ -63,15 +63,15 @@ work is done, the advisor points to `cw report <run-id> --show`.
63
63
  Use the top-level graph command for a small console map:
64
64
 
65
65
  ```bash
66
- node scripts/cw.js graph <run-id>
67
- node scripts/cw.js graph <run-id> --json
66
+ cw graph <run-id>
67
+ cw graph <run-id> --json
68
68
  ```
69
69
 
70
70
  The legacy node command still works:
71
71
 
72
72
  ```bash
73
- node scripts/cw.js node graph <run-id>
74
- node scripts/cw.js node graph <run-id> --json
73
+ cw node graph <run-id>
74
+ cw node graph <run-id> --json
75
75
  ```
76
76
 
77
77
  The human graph puts phases, tasks, dispatches, workers, result nodes,
@@ -90,10 +90,10 @@ v0.1.21 adds clear multi-agent operator views that answer who is dependent on
90
90
  whom, who is blocked, and which evidence went into the accepted result:
91
91
 
92
92
  ```bash
93
- node scripts/cw.js multi-agent graph <run-id>
94
- node scripts/cw.js multi-agent dependencies <run-id>
95
- node scripts/cw.js multi-agent failures <run-id>
96
- node scripts/cw.js multi-agent evidence <run-id>
93
+ cw multi-agent graph <run-id>
94
+ cw multi-agent dependencies <run-id>
95
+ cw multi-agent failures <run-id>
96
+ cw multi-agent evidence <run-id>
97
97
  ```
98
98
 
99
99
  The same derived model is in `status`, `report --show`, and
@@ -106,14 +106,14 @@ trace from agent membership to verifier-gated commit.
106
106
  `cw report` still writes the Markdown report file and prints its path:
107
107
 
108
108
  ```bash
109
- node scripts/cw.js report <run-id>
109
+ cw report <run-id>
110
110
  ```
111
111
 
112
112
  Use `--show` or `--summary` when the operator needs a console report that is easy to read:
113
113
 
114
114
  ```bash
115
- node scripts/cw.js report <run-id> --show
116
- node scripts/cw.js report <run-id> --summary
115
+ cw report <run-id> --show
116
+ cw report <run-id> --summary
117
117
  ```
118
118
 
119
119
  The console report gives the same high-value status panels plus active and
@@ -124,25 +124,25 @@ pending tasks, evidence paths and locators, and resource inspection commands.
124
124
  The chief run resources have human summaries by default and JSON when you ask for it:
125
125
 
126
126
  ```bash
127
- node scripts/cw.js worker summary <run-id>
128
- node scripts/cw.js worker summary <run-id> --json
127
+ cw worker summary <run-id>
128
+ cw worker summary <run-id> --json
129
129
 
130
- node scripts/cw.js candidate summary <run-id>
131
- node scripts/cw.js candidate summary <run-id> --json
130
+ cw candidate summary <run-id>
131
+ cw candidate summary <run-id> --json
132
132
 
133
- node scripts/cw.js feedback summary <run-id>
134
- node scripts/cw.js feedback summary <run-id> --json
133
+ cw feedback summary <run-id>
134
+ cw feedback summary <run-id> --json
135
135
 
136
- node scripts/cw.js commit summary <run-id>
137
- node scripts/cw.js commit summary <run-id> --json
136
+ cw commit summary <run-id>
137
+ cw commit summary <run-id> --json
138
138
 
139
- node scripts/cw.js multi-agent summary <run-id>
140
- node scripts/cw.js multi-agent summary <run-id> --json
141
- node scripts/cw.js multi-agent graph <run-id>
142
- node scripts/cw.js multi-agent graph <run-id> --json
143
- node scripts/cw.js multi-agent dependencies <run-id>
144
- node scripts/cw.js multi-agent failures <run-id>
145
- node scripts/cw.js multi-agent evidence <run-id>
139
+ cw multi-agent summary <run-id>
140
+ cw multi-agent summary <run-id> --json
141
+ cw multi-agent graph <run-id>
142
+ cw multi-agent graph <run-id> --json
143
+ cw multi-agent dependencies <run-id>
144
+ cw multi-agent failures <run-id>
145
+ cw multi-agent evidence <run-id>
146
146
  ```
147
147
 
148
148
  Worker summaries show allocated/running/verified/failed/rejected counts,
@@ -93,10 +93,10 @@ commit stage.
93
93
  Commands that look at runs print stable JSON:
94
94
 
95
95
  ```text
96
- cw.js contract show <run-id> [contract-id]
97
- cw.js node list <run-id>
98
- cw.js node show <run-id> <node-id>
99
- cw.js node graph <run-id>
96
+ cw contract show <run-id> [contract-id]
97
+ cw node list <run-id>
98
+ cw node show <run-id> <node-id>
99
+ cw node graph <run-id>
100
100
  ```
101
101
 
102
102
  ## EXAMPLES
@@ -1,15 +1,15 @@
1
1
  # Cool Workflow Project Index
2
2
 
3
- Generated from the current repository code on 2026-07-08 by `npm run sync:project-index`.
3
+ Generated from the current repository code on 2026-07-10 by `npm run sync:project-index`.
4
4
 
5
5
  ## Snapshot
6
6
 
7
7
  - Package: `cool-workflow`
8
- - Version: `0.2.2`
9
- - Source modules: `145`
8
+ - Version: `0.2.3`
9
+ - Source modules: `148`
10
10
  - Workflow apps: `8`
11
11
  - Docs: `62`
12
- - Smoke tests: `181`
12
+ - Smoke tests: `201`
13
13
  - Repository: https://github.com/coo1white/cool-workflow
14
14
 
15
15
  ## Architecture
@@ -84,7 +84,9 @@ multi-agent host -> topology -> blackboard/coordinator
84
84
  - [cli/parseargv.ts](../src/cli/parseargv.ts)
85
85
  - [core/capability-data.ts](../src/core/capability-data.ts)
86
86
  - [core/capability-table.ts](../src/core/capability-table.ts)
87
+ - [core/format/completion.ts](../src/core/format/completion.ts)
87
88
  - [core/format/help.ts](../src/core/format/help.ts)
89
+ - [core/format/safe-json.ts](../src/core/format/safe-json.ts)
88
90
  - [core/format/state-explosion-text.ts](../src/core/format/state-explosion-text.ts)
89
91
  - [core/hash.ts](../src/core/hash.ts)
90
92
  - [core/multi-agent/collaboration.ts](../src/core/multi-agent/collaboration.ts)
@@ -117,6 +119,7 @@ multi-agent host -> topology -> blackboard/coordinator
117
119
  - [core/types/execution-backend.ts](../src/core/types/execution-backend.ts)
118
120
  - [core/types/observability.ts](../src/core/types/observability.ts)
119
121
  - [core/util/collate.ts](../src/core/util/collate.ts)
122
+ - [core/util/numeric-flag.ts](../src/core/util/numeric-flag.ts)
120
123
  - [mcp/dispatch.ts](../src/mcp/dispatch.ts)
121
124
  - [mcp/server.ts](../src/mcp/server.ts)
122
125
  - [shell/agent-config.ts](../src/shell/agent-config.ts)
@@ -303,6 +306,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
303
306
  - [claude-p-agent-wrapper-smoke.js](../test/claude-p-agent-wrapper-smoke.js)
304
307
  - [cli-arg-parsing-smoke.js](../test/cli-arg-parsing-smoke.js)
305
308
  - [cli-command-surface-smoke.js](../test/cli-command-surface-smoke.js)
309
+ - [cli-epipe-smoke.js](../test/cli-epipe-smoke.js)
306
310
  - [cli-format-smoke.js](../test/cli-format-smoke.js)
307
311
  - [cli-handler-clones-smoke.js](../test/cli-handler-clones-smoke.js)
308
312
  - [cli-handler-eval-node-smoke.js](../test/cli-handler-eval-node-smoke.js)
@@ -324,6 +328,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
324
328
  - [contract-migration-tooling-smoke.js](../test/contract-migration-tooling-smoke.js)
325
329
  - [control-plane-scheduling-smoke.js](../test/control-plane-scheduling-smoke.js)
326
330
  - [coordinator-blackboard-smoke.js](../test/coordinator-blackboard-smoke.js)
331
+ - [coordinator-topology-persist-dirty-tracking-smoke.js](../test/coordinator-topology-persist-dirty-tracking-smoke.js)
327
332
  - [cw-help-per-command-smoke.js](../test/cw-help-per-command-smoke.js)
328
333
  - [dead-export-removal-guard-smoke.js](../test/dead-export-removal-guard-smoke.js)
329
334
  - [deepseek-agent-wrapper-smoke.js](../test/deepseek-agent-wrapper-smoke.js)
@@ -331,11 +336,14 @@ Smoke tests mirror the public contracts. The high-signal suites are:
331
336
  - [demo-bundle-smoke.js](../test/demo-bundle-smoke.js)
332
337
  - [det-ids-b-smoke.js](../test/det-ids-b-smoke.js)
333
338
  - [dispatch-legacy-burndown-smoke.js](../test/dispatch-legacy-burndown-smoke.js)
339
+ - [doctor-audit-integrity-repair-smoke.js](../test/doctor-audit-integrity-repair-smoke.js)
334
340
  - [doctor-smoke.js](../test/doctor-smoke.js)
335
341
  - [dogfood-architecture-review-smoke.js](../test/dogfood-architecture-review-smoke.js)
336
342
  - [dogfood-release-smoke.js](../test/dogfood-release-smoke.js)
343
+ - [drive-async-real-signal-smoke.js](../test/drive-async-real-signal-smoke.js)
337
344
  - [drive-concurrency-flag-smoke.js](../test/drive-concurrency-flag-smoke.js)
338
345
  - [drive-exhaustion-blocked-smoke.js](../test/drive-exhaustion-blocked-smoke.js)
346
+ - [drive-round-cache-serial-smoke.js](../test/drive-round-cache-serial-smoke.js)
339
347
  - [durable-atomic-write-smoke.js](../test/durable-atomic-write-smoke.js)
340
348
  - [end-to-end-demo-smoke.js](../test/end-to-end-demo-smoke.js)
341
349
  - [end-to-end-golden-path-smoke.js](../test/end-to-end-golden-path-smoke.js)
@@ -348,6 +356,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
348
356
  - [execution-backends-smoke.js](../test/execution-backends-smoke.js)
349
357
  - [feedback-ops-unit-smoke.js](../test/feedback-ops-unit-smoke.js)
350
358
  - [freebsd-audit-fixes-smoke.js](../test/freebsd-audit-fixes-smoke.js)
359
+ - [fs-atomic-lock-steal-race-smoke.js](../test/fs-atomic-lock-steal-race-smoke.js)
351
360
  - [gemini-agent-wrapper-smoke.js](../test/gemini-agent-wrapper-smoke.js)
352
361
  - [gemini-opencode-agent-wrapper-smoke.js](../test/gemini-opencode-agent-wrapper-smoke.js)
353
362
  - [h7-custom-profile-persist-smoke.js](../test/h7-custom-profile-persist-smoke.js)
@@ -357,9 +366,11 @@ Smoke tests mirror the public contracts. The high-signal suites are:
357
366
  - [ledger-resolution-smoke.js](../test/ledger-resolution-smoke.js)
358
367
  - [ledger-verify-smoke.js](../test/ledger-verify-smoke.js)
359
368
  - [loop-bounded-expansion-smoke.js](../test/loop-bounded-expansion-smoke.js)
369
+ - [man-run-registry-traversal-smoke.js](../test/man-run-registry-traversal-smoke.js)
360
370
  - [mcp-app-surface-smoke.js](../test/mcp-app-surface-smoke.js)
361
371
  - [mcp-surface-registry-smoke.js](../test/mcp-surface-registry-smoke.js)
362
372
  - [mcp-tool-call-coverage-smoke.js](../test/mcp-tool-call-coverage-smoke.js)
373
+ - [mcp-untrusted-content-advisory-smoke.js](../test/mcp-untrusted-content-advisory-smoke.js)
363
374
  - [metrics-summary-limit-smoke.js](../test/metrics-summary-limit-smoke.js)
364
375
  - [multi-agent-cli-mcp-surface-smoke.js](../test/multi-agent-cli-mcp-surface-smoke.js)
365
376
  - [multi-agent-eval-determinism-regression-smoke.js](../test/multi-agent-eval-determinism-regression-smoke.js)
@@ -367,6 +378,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
367
378
  - [multi-agent-eval-replay-smoke.js](../test/multi-agent-eval-replay-smoke.js)
368
379
  - [multi-agent-operator-ux-smoke.js](../test/multi-agent-operator-ux-smoke.js)
369
380
  - [multi-agent-runtime-core-smoke.js](../test/multi-agent-runtime-core-smoke.js)
381
+ - [multi-agent-state-lock-concurrency-smoke.js](../test/multi-agent-state-lock-concurrency-smoke.js)
370
382
  - [multi-agent-topologies-debate-smoke.js](../test/multi-agent-topologies-debate-smoke.js)
371
383
  - [multi-agent-topologies-judge-panel-smoke.js](../test/multi-agent-topologies-judge-panel-smoke.js)
372
384
  - [multi-agent-topologies-map-reduce-smoke.js](../test/multi-agent-topologies-map-reduce-smoke.js)
@@ -375,6 +387,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
375
387
  - [node-snapshot-diff-replay-smoke.js](../test/node-snapshot-diff-replay-smoke.js)
376
388
  - [npm-global-install-smoke.js](../test/npm-global-install-smoke.js)
377
389
  - [npm-trusted-publish-smoke.js](../test/npm-trusted-publish-smoke.js)
390
+ - [numeric-flag-parsing-smoke.js](../test/numeric-flag-parsing-smoke.js)
378
391
  - [observability-cost-accounting-smoke.js](../test/observability-cost-accounting-smoke.js)
379
392
  - [one-way-boundary-smoke.js](../test/one-way-boundary-smoke.js)
380
393
  - [onramp-check-smoke.js](../test/onramp-check-smoke.js)
@@ -401,6 +414,7 @@ Smoke tests mirror the public contracts. The high-signal suites are:
401
414
  - [readme-trust-claim-smoke.js](../test/readme-trust-claim-smoke.js)
402
415
  - [real-execution-backends-smoke.js](../test/real-execution-backends-smoke.js)
403
416
  - [registry-corrupt-fail-closed-smoke.js](../test/registry-corrupt-fail-closed-smoke.js)
417
+ - [registry-corrupt-state-distinct-error-smoke.js](../test/registry-corrupt-state-distinct-error-smoke.js)
404
418
  - [release-check-skip-smoke.js](../test/release-check-skip-smoke.js)
405
419
  - [release-flow-smoke.js](../test/release-flow-smoke.js)
406
420
  - [release-gate-smoke.js](../test/release-gate-smoke.js)
@@ -437,10 +451,14 @@ Smoke tests mirror the public contracts. The high-signal suites are:
437
451
  - [schema-validation-smoke.js](../test/schema-validation-smoke.js)
438
452
  - [security-trust-hardening-smoke.js](../test/security-trust-hardening-smoke.js)
439
453
  - [self-audit-hardening-smoke.js](../test/self-audit-hardening-smoke.js)
454
+ - [sigint-sigterm-drive-loop-smoke.js](../test/sigint-sigterm-drive-loop-smoke.js)
455
+ - [smoke-duration-scheduling-smoke.js](../test/smoke-duration-scheduling-smoke.js)
440
456
  - [source-context-batch-smoke.js](../test/source-context-batch-smoke.js)
441
457
  - [source-context-profile-smoke.js](../test/source-context-profile-smoke.js)
442
458
  - [state-node-smoke.js](../test/state-node-smoke.js)
459
+ - [status-run-flag-smoke.js](../test/status-run-flag-smoke.js)
443
460
  - [sub-workflow-nesting-smoke.js](../test/sub-workflow-nesting-smoke.js)
461
+ - [summary-show-no-checkpoint-write-smoke.js](../test/summary-show-no-checkpoint-write-smoke.js)
444
462
  - [surface-explicit-cwd-smoke.js](../test/surface-explicit-cwd-smoke.js)
445
463
  - [tamper-evidence-demo-smoke.js](../test/tamper-evidence-demo-smoke.js)
446
464
  - [team-collaboration-smoke.js](../test/team-collaboration-smoke.js)
@@ -452,11 +470,16 @@ Smoke tests mirror the public contracts. The high-signal suites are:
452
470
  - [telemetry-verify-signatures-smoke.js](../test/telemetry-verify-signatures-smoke.js)
453
471
  - [token-budget-enforcement-smoke.js](../test/token-budget-enforcement-smoke.js)
454
472
  - [trust-audit-anchor-smoke.js](../test/trust-audit-anchor-smoke.js)
473
+ - [trust-audit-append-lock-concurrency-smoke.js](../test/trust-audit-append-lock-concurrency-smoke.js)
474
+ - [trust-audit-append-tail-cache-smoke.js](../test/trust-audit-append-tail-cache-smoke.js)
455
475
  - [vendor-manifest-load-smoke.js](../test/vendor-manifest-load-smoke.js)
456
476
  - [vendor-preflight-smoke.js](../test/vendor-preflight-smoke.js)
477
+ - [verdict-signing-workflow-smoke.js](../test/verdict-signing-workflow-smoke.js)
457
478
  - [verifier-gated-commit-smoke.js](../test/verifier-gated-commit-smoke.js)
479
+ - [verify-bump-reproduction-smoke.js](../test/verify-bump-reproduction-smoke.js)
458
480
  - [verify-import-audit-chain-smoke.js](../test/verify-import-audit-chain-smoke.js)
459
481
  - [web-desktop-workbench-smoke.js](../test/web-desktop-workbench-smoke.js)
482
+ - [wiring-lazy-shell-imports-smoke.js](../test/wiring-lazy-shell-imports-smoke.js)
460
483
  - [worker-accept-path-architecture-smoke.js](../test/worker-accept-path-architecture-smoke.js)
461
484
  - [worker-isolation-smoke.js](../test/worker-isolation-smoke.js)
462
485
  - [worker-retry-count-smoke.js](../test/worker-retry-count-smoke.js)
@@ -195,3 +195,5 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
195
195
  0.2.1
196
196
 
197
197
  0.2.2
198
+
199
+ 0.2.3
@@ -9,7 +9,7 @@ Maintainers cutting CW releases should use `npm run release:check` from
9
9
  files can check compatibility with:
10
10
 
11
11
  ```bash
12
- node scripts/cw.js state check <run-id>
12
+ cw state check <run-id>
13
13
  ```
14
14
 
15
15
  Use `--state /path/to/state.json` when checking a state file outside the
@@ -335,3 +335,5 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
335
335
  0.2.1
336
336
 
337
337
  0.2.2
338
+
339
+ 0.2.3
@@ -298,3 +298,5 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
298
298
  0.2.1
299
299
 
300
300
  0.2.2
301
+
302
+ 0.2.3
package/docs/routines.md CHANGED
@@ -15,7 +15,7 @@ CW keeps routine data in:
15
15
  Create an API trigger:
16
16
 
17
17
  ```bash
18
- node scripts/cw.js routine create \
18
+ cw routine create \
19
19
  --kind api \
20
20
  --prompt "Handle this API event."
21
21
  ```
@@ -23,7 +23,7 @@ node scripts/cw.js routine create \
23
23
  Create a GitHub trigger:
24
24
 
25
25
  ```bash
26
- node scripts/cw.js routine create \
26
+ cw routine create \
27
27
  --kind github \
28
28
  --prompt "Review this GitHub event." \
29
29
  --match '{"action":"opened"}'
@@ -32,13 +32,13 @@ node scripts/cw.js routine create \
32
32
  Fire a trigger from a payload file:
33
33
 
34
34
  ```bash
35
- node scripts/cw.js routine fire github payload.json
35
+ cw routine fire github payload.json
36
36
  ```
37
37
 
38
38
  Inspect events:
39
39
 
40
40
  ```bash
41
- node scripts/cw.js routine events
41
+ cw routine events
42
42
  ```
43
43
 
44
44
  ## Long Architecture Reviews
@@ -251,25 +251,25 @@ freshness, and provenance back to its `.cw/runs/<id>/`. Filter with `--app` and
251
251
  ## CLI
252
252
 
253
253
  ```text
254
- node scripts/cw.js registry refresh [--scope repo|home] [--json]
255
- node scripts/cw.js registry show [--scope repo|home] [--json]
256
- 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]
257
- node scripts/cw.js run list [--scope repo|home] [--json]
258
- node scripts/cw.js run show <run-id> [--scope repo|home] [--json]
259
- node scripts/cw.js run resume <run-id> [--limit N] [--drive [--once]] [--json]
260
- node scripts/cw.js run archive <run-id> [--reason TEXT] [--unarchive]
261
- node scripts/cw.js run archive --older-than-days N [--state completed --state failed]
262
- node scripts/cw.js run rerun <run-id> [--reason TEXT]
263
- node scripts/cw.js run export <run-id> --output PATH
264
- node scripts/cw.js run import PATH --target DIR
265
- node scripts/cw.js run verify-import <run-id> [--cwd DIR]
266
- node scripts/cw.js run inspect-archive PATH [--json]
267
- node scripts/cw.js run restore PATH --target DIR [--json]
268
- node scripts/cw.js queue add [--app ID|--workflow ID|--runId ID] [--repo PATH] [--priority N] [--note TEXT]
269
- node scripts/cw.js queue list [--status STATE] [--repo PATH] [--json]
270
- node scripts/cw.js queue show <queue-id>
271
- node scripts/cw.js queue drain [--limit N] [--repo PATH]
272
- node scripts/cw.js history [--app ID] [--status STATE] [--limit N] [--offset N] [--scope repo|home] [--json]
254
+ cw registry refresh [--scope repo|home] [--json]
255
+ cw registry show [--scope repo|home] [--json]
256
+ cw run search [--app ID] [--status STATE] [--text Q] [--repo PATH] [--since ISO] [--until ISO] [--limit N] [--offset N] [--scope repo|home] [--json]
257
+ cw run list [--scope repo|home] [--json]
258
+ cw run show <run-id> [--scope repo|home] [--json]
259
+ cw run resume <run-id> [--limit N] [--drive [--once]] [--json]
260
+ cw run archive <run-id> [--reason TEXT] [--unarchive]
261
+ cw run archive --older-than-days N [--state completed --state failed]
262
+ cw run rerun <run-id> [--reason TEXT]
263
+ cw run export <run-id> --output PATH
264
+ cw run import PATH --target DIR
265
+ cw run verify-import <run-id> [--cwd DIR]
266
+ cw run inspect-archive PATH [--json]
267
+ cw run restore PATH --target DIR [--json]
268
+ cw queue add [--app ID|--workflow ID|--runId ID] [--repo PATH] [--priority N] [--note TEXT]
269
+ cw queue list [--status STATE] [--repo PATH] [--json]
270
+ cw queue show <queue-id>
271
+ cw queue drain [--limit N] [--repo PATH]
272
+ cw history [--app ID] [--status STATE] [--limit N] [--offset N] [--scope repo|home] [--json]
273
273
  ```
274
274
 
275
275
  Read commands print short human panels by default (lifecycle, freshness, counts,
@@ -478,3 +478,5 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
478
478
  0.2.1
479
479
 
480
480
  0.2.2
481
+
482
+ 0.2.3
@@ -267,3 +267,5 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
267
267
  0.2.1
268
268
 
269
269
  0.2.2
270
+
271
+ 0.2.3
@@ -14,7 +14,7 @@ CW keeps schedules in:
14
14
  Make a `/loop`-ready schedule:
15
15
 
16
16
  ```bash
17
- node scripts/cw.js loop \
17
+ cw loop \
18
18
  --intervalMinutes 30 \
19
19
  --prompt "Check this workflow and continue if work is due."
20
20
  ```
@@ -22,7 +22,7 @@ node scripts/cw.js loop \
22
22
  Make a loop:
23
23
 
24
24
  ```bash
25
- node scripts/cw.js schedule create \
25
+ cw schedule create \
26
26
  --kind loop \
27
27
  --intervalMinutes 30 \
28
28
  --prompt "Check this workflow and continue if work is due."
@@ -31,7 +31,7 @@ node scripts/cw.js schedule create \
31
31
  Make a cron schedule:
32
32
 
33
33
  ```bash
34
- node scripts/cw.js schedule create \
34
+ cw schedule create \
35
35
  --kind cron \
36
36
  --cron "*/15 * * * *" \
37
37
  --prompt "Run the due workflow scan."
@@ -40,7 +40,7 @@ node scripts/cw.js schedule create \
40
40
  Make a reminder:
41
41
 
42
42
  ```bash
43
- node scripts/cw.js schedule create \
43
+ cw schedule create \
44
44
  --kind reminder \
45
45
  --delayMinutes 60 \
46
46
  --prompt "Remind me to inspect the report."
@@ -49,26 +49,26 @@ node scripts/cw.js schedule create \
49
49
  List and look through:
50
50
 
51
51
  ```bash
52
- node scripts/cw.js schedule list
53
- node scripts/cw.js schedule due
54
- node scripts/cw.js schedule complete <schedule-id>
55
- node scripts/cw.js schedule pause <schedule-id>
56
- node scripts/cw.js schedule resume <schedule-id>
57
- node scripts/cw.js schedule run-now <schedule-id>
58
- node scripts/cw.js schedule history <schedule-id>
59
- node scripts/cw.js schedule delete <schedule-id>
52
+ cw schedule list
53
+ cw schedule due
54
+ cw schedule complete <schedule-id>
55
+ cw schedule pause <schedule-id>
56
+ cw schedule resume <schedule-id>
57
+ cw schedule run-now <schedule-id>
58
+ cw schedule history <schedule-id>
59
+ cw schedule delete <schedule-id>
60
60
  ```
61
61
 
62
62
  Run the local desktop-like daemon one time:
63
63
 
64
64
  ```bash
65
- node scripts/cw.js schedule daemon --once
65
+ cw schedule daemon --once
66
66
  ```
67
67
 
68
68
  Run it without stopping:
69
69
 
70
70
  ```bash
71
- node scripts/cw.js schedule daemon --intervalSeconds 60
71
+ cw schedule daemon --intervalSeconds 60
72
72
  ```
73
73
 
74
74
  ## Notes
@@ -82,21 +82,21 @@ With the require flag off (the default), none of this changes: a plain
82
82
  ## CLI
83
83
 
84
84
  ```bash
85
- node scripts/cw.js audit summary <run-id>
86
- node scripts/cw.js audit worker <run-id> <worker-id>
87
- node scripts/cw.js audit provenance <run-id> [--worker ID|--candidate ID|--commit ID]
88
- node scripts/cw.js audit multi-agent <run-id>
89
- node scripts/cw.js audit policy <run-id>
90
- node scripts/cw.js audit role <run-id> <role-id>
91
- node scripts/cw.js audit blackboard <run-id>
92
- node scripts/cw.js audit judge <run-id>
93
- node scripts/cw.js audit attest <run-id> --worker <worker-id> --hostEnforced true
94
- node scripts/cw.js audit decision <run-id> <worker-id> --path <path>
95
- node scripts/cw.js audit decision <run-id> <worker-id> --command "npm test"
96
- node scripts/cw.js audit decision <run-id> <worker-id> --network example.com
97
- node scripts/cw.js audit decision <run-id> <worker-id> --env SECRET_NAME
98
- node scripts/cw.js worker output <run-id> <worker-id> <result-file> [--allow-unattested]
99
- node scripts/cw.js result <run-id> <task-id> <result-file> [--allow-unattested]
85
+ cw audit summary <run-id>
86
+ cw audit worker <run-id> <worker-id>
87
+ cw audit provenance <run-id> [--worker ID|--candidate ID|--commit ID]
88
+ cw audit multi-agent <run-id>
89
+ cw audit policy <run-id>
90
+ cw audit role <run-id> <role-id>
91
+ cw audit blackboard <run-id>
92
+ cw audit judge <run-id>
93
+ cw audit attest <run-id> --worker <worker-id> --hostEnforced true
94
+ cw audit decision <run-id> <worker-id> --path <path>
95
+ cw audit decision <run-id> <worker-id> --command "npm test"
96
+ cw audit decision <run-id> <worker-id> --network example.com
97
+ cw audit decision <run-id> <worker-id> --env SECRET_NAME
98
+ cw worker output <run-id> <worker-id> <result-file> [--allow-unattested]
99
+ cw result <run-id> <task-id> <result-file> [--allow-unattested]
100
100
  ```
101
101
 
102
102
  Denied audit decisions are put into audit files and joined to feedback/error
@@ -84,14 +84,14 @@ folded.
84
84
  ## CLI
85
85
 
86
86
  ```text
87
- node scripts/cw.js summary refresh <run-id> [--json] [--view <view> ...]
88
- node scripts/cw.js summary show <run-id> [--json]
89
- node scripts/cw.js blackboard summarize <run-id> [--json]
90
- node scripts/cw.js multi-agent summarize <run-id> [--json]
91
- node scripts/cw.js multi-agent graph <run-id> --view compact [--json]
92
- node scripts/cw.js multi-agent graph <run-id> --view critical-path [--json]
93
- node scripts/cw.js multi-agent graph <run-id> --focus <id> --depth <n> [--json]
94
- node scripts/cw.js report <run-id> --show
87
+ cw summary refresh <run-id> [--json] [--view <view> ...]
88
+ cw summary show <run-id> [--json]
89
+ cw blackboard summarize <run-id> [--json]
90
+ cw multi-agent summarize <run-id> [--json]
91
+ cw multi-agent graph <run-id> --view compact [--json]
92
+ cw multi-agent graph <run-id> --view critical-path [--json]
93
+ cw multi-agent graph <run-id> --focus <id> --depth <n> [--json]
94
+ cw report <run-id> --show
95
95
  ```
96
96
 
97
97
  Every command supports deterministic JSON with `--json` or `--format json`.
@@ -106,8 +106,8 @@ summaries and tells the operator how to look at the full data, for example:
106
106
 
107
107
  ```text
108
108
  Graph compacted: 420 nodes collapsed into 18 summary nodes
109
- Use: node scripts/cw.js multi-agent graph <run-id> --view full --json
110
- Use: node scripts/cw.js blackboard message list <run-id> --topic <topic-id>
109
+ Use: cw multi-agent graph <run-id> --view full --json
110
+ Use: cw blackboard message list <run-id> --topic <topic-id>
111
111
  ```
112
112
 
113
113
  ## MCP parity
@@ -324,3 +324,5 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
324
324
  0.2.1
325
325
 
326
326
  0.2.2
327
+
328
+ 0.2.3
@@ -260,3 +260,5 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
260
260
  0.2.1
261
261
 
262
262
  0.2.2
263
+
264
+ 0.2.3
@@ -67,3 +67,5 @@ caller passed an anchor flag.
67
67
  security-trust-hardening(7), cli-mcp-parity(7), report-verifiable-bundle(7)
68
68
 
69
69
  0.2.2
70
+
71
+ 0.2.3
@@ -214,7 +214,9 @@ never in core. Core may send a vendor's stream on; it never reads one apart.
214
214
  **Rule of Silence.** stdout is data, stderr is diagnostics, and a
215
215
  non-interactive run says nothing on success. Anything friendly to a person is TTY-gated
216
216
  and can be turned off; `--json` output is fixed and with nothing added so it goes together
217
- in pipes.
217
+ in pipes. A broken pipe is not an error: when the reader at the other end
218
+ goes away early (`cw list --json | head -1`), the CLI stops quietly with
219
+ exit 0 — no stack trace, no error text (both `--json` and human output).
218
220
 
219
221
  **Fail closed, conservative defaults.** Backends not yet configured probe as
220
222
  `unverified`, telemetry that cannot be verified is made known loudly (or turned away in strict
@@ -114,7 +114,7 @@ commit-selection-not-verified
114
114
  commit-verifier-linkage-mismatch
115
115
  ```
116
116
 
117
- Use `cw.js feedback list <run-id>` and `cw.js node graph <run-id>` to look at
117
+ Use `cw feedback list <run-id>` and `cw node graph <run-id>` to look at
118
118
  the failed transition.
119
119
 
120
120
  ## CANDIDATES
@@ -278,3 +278,5 @@ _No behavioral change in v0.1.89 (CLI-surface golden-path + help-output fixes on
278
278
  0.2.1
279
279
 
280
280
  0.2.2
281
+
282
+ 0.2.3