@chllming/wave-orchestration 0.8.9 → 0.9.0

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 (47) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +23 -7
  3. package/docs/README.md +5 -3
  4. package/docs/concepts/context7-vs-skills.md +1 -1
  5. package/docs/concepts/operating-modes.md +1 -1
  6. package/docs/concepts/what-is-a-wave.md +1 -1
  7. package/docs/guides/author-and-run-waves.md +14 -1
  8. package/docs/guides/monorepo-projects.md +226 -0
  9. package/docs/guides/planner.md +9 -2
  10. package/docs/guides/{recommendations-0.8.9.md → recommendations-0.9.0.md} +7 -7
  11. package/docs/plans/current-state.md +8 -6
  12. package/docs/plans/end-state-architecture.md +1 -1
  13. package/docs/plans/examples/wave-example-design-handoff.md +3 -1
  14. package/docs/plans/examples/wave-example-live-proof.md +6 -1
  15. package/docs/plans/examples/wave-example-rollout-fidelity.md +2 -0
  16. package/docs/plans/migration.md +21 -18
  17. package/docs/plans/wave-orchestrator.md +4 -4
  18. package/docs/reference/cli-reference.md +55 -51
  19. package/docs/reference/coordination-and-closure.md +1 -1
  20. package/docs/reference/npmjs-trusted-publishing.md +2 -2
  21. package/docs/reference/runtime-config/README.md +140 -12
  22. package/docs/reference/sample-waves.md +100 -5
  23. package/docs/reference/skills.md +1 -1
  24. package/docs/reference/wave-control.md +23 -5
  25. package/docs/roadmap.md +2 -2
  26. package/package.json +1 -1
  27. package/releases/manifest.json +19 -0
  28. package/scripts/wave-orchestrator/adhoc.mjs +49 -17
  29. package/scripts/wave-orchestrator/autonomous.mjs +49 -15
  30. package/scripts/wave-orchestrator/benchmark-external.mjs +23 -7
  31. package/scripts/wave-orchestrator/benchmark.mjs +33 -10
  32. package/scripts/wave-orchestrator/config.mjs +239 -24
  33. package/scripts/wave-orchestrator/control-cli.mjs +29 -23
  34. package/scripts/wave-orchestrator/coord-cli.mjs +22 -14
  35. package/scripts/wave-orchestrator/coordination-store.mjs +8 -0
  36. package/scripts/wave-orchestrator/dashboard-renderer.mjs +10 -3
  37. package/scripts/wave-orchestrator/dep-cli.mjs +47 -21
  38. package/scripts/wave-orchestrator/feedback.mjs +28 -11
  39. package/scripts/wave-orchestrator/human-input-resolution.mjs +5 -1
  40. package/scripts/wave-orchestrator/launcher.mjs +24 -3
  41. package/scripts/wave-orchestrator/planner.mjs +48 -27
  42. package/scripts/wave-orchestrator/project-profile.mjs +31 -8
  43. package/scripts/wave-orchestrator/proof-cli.mjs +18 -12
  44. package/scripts/wave-orchestrator/retry-cli.mjs +19 -13
  45. package/scripts/wave-orchestrator/shared.mjs +77 -14
  46. package/scripts/wave-orchestrator/wave-control-client.mjs +84 -16
  47. package/scripts/wave-orchestrator/wave-files.mjs +5 -1
@@ -1,6 +1,6 @@
1
1
  # Migration
2
2
 
3
- This page is the practical repo-upgrade guide for the current `0.8.9` surface.
3
+ This page is the practical repo-upgrade guide for the current `0.9.0` surface.
4
4
 
5
5
  Use it when you are:
6
6
 
@@ -10,20 +10,21 @@ Use it when you are:
10
10
 
11
11
  For the completed internal architecture cutover record, see [architecture-hardening-migration.md](./architecture-hardening-migration.md). That document is historical. This one is the operator-facing upgrade checklist.
12
12
 
13
- ## What `0.8.9` Changes
13
+ ## What `0.9.0` Changes
14
14
 
15
- The current `0.8.9` surface keeps the `0.8.8` packaged operator-guidance alignment and adds a focused repair for design-pass replay and post-design transition handling.
15
+ The current `0.9.0` surface keeps the packaged operator-guidance alignment and adds first-class monorepo project support plus project-aware default telemetry.
16
16
 
17
17
  The practical changes are:
18
18
 
