@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.
- package/CHANGELOG.md +27 -0
- package/README.md +7 -7
- package/docs/README.md +3 -3
- package/docs/concepts/operating-modes.md +1 -1
- package/docs/guides/author-and-run-waves.md +1 -1
- package/docs/guides/planner.md +2 -2
- package/docs/guides/recommendations-0.9.15.md +83 -0
- package/docs/guides/sandboxed-environments.md +2 -2
- package/docs/guides/signal-wrappers.md +10 -0
- package/docs/plans/agent-first-closure-hardening.md +612 -0
- package/docs/plans/current-state.md +3 -3
- package/docs/plans/end-state-architecture.md +1 -1
- package/docs/plans/examples/wave-example-design-handoff.md +1 -1
- package/docs/plans/examples/wave-example-live-proof.md +1 -1
- package/docs/plans/migration.md +75 -20
- package/docs/reference/cli-reference.md +34 -1
- package/docs/reference/coordination-and-closure.md +16 -1
- package/docs/reference/npmjs-token-publishing.md +3 -3
- package/docs/reference/package-publishing-flow.md +13 -11
- package/docs/reference/runtime-config/README.md +2 -2
- package/docs/reference/sample-waves.md +5 -5
- package/docs/reference/skills.md +1 -1
- package/docs/reference/wave-control.md +1 -1
- package/docs/roadmap.md +5 -3
- package/package.json +1 -1
- package/releases/manifest.json +35 -0
- package/scripts/wave-orchestrator/agent-state.mjs +221 -313
- package/scripts/wave-orchestrator/artifact-schemas.mjs +37 -2
- package/scripts/wave-orchestrator/closure-adjudicator.mjs +311 -0
- package/scripts/wave-orchestrator/control-cli.mjs +212 -18
- package/scripts/wave-orchestrator/dashboard-state.mjs +40 -0
- package/scripts/wave-orchestrator/derived-state-engine.mjs +3 -0
- package/scripts/wave-orchestrator/gate-engine.mjs +140 -3
- package/scripts/wave-orchestrator/install.mjs +1 -1
- package/scripts/wave-orchestrator/launcher.mjs +49 -10
- package/scripts/wave-orchestrator/signal-cli.mjs +271 -0
- package/scripts/wave-orchestrator/structured-signal-parser.mjs +499 -0
- package/scripts/wave-orchestrator/task-entity.mjs +13 -4
- package/scripts/wave.mjs +9 -0
package/docs/plans/migration.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Migration
|
|
2
2
|
|
|
3
|
-
This page is the practical repo-upgrade guide for the current `0.9.
|
|
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.
|
|
16
|
+
## What `0.9.15` Changes
|
|
17
17
|
|
|
18
|
-
The `0.9.
|
|
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
|
-
- **
|
|
21
|
-
- **
|
|
22
|
-
- **
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
216
|
+
## `0.9.15` Release Model
|
|
187
217
|
|
|
188
|
-
The current `0.9.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
436
|
+
## Upgrading From `0.8.3` To `0.9.15`
|
|
382
437
|
|
|
383
|
-
Treat this as one move to the current `0.9.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
131
|
-
git push -u origin release/0.9.
|
|
132
|
-
gh pr create --base main --head release/0.9.
|
|
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.
|
|
142
|
-
git push origin v0.9.
|
|
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.
|
|
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.
|
|
217
|
+
"version": "0.9.15",
|
|
216
218
|
"dist-tags": {
|
|
217
|
-
"latest": "0.9.
|
|
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.
|
|
235
|
-
git push origin refs/tags/v0.9.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
package/docs/reference/skills.md
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
5
|
+
## Current Release: 0.9.15
|
|
6
6
|
|
|
7
|
-
`0.9.
|
|
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.
|
|
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
package/releases/manifest.json
CHANGED
|
@@ -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",
|