cool-workflow 0.1.98 → 0.2.1

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 (315) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/README.md +18 -7
  4. package/apps/architecture-review/app.json +2 -2
  5. package/apps/architecture-review/workflow.js +12 -12
  6. package/apps/architecture-review-fast/app.json +1 -1
  7. package/apps/end-to-end-golden-path/app.json +1 -1
  8. package/apps/pr-review-fix-ci/app.json +1 -1
  9. package/apps/release-cut/app.json +1 -1
  10. package/apps/research-synthesis/app.json +1 -1
  11. package/dist/cli/dispatch.js +236 -0
  12. package/dist/cli/entry.js +120 -0
  13. package/dist/cli/io.js +21 -4
  14. package/dist/cli/parseargv.js +157 -0
  15. package/dist/cli.js +6 -33
  16. package/dist/core/capability-table.js +3518 -0
  17. package/dist/core/format/help.js +314 -0
  18. package/dist/{state-explosion/format.js → core/format/state-explosion-text.js} +10 -1
  19. package/dist/core/hash.js +137 -0
  20. package/dist/core/multi-agent/candidate-scoring.js +219 -0
  21. package/dist/core/multi-agent/collaboration.js +481 -0
  22. package/dist/core/multi-agent/coordinator.js +515 -0
  23. package/dist/core/multi-agent/eval-replay.js +306 -0
  24. package/dist/core/multi-agent/runtime.js +929 -0
  25. package/dist/core/multi-agent/topology.js +298 -0
  26. package/dist/core/multi-agent/trust-policy.js +197 -0
  27. package/dist/core/pipeline/commit-gate.js +320 -0
  28. package/dist/{pipeline-contract.js → core/pipeline/contract.js} +24 -37
  29. package/dist/core/pipeline/dispatch.js +103 -0
  30. package/dist/core/pipeline/drive-decide.js +227 -0
  31. package/dist/core/pipeline/error-feedback.js +161 -0
  32. package/dist/core/pipeline/loop-expansion.js +124 -0
  33. package/dist/{result-normalize.js → core/pipeline/result-normalize.js} +14 -37
  34. package/dist/core/pipeline/runner.js +230 -0
  35. package/dist/{contract-migration.js → core/state/contract-migration.js} +68 -92
  36. package/dist/{state-migrations.js → core/state/migrations.js} +103 -96
  37. package/dist/core/state/node-projection.js +95 -0
  38. package/dist/core/state/node-snapshot.js +230 -0
  39. package/dist/core/state/run-paths.js +93 -0
  40. package/dist/{schema-validate.js → core/state/schema-validate.js} +35 -28
  41. package/dist/core/state/schema.js +50 -0
  42. package/dist/core/state/state-explosion/digest.js +243 -0
  43. package/dist/core/state/state-explosion/graph.js +527 -0
  44. package/dist/{state-explosion → core/state/state-explosion}/helpers.js +34 -3
  45. package/dist/core/state/state-explosion/report.js +187 -0
  46. package/dist/{state-explosion → core/state/state-explosion}/size.js +25 -7
  47. package/dist/{state-node.js → core/state/state-node.js} +90 -113
  48. package/dist/core/state/types.js +19 -0
  49. package/dist/{validation.js → core/state/validation.js} +64 -131
  50. package/dist/core/trust/evidence-grounding.js +134 -0
  51. package/dist/core/trust/ledger.js +199 -0
  52. package/dist/{telemetry-attestation.js → core/trust/telemetry-attestation.js} +94 -68
  53. package/dist/core/trust/telemetry-ledger.js +127 -0
  54. package/dist/core/types.js +20 -0
  55. package/dist/core/version.js +16 -0
  56. package/dist/{workflow-app-framework.js → core/workflow-apps/app-schema.js} +337 -426
  57. package/dist/mcp/dispatch.js +104 -0
  58. package/dist/mcp/server.js +144 -0
  59. package/dist/mcp-server.js +6 -84
  60. package/dist/{agent-config.js → shell/agent-config.js} +118 -71
  61. package/dist/shell/app-run-cli.js +88 -0
  62. package/dist/shell/audit-cli.js +259 -0
  63. package/dist/shell/audit-provenance.js +83 -0
  64. package/dist/shell/candidate-scoring-io.js +459 -0
  65. package/dist/shell/collaboration-io.js +264 -0
  66. package/dist/shell/commit-summary.js +104 -0
  67. package/dist/shell/commit.js +290 -0
  68. package/dist/shell/coordinator-io.js +476 -0
  69. package/dist/shell/demo-cli.js +19 -0
  70. package/dist/shell/dispatch.js +162 -0
  71. package/dist/shell/doctor.js +292 -0
  72. package/dist/shell/drive.js +885 -0
  73. package/dist/shell/error-feedback-io.js +305 -0
  74. package/dist/shell/eval-io.js +473 -0
  75. package/dist/{multi-agent-eval/format.js → shell/eval-text.js} +78 -49
  76. package/dist/{evidence-reasoning.js → shell/evidence-reasoning.js} +124 -255
  77. package/dist/shell/exec-backend-cli.js +88 -0
  78. package/dist/shell/execution-backend/agent.js +507 -0
  79. package/dist/shell/execution-backend/ci.js +15 -0
  80. package/dist/shell/execution-backend/container.js +69 -0
  81. package/dist/shell/execution-backend/envelopes.js +55 -0
  82. package/dist/shell/execution-backend/local.js +113 -0
  83. package/dist/shell/execution-backend/probes.js +175 -0
  84. package/dist/shell/execution-backend/registry.js +402 -0
  85. package/dist/shell/execution-backend/remote.js +128 -0
  86. package/dist/shell/execution-backend/types.js +11 -0
  87. package/dist/shell/feedback-cli.js +81 -0
  88. package/dist/shell/feedback-operations.js +48 -0
  89. package/dist/shell/fs-atomic.js +276 -0
  90. package/dist/shell/harness.js +98 -0
  91. package/dist/shell/ledger-cli.js +212 -0
  92. package/dist/shell/ledger-io.js +169 -0
  93. package/dist/shell/man-cli.js +89 -0
  94. package/dist/shell/metrics-cli.js +100 -0
  95. package/dist/shell/multi-agent-cli.js +1002 -0
  96. package/dist/shell/multi-agent-host.js +563 -0
  97. package/dist/shell/multi-agent-io.js +387 -0
  98. package/dist/{multi-agent-operator-ux.js → shell/multi-agent-operator-ux.js} +234 -191
  99. package/dist/shell/node-store.js +124 -0
  100. package/dist/{observability/format.js → shell/observability-format.js} +7 -1
  101. package/dist/{observability/intake.js → shell/observability-intake.js} +79 -56
  102. package/dist/{observability.js → shell/observability.js} +159 -332
  103. package/dist/{onramp.js → shell/onramp.js} +11 -0
  104. package/dist/{operator-ux/format.js → shell/operator-ux-text.js} +250 -239
  105. package/dist/shell/operator-ux.js +431 -0
  106. package/dist/shell/orchestrator.js +231 -0
  107. package/dist/shell/pipeline-cli.js +667 -0
  108. package/dist/shell/pipeline.js +217 -0
  109. package/dist/shell/reclamation-io.js +1366 -0
  110. package/dist/shell/registry-cli.js +344 -0
  111. package/dist/{remote-source.js → shell/remote-source.js} +2 -2
  112. package/dist/shell/report-cli.js +101 -0
  113. package/dist/shell/report-view-cli.js +117 -0
  114. package/dist/{orchestrator → shell}/report.js +289 -282
  115. package/dist/shell/reporter.js +62 -0
  116. package/dist/shell/run-export-cli.js +106 -0
  117. package/dist/shell/run-export.js +680 -0
  118. package/dist/shell/run-registry-io.js +1014 -0
  119. package/dist/shell/run-store.js +164 -0
  120. package/dist/{sandbox-profile.js → shell/sandbox-profile.js} +134 -95
  121. package/dist/{scheduler.js → shell/scheduler-io.js} +257 -48
  122. package/dist/shell/scheduling-io.js +321 -0
  123. package/dist/shell/state-cli.js +181 -0
  124. package/dist/shell/state-explosion-cli.js +197 -0
  125. package/dist/shell/telemetry-cli.js +85 -0
  126. package/dist/{telemetry-demo.js → shell/telemetry-demo.js} +149 -119
  127. package/dist/shell/telemetry-ledger-io.js +132 -0
  128. package/dist/{term.js → shell/term.js} +36 -46
  129. package/dist/shell/topology-io.js +361 -0
  130. package/dist/shell/trust-audit.js +472 -0
  131. package/dist/{multi-agent-trust.js → shell/trust-policy-io.js} +67 -205
  132. package/dist/shell/verifier.js +48 -0
  133. package/dist/shell/workbench-host.js +258 -0
  134. package/dist/shell/workbench-text.js +18 -0
  135. package/dist/shell/workbench.js +170 -0
  136. package/dist/shell/worker-cli.js +124 -0
  137. package/dist/shell/worker-isolation.js +852 -0
  138. package/dist/shell/workflow-app-loader.js +650 -0
  139. package/docs/agent-delegation-drive.7.md +4 -0
  140. package/docs/cli-mcp-parity.7.md +282 -219
  141. package/docs/contract-migration-tooling.7.md +4 -0
  142. package/docs/control-plane-scheduling.7.md +4 -0
  143. package/docs/durable-state-and-locking.7.md +4 -0
  144. package/docs/evidence-adoption-reasoning-chain.7.md +4 -0
  145. package/docs/execution-backends.7.md +4 -0
  146. package/docs/multi-agent-cli-mcp-surface.7.md +4 -0
  147. package/docs/multi-agent-eval-replay-harness.7.md +4 -0
  148. package/docs/multi-agent-operator-ux.7.md +4 -0
  149. package/docs/node-snapshot-diff-replay.7.md +4 -0
  150. package/docs/observability-cost-accounting.7.md +6 -1
  151. package/docs/project-index.md +137 -71
  152. package/docs/real-execution-backends.7.md +4 -0
  153. package/docs/release-and-migration.7.md +4 -0
  154. package/docs/release-tooling.7.md +4 -0
  155. package/docs/remote-source-review.7.md +4 -4
  156. package/docs/report-verifiable-bundle.7.md +1 -1
  157. package/docs/run-registry-control-plane.7.md +4 -0
  158. package/docs/run-retention-reclamation.7.md +25 -0
  159. package/docs/security-trust-hardening.7.md +3 -1
  160. package/docs/state-explosion-management.7.md +4 -0
  161. package/docs/team-collaboration.7.md +4 -0
  162. package/docs/web-desktop-workbench.7.md +15 -1
  163. package/manifest/plugin.manifest.json +1 -1
  164. package/manifest/source-context-profiles.json +9 -13
  165. package/package.json +1 -1
  166. package/scripts/agents/agent-adapter-core.js +22 -2
  167. package/scripts/agents/claude-p-agent.js +8 -3
  168. package/scripts/agents/cw-attest-wrap.js +2 -2
  169. package/scripts/agents/gemini-agent.js +5 -1
  170. package/scripts/agents/opencode-agent.js +5 -1
  171. package/scripts/bump-version.js +4 -3
  172. package/scripts/canonical-apps.js +4 -4
  173. package/scripts/dogfood-architecture-review.js +2 -3
  174. package/scripts/dogfood-release.js +3 -3
  175. package/scripts/gen-parity-doc.js +15 -2
  176. package/scripts/golden-path.js +4 -4
  177. package/scripts/onramp-check.js +1 -1
  178. package/scripts/parity-check.js +38 -21
  179. package/scripts/release-flow.js +2 -2
  180. package/scripts/sync-project-index.js +51 -27
  181. package/scripts/validate-run-state-schema.js +2 -2
  182. package/scripts/version-sync-check.js +30 -30
  183. package/dist/candidate-scoring.js +0 -729
  184. package/dist/capability-core.js +0 -1189
  185. package/dist/capability-registry.js +0 -885
  186. package/dist/cli/command-surface.js +0 -494
  187. package/dist/cli/format.js +0 -56
  188. package/dist/cli/handlers/audit.js +0 -82
  189. package/dist/cli/handlers/blackboard.js +0 -81
  190. package/dist/cli/handlers/candidate.js +0 -40
  191. package/dist/cli/handlers/clones.js +0 -34
  192. package/dist/cli/handlers/collaboration.js +0 -61
  193. package/dist/cli/handlers/eval.js +0 -40
  194. package/dist/cli/handlers/ledger.js +0 -169
  195. package/dist/cli/handlers/maintenance.js +0 -107
  196. package/dist/cli/handlers/multi-agent.js +0 -165
  197. package/dist/cli/handlers/node.js +0 -41
  198. package/dist/cli/handlers/operational.js +0 -155
  199. package/dist/cli/handlers/operator.js +0 -146
  200. package/dist/cli/handlers/registry.js +0 -68
  201. package/dist/cli/handlers/run.js +0 -153
  202. package/dist/cli/handlers/scheduling.js +0 -132
  203. package/dist/cli/handlers/workbench.js +0 -41
  204. package/dist/cli/handlers/worker.js +0 -45
  205. package/dist/cli/run-summary.js +0 -45
  206. package/dist/clones.js +0 -162
  207. package/dist/collaboration.js +0 -726
  208. package/dist/commit.js +0 -592
  209. package/dist/compare.js +0 -18
  210. package/dist/coordinator/classify.js +0 -45
  211. package/dist/coordinator/paths.js +0 -42
  212. package/dist/coordinator/util.js +0 -126
  213. package/dist/coordinator.js +0 -990
  214. package/dist/daemon.js +0 -44
  215. package/dist/dispatch.js +0 -250
  216. package/dist/doctor.js +0 -212
  217. package/dist/drive.js +0 -864
  218. package/dist/error-feedback.js +0 -419
  219. package/dist/evidence-grounding.js +0 -184
  220. package/dist/execution-backend/agent.js +0 -354
  221. package/dist/execution-backend/probes.js +0 -112
  222. package/dist/execution-backend/util.js +0 -47
  223. package/dist/execution-backend.js +0 -961
  224. package/dist/gates.js +0 -48
  225. package/dist/harness.js +0 -61
  226. package/dist/ledger.js +0 -313
  227. package/dist/loop-expansion.js +0 -60
  228. package/dist/mcp/tool-call.js +0 -470
  229. package/dist/mcp/tool-definitions.js +0 -1066
  230. package/dist/mcp-surface.js +0 -30
  231. package/dist/multi-agent/graph.js +0 -84
  232. package/dist/multi-agent/helpers.js +0 -141
  233. package/dist/multi-agent/ids.js +0 -20
  234. package/dist/multi-agent/paths.js +0 -22
  235. package/dist/multi-agent-eval/normalize.js +0 -51
  236. package/dist/multi-agent-eval.js +0 -678
  237. package/dist/multi-agent-host.js +0 -777
  238. package/dist/multi-agent.js +0 -984
  239. package/dist/node-projection.js +0 -59
  240. package/dist/node-snapshot.js +0 -260
  241. package/dist/operator-ux.js +0 -631
  242. package/dist/orchestrator/app-operations.js +0 -211
  243. package/dist/orchestrator/audit-operations.js +0 -182
  244. package/dist/orchestrator/candidate-operations.js +0 -117
  245. package/dist/orchestrator/cli-options.js +0 -294
  246. package/dist/orchestrator/collaboration-operations.js +0 -86
  247. package/dist/orchestrator/feedback-operations.js +0 -81
  248. package/dist/orchestrator/host-operations.js +0 -78
  249. package/dist/orchestrator/lifecycle-operations.js +0 -650
  250. package/dist/orchestrator/migration-operations.js +0 -44
  251. package/dist/orchestrator/multi-agent-operations.js +0 -362
  252. package/dist/orchestrator/topology-operations.js +0 -84
  253. package/dist/orchestrator.js +0 -925
  254. package/dist/pipeline-runner.js +0 -285
  255. package/dist/reclamation/hash.js +0 -72
  256. package/dist/reclamation.js +0 -812
  257. package/dist/reporter.js +0 -67
  258. package/dist/run-export.js +0 -815
  259. package/dist/run-registry/derive.js +0 -175
  260. package/dist/run-registry/format.js +0 -124
  261. package/dist/run-registry/gc.js +0 -251
  262. package/dist/run-registry/policy.js +0 -16
  263. package/dist/run-registry/queue.js +0 -115
  264. package/dist/run-registry.js +0 -850
  265. package/dist/run-state-schema.js +0 -68
  266. package/dist/scheduling.js +0 -184
  267. package/dist/state-explosion.js +0 -1014
  268. package/dist/state.js +0 -367
  269. package/dist/telemetry-ledger.js +0 -196
  270. package/dist/topology.js +0 -565
  271. package/dist/triggers.js +0 -184
  272. package/dist/trust-audit.js +0 -644
  273. package/dist/types/blackboard.js +0 -2
  274. package/dist/types/candidate.js +0 -2
  275. package/dist/types/collaboration.js +0 -2
  276. package/dist/types/core.js +0 -2
  277. package/dist/types/drive.js +0 -10
  278. package/dist/types/error-feedback.js +0 -2
  279. package/dist/types/evidence-reasoning.js +0 -2
  280. package/dist/types/execution-backend.js +0 -2
  281. package/dist/types/multi-agent.js +0 -2
  282. package/dist/types/observability.js +0 -2
  283. package/dist/types/pipeline.js +0 -2
  284. package/dist/types/reclamation.js +0 -8
  285. package/dist/types/report-bundle.js +0 -6
  286. package/dist/types/result.js +0 -2
  287. package/dist/types/run-registry.js +0 -2
  288. package/dist/types/run.js +0 -2
  289. package/dist/types/sandbox.js +0 -2
  290. package/dist/types/schedule.js +0 -2
  291. package/dist/types/state-node.js +0 -2
  292. package/dist/types/topology.js +0 -2
  293. package/dist/types/trust.js +0 -2
  294. package/dist/types/workbench.js +0 -2
  295. package/dist/types/worker.js +0 -2
  296. package/dist/types/workflow-app.js +0 -2
  297. package/dist/types.js +0 -44
  298. package/dist/util/fingerprint.js +0 -19
  299. package/dist/util/fingerprint.test.js +0 -27
  300. package/dist/verifier.js +0 -78
  301. package/dist/version.js +0 -8
  302. package/dist/workbench-host.js +0 -192
  303. package/dist/workbench.js +0 -192
  304. package/dist/worker-accept/acceptance.js +0 -114
  305. package/dist/worker-accept/blackboard-fanout.js +0 -80
  306. package/dist/worker-accept/blackboard-linkage.js +0 -19
  307. package/dist/worker-accept/context.js +0 -2
  308. package/dist/worker-accept/telemetry-ledger.js +0 -126
  309. package/dist/worker-accept/validation.js +0 -77
  310. package/dist/worker-accept/verifier-completion.js +0 -73
  311. package/dist/worker-isolation/helpers.js +0 -51
  312. package/dist/worker-isolation/paths.js +0 -46
  313. package/dist/worker-isolation.js +0 -656
  314. package/dist/workflow-api.js +0 -131
  315. /package/dist/{types → core/types}/boundary.js +0 -0