19
- - reducer snapshots now preserve design packet report paths when they rebuild summaries from result envelopes
20
- - blocked design passes now stop at the design gate instead of being surfaced later as downstream implementation envelope failures
21
- - trace bundle summary reconstruction now also resolves design packet report paths, so copied design summaries stay aligned when they are rebuilt from logs
22
- - the current release surface and tracked install-state fixtures now all move together on `0.8.9`
19
+ - `wave.config.json` can now declare `defaultProject` and `projects.<projectId>`, so one repo can host multiple Wave projects without lane-name collisions
20
+ - planner defaults, docs roots, ad-hoc runs, dependency tickets, launcher state, and benchmark identity are now scoped by project when you use explicit monorepo projects
21
+ - lane-scoped commands now accept `--project`, so the CLI can target the right project without relying on lane names alone
22
+ - Wave Control defaults to `https://wave-control.up.railway.app/api/v1` with `reportMode: "metadata-only"` and sends project, lane, and wave metadata unless you explicitly opt out
23
+ - the current release surface and tracked install-state fixtures now all move together on `0.9.0`
23
24
 
24
- If your repo copied starter docs, shell automation, or operator runbooks, these are the areas most likely to need a sync before the `0.8.9` package cut.
25
+ If your repo copied starter docs, shell automation, runbooks, or `wave.config.json` defaults, these are the areas most likely to need a sync before the `0.9.0` package cut.
25
26
 
26
- For a practical `0.8.9` operating stance after the upgrade, read [../guides/recommendations-0.8.9.md](../guides/recommendations-0.8.9.md).
27
+ For a practical `0.9.0` operating stance after the upgrade, read [../guides/recommendations-0.9.0.md](../guides/recommendations-0.9.0.md).
27
28
 
28
29
  ## What `0.8.6` Changes
29
30
 
@@ -90,7 +91,7 @@ pnpm exec wave upgrade
90
91
 
91
92
  ### 3. Sync repo-owned starter surface only if you copied it
92
93
 
93
- The most common sync set for `0.8.6` is:
94
+ The most common sync set for `0.9.0` is:
94
95
 
95
96
  - `docs/agents/wave-launcher-role.md`
96
97
  - `docs/agents/wave-orchestrator-role.md`
@@ -119,6 +120,8 @@ The most common sync set for `0.8.6` is:
119
120
 
120
121
  If your repo copied starter `wave.config.json` defaults, also sync:
121
122
 
123
+ - `defaultProject`
124
+ - `projects.<projectId>`
122
125
  - `roles.designRolePromptPath`
123
126
  - `skills.byRole.design`
124
127
  - `executors.profiles.design-pass`
@@ -138,14 +141,14 @@ pnpm exec wave coord inbox --lane main --wave 0 --agent A1 --dry-run
138
141
 
139
142
  Use `pnpm exec wave dashboard --lane <lane> --attach current` or `--attach global` when you need to reattach to a tmux-backed dashboard after the upgrade.
140
143
 
141
- ## `0.8.9` Release Model
144
+ ## `0.9.0` Release Model
142
145
 
143
- The current `0.8.9` surface is three changes together:
146
+ The current `0.9.0` surface is three changes together:
144
147
 
145
148
  - the shipped `design` worker role and hybrid design-steward flow introduced in `0.8.5`
146
149
  - the signal-driven long-running-agent and wrapper model introduced in `0.8.6`
147
150
  - the policy-consistency, targeted-recovery, capability-specific routing, and stable per-wave session reuse hardening introduced in `0.8.7`
148
- - the packaged recommendations guide and install-state alignment follow-up released in `0.8.9`
151
+ - the packaged recommendations guide and install-state alignment follow-up released in `0.9.0`
149
152
 
150
153
  ### Signal-driven waiting and wrapper model
151
154
 
@@ -329,9 +332,9 @@ If the repo copied starter `wave.config.json` defaults, also sync:
329
332
  - if the repo uses hybrid design stewards, confirm the same agent rejoins implementation only when the authored wave explicitly gives it code ownership
330
333
  - if the repo uses long-running agents or shell automation, confirm the new wrapper exit contract and ack-loop semantics before relying on an older polling script
331
334
 
332
- ## Upgrading From `0.8.3` To `0.8.9`
335
+ ## Upgrading From `0.8.3` To `0.9.0`
333
336
 
334
- Treat this as one move to the current `0.8.9` surface.
337
+ Treat this as one move to the current `0.9.0` surface.
335
338
 
336
339
  ### What changed across that range
337
340
 
