@chllming/wave-orchestration 0.9.13 → 0.9.15

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 (39) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +7 -7
  3. package/docs/README.md +3 -3
  4. package/docs/concepts/operating-modes.md +1 -1
  5. package/docs/guides/author-and-run-waves.md +1 -1
  6. package/docs/guides/planner.md +2 -2
  7. package/docs/guides/recommendations-0.9.15.md +83 -0
  8. package/docs/guides/sandboxed-environments.md +2 -2
  9. package/docs/guides/signal-wrappers.md +10 -0
  10. package/docs/plans/agent-first-closure-hardening.md +612 -0
  11. package/docs/plans/current-state.md +3 -3
  12. package/docs/plans/end-state-architecture.md +1 -1
  13. package/docs/plans/examples/wave-example-design-handoff.md +1 -1
  14. package/docs/plans/examples/wave-example-live-proof.md +1 -1
  15. package/docs/plans/migration.md +75 -20
  16. package/docs/reference/cli-reference.md +34 -1
  17. package/docs/reference/coordination-and-closure.md +16 -1
  18. package/docs/reference/npmjs-token-publishing.md +3 -3
  19. package/docs/reference/package-publishing-flow.md +13 -11
  20. package/docs/reference/runtime-config/README.md +2 -2
  21. package/docs/reference/sample-waves.md +5 -5
  22. package/docs/reference/skills.md +1 -1
  23. package/docs/reference/wave-control.md +1 -1
  24. package/docs/roadmap.md +5 -3
  25. package/package.json +1 -1
  26. package/releases/manifest.json +35 -0
  27. package/scripts/wave-orchestrator/agent-state.mjs +221 -313
  28. package/scripts/wave-orchestrator/artifact-schemas.mjs +37 -2
  29. package/scripts/wave-orchestrator/closure-adjudicator.mjs +311 -0
  30. package/scripts/wave-orchestrator/control-cli.mjs +212 -18
  31. package/scripts/wave-orchestrator/dashboard-state.mjs +40 -0
  32. package/scripts/wave-orchestrator/derived-state-engine.mjs +3 -0
  33. package/scripts/wave-orchestrator/gate-engine.mjs +140 -3
  34. package/scripts/wave-orchestrator/install.mjs +1 -1
  35. package/scripts/wave-orchestrator/launcher.mjs +49 -10
  36. package/scripts/wave-orchestrator/signal-cli.mjs +271 -0
  37. package/scripts/wave-orchestrator/structured-signal-parser.mjs +499 -0
  38. package/scripts/wave-orchestrator/task-entity.mjs +13 -4
  39. package/scripts/wave.mjs +9 -0
@@ -1,6 +1,6 @@
1
1
  # Migration
2
2
 
3
- This page is the practical repo-upgrade guide for the current `0.9.13` surface.
3
+ This page is the practical repo-upgrade guide for the current `0.9.15` surface.
4
4
 
5
5
  Use it when you are:
6
6
 