@@ -82,219 +82,249 @@ relationship. `identical` means `cw <cmd> --json` is equal to the `cw_<tool>`
82
82
  payload; `projected` means a declared divergence with a reason; `cli-only` marks
83
83
  a surface-specific capability with a recorded reason. The matrix is
84
84
  <!-- gen:parity:count -->
85
- machine-complete by design: 207 capabilities, 194 MCP tools.
85
+ machine-complete by design: 237 capabilities, 196 MCP tools.
86
86
  <!-- /gen:parity:count -->
87
87
 
88
88
  <!-- gen:parity:table -->
89
89
  | Capability | CLI command | MCP tool | Core entry | Surface | Payload |
90
90
  | --- | --- | --- | --- | --- | --- |
91
- | `help` | `cw help` | `—` | `formatHelp` | cli-only | cli-only |
92
- | `version` | `cw version` | `—` | `CURRENT_COOL_WORKFLOW_VERSION` | cli-only | cli-only |
93
- | `update` | `cw update` | `—` | `npmUpdate` | cli-only | cli-only |
94
- | `fix` | `cw fix` | `—` | `runDoctor` | cli-only | cli-only |
95
- | `list` | `cw list` | `cw_list` | `listWorkflows` | both | identical |
96
- | `info` | `cw info` | `—` | `showApp` | cli-only | cli-only |
97
- | `search` | `cw search` | `—` | `listApps` | cli-only | cli-only |
98
- | `man` | `cw man` | `—` | `n/a` | cli-only | cli-only |
99
- | `doctor` | `cw doctor` | `—` | `runDoctor` | cli-only | cli-only |
100
- | `init` | `cw init` | `cw_init` | `init` | both | identical |
101
- | `plan` | `cw plan` | `cw_plan` | `planSummary` | both | identical |
91
+ | `list` | `cw list` | `cw_list` | `list` | both | identical |
92
+ | `plan` | `cw plan` | `cw_plan` | `plan` | both | identical |
93
+ | `app.run` | `cw app run` | `cw_app_run` | `app.run` | both | identical |
102
94
  | `status` | `cw status` | `cw_status` | `status` | both | identical |