@@ -364,7 +367,7 @@ If your repo copied starter docs or skills, sync:
364
367
  - dry-run one design-steward wave if the repo wants the new authored surface
365
368
  - if the repo uses long-running watcher agents or shell automation, validate `scripts/wave-status.sh` and `scripts/wave-watch.sh` against a live or staged lane
366
369
 
367
- ## Upgrading From `0.6.x` Or `0.7.x` To `0.8.9`
370
+ ## Upgrading From `0.6.x` Or `0.7.x` To `0.9.0`
368
371
 
369
372
  This is the main migration path for older adopted repos.
370
373
 
@@ -405,7 +408,7 @@ pnpm exec wave control proof get --lane main --wave 0 --json
405
408
 
406
409
  If the repo carries proof-first waves, verify that required proof artifacts still exist locally and not only in historical summaries.
407
410
 
408
- ## Upgrading From `0.5.x` Or Earlier To `0.8.9`
411
+ ## Upgrading From `0.5.x` Or Earlier To `0.9.0`
409
412
 
410
413
  Do not treat this as a tiny patch bump.
411
414
 
@@ -515,4 +518,4 @@ For repos that depend on replay parity, replay at least:
515
518
 
516
519
  ## Summary
517
520
 
518
- The current `0.8.9` surface keeps the same authority-set and phase-engine architecture, ships both the design-role starter surface and the signal-driven long-running-agent starter surface, keeps the `0.8.7` policy and routing hardening, and now also packages the practical operator recommendations guide inside the release line. For most repos already on `0.8.x`, the upgrade is package bump plus validation. For older adopted repos, the real work is syncing repo-owned prompts, skills, planner corpus, wrapper scripts, and runbooks so they describe the runtime the package now ships.
521
+ The current `0.9.0` surface keeps the same authority-set and phase-engine architecture, ships both the design-role starter surface and the signal-driven long-running-agent starter surface, keeps the `0.8.7` policy and routing hardening, and now also packages the practical operator recommendations guide inside the release line. For most repos already on `0.8.x`, the upgrade is package bump plus validation. For older adopted repos, the real work is syncing repo-owned prompts, skills, planner corpus, wrapper scripts, and runbooks so they describe the runtime the package now ships.
@@ -38,7 +38,7 @@ The live runtime is organized around explicit modules:
38
38
  ## What It Does
39
39
 
40
40
  - parses wave plans from `docs/plans/waves/`
41
- - supports transient ad-hoc runs from `.wave/adhoc/runs/` on the same runtime substrate
41
+ - supports transient ad-hoc runs from project-scoped `.wave/adhoc/<projectId>/runs/` storage on the same runtime substrate, with the implicit default project keeping the legacy layout
42
42
  - fans a wave out into one session per `## Agent ...` section
43
43
  - supports standing role imports from `docs/agents/*.md`
44
44
  - supports optional pre-implementation design stewards that publish design packets before code-owning implementation starts
@@ -103,9 +103,9 @@ The live runtime is organized around explicit modules:
103
103
  - `docs/reference/wave-control.md` documents the Wave Control telemetry and analysis plane, including entity types, artifact upload policies, and the local-first reporting contract.
104
104
  - `docs/plans/component-cutover-matrix.json` is the canonical machine-readable source for component maturity and per-wave promotion targets.
105
105
  - `.wave/install-state.json` records how the workspace was initialized and which package version is installed.
106
- - `.wave/project-profile.json` (created by `wave project setup`) records planner defaults such as oversight mode, terminal surface, and deploy-environment memory.
107
- - `.wave/adhoc/runs/<run-id>/` stores transient ad-hoc request, spec, rendered markdown, and result artifacts.
108
- - ad-hoc documentation closure always writes `.wave/adhoc/runs/<run-id>/reports/`, but shared-plan deltas still queue the canonical lane shared-plan docs.
106
+ - `.wave/project-profile.json` (created by `wave project setup`) records planner defaults for the implicit default project; explicit projects use `.wave/projects/<projectId>/project-profile.json`.
107
+ - `.wave/adhoc/<projectId>/runs/<run-id>/` stores transient ad-hoc request, spec, rendered markdown, and result artifacts for explicit projects, while the implicit default project keeps the legacy layout.
108
+ - ad-hoc documentation closure writes project-scoped report paths under the run directory, but shared-plan deltas still queue the canonical lane shared-plan docs.
109
109
  - ad-hoc task ownership inference only accepts repo-local paths; URLs and other external references are ignored.
110
110
  - `wave adhoc promote` promotes the stored ad-hoc spec into `docs/plans/waves/` instead of re-reading the current project profile.