@@ -13,21 +13,51 @@ For the completed internal architecture cutover record, see [architecture-harden
13
13
  For the sandbox-specific long-running execution target, including async `submit/status/wait` semantics and daemon ownership goals, see [sandbox-end-state-architecture.md](./sandbox-end-state-architecture.md).
14
14
 
15
15
 
16
- ## What `0.9.13` Changes
16
+ ## What `0.9.15` Changes
17
17
 
18
- The `0.9.13` surface keeps the existing proof-first runtime and adds three focused operational hardening fixes with no breaking changes.
18
+ The `0.9.15` surface keeps the existing proof-first runtime and adds closure-hardening and operator-surface upgrades with no breaking CLI removals.
19
19
 
20
- - **Proof marker aliasing**: implementation and closure markers now accept `state=complete` as a compatibility alias for `state=met`, which keeps naturally phrased agent output from being rejected by the proof parser.
21
- - **Restart-safe validation**: launcher pre-validation now treats waves reconstructed as complete from status files the same way it treats run-state-complete waves, so resumed launches stop tripping stale component-promotion checks from older completed waves.
22
- - **Concurrent credential brokering**: detached process runners now derive a per-agent `LPM_AUTH_STICKY_KEY` and preserve explicit overrides, which prevents same-node agents from contending on one broker export by default.
20
+ - **Normalized structured-signal parsing**: implementation closure now accepts wrapped, fenced, list-prefixed, and JSON-embedded marker output through one canonical parser, while still preserving strict marker requirements.
21
+ - **Deterministic closure adjudication**: transport-only implementation failures can now resolve as `pass`, `rework-required`, or `awaiting-adjudication` instead of automatically becoming generic rerun work.
22
+ - **Operator inspection path**: `wave control adjudication get` exposes the persisted adjudication artifact, including the captured evidence and any synthesized canonical signals.
23
+ - **Canonical signal helpers**: `wave signal ...` prints valid closure markers for wrappers, orchestrators, and agent prompts, which reduces syntax drift in proof-heavy repos.
24
+ - **Separated runtime projections**: `wave control status` and dashboard payloads now expose additive `executionState`, `closureState`, and `controllerState` fields so active execution, blocked closure, and stale controller intent are no longer conflated.
25
+ - **Earlier hardening still included**: `state=complete` still normalizes to `met`, restart-safe validation still honors status-recoverable completed waves before stale promotion checks, and detached runners still derive per-agent broker sticky keys by default.
23
26
 
24
27
  There are no breaking changes. Existing repos can upgrade in place with `pnpm up @chllming/wave-orchestration` and `pnpm exec wave upgrade`.
25
28
 
26
- For the practical `0.9.13` operating stance after the upgrade, read [../guides/recommendations-0.9.13.md](../guides/recommendations-0.9.13.md).
29
+ For the practical `0.9.15` operating stance after the upgrade, read [../guides/recommendations-0.9.15.md](../guides/recommendations-0.9.15.md).
30
+
31
+ ## What `0.9.14` Was
32
+
33
+ `0.9.14` exists on npmjs and is the latest published registry version before this local `0.9.15` work, but the published tarball is effectively a carry-forward of the `0.9.13` runtime and docs surface.
34
+
35
+ Practical meaning:
36
+
37
+ - if your repo already upgraded to npmjs `0.9.14`, you did not miss a hidden runtime feature wave between `0.9.13` and this local `0.9.15` branch
38
+ - treat `0.9.14` as the public registry bridge version
39
+ - the real next operator-visible change after that bridge release is the `0.9.15` closure-hardening surface described above
40
+
41
+ ## Orchestrator Workflow Changes In `0.9.15`
42
+
43
+ If you run Wave through a coding agent or resident orchestrator, these are the behavior changes that matter in day-to-day operation:
44
+
45
+ - **Do not hand-type final markers when you can avoid it.**
46
+ Prefer `wave signal proof`, `wave signal doc-delta`, `wave signal component`, `wave signal integration`, and `wave signal doc-closure`. They emit canonical marker syntax, support `--append-file`, and keep wrappers aligned with the shipped parser.
47
+ - **Read status as a triplet, not one coarse state.**
48
+ `executionState` answers whether anything is still live, `closureState` answers whether closure is pending/evaluating/awaiting-adjudication/blocked/passed/failed, and `controllerState` answers whether the controller is active, idle, stale, or only carrying a relaunch plan.
49
+ - **Treat `awaiting-adjudication` as its own operational state.**
50
+ It means the slice may be closure-complete in substance, but the machine transport of one or more markers was insufficient. It is not the same thing as proof pass, and it is not automatic evidence that the slice needs a rerun.
51
+ - **Inspect adjudication before triggering targeted recovery.**
52
+ Use `wave control adjudication get --lane <lane> --wave <n> [--agent <id>] --json` first. If the artifact shows a transport-only ambiguity with coherent evidence, prefer a narrow follow-up or marker repair over a broad rerun.
53
+ - **Keep targeted recovery for real regressions.**
54
+ Semantic proof gaps, missing deliverables, missing proof artifacts, and runtime-state failures still belong in rerun or relaunch workflows. `0.9.15` narrows rerun intent; it does not weaken the proof contract.
55
+ - **Update custom orchestrator prompts and wrappers.**
56
+ Any repo-owned orchestration prompt that tells agents to hand-compose `[wave-*]` markers should now prefer the `wave signal ...` helpers, and any wrapper that only reads `status` should be updated to consider the additive status triplet when it needs finer control decisions.
27
57
 
28
58
  ## What `0.9.4` Changes
29
59
 
30
- The current `0.9.13` surface keeps everything from `0.9.2` and adds the earlier gate-value and setup improvements with no breaking changes.
60
+ The current `0.9.15` surface keeps everything from `0.9.2` and adds the earlier gate-value and setup improvements with no breaking changes.
31
61
 
32
62
  The practical changes are:
33
63
 
@@ -43,7 +73,7 @@ There are no breaking changes. Just upgrade with `pnpm up @chllming/wave-orchest
43
73
 
44
74
  If your repo uses wave-gate markers, you can now use `gap` for dimensions where the gap is documented and not an actionable blocker.
45
75
 
46
- For the practical `0.9.13` operating stance after the upgrade, read [../guides/recommendations-0.9.13.md](../guides/recommendations-0.9.13.md).
76
+ For the practical `0.9.15` operating stance after the upgrade, read [../guides/recommendations-0.9.15.md](../guides/recommendations-0.9.15.md).
47
77
 
48
78
  ## What `0.9.2` Changes
49
79
 
@@ -62,7 +92,7 @@ The practical changes are:
62
92
 
63
93
  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 current package cut.
64
94
 
65
- For a practical `0.9.13` operating stance after the upgrade, read [../guides/recommendations-0.9.13.md](../guides/recommendations-0.9.13.md).
95
+ For a practical `0.9.15` operating stance after the upgrade, read [../guides/recommendations-0.9.15.md](../guides/recommendations-0.9.15.md).
66
96
  For the concrete operator setup in Nemoshell, Docker, and other sandboxed shells, also read [../guides/sandboxed-environments.md](../guides/sandboxed-environments.md).
67
97
 
68
98
  ## What `0.8.6` Changes
@@ -183,10 +213,12 @@ pnpm exec wave coord inbox --lane main --wave 0 --agent A1 --dry-run
183
213
 
184
214
  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.
185
215
 
186
- ## `0.9.13` Release Model
216
+ ## `0.9.15` Release Model
187
217
 
188
- The current `0.9.13` surface combines these strands:
218
+ The current `0.9.15` surface combines these strands:
189
219
 
220
+ - the closure adjudication, canonical signal-helper, and control-projection split introduced in `0.9.15`
221
+ - the proof-alias, restart-safe completed-wave validation, and detached-runner sticky-key hardening from `0.9.13`
190
222
  - the gap-value wave-gate fix and first-time setup UX improvements released in `0.9.4`
191
223
  - the detached process-runner and sandbox supervisor hardening released in `0.9.2`
192
224
  - the shipped `0.9.0` monorepo project support and project-aware runtime isolation
@@ -197,6 +229,29 @@ The current `0.9.13` surface combines these strands:
197
229
  - the Corridor-backed security surface: direct or brokered provider fetches, normalized per-wave artifacts, and closure gating before integration
198
230
  - the packaged recommendations guide, sandbox setup guide, and release-surface alignment follow-up that make the current docs describe that combined surface consistently
199
231
 
232
+ ### Closure adjudication and orchestrator-visible status splitting
233
+
234
+ This is the main new operational layer in `0.9.15`.
235
+
236
+ The runtime now:
237
+
238
+ - classifies implementation failures as transport, semantic, artifact, or state failures without breaking the legacy `statusCode` surface
239
+ - holds eligible transport-only failures in deterministic adjudication instead of forcing a rerun immediately
240
+ - persists adjudication artifacts that operators can inspect with `wave control adjudication get`
241
+ - exposes `executionState`, `closureState`, and `controllerState` so live runtime work is no longer confused with blocked closure or stale control intent
242
+ - gives orchestrators and wrappers a canonical `wave signal ...` helper path for emitting final markers
243
+
244
+ If your repo copied orchestrator prompts, shell wrappers, or control-surface consumers, this is the main sync set to apply from `0.9.15`:
245
+
246
+ - `README.md`
247
+ - `docs/README.md`
248
+ - `docs/plans/current-state.md`
249
+ - `docs/plans/migration.md`
250
+ - `docs/guides/recommendations-0.9.15.md`
251
+ - `docs/guides/signal-wrappers.md`
252
+ - `docs/reference/cli-reference.md`
253
+ - `docs/reference/coordination-and-closure.md`
254
+
200
255
  ### Sandbox-safe execution and lower-overhead live runs
201
256
 
202
257
  This remains the main execution-model shift introduced in `0.9.2`.
@@ -295,7 +350,7 @@ The interactive `wave draft` flow supports `design` as a worker role and scaffol
295
350
 
296
351
  ## Version-Specific Upgrade Guidance
297
352
 
298
- ## Upgrading From `0.8.5` To `0.9.13`
353
+ ## Upgrading From `0.8.5` To `0.9.15`
299
354
 
300
355
  This is the smallest upgrade, but it changes the live wait-loop contract for external automation and intentionally long-running agents.
301
356
 
@@ -332,7 +387,7 @@ If the repo copied starter surface, sync:
332
387
  - if the repo uses long-running watchers, confirm they can write the ack file where the prompt tells them to
333
388
  - reroute one targeted feedback or coordination request and confirm the resident signal version changes even when the signal kind stays the same
334
389
 
335
- ## Upgrading From `0.8.4` To `0.9.13`
390
+ ## Upgrading From `0.8.4` To `0.9.15`
336
391
 
337
392
  ### What changed
338
393
 
@@ -370,7 +425,7 @@ If your repo copied starter config defaults, also sync the `designRolePromptPath
370
425
  - hybrid design stewards rejoin implementation when they explicitly own code
371
426
  - long-running prompts receive signal-state and ack paths when the repo uses the new waiting model
372
427
 
373
- ## Upgrading From `0.9.9` To `0.9.13`
428
+ ## Upgrading From `0.9.9` To `0.9.15`
374
429
 
375
430
  Run-state history is now capped at 200 entries (20 per wave). Existing bloated run-state files will be automatically pruned on the next write. No config changes needed.
376
431
 
@@ -378,9 +433,9 @@ Run-state history is now capped at 200 entries (20 per wave). Existing bloated r
378
433
 
379
434
  Helper assignment barriers are now advisory in bootstrap gate mode. No config changes needed.
380
435
 
381
- ## Upgrading From `0.8.3` To `0.9.13`
436
+ ## Upgrading From `0.8.3` To `0.9.15`
382
437
 
383
- Treat this as one move to the current `0.9.13` surface.
438
+ Treat this as one move to the current `0.9.15` surface.
384
439
 
385
440
  ### What changed across that range
386
441
 
@@ -413,7 +468,7 @@ If your repo copied starter docs or skills, sync:
413
468
  - dry-run one design-steward wave if the repo wants the new authored surface
414
469
  - 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
415
470
 
416
- ## Upgrading From `0.6.x` Or `0.7.x` To `0.9.13`
471
+ ## Upgrading From `0.6.x` Or `0.7.x` To `0.9.15`
417
472
 
418
473
  This is the main migration path for older adopted repos.
419
474
 
@@ -454,7 +509,7 @@ pnpm exec wave control proof get --lane main --wave 0 --json
454
509
 
455
510
  If the repo carries proof-first waves, verify that required proof artifacts still exist locally and not only in historical summaries.
456
511
 
457
- ## Upgrading From `0.5.x` Or Earlier To `0.9.13`
512
+ ## Upgrading From `0.5.x` Or Earlier To `0.9.15`
458
513
 
459
514
  Do not treat this as a tiny patch bump.
460
515
 
@@ -564,4 +619,4 @@ For repos that depend on replay parity, replay at least:
564
619
 
565
620
  ## Summary
566
621
 
567
- The current `0.9.13` 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, adds the recent proof-alias, restart-safe validation, and credential-broker concurrency fixes, and still 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.
622
+ The current `0.9.15` 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, adds the recent proof-alias, restart-safe validation, and credential-broker concurrency fixes, and still 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.
@@ -168,6 +168,8 @@ wave control status --project <id> --lane <lane> --wave <n> [--agent <id>] [--ru
168
168
 
169
169
  The JSON payload now includes:
170
170
 
171
+ - `executionState`, `closureState`, `controllerState`
172
+ Additive top-level status triplet that separates live execution, closure health, and controller intent.
171
173
  - `signals.wave`
172
174
  Versioned wave-level signal state for wrappers and external operators.
173
175
  - `signals.agents`
@@ -177,6 +179,8 @@ The JSON payload now includes:
177
179
  - `forwardedClosureGaps`
178
180
  Earliest-first forwarded `wave-proof-gap` records from the relaunch plan, including the stage key, originating agent, attempt, detail, and downstream closure targets.
179
181
 
182
+ Each entry in `logicalAgents[]` also carries additive `executionState` and `closureState` fields. The existing `state` field remains for compatibility.
183
+
180
184
  Starter repos also include `scripts/wave-status.sh` and `scripts/wave-watch.sh` as thin readers over this JSON payload. They use exit `0` for completed, `20` for input-required, `40` for failed, and `30` from `wave-watch.sh --until-change` when the signal changed but the wave stayed active. For the full wrapper contract, read [../guides/signal-wrappers.md](../guides/signal-wrappers.md).
181
185
 
182
186
  ### wave control telemetry
@@ -188,6 +192,16 @@ wave control telemetry status --project <id> --lane <lane> [--run <id>] [--json]
188
192
  wave control telemetry flush --project <id> --lane <lane> [--run <id>] [--json]
189
193
  ```
190
194
 
195
+ ### wave control adjudication
196
+
197
+ Read persisted closure adjudication artifacts for transport-only implementation failures that were held out of immediate relaunch.
198
+
199
+ ```
200
+ wave control adjudication get --project <id> --lane <lane> --wave <n> [--agent <id>] [--json]
201
+ ```
202
+
203
+ The JSON payload returns `adjudications[]`, including adjudication `status`, `failureClass`, `reason`, captured evidence, and any synthesized canonical signals.
204
+
191
205
  ### wave control task
192
206
 
193
207
  Operator task surface for coordination records.
@@ -327,6 +341,25 @@ wave control proof revoke \
327
341
  [--operator <name>] [--detail "<text>"] [--json]
328
342
  ```
329
343
 
344
+ ## wave signal
345
+
346
+ Emit canonical machine-readable closure markers without hand-typing them.
347
+
348
+ ```
349
+ wave signal proof --completion <level> --durability <level> --proof <level> --state <met|complete|gap> [--detail <text>] [--json] [--append-file <path>]
350
+ wave signal doc-delta --state <none|owned|shared-plan> [--path <file> ...] [--detail <text>] [--json] [--append-file <path>]
351
+ wave signal component --id <component> --level <level> --state <met|complete|gap> [--detail <text>] [--json] [--append-file <path>]
352
+ wave signal integration --state <ready-for-doc-closure|needs-more-work> --claims <n> --conflicts <n> --blockers <n> [--detail <text>] [--json] [--append-file <path>]
353
+ wave signal doc-closure --state <closed|no-change|delta> [--path <file> ...] [--detail <text>] [--json] [--append-file <path>]
354
+ ```
355
+
356
+ Notes:
357
+
358
+ - `complete` is accepted for proof and component state and is normalized to `met`.
359
+ - the command rejects unsafe field content that would break `key=value` parsing and fails if the emitted marker would not round-trip through the shipped parser.
360
+ - `--append-file` appends the canonical emitted marker line to an existing file, which is useful for wrappers and local agent logs.
361
+ - `--json` returns the emitted line plus the append target for wrapper-friendly automation.
362
+
330
363
  ## wave coord
331
364
 
332
365
  Coordination log access. Legacy surface; prefer `wave control task` for new work.
@@ -629,7 +662,7 @@ Interactive draft currently offers worker role kinds:
629
662
  - `research`
630
663
  - `security`
631
664
 
632
- Agentic planner payloads also accept `workerAgents[].roleKind = "design"`. The shipped `0.9.13` 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.
665
+ Agentic planner payloads also accept `workerAgents[].roleKind = "design"`. The shipped `0.9.15` 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.
633
666
 
634
667
  ## Ad-Hoc Task Commands
635
668
 
@@ -66,6 +66,8 @@ The runtime writes several different artifacts, but they do different jobs:
66
66
  `.tmp/<lane>-wave-launcher/security/wave-<n>-corridor.json`
67
67
  - wave dashboard:
68
68
  `.tmp/<lane>-wave-launcher/dashboards/wave-<n>.json`
69
+ - closure adjudication artifacts:
70
+ `.tmp/<lane>-wave-launcher/closure/wave-<n>/attempt-<a>/<agent>.json`
69
71
  - run-state:
70
72
  `.tmp/<lane>-wave-launcher/run-state.json`
71
73
 
@@ -75,6 +77,17 @@ That control-plane log also carries observed `wave_run`, `attempt`, and `agent_r
75
77
 
76
78
  Live waves now keep refreshing that derived state while agents are still running. Shared summaries, inboxes, dashboard coordination metrics, and clarification routing are not only recomputed at attempt boundaries; they are also refreshed during active wave execution so stale clarification and acknowledgement timing is machine-visible before the attempt ends.
77
79
 
80
+ Wave projections also separate three different operator questions:
81
+
82
+ - `executionState`
83
+ Is anything still actively running for this wave or agent?
84
+ - `closureState`
85
+ Is closure still evaluating, blocked, awaiting adjudication, passed, or failed?
86
+ - `controllerState`
87
+ Is the controller active, idle, stale, or only carrying a persisted relaunch plan?
88
+
89
+ That triplet is additive. Legacy top-level `status`, `phase`, and per-agent `state` remain available for compatibility.
90
+
78
91
  ## What Agents Should Use
79
92
 
80
93
  Use the coordination log for conversational or workflow state:
@@ -142,7 +155,7 @@ Practical rule:
142
155
 
143
156
  That means a targeted helper request only blocks while it remains open *and* still has blocking severity in coordination state.
144
157
 
145
- For the practical `0.9.13` recommendation on when to keep records blocking versus when to downgrade them to `soft`, `stale`, or `advisory`, see [../guides/recommendations-0.9.13.md](../guides/recommendations-0.9.13.md).
158
+ For the practical `0.9.15` recommendation on when to keep records blocking versus when to downgrade them to `soft`, `stale`, or `advisory`, see [../guides/recommendations-0.9.15.md](../guides/recommendations-0.9.15.md).
146
159
 
147
160
  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.
148
161
 
@@ -160,6 +173,8 @@ For implementation agents with an exit contract, closure validates:
160
173
 
161
174
  Deliverables and proof artifacts are local ownership proof. They do not replace cross-agent follow-up.
162
175
 
176
+ When implementation closure fails only because a transport-level marker is malformed, Wave can now hold that failure in deterministic adjudication instead of immediately turning it into a relaunch. Fully missing required proof markers remain non-passing closure failures. Adjudication is only eligible for transport-only proof failures with exit `0`, landed deliverables, required proof artifacts, a valid result envelope, and no explicit negative semantic gap. The persisted adjudication artifact records the evidence used for that decision so operators can inspect it later through `wave control adjudication get`.
177
+
163
178
  That distinction matters:
164
179
 
165
180
  - if Agent A1 owns `src/foo.ts` and `docs/reviews/foo.md`, those should be modeled as A1 deliverables
@@ -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.9.13` release procedure publishes through a repository Actions secret named `NPM_TOKEN`.
5
+ The current `0.9.15` 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.9.13`.
51
+ 5. Push the release commit and release tag, for example `v0.9.15`.
52
52
  6. Verify both `publish-npm.yml` and `publish-package.yml` start from the tag push.
53
- 7. Verify the npmjs publish completes successfully for the tagged `0.9.13` source.
53
+ 7. Verify the npmjs publish completes successfully for the tagged `0.9.15` source.
@@ -15,7 +15,7 @@ Release preparation happens in the repository itself:
15
15
  - update release-surface docs and fixtures
16
16
  - validate the repo
17
17
  - merge the release changes to `main`
18
- - push a version tag such as `v0.9.13`
18
+ - push a version tag such as `v0.9.15`
19
19
 
20
20
  Registry publishing happens in GitHub Actions after the tag push:
21
21
 
@@ -88,6 +88,8 @@ node scripts/wave.mjs doctor --json
88
88
  node scripts/wave.mjs launch --lane main --dry-run --no-dashboard
89
89
  ```
90
90
 
91
+ `launch --dry-run --no-dashboard` works in a clean checkout even when no `.wave/project-profile.json` exists yet. Live launches still run first-time project setup when a profile is missing.
92
+
91
93
  ### Registry verification commands
92
94
 
93
95
  After publish:
@@ -127,9 +129,9 @@ This repository normally protects `main`, so release changes should land through
127
129
  Typical git flow:
128
130
 
129
131
  ```bash
130
- git checkout -b release/0.9.13
131
- git push -u origin release/0.9.13
132
- gh pr create --base main --head release/0.9.13
132
+ git checkout -b release/0.9.15
133
+ git push -u origin release/0.9.15
134
+ gh pr create --base main --head release/0.9.15
133
135
  gh pr merge <pr-number> --merge --delete-branch
134
136
  ```
135
137
 
@@ -138,13 +140,13 @@ gh pr merge <pr-number> --merge --delete-branch
138
140
  After the release commit is on `main`, push the version tag:
139
141
 
140
142
  ```bash
141
- git tag v0.9.13
142
- git push origin v0.9.13
143
+ git tag v0.9.15
144
+ git push origin v0.9.15
143
145
  ```
144
146
 
145
147
  That tag push is the event that starts both publishing workflows.
146
148
 
147
- The tag must match the checked-in package version exactly. Example: if `package.json.version` is `0.9.13`, the pushed tag must be `v0.9.13`.
149
+ The tag must match the checked-in package version exactly. Example: if `package.json.version` is `0.9.15`, the pushed tag must be `v0.9.15`.
148
150
 
149
151
  ## GitHub Actions Workflows
150
152
 
@@ -212,9 +214,9 @@ Expected result after a successful publish:
212
214
 
213
215
  ```json
214
216
  {
215
- "version": "0.9.13",
217
+ "version": "0.9.15",
216
218
  "dist-tags": {
217
- "latest": "0.9.13"
219
+ "latest": "0.9.15"
218
220
  }
219
221
  }
220
222
  ```
@@ -231,8 +233,8 @@ If a tag-triggered publish fails before the package is actually published, the f
231
233
  Example:
232
234
 
233
235
  ```bash
234
- git tag -f v0.9.13 <fixed-commit>
235
- git push origin refs/tags/v0.9.13 --force
236
+ git tag -f v0.9.15 <fixed-commit>
237
+ git push origin refs/tags/v0.9.15 --force
236
238
  ```
237
239
 
238
240
  Use that only before the package is live on npmjs. Once npmjs has accepted a version, do not try to republish the same version; cut a new version instead.
@@ -191,7 +191,7 @@ Practical guidance:
191
191
  - prefer `budget.minutes` for normal synthesis, integration, and closure work
192
192
  - use generic `budget.turns` as a planning hint, not a hard failure trigger
193
193
  - only set `claude.maxTurns` or `opencode.steps` when you deliberately want a hard ceiling for that runtime
194
- - see [../../guides/recommendations-0.9.13.md](../../guides/recommendations-0.9.13.md) for the recommended `0.9.13` operating stance that combines advisory turn budgets with softer non-proof coordination states, targeted recovery, restart-safe validation, and optional TMUX operator surfaces
194
+ - see [../../guides/recommendations-0.9.15.md](../../guides/recommendations-0.9.15.md) for the recommended `0.9.15` operating stance that combines advisory turn budgets with softer non-proof coordination states, targeted recovery, restart-safe validation, and optional TMUX operator surfaces
195
195
 
196
196
  ## Runtime Pages
197
197
 
@@ -203,7 +203,7 @@ Practical guidance:
203
203
 
204
204
  `wave.config.json` may also declare a `waveControl` block for local-first telemetry delivery.
205
205
 
206
- Packaged defaults in `@chllming/wave-orchestration@0.9.13`:
206
+ Packaged defaults in `@chllming/wave-orchestration@0.9.15`:
207
207
 
208
208
  - `endpoint`: `https://wave-control.up.railway.app/api/v1`
209
209
  - `reportMode`: `metadata-only`
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  title: "Sample Waves"
3
- summary: "Showcase-first sample waves that demonstrate the shipped 0.9.13 authored surface, including the optional design-role path."
3
+ summary: "Showcase-first sample waves that demonstrate the shipped 0.9.15 authored surface, including the optional design-role path."
4
4
  ---
5
5
 
6
6
  # Sample Waves
7
7
 
8
- This guide points to showcase-first sample waves that demonstrate the shipped `0.9.13` authored Wave surface.
8
+ This guide points to showcase-first sample waves that demonstrate the shipped `0.9.15` authored Wave surface.
9
9
 
10
10
  The examples are intentionally denser than typical production waves. Their job is to teach the current authoring and runtime surface quickly, not to be the smallest possible launch-ready files.
11
11
 
@@ -17,7 +17,7 @@ All example `.tmp/main-wave-launcher/...` paths assume the implicit default proj
17
17
  Shows what a good `repo-landed` outcome looks like when one promoted component only closes honestly if desired-state records, reconcile-loop substrate, and cluster-view surfaces land together. It emphasizes maturity discipline, explicit deliverables, and shared-plan closure without drifting into `pilot-live` claims.
18
18
 
19
19
  - [Full modern sample wave](../plans/examples/wave-example-live-proof.md)
20
- Shows the combined `0.9.13` authored surface in one file: closure roles, `E0`, optional security review, delegated and pinned benchmark targets, richer executor config, `### Skills`, `### Capabilities`, `### Deliverables`, `### Exit contract`, `### Proof artifacts`, sticky retry, deploy environments, and proof-first live-wave structure.
20
+ Shows the combined `0.9.15` authored surface in one file: closure roles, `E0`, optional security review, delegated and pinned benchmark targets, richer executor config, `### Skills`, `### Capabilities`, `### Deliverables`, `### Exit contract`, `### Proof artifacts`, sticky retry, deploy environments, and proof-first live-wave structure.
21
21
 
22
22
  - [Optional design-steward handoff wave](../plans/examples/wave-example-design-handoff.md)
23
23
  Shows the shipped design-role surface: one pre-implementation design steward publishes a design packet, downstream implementation owners read that packet before coding, and normal closure roles still decide final completion. For terminal or operator-surface work, pair that shape with explicit `tui-design` in the design steward's `### Skills`. For the hybrid variant, explicitly give that same design agent implementation-owned paths and the normal implementation contract sections.
@@ -46,7 +46,7 @@ All example `.tmp/main-wave-launcher/...` paths assume the implicit default proj
46
46
 
47
47
  ## Feature Coverage Map
48
48
 
49
- Together these samples cover the main surfaces added or hardened through `0.9.13`:
49
+ Together these samples cover the main surfaces added or hardened through `0.9.15`:
50
50
 
51
51
  - repo-landed maturity discipline and anti-overclaim framing
52
52
  - explicit shared-plan closure for future-wave safety
@@ -184,7 +184,7 @@ Adapt more aggressively when:
184
184
  ## Suggested Reading Order
185
185
 
186
186
  1. Start with [High-fidelity repo-landed rollout wave](../plans/examples/wave-example-rollout-fidelity.md) if you want the clearest example of good closure-ready wave fidelity for a repo-only outcome.
187
- 2. Read [Full modern sample wave](../plans/examples/wave-example-live-proof.md) if you want the denser proof-first and eval-heavy `0.9.13` surface.
187
+ 2. Read [Full modern sample wave](../plans/examples/wave-example-live-proof.md) if you want the denser proof-first and eval-heavy `0.9.15` surface.
188
188
  3. Read [Optional design-steward handoff wave](../plans/examples/wave-example-design-handoff.md) if the task needs a design packet before implementation fan-out.
189
189
  4. Read [docs/evals/README.md](../evals/README.md) if you want more background on benchmark target selection.
190
190
  5. Read [docs/reference/live-proof-waves.md](./live-proof-waves.md) if you want more detail on proof-first `pilot-live` authoring.
@@ -124,7 +124,7 @@ Top-level and lane-local skill attachment use the same shape:
124
124
 
125
125
  Lane-local `lanes.<lane>.skills` extends the global config instead of replacing it.
126
126
 
127
- Optional design workers in the shipped `0.9.13` surface normally attach `role-design`. That bundle is intended for docs/spec-first design packets and explicit implementation handoff work before implementation starts. When the design packet covers terminal UX, dashboards, or other operator surfaces, add `tui-design` explicitly in the wave's `### Skills`.
127
+ Optional design workers in the shipped `0.9.15` surface normally attach `role-design`. That bundle is intended for docs/spec-first design packets and explicit implementation handoff work before implementation starts. When the design packet covers terminal UX, dashboards, or other operator surfaces, add `tui-design` explicitly in the wave's `### Skills`.
128
128
 
129
129
  Long-running agents that should stay resident and react only to orchestrator signal changes can add `signal-hygiene` explicitly in `### Skills`. That bundle is not auto-attached and is not meant for normal one-shot implementation agents.
130
130
 
@@ -23,7 +23,7 @@ That packaged endpoint is for the default metadata-reporting surface. The owned-
23
23
 
24
24
  ### Packaged Default Endpoint
25
25
 
26
- This is the release default in `@chllming/wave-orchestration@0.9.13`.
26
+ This is the release default in `@chllming/wave-orchestration@0.9.15`.
27
27
 
28
28
  - receives local-first telemetry uploads
29
29
  - supports normal run and benchmark query surfaces
package/docs/roadmap.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  This roadmap is intentionally short and current. The older planner-foundation and ad-hoc-run phase list has been removed because that work no longer describes the actual shipping direction for this package.
4
4
 
5
- ## Current Release: 0.9.13
5
+ ## Current Release: 0.9.15
6
6
 
7
- `0.9.13` is the current packaged surface.
7
+ `0.9.15` is the current packaged surface.
8
8
 
9
9
  It includes:
10
10
 
@@ -13,6 +13,8 @@ It includes:
13
13
  - better behavior in constrained sandboxes such as LEAPclaw, OpenClaw, Nemoshell, and Docker-based operator environments
14
14
  - a safer `submit -> supervise -> status/wait -> attach` control path for long-running agentic orchestration
15
15
  - tighter supervisor recovery, progress journaling, and closure/retry correctness
16
+ - deterministic adjudication for transport-only implementation closure failures
17
+ - canonical `wave signal ...` helpers plus additive `executionState` / `closureState` / `controllerState` control projections
16
18
  - the current protected Wave Control model: Stack-authenticated browser access, Wave-managed approval states and provider grants, PATs, service tokens, encrypted per-user credentials, and runtime env leasing
17
19
  - owned Context7 and Corridor broker routes plus the Corridor-backed security context that can gate closure before integration
18
20
 
@@ -56,6 +58,6 @@ That line is expected to carry:
56
58
 
57
59
  For this repository, the practical sequence is:
58
60
 
59
- 1. Ship `0.9.13` with the proof-alias, restart-safe validation, detached-runner credential-broker, and release-doc alignment fixes.
61
+ 1. Ship `0.9.15` with closure adjudication hardening, canonical signal helpers, richer control-state projections, and aligned release docs.
60
62
  2. Maintain this Node package for bug fixes, compatibility, operational hardening, and release-surface sync rather than a broad new feature wave.
61
63
  3. Move long-term execution investment to the LEAPclaw + Go + Temporal architecture and the Rust standalone runtime.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chllming/wave-orchestration",
3
- "version": "0.9.13",
3
+ "version": "0.9.15",
4
4
  "license": "MIT",
5
5
  "description": "Generic wave-based multi-agent orchestration for repository work.",
6
6
  "repository": {
@@ -2,6 +2,41 @@
2
2
  "schemaVersion": 1,
3
3
  "packageName": "@chllming/wave-orchestration",
4
4
  "releases": [
5
+ {
6
+ "version": "0.9.15",
7
+ "date": "2026-04-10",
8
+ "summary": "Closure adjudication hardening, canonical signal helpers, and clearer execution-versus-closure control projections.",
9
+ "features": [
10
+ "Implementation closure now normalizes structured marker extraction behind one parser, preserving compatibility with wrapped, fenced, list-prefixed, and JSON-embedded marker output while surfacing richer diagnostics.",
11
+ "Transport-only implementation failures can now resolve through deterministic closure adjudication instead of always becoming generic rerun work, with persisted artifacts under `.tmp/<lane>-wave-launcher/closure/wave-<n>/attempt-<a>/<agent>.json`.",
12
+ "Operators can inspect those artifacts with `wave control adjudication get`, including adjudication `status`, `failureClass`, evidence, and synthesized canonical signals.",
13
+ "The new `wave signal` helper family emits canonical `proof`, `doc-delta`, `component`, `integration`, and `doc-closure` markers, supports `--append-file`, and keeps wrapper-driven marker output aligned with the shipped parser.",
14
+ "`wave control status` and dashboard payloads now expose additive `executionState`, `closureState`, and `controllerState` fields, plus per-agent `executionState` and `closureState`, so live runtime work is no longer conflated with blocked closure or stale controller intent.",
15
+ "The shipped versioned operating guide is now `docs/guides/recommendations-0.9.15.md`, and release docs, migration guidance, runtime-config docs, package-publishing docs, tracked install-state fixtures, and the release manifest now all point at the same `0.9.15` surface.",
16
+ "Planner migration guidance and the `planner-agentic` bundle placeholder remain part of the shipped current-surface docs so adopted repos still have one aligned upgrade target."
17
+ ],
18
+ "manualSteps": [
19
+ "Run `pnpm exec wave doctor --json` and `pnpm exec wave launch --lane main --dry-run --no-dashboard` after upgrading so the repo validates against the `0.9.15` release surface.",
20
+ "If your repo copied starter docs or runbooks, sync `README.md`, `docs/README.md`, `docs/plans/current-state.md`, `docs/plans/migration.md`, `docs/reference/coordination-and-closure.md`, `docs/reference/runtime-config/README.md`, `docs/reference/wave-control.md`, `docs/reference/package-publishing-flow.md`, and `docs/guides/recommendations-0.9.15.md` so local guidance matches the packaged release.",
21
+ "Update any repo-owned orchestrator prompts, shell wrappers, or custom marker emitters to prefer `wave signal ...` and to treat `awaiting-adjudication` as distinct from both pass and rerun-needed.",
22
+ "Teach any external operator dashboards or automation that consume `wave control status --json` to read `executionState`, `closureState`, and `controllerState` instead of flattening everything into the legacy top-level `status` field."
23
+ ],
24
+ "breaking": false
25
+ },
26
+ {
27
+ "version": "0.9.14",
28
+ "date": "2026-04-09",
29
+ "summary": "Registry carry-forward release of the 0.9.13 surface.",
30
+ "features": [
31
+ "Published `0.9.14` to npmjs after `0.9.13`, advancing the public package version while keeping the effective runtime and docs surface aligned with the previously shipped `0.9.13` content.",
32
+ "No intentional runtime-behavior delta beyond the package-version publication itself.",
33
+ "Planner migration guidance and the `planner-agentic` bundle placeholder remain part of the shipped current-surface docs so adopted repos still have one aligned upgrade target."
34
+ ],
35
+ "manualSteps": [
36
+ "If you upgraded to the published npmjs `0.9.14`, treat it operationally as the `0.9.13` surface and continue to validate with `pnpm exec wave doctor --json` plus `pnpm exec wave launch --lane main --dry-run --no-dashboard`."
37
+ ],
38
+ "breaking": false
39
+ },
5
40
  {
6
41
  "version": "0.9.13",
7
42
  "date": "2026-04-09",