95
+ | `init` | `cw init` | `cw_init` | `init` | both | identical |
103
96
  | `next` | `cw next` | `cw_next` | `next` | both | identical |
97
+ | `state.check` | `cw state check` | `cw_state_check` | `state.check` | both | identical |
98
+ | `contract.show` | `cw contract show` | `cw_contract_show` | `contract.show` | both | identical |
99
+ | `node.list` | `cw node list` | `cw_node_list` | `node.list` | both | identical |
100
+ | `node.show` | `cw node show` | `cw_node_show` | `node.show` | both | identical |
101
+ | `node.graph` | `cw node graph` | `cw_node_graph` | `node.graph` | both | identical |
102
+ | `node.snapshot` | `cw node snapshot` | `cw_node_snapshot` | `node.snapshot` | both | identical |
103
+ | `node.diff` | `cw node diff` | `cw_node_diff` | `node.diff` | both | identical |
104
+ | `node.replay` | `cw node replay` | `cw_node_replay` | `node.replay` | both | identical |
105
+ | `node.replay.verify` | `cw node verify` | `cw_node_replay_verify` | `node.replay.verify` | both | identical |
106
+ | `migration.list` | `cw migration list` | `cw_migration_list` | `migration.list` | both | identical |
107
+ | `migration.check` | `cw migration check` | `cw_migration_check` | `migration.check` | both | identical |
108
+ | `migration.prove` | `cw migration prove` | `cw_migration_prove` | `migration.prove` | both | identical |
109
+ | `operator.status` | `cw operator status` | `cw_operator_status` | `operator.status` | both | identical |
110
+ | `graph` | `cw graph` | `cw_operator_graph` | `graph` | both | identical |
111
+ | `operator.report` | `cw operator report` | `cw_operator_report` | `operator.report` | both | identical |
112
+ | `worker.summary` | `cw worker summary` | `cw_worker_summary` | `worker.summary` | both | identical |
113
+ | `workbench.view` | `cw workbench view` | `cw_workbench_view` | `workbench.view` | both | identical |
114
+ | `workbench.serve` | `cw workbench serve` | `cw_workbench_serve` | `workbench.serve` | both | projected |
115
+ | `candidate.summary` | `cw candidate summary` | `cw_candidate_summary` | `candidate.summary` | both | identical |
116
+ | `feedback.summary` | `cw feedback summary` | `cw_feedback_summary` | `feedback.summary` | both | identical |
117
+ | `commit.summary` | `cw commit summary` | `cw_commit_summary` | `commit.summary` | both | identical |
118
+ | `multi-agent.summary` | `cw multi-agent summary` | `cw_multi_agent_summary` | `multi-agent.summary` | both | identical |
119
+ | `multi-agent.graph` | `cw multi-agent graph` | `cw_multi_agent_graph` | `multi-agent.graph` | both | identical |
120
+ | `multi-agent.dependencies` | `cw multi-agent dependencies` | `cw_multi_agent_dependencies` | `multi-agent.dependencies` | both | identical |
121
+ | `multi-agent.failures` | `cw multi-agent failures` | `cw_multi_agent_failures` | `multi-agent.failures` | both | identical |
122
+ | `multi-agent.evidence` | `cw multi-agent evidence` | `cw_multi_agent_evidence` | `multi-agent.evidence` | both | identical |
123
+ | `multi-agent.reasoning` | `cw multi-agent reasoning` | `cw_evidence_reasoning` | `multi-agent.reasoning` | both | identical |
124
+ | `multi-agent.reasoning.refresh` | `cw multi-agent reasoning` | `cw_evidence_reasoning_refresh` | `multi-agent.reasoning.refresh` | both | identical |
125
+ | `summary.refresh` | `cw summary refresh` | `cw_summary_refresh` | `summary.refresh` | both | identical |
126
+ | `summary.show` | `cw summary show` | `cw_summary_show` | `summary.show` | both | identical |
127
+ | `blackboard.summarize` | `cw blackboard summarize` | `cw_blackboard_summarize` | `blackboard.summarize` | both | identical |
128
+ | `multi-agent.summarize` | `cw multi-agent summarize` | `cw_multi_agent_summarize` | `multi-agent.summarize` | both | identical |
129
+ | `multi-agent.graph.compact` | `cw multi-agent graph` | `cw_multi_agent_graph_compact` | `multi-agent.graph.compact` | both | identical |
130
+ | `multi-agent.run` | `cw multi-agent run` | `cw_multi_agent_run` | `multi-agent.run` | both | identical |
131
+ | `multi-agent.status` | `cw multi-agent status` | `cw_multi_agent_status` | `multi-agent.status` | both | identical |
132
+ | `multi-agent.step` | `cw multi-agent step` | `cw_multi_agent_step` | `multi-agent.step` | both | identical |
133
+ | `multi-agent.blackboard` | `cw multi-agent blackboard` | `cw_multi_agent_blackboard` | `multi-agent.blackboard` | both | identical |
134
+ | `multi-agent.score` | `cw multi-agent score` | `cw_multi_agent_score` | `multi-agent.score` | both | identical |
135
+ | `multi-agent.select` | `cw multi-agent select` | `cw_multi_agent_select` | `multi-agent.select` | both | identical |
136
+ | `eval.snapshot` | `cw eval snapshot` | `cw_eval_snapshot` | `eval.snapshot` | both | identical |
137
+ | `eval.replay` | `cw eval replay` | `cw_eval_replay` | `eval.replay` | both | identical |
138
+ | `eval.compare` | `cw eval compare` | `cw_eval_compare` | `eval.compare` | both | identical |
139
+ | `eval.score` | `cw eval score` | `cw_eval_score` | `eval.score` | both | identical |
140
+ | `eval.gate` | `cw eval gate` | `cw_eval_gate` | `eval.gate` | both | identical |
141
+ | `eval.report` | `cw eval report` | `cw_eval_report` | `eval.report` | both | identical |
142
+ | `multi-agent.run.create` | `cw multi-agent role` | `cw_multi_agent_run_create` | `multi-agent.run.create` | both | identical |
143
+ | `multi-agent.run.transition` | `cw multi-agent transition` | `cw_multi_agent_run_transition` | `multi-agent.run.transition` | both | identical |
144
+ | `multi-agent.run.show` | `cw multi-agent show` | `cw_multi_agent_run_show` | `multi-agent.run.show` | both | identical |
145
+ | `multi-agent.role.create` | `cw multi-agent role` | `cw_multi_agent_role_create` | `multi-agent.role.create` | both | identical |
146
+ | `multi-agent.role.show` | `cw multi-agent role` | `cw_multi_agent_role_show` | `multi-agent.role.show` | both | identical |
147
+ | `multi-agent.group.create` | `cw multi-agent group` | `cw_multi_agent_group_create` | `multi-agent.group.create` | both | identical |
148
+ | `multi-agent.group.show` | `cw multi-agent group` | `cw_multi_agent_group_show` | `multi-agent.group.show` | both | identical |
149
+ | `multi-agent.membership.create` | `cw multi-agent membership` | `cw_multi_agent_membership_create` | `multi-agent.membership.create` | both | identical |
150
+ | `multi-agent.membership.show` | `cw multi-agent membership` | `cw_multi_agent_membership_show` | `multi-agent.membership.show` | both | identical |
151
+ | `multi-agent.fanout.create` | `cw multi-agent fanout` | `cw_multi_agent_fanout_create` | `multi-agent.fanout.create` | both | identical |
152
+ | `multi-agent.fanout.show` | `cw multi-agent fanout` | `cw_multi_agent_fanout_show` | `multi-agent.fanout.show` | both | identical |
153
+ | `multi-agent.fanin.collect` | `cw multi-agent fanin` | `cw_multi_agent_fanin_collect` | `multi-agent.fanin.collect` | both | identical |
154
+ | `multi-agent.fanin.show` | `cw multi-agent fanin` | `cw_multi_agent_fanin_show` | `multi-agent.fanin.show` | both | identical |
155
+ | `topology.list` | `cw topology list` | `cw_topology_list` | `topology.list` | both | identical |
156
+ | `topology.show` | `cw topology show` | `cw_topology_show` | `topology.show` | both | identical |
157
+ | `topology.validate` | `cw topology validate` | `cw_topology_validate` | `topology.validate` | both | identical |
158
+ | `topology.apply` | `cw topology apply` | `cw_topology_apply` | `topology.apply` | both | identical |
159
+ | `topology.summary` | `cw topology summary` | `cw_topology_summary` | `topology.summary` | both | identical |
160
+ | `topology.graph` | `cw topology graph` | `cw_topology_graph` | `topology.graph` | both | identical |
161
+ | `blackboard.summary` | `cw blackboard summary` | `cw_blackboard_summary` | `blackboard.summary` | both | identical |
162
+ | `blackboard.graph` | `cw blackboard graph` | `cw_blackboard_graph` | `blackboard.graph` | both | identical |
163
+ | `blackboard.resolve` | `cw blackboard resolve` | `cw_blackboard_resolve` | `blackboard.resolve` | both | identical |
164
+ | `blackboard.topic.create` | `cw blackboard topic` | `cw_blackboard_topic_create` | `blackboard.topic.create` | both | identical |
165
+ | `blackboard.message.post` | `cw blackboard message` | `cw_blackboard_message_post` | `blackboard.message.post` | both | identical |
166
+ | `blackboard.message.list` | `cw blackboard message` | `cw_blackboard_message_list` | `blackboard.message.list` | both | identical |
167
+ | `blackboard.context.put` | `cw blackboard context` | `cw_blackboard_context_put` | `blackboard.context.put` | both | identical |
168
+ | `blackboard.artifact.add` | `cw blackboard artifact` | `cw_blackboard_artifact_add` | `blackboard.artifact.add` | both | identical |
169
+ | `blackboard.artifact.list` | `cw blackboard artifact` | `cw_blackboard_artifact_list` | `blackboard.artifact.list` | both | identical |
170
+ | `blackboard.snapshot` | `cw blackboard snapshot` | `cw_blackboard_snapshot` | `blackboard.snapshot` | both | identical |
171
+ | `coordinator.summary` | `cw coordinator summary` | `cw_coordinator_summary` | `coordinator.summary` | both | identical |
172
+ | `coordinator.decision` | `cw coordinator decision` | `cw_coordinator_decision` | `coordinator.decision` | both | identical |
173
+ | `audit.summary` | `cw audit summary` | `cw_audit_summary` | `audit.summary` | both | identical |
174
+ | `audit.verify` | `cw audit verify` | `cw_audit_verify` | `audit.verify` | both | identical |
175
+ | `audit.worker` | `cw audit worker` | `cw_audit_worker` | `audit.worker` | both | identical |
176
+ | `audit.provenance` | `cw audit provenance` | `cw_audit_provenance` | `audit.provenance` | both | identical |
177
+ | `audit.multi-agent` | `cw audit multi-agent` | `cw_audit_multi_agent` | `audit.multi-agent` | both | identical |
178
+ | `audit.policy` | `cw audit policy` | `cw_audit_policy` | `audit.policy` | both | identical |
179
+ | `audit.role` | `cw audit role` | `cw_audit_role` | `audit.role` | both | identical |
180
+ | `audit.blackboard` | `cw audit blackboard` | `cw_audit_blackboard` | `audit.blackboard` | both | identical |
181
+ | `audit.judge` | `cw audit judge` | `cw_audit_judge` | `audit.judge` | both | identical |
182
+ | `audit.attest` | `cw audit attest` | `cw_audit_attest` | `audit.attest` | both | identical |
183
+ | `audit.decision` | `cw audit decision` | `cw_audit_decision` | `audit.decision` | both | identical |
104
184
  | `dispatch` | `cw dispatch` | `cw_dispatch` | `dispatch` | both | identical |