111
111
 
@@ -7,6 +7,8 @@ summary: "Complete syntax reference for all wave CLI commands, flags, and operat
7
7
 
8
8
  Complete syntax for every `wave` command. All commands use `pnpm exec wave` as the entry point.
9
9
 
10
+ When a command targets lane-scoped runtime state, it also accepts `--project <id>`. Omit it to use `defaultProject` from `wave.config.json`.
11
+
10
12
  ## Command Families
11
13
 
12
14
  - Runtime:
@@ -34,6 +36,7 @@ Closure-role bindings do not have a CLI override surface. When a wave file decla
34
36
 
35
37
  | Flag | Default | Description |
36
38
  |------|---------|-------------|
39
+ | `--project <id>` | config default | Project id |
37
40
  | `--lane <name>` | `main` | Lane name |
38
41
  | `--start-wave <n>` | `0` | First wave to launch |
39
42
  | `--end-wave <n>` | last available | Last wave to launch |
@@ -74,6 +77,7 @@ wave autonomous [options]
74
77
 
75
78
  | Flag | Default | Description |
76
79
  |------|---------|-------------|
80
+ | `--project <id>` | config default | Project id |
77
81
  | `--lane <name>` | `main` | Lane name |
78
82
  | `--executor <id>` | lane config | `codex`, `claude`, or `opencode` (not `local`) |
79
83
  | `--codex-sandbox <mode>` | `danger-full-access` | Codex sandbox mode |
@@ -101,7 +105,7 @@ Read-only view: blocking edges, logical agent state, tasks, dependencies, rerun
101
105
  When a launcher attempt is already running, `wave control status` treats that active attempt as the authoritative current fan-out. Older relaunch plans or unrelated closure blockers remain visible in the payload, but they do not override the live attempt view.
102
106
 
103
107
  ```
104
- wave control status --lane <lane> --wave <n> [--agent <id>] [--run <id>] [--json]
108
+ wave control status --project <id> --lane <lane> --wave <n> [--agent <id>] [--run <id>] [--json]
105
109
  ```
106
110
 
107
111
  The JSON payload now includes:
@@ -118,8 +122,8 @@ Starter repos also include `scripts/wave-status.sh` and `scripts/wave-watch.sh`
118
122
  Inspect and deliver the local Wave Control event queue.
119
123
 
120
124
  ```
121
- wave control telemetry status --lane <lane> [--run <id>] [--json]
122
- wave control telemetry flush --lane <lane> [--run <id>] [--json]
125
+ wave control telemetry status --project <id> --lane <lane> [--run <id>] [--json]
126
+ wave control telemetry flush --project <id> --lane <lane> [--run <id>] [--json]
123
127
  ```
124
128
 
125
129
  ### wave control task
@@ -130,7 +134,7 @@ Operator task surface for coordination records.
130
134
 
131
135
  ```
132
136
  wave control task create \
133
- --lane <lane> --wave <n> --agent <id> \
137
+ --project <id> --lane <lane> --wave <n> --agent <id> \
134
138
  --kind <kind> --summary "<text>" \
135
139
  [--detail "<text>"] [--target <agent-or-capability>] \
136
140
  [--priority normal|high] [--blocking true|false] \
@@ -146,20 +150,20 @@ Valid `--kind` values: `request`, `blocker`, `clarification`, `handoff`, `eviden
146
150
  **List tasks:**
147
151
 
148
152
  ```
149
- wave control task list --lane <lane> --wave <n> [--agent <id>] [--json]
153
+ wave control task list --project <id> --lane <lane> --wave <n> [--agent <id>] [--json]
150
154
  ```
151
155
 
152
156
  **Get a single task:**
153
157
 
154
158
  ```
155
- wave control task get --lane <lane> --wave <n> --id <task-id> [--json]
159
+ wave control task get --project <id> --lane <lane> --wave <n> --id <task-id> [--json]
156
160
  ```
157
161
 
158
162
  **Act on a task:**
159
163
 
160
164
  ```
161
165
  wave control task act <action> \
162
- --lane <lane> --wave <n> --id <task-id> \
166
+ --project <id> --lane <lane> --wave <n> --id <task-id> \
163
167
  [--detail "<text>"] [--operator <name>] [--json]
164
168
  ```
165
169
 
@@ -183,7 +187,7 @@ Actions:
183
187
 