105
- | `result` | `cw result` | `cw_result` | `recordResult` | both | identical |
185
+ | `sandbox.list` | `cw sandbox list` | `cw_sandbox_list` | `sandbox.list` | both | identical |
186
+ | `sandbox.show` | `cw sandbox show` | `cw_sandbox_show` | `sandbox.show` | both | identical |
187
+ | `sandbox.validate` | `cw sandbox validate` | `cw_sandbox_validate` | `sandbox.validate` | both | identical |
188
+ | `sandbox.choose` | `cw sandbox choose` | `cw_sandbox_choose` | `sandbox.choose` | both | identical |
189
+ | `sandbox.resolve` | `cw sandbox resolve` | `cw_sandbox_resolve` | `sandbox.resolve` | both | identical |
190
+ | `backend.list` | `cw backend list` | `cw_backend_list` | `backend.list` | both | identical |
191
+ | `backend.show` | `cw backend show` | `cw_backend_show` | `backend.show` | both | identical |
192
+ | `backend.probe` | `cw backend probe` | `cw_backend_probe` | `backend.probe` | both | identical |
193
+ | `backend.agent.config.show` | `cw backend agent` | `cw_backend_agent_config_show` | `backend.agent.config.show` | both | identical |
194
+ | `backend.agent.config.set` | `cw backend agent` | `cw_backend_agent_config_set` | `backend.agent.config.set` | both | projected |
195
+ | `result` | `cw result` | `cw_result` | `result` | both | identical |
106
196
  | `commit` | `cw commit` | `cw_commit` | `commit` | both | projected |
107
- | `commit.summary` | `cw commit summary` | `cw_commit_summary` | `summarizeCommitRecords` | both | identical |
108
197
  | `report` | `cw report` | `cw_report` | `report` | both | identical |
109
- | `graph` | `cw graph` | `cw_operator_graph` | `operatorGraph` | both | identical |
110
- | `loop` | `cw loop` | `—` | `scheduler.create` | cli-only | cli-only |
111
- | `operator.status` | `cw operator status` | `cw_operator_status` | `operatorStatus` | both | identical |
112
- | `operator.report` | `cw operator report` | `cw_operator_report` | `operatorReport` | both | identical |
113
- | `app.list` | `cw app list` | `cw_app_list` | `listApps` | both | identical |
114
- | `app.show` | `cw app show` | `cw_app_show` | `showApp` | both | identical |
115
- | `app.validate` | `cw app validate` | `cw_app_validate` | `validateApp` | both | identical |
116
- | `app.init` | `cw app init` | `cw_app_init` | `initApp` | both | identical |
117
- | `app.package` | `cw app package` | `cw_app_package` | `packageApp` | both | identical |
118
- | `app.run` | `cw app run` | `cw_app_run` | `appRun` | both | identical |
119
- | `state.check` | `cw state check` | `cw_state_check` | `checkState` | both | identical |
120
- | `contract.show` | `cw contract show` | `cw_contract_show` | `showContract` | both | identical |
121
- | `node.list` | `cw node list` | `cw_node_list` | `listNodes` | both | identical |
122
- | `node.show` | `cw node show` | `cw_node_show` | `showNode` | both | identical |
123
- | `node.graph` | `cw node graph` | `cw_node_graph` | `graphNodes` | both | identical |
124
- | `node.snapshot` | `cw node snapshot` | `cw_node_snapshot` | `nodeSnapshot` | both | identical |
125
- | `node.diff` | `cw node diff` | `cw_node_diff` | `nodeDiff` | both | identical |
126
- | `node.replay` | `cw node replay` | `cw_node_replay` | `nodeReplay` | both | identical |
127
- | `node.replay.verify` | `cw node verify` | `cw_node_replay_verify` | `nodeReplayVerify` | both | identical |
128
- | `migration.list` | `cw migration list` | `cw_migration_list` | `migrationList` | both | identical |
129
- | `migration.check` | `cw migration check` | `cw_migration_check` | `migrationCheck` | both | identical |
130
- | `migration.prove` | `cw migration prove` | `cw_migration_prove` | `migrationProve` | both | identical |
131
- | `topology.list` | `cw topology list` | `cw_topology_list` | `listTopologies` | both | identical |
132
- | `topology.show` | `cw topology show` | `cw_topology_show` | `showTopology` | both | identical |
133
- | `topology.validate` | `cw topology validate` | `cw_topology_validate` | `validateTopology` | both | identical |
134
- | `topology.apply` | `cw topology apply` | `cw_topology_apply` | `applyTopology` | both | identical |
135
- | `topology.summary` | `cw topology summary` | `cw_topology_summary` | `topologySummary` | both | identical |
136
- | `topology.graph` | `cw topology graph` | `cw_topology_graph` | `topologyGraph` | both | identical |
137
- | `summary.refresh` | `cw summary refresh` | `cw_summary_refresh` | `summaryRefresh` | both | identical |
138
- | `summary.show` | `cw summary show` | `cw_summary_show` | `summaryShow` | both | identical |
139
- | `multi-agent.run` | `cw multi-agent run` | `cw_multi_agent_run` | `hostMultiAgentRun` | both | identical |
140
- | `multi-agent.status` | `cw multi-agent status` | `cw_multi_agent_status` | `hostMultiAgentStatus` | both | identical |
141
- | `multi-agent.step` | `cw multi-agent step` | `cw_multi_agent_step` | `hostMultiAgentStep` | both | identical |
142
- | `multi-agent.blackboard` | `cw multi-agent blackboard` | `cw_multi_agent_blackboard` | `hostMultiAgentBlackboard` | both | identical |
143
- | `multi-agent.score` | `cw multi-agent score` | `cw_multi_agent_score` | `hostMultiAgentScore` | both | identical |
144
- | `multi-agent.select` | `cw multi-agent select` | `cw_multi_agent_select` | `hostMultiAgentSelect` | both | identical |
145
- | `multi-agent.summary` | `cw multi-agent summary` | `cw_multi_agent_summary` | `multiAgentSummary` | both | identical |
146
- | `multi-agent.summarize` | `cw multi-agent summarize` | `cw_multi_agent_summarize` | `multiAgentSummarize` | both | identical |
147
- | `multi-agent.graph` | `cw multi-agent graph` | `cw_multi_agent_graph` | `multiAgentOperatorGraph` | both | identical |
148
- | `multi-agent.graph.compact` | `cw multi-agent graph` | `cw_multi_agent_graph_compact` | `multiAgentGraphView` | both | identical |
149
- | `multi-agent.dependencies` | `cw multi-agent dependencies` | `cw_multi_agent_dependencies` | `multiAgentDependencies` | both | identical |
150
- | `multi-agent.failures` | `cw multi-agent failures` | `cw_multi_agent_failures` | `multiAgentFailures` | both | identical |
151
- | `multi-agent.evidence` | `cw multi-agent evidence` | `cw_multi_agent_evidence` | `multiAgentEvidence` | both | identical |
152
- | `multi-agent.reasoning` | `cw multi-agent reasoning` | `cw_evidence_reasoning` | `multiAgentReasoning` | both | identical |
153
- | `multi-agent.reasoning.refresh` | `cw multi-agent reasoning` | `cw_evidence_reasoning_refresh` | `multiAgentReasoningRefresh` | both | identical |
154
- | `multi-agent.run.create` | `cw multi-agent run` | `cw_multi_agent_run_create` | `createMultiAgentRun` | both | identical |
155
- | `multi-agent.run.transition` | `cw multi-agent run` | `cw_multi_agent_run_transition` | `transitionMultiAgentRun` | both | identical |
156
- | `multi-agent.run.show` | `cw multi-agent show` | `cw_multi_agent_run_show` | `showMultiAgentRun` | both | identical |
157
- | `multi-agent.role.create` | `cw multi-agent role` | `cw_multi_agent_role_create` | `createAgentRole` | both | identical |
158
- | `multi-agent.role.show` | `cw multi-agent role` | `cw_multi_agent_role_show` | `showAgentRole` | both | identical |
159
- | `multi-agent.group.create` | `cw multi-agent group` | `cw_multi_agent_group_create` | `createAgentGroup` | both | identical |
160
- | `multi-agent.group.show` | `cw multi-agent group` | `cw_multi_agent_group_show` | `showAgentGroup` | both | identical |
161
- | `multi-agent.membership.create` | `cw multi-agent membership` | `cw_multi_agent_membership_create` | `assignAgentMembership` | both | identical |
162
- | `multi-agent.membership.show` | `cw multi-agent membership` | `cw_multi_agent_membership_show` | `showAgentMembership` | both | identical |
163
- | `multi-agent.fanout.create` | `cw multi-agent fanout` | `cw_multi_agent_fanout_create` | `createAgentFanout` | both | identical |
164
- | `multi-agent.fanout.show` | `cw multi-agent fanout` | `cw_multi_agent_fanout_show` | `showAgentFanout` | both | identical |
165
- | `multi-agent.fanin.collect` | `cw multi-agent fanin` | `cw_multi_agent_fanin_collect` | `collectAgentFanin` | both | identical |
166
- | `multi-agent.fanin.show` | `cw multi-agent fanin` | `cw_multi_agent_fanin_show` | `showAgentFanin` | both | identical |
167
- | `eval.snapshot` | `cw eval snapshot` | `cw_eval_snapshot` | `evalSnapshot` | both | identical |
168
- | `eval.replay` | `cw eval replay` | `cw_eval_replay` | `evalReplay` | both | identical |
169
- | `eval.compare` | `cw eval compare` | `cw_eval_compare` | `evalCompare` | both | identical |
170
- | `eval.score` | `cw eval score` | `cw_eval_score` | `evalScore` | both | identical |
171
- | `eval.gate` | `cw eval gate` | `cw_eval_gate` | `evalGate` | both | identical |
172
- | `eval.report` | `cw eval report` | `cw_eval_report` | `evalReport` | both | identical |
173
- | `blackboard.summary` | `cw blackboard summary` | `cw_blackboard_summary` | `blackboardSummary` | both | identical |
174
- | `blackboard.summarize` | `cw blackboard summarize` | `cw_blackboard_summarize` | `blackboardSummarize` | both | identical |
175
- | `blackboard.graph` | `cw blackboard graph` | `cw_blackboard_graph` | `blackboardGraph` | both | identical |
176
- | `blackboard.resolve` | `cw blackboard resolve` | `cw_blackboard_resolve` | `resolveRunBlackboard` | both | identical |
177
- | `blackboard.topic.create` | `cw blackboard topic create` | `cw_blackboard_topic_create` | `createBlackboardTopic` | both | identical |
178
- | `blackboard.message.post` | `cw blackboard message post` | `cw_blackboard_message_post` | `postBlackboardMessage` | both | identical |
179
- | `blackboard.message.list` | `cw blackboard message list` | `cw_blackboard_message_list` | `listBlackboardMessages` | both | identical |
180
- | `blackboard.context.put` | `cw blackboard context put` | `cw_blackboard_context_put` | `putBlackboardContext` | both | identical |
181
- | `blackboard.artifact.add` | `cw blackboard artifact add` | `cw_blackboard_artifact_add` | `addBlackboardArtifact` | both | identical |
182
- | `blackboard.artifact.list` | `cw blackboard artifact list` | `cw_blackboard_artifact_list` | `listBlackboardArtifacts` | both | identical |
183
- | `blackboard.snapshot` | `cw blackboard snapshot` | `cw_blackboard_snapshot` | `snapshotBlackboard` | both | identical |
184
- | `coordinator.summary` | `cw coordinator summary` | `cw_coordinator_summary` | `coordinatorSummary` | both | identical |
185
- | `coordinator.decision` | `cw coordinator decision` | `cw_coordinator_decision` | `recordCoordinatorDecision` | both | identical |
186
- | `audit.summary` | `cw audit summary` | `cw_audit_summary` | `auditSummary` | both | identical |
187
- | `audit.verify` | `cw audit verify` | `cw_audit_verify` | `auditVerify` | both | identical |
188
- | `audit.worker` | `cw audit worker` | `cw_audit_worker` | `workerAudit` | both | identical |
189
- | `audit.provenance` | `cw audit provenance` | `cw_audit_provenance` | `evidenceProvenance` | both | identical |
190
- | `audit.multi-agent` | `cw audit multi-agent` | `cw_audit_multi_agent` | `auditMultiAgent` | both | identical |
191
- | `audit.policy` | `cw audit policy` | `cw_audit_policy` | `auditPolicy` | both | identical |
192
- | `audit.role` | `cw audit role` | `cw_audit_role` | `auditRole` | both | identical |
193
- | `audit.blackboard` | `cw audit blackboard` | `cw_audit_blackboard` | `auditBlackboard` | both | identical |
194
- | `audit.judge` | `cw audit judge` | `cw_audit_judge` | `auditJudge` | both | identical |
195
- | `audit.attest` | `cw audit attest` | `cw_audit_attest` | `recordAuditAttestation` | both | identical |
196
- | `audit.decision` | `cw audit decision` | `cw_audit_decision` | `recordAuditDecision` | both | identical |
197
- | `sandbox.list` | `cw sandbox list` | `cw_sandbox_list` | `listSandboxProfiles` | both | identical |
198
- | `sandbox.show` | `cw sandbox show` | `cw_sandbox_show` | `showSandboxProfile` | both | identical |
199
- | `sandbox.validate` | `cw sandbox validate` | `cw_sandbox_validate` | `validateSandboxProfile` | both | identical |
200
- | `sandbox.choose` | `cw sandbox choose` | `cw_sandbox_choose` | `sandboxChoose` | both | identical |
201
- | `sandbox.resolve` | `cw sandbox resolve` | `cw_sandbox_resolve` | `sandboxChoose` | both | identical |
202
- | `backend.list` | `cw backend list` | `cw_backend_list` | `listBackends` | both | identical |
203
- | `backend.show` | `cw backend show` | `cw_backend_show` | `showBackend` | both | identical |
204
- | `backend.probe` | `cw backend probe` | `cw_backend_probe` | `probeBackend` | both | identical |
205
- | `backend.agent.config.show` | `cw backend agent config` | `cw_backend_agent_config_show` | `backendAgentConfigShow` | both | identical |
206
- | `backend.agent.config.set` | `cw backend agent config` | `cw_backend_agent_config_set` | `backendAgentConfigSet` | both | projected |
207
- | `worker.list` | `cw worker list` | `cw_worker_list` | `listWorkers` | both | identical |
208
- | `worker.summary` | `cw worker summary` | `cw_worker_summary` | `summarizeWorkerRecords` | both | identical |
209
- | `worker.show` | `cw worker show` | `cw_worker_show` | `showWorker` | both | identical |
210
- | `worker.manifest` | `cw worker manifest` | `cw_worker_manifest` | `showWorkerManifest` | both | identical |
211
- | `worker.output` | `cw worker output` | `cw_worker_output` | `recordWorkerOutput` | both | identical |
212
- | `worker.fail` | `cw worker fail` | `cw_worker_fail` | `recordWorkerFailure` | both | identical |
213
- | `worker.validate` | `cw worker validate` | `cw_worker_validate` | `validateWorker` | both | identical |
214
- | `candidate.list` | `cw candidate list` | `cw_candidate_list` | `listCandidates` | both | identical |
215
- | `candidate.show` | `cw candidate show` | `cw_candidate_show` | `showCandidate` | both | identical |
216
- | `candidate.register` | `cw candidate register` | `cw_candidate_register` | `registerCandidate` | both | identical |
217
- | `candidate.score` | `cw candidate score` | `cw_candidate_score` | `scoreCandidate` | both | identical |
218
- | `candidate.rank` | `cw candidate rank` | `cw_candidate_rank` | `rankCandidates` | both | identical |
219
- | `candidate.select` | `cw candidate select` | `cw_candidate_select` | `selectCandidate` | both | identical |
220
- | `candidate.reject` | `cw candidate reject` | `cw_candidate_reject` | `rejectCandidate` | both | identical |
221
- | `candidate.summary` | `cw candidate summary` | `cw_candidate_summary` | `summarizeCandidateOperatorRecords` | both | identical |
222
- | `feedback.list` | `cw feedback list` | `cw_feedback_list` | `listFeedback` | both | identical |
223
- | `feedback.show` | `cw feedback show` | `cw_feedback_show` | `showFeedback` | both | identical |
224
- | `feedback.collect` | `cw feedback collect` | `cw_feedback_collect` | `collectFeedback` | both | identical |
225
- | `feedback.summary` | `cw feedback summary` | `cw_feedback_summary` | `summarizeFeedbackRecords` | both | identical |
226
- | `feedback.task` | `cw feedback task` | `cw_feedback_task` | `createFeedbackTask` | both | identical |
227
- | `feedback.resolve` | `cw feedback resolve` | `cw_feedback_resolve` | `resolveFeedback` | both | identical |
228
- | `schedule.create` | `cw schedule create` | `cw_schedule_create` | `scheduler.create` | both | identical |
229
- | `schedule.list` | `cw schedule list` | `cw_schedule_list` | `scheduler.list` | both | identical |
230
- | `schedule.delete` | `cw schedule delete` | `cw_schedule_delete` | `scheduler.delete` | both | identical |
231
- | `schedule.due` | `cw schedule due` | `cw_schedule_due` | `scheduler.due` | both | identical |
232
- | `schedule.complete` | `cw schedule complete` | `cw_schedule_complete` | `scheduler.complete` | both | identical |
233
- | `schedule.pause` | `cw schedule pause` | `cw_schedule_pause` | `scheduler.pause` | both | identical |
234
- | `schedule.resume` | `cw schedule resume` | `cw_schedule_resume` | `scheduler.resume` | both | identical |
235
- | `schedule.run-now` | `cw schedule run-now` | `cw_schedule_run_now` | `scheduler.runNow` | both | identical |
236
- | `schedule.history` | `cw schedule history` | `cw_schedule_history` | `scheduler.history` | both | identical |
237
- | `schedule.daemon` | `cw schedule daemon` | `—` | `DesktopSchedulerDaemon.run` | cli-only | cli-only |
238
- | `routine.create` | `cw routine create` | `cw_routine_create` | `triggers.create` | both | identical |
239
- | `routine.list` | `cw routine list` | `cw_routine_list` | `triggers.list` | both | identical |
240
- | `routine.delete` | `cw routine delete` | `cw_routine_delete` | `triggers.delete` | both | identical |
241
- | `routine.fire` | `cw routine fire` | `cw_routine_fire` | `triggers.fire` | both | identical |
242
- | `routine.events` | `cw routine events` | `cw_routine_events` | `triggers.events` | both | identical |
243
- | `registry.refresh` | `cw registry refresh` | `cw_registry_refresh` | `runRegistry.refresh` | both | identical |
244
- | `registry.show` | `cw registry show` | `cw_registry_show` | `runRegistry.show` | both | identical |
245
- | `run.search` | `cw run search` | `cw_run_search` | `runRegistry.search` | both | identical |
246
- | `run.list` | `cw run list` | `cw_run_list` | `runRegistry.list` | both | identical |
247
- | `run.show` | `cw run show` | `cw_run_show` | `runRegistry.showRun` | both | identical |
248
- | `run.resume` | `cw run resume` | `cw_run_resume` | `runRegistry.resume` | both | identical |
249
- | `run.archive` | `cw run archive` | `cw_run_archive` | `runRegistry.archive` | both | identical |
250
- | `run.rerun` | `cw run rerun` | `cw_run_rerun` | `runRegistry.rerun` | both | identical |
251
- | `run.export` | `cw run export` | `cw_run_export` | `runExportArchive` | both | identical |
252
- | `run.import` | `cw run import` | `cw_run_import` | `runImportArchive` | both | identical |
253
- | `run.verify-import` | `cw run verify-import` | `cw_run_verify_import` | `runVerifyImport` | both | identical |
254
- | `run.inspect-archive` | `cw run inspect-archive` | `cw_run_inspect_archive` | `runInspectArchive` | both | identical |
255
- | `run.restore` | `cw run restore` | `cw_run_restore` | `runRestoreArchive` | both | identical |
256
- | `report.verify-bundle` | `cw report verify-bundle` | `cw_report_verify_bundle` | `runVerifyReportBundle` | both | identical |
257
- | `report.bundle` | `cw report bundle` | `cw_report_bundle` | `reportBundle` | both | identical |
258
- | `run.drive` | `cw run drive` | `cw_run_drive` | `runDrivePreview` | both | identical |
259
- | `run.drive.step` | `cw run drive` | `cw_run_drive_step` | `runDrive` | both | projected |
198
+ | `app.list` | `cw app list` | `cw_app_list` | `app.list` | both | identical |
199
+ | `app.show` | `cw app show` | `cw_app_show` | `app.show` | both | identical |
200
+ | `app.validate` | `cw app validate` | `cw_app_validate` | `app.validate` | both | identical |
201
+ | `app.init` | `cw app init` | `cw_app_init` | `app.init` | both | identical |
202
+ | `app.package` | `cw app package` | `cw_app_package` | `app.package` | both | identical |
203
+ | `worker.list` | `cw worker list` | `cw_worker_list` | `worker.list` | both | identical |
204
+ | `worker.show` | `cw worker show` | `cw_worker_show` | `worker.show` | both | identical |
205
+ | `worker.manifest` | `cw worker manifest` | `cw_worker_manifest` | `worker.manifest` | both | identical |
206
+ | `worker.output` | `cw worker output` | `cw_worker_output` | `worker.output` | both | identical |
207
+ | `worker.fail` | `cw worker fail` | `cw_worker_fail` | `worker.fail` | both | identical |
208
+ | `worker.validate` | `cw worker validate` | `cw_worker_validate` | `worker.validate` | both | identical |
209
+ | `candidate.list` | `cw candidate list` | `cw_candidate_list` | `candidate.list` | both | identical |
210
+ | `candidate.show` | `cw candidate show` | `cw_candidate_show` | `candidate.show` | both | identical |
211
+ | `candidate.register` | `cw candidate register` | `cw_candidate_register` | `candidate.register` | both | identical |
212
+ | `candidate.score` | `cw candidate score` | `cw_candidate_score` | `candidate.score` | both | identical |
213
+ | `candidate.rank` | `cw candidate rank` | `cw_candidate_rank` | `candidate.rank` | both | identical |
214
+ | `candidate.select` | `cw candidate select` | `cw_candidate_select` | `candidate.select` | both | identical |
215
+ | `candidate.reject` | `cw candidate reject` | `cw_candidate_reject` | `candidate.reject` | both | identical |
216
+ | `approve` | `cw approve` | `cw_approve` | `approve` | both | identical |
217
+ | `reject` | `cw reject` | `cw_reject` | `reject` | both | identical |
218
+ | `comment.add` | `cw comment add` | `cw_comment_add` | `comment.add` | both | identical |
219
+ | `comment.list` | `cw comment list` | `cw_comment_list` | `comment.list` | both | identical |
220
+ | `handoff` | `cw handoff` | `cw_handoff` | `handoff` | both | identical |
221
+ | `ledger.propose` | `cw ledger propose` | `cw_ledger_propose` | `ledger.propose` | both | projected |
222
+ | `ledger.review` | `cw ledger review` | `cw_ledger_review` | `ledger.review` | both | projected |
223
+ | `ledger.verify` | `cw ledger verify` | `cw_ledger_verify` | `ledger.verify` | both | projected |
224
+ | `ledger.apply` | `cw ledger apply` | `cw_ledger_apply` | `ledger.apply` | both | projected |
225
+ | `ledger.list` | `cw ledger list` | `cw_ledger_list` | `ledger.list` | both | projected |
226
+ | `review.status` | `cw review status` | `cw_review_status` | `review.status` | both | identical |
227
+ | `review.policy` | `cw review policy` | `cw_review_policy` | `review.policy` | both | identical |
228
+ | `feedback.list` | `cw feedback list` | `cw_feedback_list` | `feedback.list` | both | identical |
229
+ | `feedback.show` | `cw feedback show` | `cw_feedback_show` | `feedback.show` | both | identical |
230
+ | `feedback.collect` | `cw feedback collect` | `cw_feedback_collect` | `feedback.collect` | both | identical |
231
+ | `feedback.task` | `cw feedback task` | `cw_feedback_task` | `feedback.task` | both | identical |
232
+ | `feedback.resolve` | `cw feedback resolve` | `cw_feedback_resolve` | `feedback.resolve` | both | identical |
233
+ | `schedule.create` | `cw schedule create` | `cw_schedule_create` | `schedule.create` | both | identical |
234
+ | `schedule.list` | `cw schedule list` | `cw_schedule_list` | `schedule.list` | both | identical |
235
+ | `schedule.due` | `cw schedule due` | `cw_schedule_due` | `schedule.due` | both | identical |
236
+ | `schedule.complete` | `cw schedule complete` | `cw_schedule_complete` | `schedule.complete` | both | identical |
237
+ | `schedule.pause` | `cw schedule pause` | `cw_schedule_pause` | `schedule.pause` | both | identical |
238
+ | `schedule.resume` | `cw schedule resume` | `cw_schedule_resume` | `schedule.resume` | both | identical |
239
+ | `schedule.run-now` | `cw schedule run-now` | `cw_schedule_run_now` | `schedule.run-now` | both | identical |
240
+ | `schedule.history` | `cw schedule history` | `cw_schedule_history` | `schedule.history` | both | identical |
241
+ | `schedule.delete` | `cw schedule delete` | `cw_schedule_delete` | `schedule.delete` | both | identical |
242
+ | `routine.create` | `cw routine create` | `cw_routine_create` | `routine.create` | both | identical |
243
+ | `routine.list` | `cw routine list` | `cw_routine_list` | `routine.list` | both | identical |
244
+ | `routine.fire` | `cw routine fire` | `cw_routine_fire` | `routine.fire` | both | identical |
245
+ | `routine.events` | `cw routine events` | `cw_routine_events` | `routine.events` | both | identical |
246
+ | `routine.delete` | `cw routine delete` | `cw_routine_delete` | `routine.delete` | both | identical |
247
+ | `registry.refresh` | `cw registry refresh` | `cw_registry_refresh` | `registry.refresh` | both | identical |
248
+ | `registry.show` | `cw registry show` | `cw_registry_show` | `registry.show` | both | identical |
249
+ | `metrics.show` | `cw metrics show` | `cw_metrics_show` | `metrics.show` | both | identical |
250
+ | `metrics.summary` | `cw metrics summary` | `cw_metrics_summary` | `metrics.summary` | both | identical |
251
+ | `run.search` | `cw run search` | `cw_run_search` | `run.search` | both | identical |
252
+ | `run.list` | `cw run list` | `cw_run_list` | `run.list` | both | identical |
253
+ | `run.show` | `cw run show` | `cw_run_show` | `run.show` | both | identical |
254
+ | `run.resume` | `cw run resume` | `cw_run_resume` | `run.resume` | both | identical |
255
+ | `run.archive` | `cw run archive` | `cw_run_archive` | `run.archive` | both | identical |
256
+ | `run.rerun` | `cw run rerun` | `cw_run_rerun` | `run.rerun` | both | identical |
257
+ | `run.export` | `cw run export` | `cw_run_export` | `run.export` | both | identical |
258
+ | `run.import` | `cw run import` | `cw_run_import` | `run.import` | both | identical |
259
+ | `run.verify-import` | `cw run verify-import` | `cw_run_verify_import` | `run.verify-import` | both | identical |
260
+ | `run.inspect-archive` | `cw run inspect-archive` | `cw_run_inspect_archive` | `run.inspect-archive` | both | identical |
261
+ | `run.restore` | `cw run restore` | `cw_run_restore` | `run.restore` | both | identical |
262
+ | `report.verify-bundle` | `cw report verify-bundle` | `cw_report_verify_bundle` | `report.verify-bundle` | both | identical |
263
+ | `report.bundle` | `cw report bundle` | `cw_report_bundle` | `report.bundle` | both | identical |
264
+ | `run.drive` | `cw run drive` | `cw_run_drive` | `run.drive` | both | identical |
265
+ | `run.drive.step` | `cw run` | `cw_run_drive_step` | `run.drive.step` | both | projected |
266
+ | `queue.add` | `cw queue add` | `cw_queue_add` | `queue.add` | both | identical |
267
+ | `queue.list` | `cw queue list` | `cw_queue_list` | `queue.list` | both | identical |
268
+ | `queue.drain` | `cw queue drain` | `cw_queue_drain` | `queue.drain` | both | identical |
269
+ | `queue.show` | `cw queue show` | `cw_queue_show` | `queue.show` | both | identical |
270
+ | `sched.plan` | `cw sched plan` | `cw_sched_plan` | `sched.plan` | both | identical |
271
+ | `sched.lease` | `cw sched lease` | `cw_sched_lease` | `sched.lease` | both | identical |
272
+ | `sched.release` | `cw sched release` | `cw_sched_release` | `sched.release` | both | identical |
273
+ | `sched.complete` | `cw sched complete` | `cw_sched_complete` | `sched.complete` | both | identical |
274
+ | `sched.reclaim` | `cw sched reclaim` | `cw_sched_reclaim` | `sched.reclaim` | both | identical |
275
+ | `sched.reset` | `cw sched reset` | `cw_sched_reset` | `sched.reset` | both | identical |
276
+ | `sched.policy.show` | `cw sched policy` | `cw_sched_policy_show` | `sched.policy.show` | both | identical |
277
+ | `sched.policy.set` | `cw sched policy` | `cw_sched_policy_set` | `sched.policy.set` | both | identical |
278
+ | `gc.plan` | `cw gc plan` | `cw_gc_plan` | `gc.plan` | both | identical |
279
+ | `gc.run` | `cw gc run` | `cw_gc_run` | `gc.run` | both | projected |
280
+ | `gc.verify` | `cw gc verify` | `cw_gc_verify` | `gc.verify` | both | identical |
281
+ | `clones.list` | `cw clones list` | `cw_clones_list` | `clones.list` | both | identical |
282
+ | `clones.gc` | `cw clones gc` | `cw_clones_gc` | `clones.gc` | both | projected |
283
+ | `orphans.list` | `cw orphans list` | `cw_orphans_list` | `orphans.list` | both | identical |
284
+ | `orphans.gc` | `cw orphans gc` | `cw_orphans_gc` | `orphans.gc` | both | projected |
285
+ | `telemetry.verify` | `cw telemetry verify` | `cw_telemetry_verify` | `telemetry.verify` | both | identical |
286
+ | `history` | `cw history` | `cw_history` | `history` | both | identical |
287
+ | `version` | `cw version` | `—` | `version` | cli-only | cli-only |
288
+ | `doctor` | `cw doctor` | `—` | `doctor` | cli-only | cli-only |
289
+ | `fix` | `cw fix` | `—` | `fix` | cli-only | cli-only |
260
290
  | `quickstart` | `cw quickstart` | `—` | `quickstart` | cli-only | cli-only |