184
188
  ```bash
185
189
  pnpm exec wave control task act answer \
186
- --lane main --wave 4 --id escalation-clarify-a7-rollout \
190
+ --project app --lane main --wave 4 --id escalation-clarify-a7-rollout \
187
191
  --response "The rollout strategy is canary-then-full. Use the Railway MCP health endpoint." \
188
192
  --operator ops-lead
189
193
  ```
@@ -196,7 +200,7 @@ Targeted rerun intent with agent selection, reuse control, and component invalid
196
200
 
197
201
  ```
198
202
  wave control rerun request \
199
- --lane <lane> --wave <n> \
203
+ --project <id> --lane <lane> --wave <n> \
200
204
  [--agent <id> ...] \
201
205
  [--clear-reuse <id> ...] [--preserve-reuse <id> ...] \
202
206
  [--invalidate-component <id> ...] \
@@ -213,13 +217,13 @@ The launcher may also write a rerun request automatically after recoverable fail
213
217
  **Get active rerun request:**
214
218
 
215
219
  ```
216
- wave control rerun get --lane <lane> --wave <n> [--json]
220
+ wave control rerun get --project <id> --lane <lane> --wave <n> [--json]
217
221
  ```
218
222
 
219
223
  **Clear rerun request:**
220
224
 
221
225
  ```
222
- wave control rerun clear --lane <lane> --wave <n>
226
+ wave control rerun clear --project <id> --lane <lane> --wave <n>
223
227
  ```
224
228
 
225
229
  ### wave control proof
@@ -230,7 +234,7 @@ Authoritative proof bundle lifecycle (active → superseded → revoked).
230
234
 
231
235
  ```
232
236
  wave control proof register \
233
- --lane <lane> --wave <n> --agent <id> \
237
+ --project <id> --lane <lane> --wave <n> --agent <id> \
234
238
  --artifact <path> [--artifact <path> ...] \
235
239
  [--component <id[:level]> ...] \
236
240
  [--authoritative] [--satisfy-owned-components] \
@@ -241,14 +245,14 @@ wave control proof register \
241
245
  **Get proof bundles:**
242
246
 
243
247
  ```
244
- wave control proof get --lane <lane> --wave <n> [--agent <id>] [--id <bundle-id>] [--json]
248
+ wave control proof get --project <id> --lane <lane> --wave <n> [--agent <id>] [--id <bundle-id>] [--json]
245
249
  ```
246
250
 
247
251
  **Supersede a bundle** (register new evidence and mark the old bundle superseded):
248
252
 
249
253
  ```
250
254
  wave control proof supersede \
251
- --lane <lane> --wave <n> --id <old-bundle-id> \
255
+ --project <id> --lane <lane> --wave <n> --id <old-bundle-id> \
252
256
  --agent <id> --artifact <path> [--artifact <path> ...] \
253
257
  [same options as register] [--json]
254
258
  ```
@@ -257,7 +261,7 @@ wave control proof supersede \
257
261
 
258
262
  ```
259
263
  wave control proof revoke \
260
- --lane <lane> --wave <n> --id <bundle-id> \
264
+ --project <id> --lane <lane> --wave <n> --id <bundle-id> \
261
265
  [--operator <name>] [--detail "<text>"] [--json]
262
266
  ```
263
267
 
@@ -269,7 +273,7 @@ Coordination log access. Legacy surface; prefer `wave control task` for new work
269
273
 
270
274
  ```
271
275
  wave coord post \
272
- --lane <lane> --wave <n> --agent <id> \
276
+ --project <id> --lane <lane> --wave <n> --agent <id> \
273
277
  --kind <kind> --summary "<text>" \
274
278
  [--detail "<text>"] [--target <agent>] \
275
279
  [--priority normal|high] [--depends-on <id>] \
@@ -279,31 +283,31 @@ wave coord post \
279
283
  **Show materialized coordination state:**
280
284
 
281
285
  ```
282
- wave coord show --lane <lane> --wave <n> [--dry-run] [--json]
286
+ wave coord show --project <id> --lane <lane> --wave <n> [--dry-run] [--json]
283
287
  ```
284
288
 
285
289
  **Render markdown board from JSONL log:**
286
290
 
287
291
  ```
288
- wave coord render --lane <lane> --wave <n> [--dry-run]
292
+ wave coord render --project <id> --lane <lane> --wave <n> [--dry-run]
289
293
  ```
290
294
 
291
295
  **Compile shared summary and agent inbox:**
292
296
 
293
297
  ```