261
- | `queue.add` | `cw queue add` | `cw_queue_add` | `runRegistry.queueAdd` | both | identical |
262
- | `queue.list` | `cw queue list` | `cw_queue_list` | `runRegistry.queueList` | both | identical |
263
- | `queue.drain` | `cw queue drain` | `cw_queue_drain` | `runRegistry.queueDrain` | both | identical |
264
- | `queue.show` | `cw queue show` | `cw_queue_show` | `runRegistry.queueShow` | both | identical |
265
- | `sched.plan` | `cw sched plan` | `cw_sched_plan` | `schedPlan` | both | identical |
266
- | `sched.lease` | `cw sched lease` | `cw_sched_lease` | `schedLease` | both | identical |
267
- | `sched.release` | `cw sched release` | `cw_sched_release` | `schedRelease` | both | identical |
268
- | `sched.complete` | `cw sched complete` | `cw_sched_complete` | `schedComplete` | both | identical |
269
- | `sched.reclaim` | `cw sched reclaim` | `cw_sched_reclaim` | `schedReclaim` | both | identical |
270
- | `sched.reset` | `cw sched reset` | `cw_sched_reset` | `schedReset` | both | identical |
271
- | `sched.policy.show` | `cw sched policy` | `cw_sched_policy_show` | `schedPolicyShow` | both | identical |
272
- | `sched.policy.set` | `cw sched policy` | `cw_sched_policy_set` | `schedPolicySet` | both | identical |
273
- | `gc.plan` | `cw gc plan` | `cw_gc_plan` | `gcPlan` | both | identical |
274
- | `gc.run` | `cw gc run` | `cw_gc_run` | `gcRun` | both | projected |
275
- | `gc.verify` | `cw gc verify` | `cw_gc_verify` | `gcVerify` | both | identical |
276
- | `clones.list` | `cw clones list` | `cw_clones_list` | `listClones` | both | identical |
277
- | `clones.gc` | `cw clones gc` | `cw_clones_gc` | `gcClones` | both | projected |
278
- | `telemetry.verify` | `cw telemetry verify` | `cw_telemetry_verify` | `telemetryVerify` | both | identical |
279
- | `demo.tamper` | `cw demo tamper` | `—` | `demoTamper` | cli-only | cli-only |
280
- | `demo.bundle` | `cw demo bundle` | `—` | `demoBundle` | cli-only | cli-only |
281
- | `history` | `cw history` | `cw_history` | `runRegistry.history` | both | identical |
282
- | `workbench.view` | `cw workbench view` | `cw_workbench_view` | `buildWorkbenchRunView` | both | identical |
283
- | `workbench.serve` | `cw workbench serve` | `cw_workbench_serve` | `buildWorkbenchServeDescriptor` | both | projected |
284
- | `metrics.show` | `cw metrics show` | `cw_metrics_show` | `metricsShow` | both | identical |
285
- | `metrics.summary` | `cw metrics summary` | `cw_metrics_summary` | `metricsSummary` | both | identical |
286
- | `approve` | `cw approve` | `cw_approve` | `collaborationApprove` | both | identical |
287
- | `reject` | `cw reject` | `cw_reject` | `collaborationReject` | both | identical |
288
- | `comment.add` | `cw comment add` | `cw_comment_add` | `collaborationComment` | both | identical |
289
- | `comment.list` | `cw comment list` | `cw_comment_list` | `collaborationCommentList` | both | identical |
290
- | `handoff` | `cw handoff` | `cw_handoff` | `collaborationHandoff` | both | identical |
291
- | `review.status` | `cw review status` | `cw_review_status` | `reviewStatus` | both | identical |
292
- | `review.policy` | `cw review policy` | `cw_review_policy` | `reviewPolicy` | both | identical |
293
- | `ledger.propose` | `cw ledger propose` | `cw_ledger_propose` | `buildLedgerProposal` | both | projected |
294
- | `ledger.review` | `cw ledger review` | `cw_ledger_review` | `buildLedgerReview` | both | projected |
295
- | `ledger.verify` | `cw ledger verify` | `cw_ledger_verify` | `verifyLedgerEntry` | both | projected |
296
- | `ledger.apply` | `cw ledger apply` | `cw_ledger_apply` | `applyLedgerProposal` | both | projected |
297
- | `ledger.list` | `cw ledger list` | `cw_ledger_list` | `listLedgerEntries` | both | projected |
291
+ | `demo.tamper` | `cw demo tamper` | `—` | `demo.tamper` | cli-only | cli-only |
292
+ | `demo.bundle` | `cw demo bundle` | `—` | `demo.bundle` | cli-only | cli-only |
293
+ | `loop` | `cw loop` | `—` | `loop` | cli-only | cli-only |
294
+ | `schedule` | `cw schedule` | `—` | `schedule` | cli-only | cli-only |
295
+ | `routine` | `cw routine` | `—` | `routine` | cli-only | cli-only |
296
+ | `sched` | `cw sched` | `—` | `sched` | cli-only | cli-only |
297
+ | `registry` | `cw registry` | `—` | `registry` | cli-only | cli-only |
298
+ | `queue` | `cw queue` | `—` | `queue` | cli-only | cli-only |
299
+ | `gc` | `cw gc` | `—` | `gc` | cli-only | cli-only |
300
+ | `orphans` | `cw orphans` | `—` | `orphans` | cli-only | cli-only |
301
+ | `clones` | `cw clones` | `—` | `clones` | cli-only | cli-only |
302
+ | `app.usage` | `cw app` | `—` | `app.usage` | cli-only | cli-only |
303
+ | `sandbox.usage` | `cw sandbox` | `—` | `sandbox.usage` | cli-only | cli-only |
304
+ | `state.usage` | `cw state` | `—` | `state.usage` | cli-only | cli-only |
305
+ | `audit.usage` | `cw audit` | `—` | `audit.usage` | cli-only | cli-only |
306
+ | `blackboard.usage` | `cw blackboard` | `—` | `blackboard.usage` | cli-only | cli-only |
307
+ | `candidate.usage` | `cw candidate` | `—` | `candidate.usage` | cli-only | cli-only |
308
+ | `comment.usage` | `cw comment` | `—` | `comment.usage` | cli-only | cli-only |
309
+ | `eval.usage` | `cw eval` | `—` | `eval.usage` | cli-only | cli-only |
310
+ | `telemetry.usage` | `cw telemetry` | `—` | `telemetry.usage` | cli-only | cli-only |
311
+ | `demo.usage` | `cw demo` | `—` | `demo.usage` | cli-only | cli-only |
312
+ | `multi-agent.usage` | `cw multi-agent` | `—` | `multi-agent.usage` | cli-only | cli-only |
313
+ | `node.usage` | `cw node` | `—` | `node.usage` | cli-only | cli-only |
314
+ | `backend.usage` | `cw backend` | `—` | `backend.usage` | cli-only | cli-only |
315
+ | `contract.usage` | `cw contract` | `—` | `contract.usage` | cli-only | cli-only |
316
+ | `migration.usage` | `cw migration` | `—` | `migration.usage` | cli-only | cli-only |
317
+ | `feedback.usage` | `cw feedback` | `—` | `feedback.usage` | cli-only | cli-only |
318
+ | `metrics.usage` | `cw metrics` | `—` | `metrics.usage` | cli-only | cli-only |
319
+ | `operator.usage` | `cw operator` | `—` | `operator.usage` | cli-only | cli-only |
320
+ | `topology.usage` | `cw topology` | `—` | `topology.usage` | cli-only | cli-only |
321
+ | `summary.usage` | `cw summary` | `—` | `summary.usage` | cli-only | cli-only |
322
+ | `workbench.usage` | `cw workbench` | `—` | `workbench.usage` | cli-only | cli-only |
323
+ | `worker.usage` | `cw worker` | `—` | `worker.usage` | cli-only | cli-only |
324
+ | `review.usage` | `cw review` | `—` | `review.usage` | cli-only | cli-only |
325
+ | `coordinator.usage` | `cw coordinator` | `—` | `coordinator.usage` | cli-only | cli-only |
326
+ | `man` | `cw man` | `—` | `man` | cli-only | cli-only |
327
+ | `info` | `cw info` | `—` | `info` | cli-only | cli-only |
298
328
  <!-- /gen:parity:table -->
299
329
 
300
330
  v0.1.27 closed the old gaps. It added MCP peers `cw_init`, `cw_next`,
@@ -309,37 +339,66 @@ A capability may be on one surface only, but never without word of it — it mus
309
339
  carry a recorded reason in the registry.
310
340
 
311
341
  <!-- gen:parity:cliOnly -->
312
- 13 capabilities are CLI-only:
342
+ 41 capabilities are CLI-only:
313
343
 
314
- - `help` — Human help text. MCP hosts enumerate capabilities via tools/list, not a help command.
315
- - `version` — Version string — no structured data contract.
316
- - `update` — Self-update via npm — inherently local shell operation, no MCP surface.
317
- - `fix` — Environment fix commands are local diagnostics, same reasoning as doctor.
318
- - `info` — Human-focused workflow discovery tool (like Homebrew's `brew info`). MCP agents discover workflows via cw_list and cw_app_show tools.
319
- - `search` — Human-focused workflow discovery (like Homebrew's `brew search`). MCP agents discover workflows via cw_list tool.
320
- - `man` — Human documentation viewer. MCP agents read docs/ directly via file tools.
344
+ - `version` — version is a local, no-run-state print; the old build never gave it an MCP peer.
321
345
  - `doctor` — Environment diagnostics are inherently local to the CLI host — Node version, $PATH, $CW_HOME/cwd writability. An MCP client diagnosing the server process's environment is not meaningful; agents already receive the same readiness facts in their typed results (e.g. status: blocked, agentConfigured). Inspired by `brew doctor`.
322
- - `loop` — Convenience alias of `schedule create` with kind=loop. MCP hosts use cw_schedule_create with kind=loop.
323
- - `schedule daemon` — Long-running desktop daemon process, not a request/response tool. MCP hosts drive ticks via cw_schedule_due + cw_schedule_run_now.
324
- - `quickstart` — CLI UX convenience layer (newcomer first value in one command) over the existing run.drive.step + report verbs; it spawns nothing new and delegates worker execution to the operator's agent backend. MCP hosts compose the same outcome from cw_run_drive_step + cw_report (+ cw_report_bundle for --bundle). `audit-run` is a CLI-only alias of the same wrapper.
346
+ - `fix` — Environment fix commands are local diagnostics, same reasoning as doctor.
347
+ - `quickstart` — quickstart composes plan/runDrive/report; SPEC/mcp.md's declared cli-only list names it explicitly (no MCP peer). `audit-run` is a CLI-only alias of the same wrapper.
325
348
  - `demo tamper` — Human-facing demonstration (operator/newcomer onboarding); the underlying integrity check is exposed programmatically as the both-surface telemetry.verify. No agent or MCP client needs to invoke a demo.
326
349
  - `demo bundle` — Human-facing demonstration (operator/newcomer onboarding); the underlying integrity check is exposed programmatically as the both-surface report.verify-bundle. No agent or MCP client needs to invoke a demo.
350
+ - `loop` — loop is CLI-only sugar over schedule.create; the old build never gave it an MCP tool of its own (SPEC/scheduling-registry.md section I).
351
+ - `schedule` — cw schedule is the desktop wall-clock scheduler; SPEC/mcp.md declares its MCP peers per verb (cw_schedule_*), each wired below.
352
+ - `routine` — cw routine is the API/GitHub-style trigger bridge; SPEC/mcp.md declares its MCP peers per verb (cw_routine_*), each wired below.
353
+ - `sched` — cw sched is the durable-queue lease scheduler; SPEC/mcp.md declares its MCP peers per verb (cw_sched_*), each wired below.
354
+ - `registry` — cw registry is the derived run-registry index; SPEC/mcp.md declares its MCP peers (cw_registry_refresh|show), each wired below.
355
+ - `queue` — cw queue is the durable run queue; SPEC/mcp.md declares its MCP peers (cw_queue_add|list|drain|show), each wired below.
356
+ - `gc` — cw gc is run retention & provable reclamation; SPEC/mcp.md declares its MCP peers (cw_gc_plan|run|verify), each wired below.
357
+ - `orphans` — cw orphans reclaims killed-process run dirs with no state.json; SPEC/mcp.md declares its MCP peers (cw_orphans_list|gc), each wired below.
358
+ - `clones` — cw clones is the cached remote-source checkout cache; SPEC/mcp.md declares its MCP peers (cw_clones_list|gc), each wired below.
359
+ - `app` — app.usage exists only to own the fixed usage-error text for an unrecognized app subcommand; every real app.* action is its own capability row above.
360
+ - `sandbox` — sandbox.usage exists only to own the fixed usage-error text for an unrecognized sandbox subcommand; every real sandbox.* action is its own capability row above.
361
+ - `state` — state.usage exists only to own the fixed usage-error text for an unrecognized state subcommand; every real state.* action is its own capability row above.
362
+ - `audit` — audit.usage exists only to own the fixed usage-error text for an unrecognized audit subcommand; every real audit.* action is its own capability row above.
363
+ - `blackboard` — blackboard.usage exists only to own the fixed usage-error text for an unrecognized blackboard subcommand; every real blackboard.* action is its own capability row above.
364
+ - `candidate` — candidate.usage exists only to own the fixed usage-error text for an unrecognized candidate subcommand; every real candidate.* action is its own capability row above.
365
+ - `comment` — comment.usage exists only to own the fixed usage-error text for an unrecognized comment subcommand; every real comment.* action is its own capability row above.
366
+ - `eval` — eval.usage exists only to own the fixed usage-error text for an unrecognized eval subcommand; every real eval.* action is its own capability row above.
367
+ - `telemetry` — telemetry.usage exists only to own the fixed usage-error text for an unrecognized telemetry subcommand; every real telemetry.* action is its own capability row above.
368
+ - `demo` — demo.usage exists only to own the fixed usage-error text for an unrecognized demo subcommand; every real demo.* action is its own capability row above.
369
+ - `multi-agent` — multi-agent.usage exists only to own the fixed usage-error text for an unrecognized multi-agent subcommand; every real multi-agent.* action is its own capability row above.
370
+ - `node` — node.usage exists only to own the fixed usage-error text for an unrecognized node subcommand; every real node.* action is its own capability row above.
371
+ - `backend` — backend.usage exists only to own the fixed usage-error text for an unrecognized backend subcommand; every real backend.* action is its own capability row above.
372
+ - `contract` — contract.usage exists only to own the fixed usage-error text for an unrecognized contract subcommand; every real contract.* action is its own capability row above.
373
+ - `migration` — migration.usage exists only to own the fixed usage-error text for an unrecognized migration subcommand; every real migration.* action is its own capability row above.
374
+ - `feedback` — feedback.usage exists only to own the fixed usage-error text for an unrecognized feedback subcommand; every real feedback.* action is its own capability row above.
375
+ - `metrics` — metrics.usage exists only to own the fixed usage-error text for an unrecognized metrics subcommand; every real metrics.* action is its own capability row above.
376
+ - `operator` — operator.usage exists only to own the fixed usage-error text for an unrecognized operator subcommand; every real operator.* action is its own capability row above.
377
+ - `topology` — topology.usage exists only to own the fixed usage-error text for an unrecognized topology subcommand; every real topology.* action is its own capability row above.
378
+ - `summary` — summary.usage exists only to own the fixed usage-error text for an unrecognized summary subcommand; every real summary.* action is its own capability row above.
379
+ - `workbench` — workbench.usage exists only to own the fixed usage-error text for an unrecognized workbench subcommand; every real workbench.* action is its own capability row above.
380
+ - `worker` — worker.usage exists only to own the fixed usage-error text for an unrecognized worker subcommand; every real worker.* action is its own capability row above.
381
+ - `review` — review.usage exists only to own the fixed usage-error text for an unrecognized review subcommand; every real review.* action is its own capability row above.
382
+ - `coordinator` — coordinator.usage exists only to own the fixed usage-error text for an unrecognized coordinator subcommand; every real coordinator.* action is its own capability row above.
383
+ - `man` — man is a CLI-only raw-file reader over docs/; the old build never gave it an MCP peer.
384
+ - `info` — info is a CLI-only convenience card over app.show; the old build never gave it an MCP peer.
327
385
  <!-- /gen:parity:cliOnly -->
328
386
 
329
387
  <!-- gen:parity:projected -->
330
- Eleven capabilities are payload-divergent on purpose (`projected`):
388
+ Twelve capabilities are payload-divergent on purpose (`projected`):
331
389
 
332
- - `commit` — Both surfaces route through the single core entry runner.commit. The CLI emits the raw StateCommitResult for scripting (commit.id, commit.evidence, commit.gate, commit.acceptanceRationale); cw_commit emits the operator commit envelope (commitId, verifierGated, checkpoint, evidenceCount, snapshotPath, nextActions, plus the raw result under `commit`). Declared projection via capability-core.commitEnvelope, not drift.
390
+ - `workbench.serve` — Both surfaces route through the single core entry buildWorkbenchServeDescriptor and return the IDENTICAL serve descriptor under `cw workbench serve --json`/`--once` and `cw_workbench_serve`. They diverge only in side effect, not payload: the CLI's default `cw workbench serve` (no --once) additionally STARTS the blocking localhost host, which an MCP stdio host cannot do, so cw_workbench_serve only ever returns the descriptor. Declared divergence, not drift.
333
391
  - `backend.agent.config.set` — Mutating: persists $CW_HOME/agent-config.json (secret-stripped) before returning the effective config; both surfaces perform the same write — it is a surface-mutating verb, not a read probe.
334
- - `run.drive.step` — Mutating: advances the run by spawning the external agent per worker and recording attested output not a read probe. CLI (--drive/--step) and MCP route through the same drive() core.
335
- - `gc.run` — Mutating: frees disk and appends a tombstone; both surfaces perform the identical transaction but the payload reports now-derived bytesFreed/tombstone.
336
- - `clones.gc` — Mutating: removes cache directories and reports now-derived freedBytes/removed; both surfaces perform the identical reclamation.
337
- - `workbench.serve` — Both surfaces route through the single core entry buildWorkbenchServeDescriptor and return the IDENTICAL serve descriptor under `cw workbench serve --json`/`--once` and `cw_workbench_serve`. They diverge only in side effect, not payload: the CLI's default `cw workbench serve` (no --once) additionally STARTS the blocking localhost host (like `schedule daemon`), which an MCP stdio host cannot do, so cw_workbench_serve only ever returns the descriptor. Declared divergence, not drift.
392
+ - `commit` — Both surfaces route through the single core entry runner.commit. The CLI emits the raw StateCommitResult for scripting (commit.id, commit.evidence, commit.gate); cw_commit emits the operator commit envelope (commitId, verifierGated, checkpoint, evidenceCount, snapshotPath, nextActions, plus the raw result under `commit`). Declared projection, not drift.
338
393
  - `ledger.propose` — Mints a fresh entry each call: createdAt is the wall-clock instant and the id/digest are derived from it, so the output is inherently non-deterministic and a byte-identity probe does not apply. Both surfaces call the same buildLedgerProposal core; round-trip + fail-closed behavior is covered by ledger-verify-smoke.
339
394
  - `ledger.review` — Mints a fresh timestamped/digested verdict each call — non-deterministic output, same reasoning as ledger.propose. Both surfaces call the same buildLedgerReview core.
340
395
  - `ledger.verify` — The entry arrives by --file/stdin on the CLI and as an `entry` argument over MCP; there is no shared arg-bag the byte-identity probe can feed both. Both surfaces call the same verifyLedgerEntry core; ledger-verify-smoke proves the fail-closed contract.
341
396
  - `ledger.apply` — The entry arrives by --file/stdin on the CLI and as an `entry` argument over MCP; there is no shared arg-bag the byte-identity probe can feed both. Both surfaces call the same applyLedgerProposal core (a fail-closed wrapper over verifyLedgerEntry); ledger-apply-smoke proves the diff only escapes a verified proposal.
342
397
  - `ledger.list` — Output depends on the on-disk contents of the named ledger directory/directories, which the generic payload probe does not populate. Both surfaces call the same listLedgerEntries/unionLedgerEntries core; ledger-verify-smoke covers the fail-closed inbox and the multi-mirror union.
398
+ - `run.drive.step` — Mutating: advances the run by spawning the external agent per worker and recording attested output — not a read probe. CLI (--drive/--step) and MCP route through the same drive() core.
399
+ - `gc.run` — Mutating: frees disk and appends a tombstone; both surfaces perform the identical transaction but the payload reports now-derived bytesFreed/tombstone.
400
+ - `clones.gc` — Mutating: removes cache directories and reports now-derived freedBytes/removed; both surfaces perform the identical reclamation.
401
+ - `orphans.gc` — Mutating: removes orphan run directories and reports now-derived freedBytes/removed; both surfaces perform the identical sweep.
343
402
  <!-- /gen:parity:projected -->
344
403
 
345
404
  ## Fail-Closed Rules
@@ -565,3 +624,7 @@ CLI golden-path fixes: `cw -q "…"` routes the question (was read as an app id
565
624
  0.1.97
566
625
 
567
626
  0.1.98
627
+
628
+ 0.2.0
629
+
630
+ 0.2.1