294
- wave coord inbox --lane <lane> --wave <n> --agent <id> [--dry-run]
298
+ wave coord inbox --project <id> --lane <lane> --wave <n> --agent <id> [--dry-run]
295
299
  ```
296
300
 
297
301
  **Explain why blocked or retrying:**
298
302
 
299
303
  ```
300
- wave coord explain --lane <lane> --wave <n> [--agent <id>] [--json]
304
+ wave coord explain --project <id> --lane <lane> --wave <n> [--agent <id>] [--json]
301
305
  ```
302
306
 
303
307
  **Act on a coordination record:**
304
308
 
305
309
  ```
306
- wave coord act <operation> --lane <lane> --wave <n> --id <id> [options]
310
+ wave coord act <operation> --project <id> --lane <lane> --wave <n> --id <id> [options]
307
311
  ```
308
312
 
309
313
  | Operation | Extra flags | Effect |
@@ -325,7 +329,7 @@ Human feedback request queue. Final escalation layer after orchestrator-first tr
325
329
 
326
330
  ```
327
331
  wave feedback ask \
328
- --lane <lane> --wave <n> --agent <id> \
332
+ --project <id> --lane <lane> --wave <n> --agent <id> \
329
333
  --question "<text>" [--context "<text>"] \
330
334
  [--orchestrator-id <id>] [--wait] [--timeout-seconds <n>]
331
335
  ```
@@ -345,13 +349,13 @@ When the answered request belongs to a live wave or ad-hoc run, `wave feedback r
345
349
  **List feedback requests:**
346
350
 
347
351
  ```
348
- wave feedback list [--lane <lane>] [--wave <n>] [--agent <id>] [--pending] [--json]
352
+ wave feedback list [--project <id>] [--lane <lane>] [--wave <n>] [--agent <id>] [--pending] [--json]
349
353
  ```
350
354
 
351
355
  **Watch for new requests:**
352
356
 
353
357
  ```
354
- wave feedback watch [--lane <lane>] [--wave <n>] [--agent <id>] [--pending] [--refresh-ms <n>]
358
+ wave feedback watch [--project <id>] [--lane <lane>] [--wave <n>] [--agent <id>] [--pending] [--refresh-ms <n>]
355
359
  ```
356
360
 
357
361
  **Show a single request:**
@@ -370,7 +374,7 @@ Cross-lane dependency management.
370
374
 
371
375
  ```
372
376
  wave dep post \
373
- --owner-lane <lane> --requester-lane <lane> \
377
+ --owner-project <id> --owner-lane <lane> --requester-project <id> --requester-lane <lane> \
374
378
  --owner-wave <n> --requester-wave <n> \
375
379
  --agent <id> --summary "<text>" \
376
380
  [--detail "<text>"] [--target <agent>] \
@@ -383,19 +387,19 @@ wave dep post \
383
387
  **Show dependencies:**
384
388
 
385
389
  ```
386
- wave dep show --lane <lane> [--wave <n>] [--json]
390
+ wave dep show --project <id> --lane <lane> [--wave <n>] [--json]
387
391
  ```
388
392
 
389
393
  **Resolve a dependency:**
390
394
 
391
395
  ```
392
- wave dep resolve --lane <lane> --id <id> --agent <id> [--detail "<text>"] [--status resolved|closed]
396
+ wave dep resolve --project <id> --lane <lane> --id <id> --agent <id> [--detail "<text>"] [--status resolved|closed]
393
397
  ```
394
398
 
395
399
  **Render dependency snapshot:**
396
400
 
397
401
  ```
398
- wave dep render --lane <lane> [--wave <n>] [--json]
402
+ wave dep render --project <id> --lane <lane> [--wave <n>] [--json]
399
403
  ```
400
404
 
401
405
  ## wave benchmark
@@ -417,7 +421,7 @@ wave benchmark show --case <id> [--json]
417
421
  **Run local benchmark cases:**
418
422
 
419
423
  ```
420
- wave benchmark run [--case <id>] [--family <id>] [--benchmark <id>] [--arm <id>] [--output-dir <path>] [--json]
424
+ wave benchmark run [--project <id>] [--lane <lane>] [--case <id>] [--family <id>] [--benchmark <id>] [--arm <id>] [--output-dir <path>] [--json]
421
425
  ```
422
426
 
423
427
  **List external adapters:**
@@ -431,8 +435,8 @@ wave benchmark adapters [--json]
431
435
  ```
432
436
  wave benchmark external-list [--adapter <id>] [--json]
433
437
  wave benchmark external-show --adapter <id> --manifest <path> [--json]
434
- wave benchmark external-run --adapter <id> --manifest <path> [--arm <id>] [--model <id>] [options]
435
- wave benchmark external-pilots --adapter <id> [--json]
438
+ wave benchmark external-run --adapter <id> [--project <id>] [--lane <lane>] --manifest <path> [--arm <id>] [--model <id>] [options]
439
+ wave benchmark external-pilots [--project <id>] [--lane <lane>] [--json]
436
440
  ```
437
441
 
438
442
  ## wave retry
@@ -442,13 +446,13 @@ Legacy retry control. Prefer `wave control rerun`.
442
446
  **Show active retry override:**
443
447
 
444
448
  ```
445
- wave retry show --lane <lane> --wave <n> [--json]
449
+ wave retry show --project <id> --lane <lane> --wave <n> [--json]
446
450
  ```
447
451
 
448
452
  **Apply a retry override:**
449
453
 
450
454
  ```
451
- wave retry apply --lane <lane> --wave <n> \
455
+ wave retry apply --project <id> --lane <lane> --wave <n> \
452
456
  [--agent <id> ...] \
453
457
  [--clear-reuse <id> ...] [--preserve-reuse <id> ...] \
454
458
  [--resume-phase <phase>] \
@@ -460,7 +464,7 @@ Requires either `--agent` or `--resume-phase`.
460
464
  **Clear retry override:**
461
465
 
462
466
  ```
463
- wave retry clear --lane <lane> --wave <n>
467
+ wave retry clear --project <id> --lane <lane> --wave <n>
464
468
  ```
465
469
 
466
470
  ## wave proof
@@ -470,13 +474,13 @@ Legacy proof registration. Prefer `wave control proof`.
470
474
  **Show proof registry:**
471
475
 
472
476
  ```
473
- wave proof show --lane <lane> --wave <n> [--agent <id>] [--json]
477
+ wave proof show --project <id> --lane <lane> --wave <n> [--agent <id>] [--json]
474
478
  ```
475
479
 
476
480
  **Register proof:**
477
481
 
478
482
  ```
479
- wave proof register --lane <lane> --wave <n> --agent <id> \
483
+ wave proof register --project <id> --lane <lane> --wave <n> --agent <id> \
480
484
  --artifact <path> [--artifact <path> ...] \
481
485
  [--component <id[:level]> ...] \
482
486
  [--authoritative] [--satisfy-owned-components] \
@@ -497,8 +501,8 @@ wave local --prompt <path> [--log <path>] [--status <path>]
497
501
  Live dashboard viewer.
498
502
 
499
503
  ```
500
- wave dashboard --dashboard-file <path> [--lane <lane>] [--message-board <path>] [--watch] [--refresh-ms <n>]
501
- wave dashboard --lane <lane> --attach current|global
504
+ wave dashboard --dashboard-file <path> [--project <id>] [--lane <lane>] [--message-board <path>] [--watch] [--refresh-ms <n>]
505
+ wave dashboard --project <id> --lane <lane> --attach current|global
502
506
  ```
503
507
 
504
508
  ## Workspace Commands
@@ -538,17 +542,17 @@ wave doctor [--json]
538
542
  **Setup project profile:**
539
543
 
540
544
  ```
541
- wave project setup
542
- wave project show [--json]
545
+ wave project setup [--project <id>] [--json]
546
+ wave project show [--project <id>] [--json]
543
547
  ```
544
548
 
545
549
  **Draft waves:**
546
550
 
547
551
  ```
548
- wave draft --wave <n> [--template implementation|qa|infra|release]
549
- wave draft --agentic --task "<description>" --from-wave <n>
552
+ wave draft --wave <n> [--project <id>] [--lane <lane>] [--template implementation|qa|infra|release]
553
+ wave draft --agentic --task "<description>" --from-wave <n> [--project <id>] [--lane <lane>]
550
554
  wave draft --show-run <run-id>
551
- wave draft --apply-run <run-id>
555
+ wave draft --apply-run <run-id> [--project <id>]
552
556
  ```
553
557
 
554
558
  Interactive draft currently offers worker role kinds:
@@ -561,25 +565,25 @@ Interactive draft currently offers worker role kinds:
561
565
  - `research`
562
566
  - `security`
563
567
 
564
- Agentic planner payloads also accept `workerAgents[].roleKind = "design"`. The shipped `0.8.9` surface uses `design-pass` as the default executor profile for that role and typically assigns a packet path like `docs/plans/waves/design/wave-<n>-<agentId>.md`. Interactive draft scaffolds the docs-first default; hybrid design stewards are authored by explicitly adding implementation-owned paths and the normal implementation contract sections.
568
+ Agentic planner payloads also accept `workerAgents[].roleKind = "design"`. The shipped `0.9.0` surface uses `design-pass` as the default executor profile for that role and typically assigns a packet path like `docs/plans/waves/design/wave-<n>-<agentId>.md`. Interactive draft scaffolds the docs-first default; hybrid design stewards are authored by explicitly adding implementation-owned paths and the normal implementation contract sections.
565
569
 
566
570
  ## Ad-Hoc Task Commands
567
571
 
568
572
  **Plan and run ad-hoc tasks:**
569
573
 
570
574
  ```
571
- wave adhoc plan --task "<description>"
572
- wave adhoc run --task "<description>" [--yes] [--executor <id>]
573
- wave adhoc list [--json]
575
+ wave adhoc plan --task "<description>" [--project <id>] [--lane <lane>]
576
+ wave adhoc run --task "<description>" [--project <id>] [--lane <lane>] [--yes] [--executor <id>]
577
+ wave adhoc list [--project <id>] [--lane <lane>] [--json]
574
578
  wave adhoc show --run <id> [--json]
575
- wave adhoc promote --run <id> --wave <n>
579
+ wave adhoc promote --run <id> [--project <id>] --wave <n>
576
580
  ```
577
581
 
578
582
  ## Common Patterns
579
583
 
580
584
  ### Lane and wave targeting
581
585
 
582
- Most coordination commands accept `--lane` (default: `main`) and `--wave` (required). For ad-hoc runs, use `--run <id>` which sets the lane and defaults wave to 0.
586
+ Most coordination commands accept `--project` plus `--lane` (default lane: `main`) and `--wave` (required). For ad-hoc runs, use `--run <id>` which resolves the matching project and lane and defaults wave to 0.
583
587
 
584
588
  ### JSON output
585
589
 
@@ -595,6 +599,6 @@ Flags like `--agent`, `--artifact`, `--component`, `--target`, and `--depends-on
595
599
 
596
600
  ```bash
597
601
  # These are equivalent:
598
- wave control rerun request --lane main --wave 0 --agent A2 --agent A7
599
- wave control rerun request --lane main --wave 0 --agent A2,A7
602
+ wave control rerun request --project app --lane main --wave 0 --agent A2 --agent A7
603
+ wave control rerun request --project app --lane main --wave 0 --agent A2,A7
600
604
  ```
@@ -134,7 +134,7 @@ Practical rule:
134
134
 
135
135
  That means a targeted helper request only blocks while it remains open *and* still has blocking severity in coordination state.
136
136
 
137
- For the practical `0.8.9` recommendation on when to keep records blocking versus when to downgrade them to `soft`, `stale`, or `advisory`, see [../guides/recommendations-0.8.9.md](../guides/recommendations-0.8.9.md).
137
+ For the practical `0.9.0` recommendation on when to keep records blocking versus when to downgrade them to `soft`, `stale`, or `advisory`, see [../guides/recommendations-0.9.0.md](../guides/recommendations-0.9.0.md).
138
138
 
139
139
  This page is documenting runtime semantics first. The important contract is that closure follows the durable coordination state, not that a particular human or agent used one exact command path to mutate it.
140
140
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  This repo now includes a dedicated npmjs publish workflow at [publish-npm.yml](../../.github/workflows/publish-npm.yml).
4
4
 
5
- The current `0.8.9` release procedure publishes through a repository Actions secret named `NPM_TOKEN`.
5
+ The current `0.9.0` release procedure publishes through a repository Actions secret named `NPM_TOKEN`.
6
6
 
7
7
  ## What This Repo Already Does
8
8
 
@@ -48,6 +48,6 @@ If this repo later needs private npm dependencies during CI, consider a separate
48
48
  2. Confirm `NPM_TOKEN` exists in the GitHub repo secrets.
49
49
  3. Confirm the package version has been bumped and committed.
50
50
  4. Confirm `README.md`, `CHANGELOG.md`, `releases/manifest.json`, and `docs/plans/migration.md` all describe the same release surface.
51
- 5. Push the release commit and release tag, for example `v0.8.9`.
51
+ 5. Push the release commit and release tag, for example `v0.9.0`.
52
52
  6. Verify both `publish-npm.yml` and `publish-package.yml` start from the tag push.
53
53
  7. Verify the npmjs publish completes successfully for the tagged source.