@chllming/wave-orchestration 0.9.1 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +52 -1
  2. package/LICENSE.md +21 -0
  3. package/README.md +20 -9
  4. package/docs/README.md +8 -4
  5. package/docs/agents/wave-security-role.md +1 -0
  6. package/docs/architecture/README.md +1 -1
  7. package/docs/concepts/operating-modes.md +1 -1
  8. package/docs/guides/author-and-run-waves.md +1 -1
  9. package/docs/guides/planner.md +2 -2
  10. package/docs/guides/{recommendations-0.9.1.md → recommendations-0.9.2.md} +7 -7
  11. package/docs/guides/recommendations-0.9.3.md +137 -0
  12. package/docs/guides/sandboxed-environments.md +2 -2
  13. package/docs/plans/current-state.md +8 -2
  14. package/docs/plans/end-state-architecture.md +1 -1
  15. package/docs/plans/examples/wave-example-design-handoff.md +1 -1
  16. package/docs/plans/examples/wave-example-live-proof.md +1 -1
  17. package/docs/plans/migration.md +65 -67
  18. package/docs/reference/cli-reference.md +1 -1
  19. package/docs/reference/coordination-and-closure.md +20 -3
  20. package/docs/reference/corridor.md +225 -0
  21. package/docs/reference/npmjs-token-publishing.md +2 -2
  22. package/docs/reference/package-publishing-flow.md +11 -11
  23. package/docs/reference/runtime-config/README.md +61 -3
  24. package/docs/reference/sample-waves.md +5 -5
  25. package/docs/reference/skills.md +1 -1
  26. package/docs/reference/wave-control.md +358 -27
  27. package/docs/roadmap.md +12 -19
  28. package/package.json +1 -1
  29. package/releases/manifest.json +44 -3
  30. package/scripts/wave-cli-bootstrap.mjs +52 -1
  31. package/scripts/wave-orchestrator/agent-state.mjs +26 -9
  32. package/scripts/wave-orchestrator/config.mjs +199 -3
  33. package/scripts/wave-orchestrator/context7.mjs +231 -29
  34. package/scripts/wave-orchestrator/coordination.mjs +15 -1
  35. package/scripts/wave-orchestrator/corridor.mjs +363 -0
  36. package/scripts/wave-orchestrator/derived-state-engine.mjs +38 -1
  37. package/scripts/wave-orchestrator/gate-engine.mjs +20 -0
  38. package/scripts/wave-orchestrator/install.mjs +34 -1
  39. package/scripts/wave-orchestrator/launcher-runtime.mjs +111 -7
  40. package/scripts/wave-orchestrator/launcher.mjs +21 -3
  41. package/scripts/wave-orchestrator/planner.mjs +30 -0
  42. package/scripts/wave-orchestrator/projection-writer.mjs +23 -0
  43. package/scripts/wave-orchestrator/provider-runtime.mjs +104 -0
  44. package/scripts/wave-orchestrator/shared.mjs +1 -0
  45. package/scripts/wave-orchestrator/traces.mjs +25 -0
  46. package/scripts/wave-orchestrator/wave-control-client.mjs +14 -1
package/CHANGELOG.md CHANGED
@@ -2,18 +2,69 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.9.3 - 2026-03-30
6
+
7
+ ### Fixed And Hardened
8
+
9
+ - WAVE_GATE_REGEX now accepts gap alongside pass|concerns|blocked for all five gate dimensions (architecture, integration, durability, live, docs). Previously, agents that reported a documented gap (e.g. live=gap for an infrastructure topology constraint) had their marker rejected entirely, causing missing-wave-gate failures that prevented wave closure.
10
+ - validateContQaSummary now treats gap dimension values as a conditional pass (ok: true, statusCode: conditional-pass) instead of a hard blocker, with detail text listing which dimensions have documented gaps.
11
+ - The cont-QA coordination prompt now documents gap as a valid dimension value alongside pass|concerns|blocked.
12
+
13
+ ### Added
14
+
15
+ - First-time wave launch now auto-triggers wave project setup when no project profile exists, matching existing wave draft behavior. (Contributed by @justanothernate in #54)
16
+ - wave project setup now shows descriptive help text before each prompt, explains all template and posture options inline, and adds whitespace between question groups for readability. (Contributed by @justanothernate in #54)
17
+ - PromptSession gains a describe(text) method for writing contextual help to stderr during interactive setup flows.
18
+ - parseArgs now passes the loaded config object through to runLauncherCli, avoiding a redundant loadWaveConfig() call.
19
+
20
+ ### Testing And Validation
21
+
22
+ - `pnpm exec vitest run --config vitest.config.ts`
23
+ - `node scripts/wave.mjs doctor --json`
24
+ - `node scripts/wave.mjs launch --lane main --dry-run --no-dashboard`
25
+ - `pnpm test -- test/wave-orchestrator/release-surface.test.ts`
26
+
27
+ ## 0.9.2 - 2026-03-29
28
+
29
+ ### Added
30
+
31
+ - A dedicated Corridor reference at `docs/reference/corridor.md` covering `direct`, `broker`, and `hybrid` provider modes, implementation-owned path matching, generated `wave-<n>-corridor.json` artifacts, and the way Corridor can fail closure before integration.
32
+ - Full shipped-surface documentation for owned `wave-control` deployments, including Stack-backed browser access, Wave-managed approval states and provider grants, PATs, service tokens, encrypted per-user credential storage, runtime credential leasing, and the separate `services/wave-control-web` frontend.
33
+ - Starter-surface coverage for the renamed operating guide `docs/guides/recommendations-0.9.2.md`, including install seeding and regression coverage so fresh adopted workspaces receive the current recommendations guide path.
34
+
35
+ ### Changed
36
+
37
+ - Promoted the current packaged surface to `0.9.2` so the documented Corridor, Wave Control auth and security model, release manifest, tracked install-state fixtures, and package publishing docs can be tagged and published cleanly without reusing the existing `0.9.1` npm release and git tag.
38
+ - README, migration guidance, current-state notes, runtime-config docs, coordination docs, roadmap notes, package publishing docs, Wave Control docs, the new Corridor reference, and the tracked install-state fixtures now all point at the `0.9.2` surface and describe the same shipped security and control-plane model consistently.
39
+ - `services/wave-control/README.md` and `docs/reference/wave-control.md` now document the current control-plane contract and the updated `wave-control-web` frontend surface instead of the older narrower auth description.
40
+
41
+ ### Fixed And Hardened
42
+
43
+ - `scripts/wave-orchestrator/install.mjs` now seeds the current linked reference set, including `docs/reference/corridor.md`, `docs/reference/wave-control.md`, and `docs/reference/coordination-and-closure.md`, so fresh `wave init` workspaces do not miss the new release docs.
44
+ - Release-surface fixtures now advance together to `0.9.2`, including `releases/manifest.json`, `.wave/install-state.json`, and the tracked `.wave/upgrade-history/` report for `0.9.1 -> 0.9.2`, which keeps repo-owned validation aligned with the packaged version.
45
+ - The versioned recommendations guide rename now propagates through install coverage, package publishing docs, and release regression checks so future package cuts do not drift from the shipped file name.
46
+
47
+ ### Testing And Validation
48
+
49
+ - `pnpm exec vitest run --config vitest.config.ts test/wave-orchestrator/install.test.ts`
50
+ - `pnpm exec vitest run --config vitest.config.ts test/wave-orchestrator/release-surface.test.ts`
51
+ - `node scripts/wave.mjs doctor --json`
52
+ - `node scripts/wave.mjs launch --lane main --dry-run --no-dashboard`
53
+ - `pnpm test -- test/wave-orchestrator/release-surface.test.ts`
54
+
5
55
  ## 0.9.1 - 2026-03-29
6
56
 
7
57
  ### Added
8
58
 
9
59
  - A dedicated sandbox setup guide at `docs/guides/sandboxed-environments.md` covering LEAPclaw/OpenClaw-style short-lived exec sandboxes, Nemoshell, and Docker or containerized operator setups.
10
60
  - Starter-surface and install coverage for the renamed recommendations guide `docs/guides/recommendations-0.9.1.md`, plus seeded docs that now point fresh workspaces at the sandbox-safe submit or supervise path.
61
+ - A dedicated Corridor reference at `docs/reference/corridor.md` covering direct, brokered, and hybrid provider modes, owned-path matching, generated security artifacts, and closure-stage blocking behavior.
11
62
 
12
63
  ### Changed
13
64
 
14
65
  - Live agent execution now defaults to detached process runners instead of per-agent tmux execution sessions. Tmux remains an optional dashboard and operator projection surface only, which reduces session churn and lowers memory pressure during wider fan-outs.
15
66
  - The sandbox-facing runtime path is now `wave submit`, `wave supervise`, `wave status`, `wave wait`, and `wave attach`, with read-side reconciliation and log-follow attach behavior designed for short-lived clients and long-running daemon ownership.
16
- - README, migration guidance, current-state notes, coordination docs, runtime-config docs, package publishing docs, install fixtures, and the versioned recommendations guide now all point at the `0.9.1` surface.
67
+ - README, migration guidance, current-state notes, runtime-config docs, coordination docs, Wave Control docs, the new Corridor reference, package publishing docs, roadmap notes, install fixtures, and the versioned recommendations guide now all point at the `0.9.1` surface and describe the current authenticated Wave Control plus security surface consistently.
17
68
 
18
69
  ### Fixed And Hardened
19
70
 
package/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 chllming
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -107,17 +107,18 @@ Wave is built to mitigate those failures with a canonical authority set, generat
107
107
 
108
108
  Current release:
109
109
 
110
- - `@chllming/wave-orchestration@0.9.1`
111
- - Release tag: [`v0.9.1`](https://github.com/chllming/agent-wave-orchestrator/releases/tag/v0.9.1)
110
+ - `@chllming/wave-orchestration@0.9.3`
111
+ - Release tag: [`v0.9.3`](https://github.com/chllming/agent-wave-orchestrator/releases/tag/v0.9.3)
112
112
  - Public install path: npmjs
113
113
  - Authenticated fallback: GitHub Packages
114
114
 
115
- Highlights in `0.9.1`:
115
+ Highlights in `0.9.3`:
116
116
 
117
- - Live agent execution now uses detached process runners by default, which reduces tmux churn and memory pressure during wider orchestration bursts. Tmux is now optional and dashboard-only.
118
- - The sandbox-safe runtime path is now `wave submit`, `wave supervise`, `wave status`, `wave wait`, and `wave attach`, which behaves better under short-lived exec clients such as LEAPclaw, OpenClaw, and Nemoshell.
119
- - Supervisor recovery, launcher progress journaling, and exact-context reads are now hardier for multi-wave runs, reruns, and daemon/client loss in containerized or sandboxed environments.
120
- - Release docs, migration guidance, sandbox setup guides, the versioned recommendations guide, the manifest, and the tracked install-state fixtures now all point at the `0.9.1` surface.
117
+ - Wave-gate markers now accept `gap` alongside `pass`, `concerns`, and `blocked` for all five gate dimensions. Agents that report a documented gap (e.g. `live=gap` for an infrastructure topology constraint) no longer have their marker rejected entirely, and `cont-QA` treats gap values as a conditional pass instead of a hard blocker.
118
+ - First-time `wave launch` now auto-triggers `wave project setup` when no project profile exists, matching existing `wave draft` behavior. The interactive setup flow now shows descriptive help text, explains all template and posture options inline, and adds whitespace between question groups for readability.
119
+ - `PromptSession` gains a `describe(text)` method for writing contextual help to stderr during interactive setup flows.
120
+ - `parseArgs` now passes the loaded config object through to `runLauncherCli`, avoiding a redundant `loadWaveConfig()` call.
121
+ - Release docs, migration guidance, runtime-config and closure references, the manifest, and the tracked install-state fixtures now all point at the `0.9.3` surface.
121
122
 
122
123
  Requirements:
123
124
 
@@ -126,7 +127,8 @@ Requirements:
126
127
  - optional: `tmux` on `PATH` for dashboarded runs
127
128
  - at least one executor on `PATH`: `codex`, `claude`, or `opencode`
128
129
  - optional: `CONTEXT7_API_KEY` for launcher-side prefetch
129
- - optional: `WAVE_CONTROL_AUTH_TOKEN` for remote Wave Control reporting
130
+ - optional: `WAVE_API_TOKEN` for owned Wave Control reporting, brokered provider access, and runtime credential leasing
131
+ - compatibility fallback: `WAVE_CONTROL_AUTH_TOKEN`
130
132
 
131
133
  Telemetry defaults:
132
134
 
@@ -135,6 +137,13 @@ Telemetry defaults:
135
137
  - default identity fields include `projectId`, `lane`, `wave`, `runKind`, and related benchmark ids
136
138
  - opt out explicitly with `waveControl.enabled: false`, `waveControl.reportMode: "disabled"`, or `wave launch --no-telemetry`
137
139
 
140
+ Owned Wave Control and security features:
141
+
142
+ - the packaged default endpoint is metadata-first and intentionally rejects provider-broker and credential-leasing routes
143
+ - owned deployments can add the authenticated `wave-control` app surface: Stack-backed browser sign-in, Wave-managed approval states, provider grants, PATs, service tokens, and encrypted per-user credential leasing
144
+ - `externalProviders.corridor` can run in `direct`, `broker`, or `hybrid` mode, writes `.tmp/<lane>-wave-launcher/security/wave-<n>-corridor.json`, and can fail closure on fetch errors or matched blocking findings when `requiredAtClosure` stays enabled
145
+ - see [docs/reference/wave-control.md](./docs/reference/wave-control.md), [docs/reference/corridor.md](./docs/reference/corridor.md), and [docs/reference/coordination-and-closure.md](./docs/reference/coordination-and-closure.md)
146
+
138
147
  ## Recommended Setup
139
148
 
140
149
  The easiest way to set up Wave in any repo is:
@@ -202,6 +211,7 @@ Useful docs:
202
211
  - `docs/guides/monorepo-projects.md`
203
212
  - `docs/guides/planner.md`
204
213
  - `docs/reference/runtime-config/README.md`
214
+ - `docs/reference/corridor.md`
205
215
  - `docs/reference/wave-control.md`
206
216
  ```
207
217
 
@@ -355,7 +365,8 @@ codex mcp list
355
365
  - [docs/plans/architecture-hardening-migration.md](./docs/plans/architecture-hardening-migration.md): historical record of the completed architecture hardening stages
356
366
  - [docs/plans/context7-wave-orchestrator.md](./docs/plans/context7-wave-orchestrator.md): Context7 setup and bundle authoring
357
367
  - [docs/reference/runtime-config/README.md](./docs/reference/runtime-config/README.md): executor, runtime, and skill-projection configuration
358
- - [docs/reference/wave-control.md](./docs/reference/wave-control.md): local-first telemetry contract and Railway control-plane model
368
+ - [docs/reference/corridor.md](./docs/reference/corridor.md): direct, brokered, and hybrid Corridor security context plus closure semantics
369
+ - [docs/reference/wave-control.md](./docs/reference/wave-control.md): local-first telemetry contract, owned deployment model, auth surfaces, and credential/broker routes
359
370
  - [docs/reference/package-publishing-flow.md](./docs/reference/package-publishing-flow.md): end-to-end package publishing flow, workflows, and lifecycle scripts
360
371
  - [docs/reference/proof-metrics.md](./docs/reference/proof-metrics.md): README failure cases mapped to concrete telemetry and benchmark evidence
361
372
  - [docs/reference/skills.md](./docs/reference/skills.md): skill bundle format, resolution order, and runtime projection
package/docs/README.md CHANGED
@@ -38,19 +38,23 @@ The useful path is journey-first:
38
38
  - Setting up multiple projects in one monorepo:
39
39
  Read [guides/monorepo-projects.md](./guides/monorepo-projects.md) for `defaultProject`, `projects.<projectId>`, project-scoped state paths, and telemetry defaults.
40
40
  - Adding an optional pre-implementation design steward:
41
- Read [guides/author-and-run-waves.md](./guides/author-and-run-waves.md), then the standing prompt in [agents/wave-design-role.md](./agents/wave-design-role.md). The shipped `0.9.1` surface includes `role-design` plus `tui-design`, with docs-first design stewards by default and explicit hybrid design stewards when a wave also gives that same agent code ownership.
41
+ Read [guides/author-and-run-waves.md](./guides/author-and-run-waves.md), then the standing prompt in [agents/wave-design-role.md](./agents/wave-design-role.md). The shipped `0.9.3` surface includes `role-design` plus `tui-design`, with docs-first design stewards by default and explicit hybrid design stewards when a wave also gives that same agent code ownership.
42
42
  - Running in LEAPclaw, OpenClaw, Nemoshell, Docker, or another short-lived sandbox:
43
43
  Read [guides/sandboxed-environments.md](./guides/sandboxed-environments.md) first for the submit or supervise pattern, persistent-state expectations, and dashboard guidance, then use [plans/sandbox-end-state-architecture.md](./plans/sandbox-end-state-architecture.md) for the deeper runtime design.
44
44
  - Want signal-driven automation or long-running watcher loops:
45
45
  Read [guides/signal-wrappers.md](./guides/signal-wrappers.md). It covers the seeded `wave-status.sh` and `wave-watch.sh` wrappers, the versioned signal snapshot files, and the ack-loop contract behind `signal-hygiene`.
46
46
  - Adding a security review pass:
47
- Read [plans/wave-orchestrator.md](./plans/wave-orchestrator.md) and the standing reviewer prompt in [agents/wave-security-role.md](./agents/wave-security-role.md).
47
+ Read [plans/wave-orchestrator.md](./plans/wave-orchestrator.md), the standing reviewer prompt in [agents/wave-security-role.md](./agents/wave-security-role.md), and [reference/corridor.md](./reference/corridor.md) if the lane also wants provider-backed security context.
48
+ - Running or self-hosting the control plane:
49
+ Read [reference/wave-control.md](./reference/wave-control.md) for the local-first telemetry contract plus the owned-deployment auth, broker, PAT, service-token, and credential-leasing model.
50
+ - Using Corridor-backed security context:
51
+ Read [reference/corridor.md](./reference/corridor.md) for the direct, broker, and hybrid modes, then [reference/coordination-and-closure.md](./reference/coordination-and-closure.md) for how Corridor interacts with human security review and closure ordering.
48
52
  - Upgrading an existing repo:
49
53
  Read [plans/migration.md](./plans/migration.md), then review the release notes in [../CHANGELOG.md](../CHANGELOG.md) before running `pnpm exec wave upgrade`.
50
54
  - Publishing the package:
51
55
  Read [reference/package-publishing-flow.md](./reference/package-publishing-flow.md) for the end-to-end release path, the GitHub publish workflows, the lifecycle scripts, and the verification or repair flow.
52
- - Want the practical `0.9.1` operating stance:
53
- Read [guides/recommendations-0.9.1.md](./guides/recommendations-0.9.1.md) for the recommended default around relaxed blocker states, advisory turn budgets, and targeted recovery.
56
+ - Want the practical `0.9.3` operating stance:
57
+ Read [guides/recommendations-0.9.3.md](./guides/recommendations-0.9.3.md) for the recommended default around relaxed blocker states, advisory turn budgets, and targeted recovery.
54
58
  - Want the concrete runtime module map:
55
59
  Read [plans/end-state-architecture.md](./plans/end-state-architecture.md) for the engine-by-engine architecture and artifact ownership model.
56
60
  - Want the CLI surface map:
@@ -16,6 +16,7 @@ Your job is to review the landed change set before integration closure, identify
16
16
 
17
17
  Operating rules:
18
18
  - Re-read the compiled shared summary, your inbox, the generated wave board projection, and the owned reports before major decisions.
19
+ - If a Corridor artifact path is present in your prompt, read it before final disposition and reconcile its matched findings with your report. Do not ignore a blocking Corridor result without explaining why it is not relevant to the implementation-owned paths for this wave.
19
20
  - Do a threat-model pass before finalizing conclusions. Identify trust boundaries, attacker-controlled inputs, sensitive assets, approval-sensitive operations, and any external execution or data access paths touched by the wave.
20
21
  - Prefer exact findings and exact requested fixes over vague warnings.
21
22
  - Route fixes to the owning agent when the required change is outside your report path.
@@ -1357,7 +1357,7 @@ The `wave-control-schema.mjs` module normalizes these entity types:
1357
1357
  "enabled": true,
1358
1358
  "endpoint": "https://wave-control.up.railway.app/api/v1",
1359
1359
  "reportMode": "metadata-only",
1360
- "authTokenEnv": "WAVE_CONTROL_AUTH_TOKEN"
1360
+ "authTokenEnvVar": "WAVE_API_TOKEN"
1361
1361
  }
1362
1362
  }
1363
1363
  ```
@@ -88,4 +88,4 @@ The current roadmap is a release-direction document, not a backlog of planner ph
88
88
  - typed values in planner output
89
89
  - better environment modeling
90
90
 
91
- The stricter execution semantics are still future work, not a hidden already-finished feature in `0.9.1`.
91
+ The stricter execution semantics are still future work, not a hidden already-finished feature in `0.9.2`.
@@ -74,7 +74,7 @@ Good fits:
74
74
  - multi-owner waves where downstream implementers need the same decisions and assumptions
75
75
  - ambiguous tasks where open questions should become explicit before code owners fan out
76
76
 
77
- The starter contract in `0.9.1` is:
77
+ The starter contract in `0.9.2` is:
78
78
 
79
79
  - import `docs/agents/wave-design-role.md`
80
80
  - own one packet such as `docs/plans/waves/design/wave-<n>-<agentId>.md`
@@ -6,7 +6,7 @@ If you want the full author-to-launch workflow, start with [author-and-run-waves
6
6
 
7
7
  It reduces repeated setup questions, stores project defaults, and generates wave specs plus markdown that already fit the launcher.
8
8
 
9
- The published `0.9.1` package already includes the optional `design` worker role for pre-implementation design packets. This guide calls out where that affects drafting.
9
+ The published `0.9.2` package already includes the optional `design` worker role for pre-implementation design packets. This guide calls out where that affects drafting.
10
10
 
11
11
  ## What Ships Today
12
12
 
@@ -48,7 +48,7 @@ pnpm exec wave launch --lane main --dry-run --no-dashboard
48
48
  - forward replanning of later waves
49
49
  - separate runtime enforcement for oversight vs dark-factory
50
50
 
51
- Those remain future work outside the current `0.9.1` release line. The planner foundation is about better structured authoring, not a second execution engine.
51
+ Those remain future work outside the current `0.9.2` release line. The planner foundation is about better structured authoring, not a second execution engine.
52
52
 
53
53
  ## Project Profile
54
54
 
@@ -1,15 +1,15 @@
1
1
  ---
2
- title: "0.9.1 Recommendations"
3
- summary: "How to use 0.9.1's softer blocker states, advisory turn budgets, and targeted recovery without weakening proof and closure."
2
+ title: "0.9.2 Recommendations"
3
+ summary: "How to use 0.9.2's softer blocker states, advisory turn budgets, and targeted recovery without weakening proof and closure."
4
4
  ---
5
5
 
6
- # 0.9.1 Recommendations
6
+ # 0.9.2 Recommendations
7
7
 
8
- Use this guide when you are adopting `0.9.1` and want one practical operating stance for the softer blocker states, advisory turn-budget behavior, and targeted recovery flow that the current package line ships.
8
+ Use this guide when you are adopting `0.9.2` and want one practical operating stance for the softer blocker states, advisory turn-budget behavior, and targeted recovery flow that the current package line ships.
9
9
 
10
10
  ## Recommended Default
11
11
 
12
- For most repos, the safest `0.9.1` default is:
12
+ For most repos, the safest `0.9.2` default is:
13
13
 
14
14
  - bound work with `budget.minutes`
15
15
  - leave generic `budget.turns` as advisory metadata
@@ -76,7 +76,7 @@ Only set a hard runtime ceiling when you deliberately want the runtime itself to
76
76
 
77
77
  ## 2. Softer Coordination States
78
78
 
79
- `0.9.1` keeps “still visible” separate from “still blocking”.
79
+ `0.9.2` keeps “still visible” separate from “still blocking”.
80
80
 
81
81
  Use these states intentionally:
82
82
 
@@ -112,7 +112,7 @@ If the current wave cannot truthfully close without the answer, keep it blocking
112
112
 
113
113
  ## 4. Recovery Recommendation
114
114
 
115
- My recommendation after reviewing the current `0.9.1` code path is:
115
+ My recommendation after reviewing the current `0.9.2` code path is:
116
116
 
117
117
  - let timeout, max-turn, rate-limit, and missing-status failures go through the built-in targeted recovery path first
118
118
  - inspect the queued rerun or resume request before manually relaunching the whole wave
@@ -0,0 +1,137 @@
1
+ ---
2
+ title: "0.9.3 Recommendations"
3
+ summary: "How to use 0.9.3's softer blocker states, advisory turn budgets, and targeted recovery without weakening proof and closure."
4
+ ---
5
+
6
+ # 0.9.3 Recommendations
7
+
8
+ Use this guide when you are adopting `0.9.3` and want one practical operating stance for the softer blocker states, advisory turn-budget behavior, and targeted recovery flow that the current package line ships.
9
+
10
+ ## Recommended Default
11
+
12
+ For most repos, the safest `0.9.3` default is:
13
+
14
+ - bound work with `budget.minutes`
15
+ - leave generic `budget.turns` as advisory metadata
16
+ - author non-proof follow-up as `soft`, `stale`, or `advisory` instead of silently treating every open record as a hard blocker
17
+ - use `resolve-policy` when the answer already exists in repo policy or shipped docs
18
+ - prefer targeted rerun or resume after timeout, max-turn, rate-limit, or missing-status outcomes instead of relaunching the whole wave
19
+ - in short-lived sandboxes, prefer `wave submit`, `wave supervise`, `wave status`, and `wave wait` instead of binding the full run to one client shell
20
+ - when a wave-gate dimension has a documented gap that is not an actionable blocker, use `gap` instead of `pass` or `blocked` — the runtime treats it as a conditional pass
21
+
22
+ That recommendation matches the runtime:
23
+
24
+ - executor launch metadata only emits hard turn-limit flags from `claude.maxTurns` or `opencode.steps`
25
+ - open `stale` and `advisory` coordination records stay visible without reopening the active blocking edge
26
+ - recoverable launcher failures queue targeted retry state instead of immediately escalating to broad terminal wave failure
27
+
28
+ ## 1. Budgets
29
+
30
+ Treat the two budget knobs differently:
31
+
32
+ - `budget.minutes` is the primary attempt budget
33
+ - generic `budget.turns` is only a planning hint
34
+ - `claude.maxTurns` or `opencode.steps` are the hard runtime ceilings when you actually want deterministic turn stopping
35
+
36
+ Recommended pattern for synthesis-heavy implementation or closure work:
37
+
38
+ ```json
39
+ {
40
+ "executors": {
41
+ "profiles": {
42
+ "implementation-default": {
43
+ "id": "claude",
44
+ "model": "claude-sonnet-4-6",
45
+ "budget": {
46
+ "minutes": 35,
47
+ "turns": 12
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ ```
54
+
55
+ In that pattern, `35` minutes is real policy. `12` turns is only guidance for planning and preview metadata.
56
+
57
+ Only set a hard runtime ceiling when you deliberately want the runtime itself to stop:
58
+
59
+ ```json
60
+ {
61
+ "executors": {
62
+ "profiles": {
63
+ "bounded-closure": {
64
+ "id": "claude",
65
+ "model": "claude-sonnet-4-6",
66
+ "budget": {
67
+ "minutes": 20
68
+ },
69
+ "claude": {
70
+ "maxTurns": 6
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ ## 2. Softer Coordination States
79
+
80
+ `0.9.2` keeps “still visible” separate from “still blocking”.
81
+
82
+ Use these states intentionally:
83
+
84
+ | State | Use it for | What the runtime does |
85
+ | --- | --- | --- |
86
+ | `soft` | follow-up that still matters but should not be treated like proof failure | remains visible and may still drive repair or retry targeting |
87
+ | `stale` | outdated clarification or blocker context kept for history | visible in control state, but does not reopen blocking by itself |
88
+ | `advisory` | known issue, note, or human context that should stay visible without blocking closure | visible in control state, but does not own the active blocking edge |
89
+
90
+ Practical command paths:
91
+
92
+ ```bash
93
+ pnpm exec wave control task act defer --lane main --wave 10 --id blocker-doc-follow-up
94
+ pnpm exec wave control task act mark-stale --lane main --wave 10 --id clarify-a7-rollout
95
+ pnpm exec wave control task act mark-advisory --lane main --wave 10 --id request-clarify-a7-rollout
96
+ pnpm exec wave control task act resolve-policy --lane main --wave 10 --id clarify-a7-rollout --detail "Policy already covered in the rollout guide."
97
+ ```
98
+
99
+ Use them when the repo already knows the answer, the remaining item is informational, or the follow-up should stay visible for the next wave without holding the current wave hostage.
100
+
101
+ ## 3. What Should Stay Hard
102
+
103
+ Do not relax everything.
104
+
105
+ Keep these hard or closure-critical unless you are intentionally changing wave policy:
106
+
107
+ - missing proof or required deliverables
108
+ - failed integration, documentation, or cont-QA closure gates
109
+ - real human-feedback or escalation requirements that block safe continuation
110
+ - requests or clarifications that still represent unresolved ownership or policy ambiguity for the current wave
111
+
112
+ Use `gap` in wave-gate markers when a dimension has a documented gap that is not actionable in the current wave. For example, `live=gap` is appropriate when an infrastructure topology constraint prevents full live validation but the constraint is known, documented, and does not represent a regression. Do not use `gap` to hide actual failures or unreviewed work.
113
+
114
+ If the current wave cannot truthfully close without the answer, keep it blocking.
115
+
116
+ ## 4. Recovery Recommendation
117
+
118
+ My recommendation after reviewing the current `0.9.3` code path is:
119
+
120
+ - let timeout, max-turn, rate-limit, and missing-status failures go through the built-in targeted recovery path first
121
+ - inspect the queued rerun or resume request before manually relaunching the whole wave
122
+ - preserve reusable proof from successful sibling owners whenever the reducer already identified it as reusable
123
+
124
+ That is the shape the launcher now prefers. It only broadens failure when the remaining blockers are still proof-critical or otherwise non-recoverable.
125
+
126
+ ## 5. Suggested Operator Policy
127
+
128
+ For most repo-owned runbooks:
129
+
130
+ - teach authors to use `budget.minutes` first
131
+ - teach operators to downgrade only non-proof follow-up
132
+ - treat `resolve-policy` as the preferred path when the answer already exists in docs or repo policy
133
+ - escalate to a full-wave rerun only after targeted recovery proves insufficient
134
+
135
+ If you want a single sentence policy:
136
+
137
+ > Keep proof and closure strict, keep generic turns advisory, and keep non-proof context visible without letting it accidentally own wave closure.
@@ -8,7 +8,7 @@ Typical examples:
8
8
  - Nemoshell or similar hosted terminal sandboxes
9
9
  - Docker or devcontainer setups where the client process is disposable but the workspace and state volume persist
10
10
 
11
- The core rule in `0.9.1` is simple:
11
+ The core rule in `0.9.3` is simple:
12
12
 
13
13
  - clients should be short-lived
14
14
  - supervision should be long-lived
@@ -94,7 +94,7 @@ If the sandbox only gives you short exec windows, `wave autonomous` should not b
94
94
 
95
95
  ## Docker And Containerized Setups
96
96
 
97
- Docker works well with the `0.9.1` process-backed runner model, but only if the state directories survive container restarts.
97
+ Docker works well with the `0.9.3` process-backed runner model, but only if the state directories survive container restarts.
98
98
 
99
99
  Recommended container posture:
100
100
 
@@ -1,12 +1,15 @@
1
1
  # Current State
2
2
 
3
- - The published package is `0.9.1`; that release keeps the shipped monorepo, design-role, and signal-hygiene surfaces, but now also moves live agent execution to detached process runners, reduces tmux and memory pressure during wide orchestration bursts, and hardens the sandbox-safe supervisor path for LEAPclaw, OpenClaw, Nemoshell, Docker, and similar short-lived exec environments.
3
+ - The published package is `0.9.3`; that release keeps the shipped monorepo, design-role, signal-hygiene, detached process-runner, and sandbox supervisor surfaces, and now also accepts `gap` as a valid wave-gate dimension value (alongside `pass`, `concerns`, and `blocked`) so that agents reporting a documented gap no longer trigger missing-wave-gate failures. First-time `wave launch` now auto-triggers `wave project setup` when no project profile exists, and the interactive setup flow shows descriptive help text and inline option explanations. The current authenticated Wave Control plus Corridor-backed security surface continues to ship in this repo.
4
4
  - The canonical shipped runtime architecture is documented in `docs/plans/end-state-architecture.md`; the sandbox-runtime companion is `docs/plans/sandbox-end-state-architecture.md`; historical cutover notes remain in `docs/plans/architecture-hardening-migration.md`.
5
5
  - The repository contains the published `@chllming/wave-orchestration` package plus the starter scaffold used by `wave init`.
6
6
  - The runtime is package-first and non-destructive for adopting repos: `wave init --adopt-existing` records existing repo-owned plans, waves, prompts, and config without overwriting them, and `wave upgrade` writes only `.wave/install-state.json` plus `.wave/upgrade-history/`.
7
- - The recommended `0.9.1` operating stance is documented in `docs/guides/recommendations-0.9.1.md`: keep proof and closure strict, keep generic `budget.turns` advisory, and use softer coordination states only for non-proof follow-up.
7
+ - The recommended `0.9.3` operating stance is documented in `docs/guides/recommendations-0.9.3.md`: keep proof and closure strict, keep generic `budget.turns` advisory, and use softer coordination states only for non-proof follow-up.
8
8
  - Sandbox-safe setup guidance now ships in `docs/guides/sandboxed-environments.md`: use `wave submit/supervise/status/wait/attach` for short-lived clients, keep `tmux` optional and dashboard-only, and preserve `.tmp/` plus `.wave/` when running inside Nemoshell or Docker.
9
9
  - Runtime launch entrypoints now perform a best-effort npmjs version check, cache the result under `.wave/package-update-check.json`, and point operators at `pnpm exec wave self-update` when a newer published package exists.
10
+ - The companion control plane now ships in two packages:
11
+ - `services/wave-control/` is the backend for typed telemetry, Stack-authenticated app users, Wave-managed approval states and provider grants, PATs, dedicated service tokens, encrypted per-user credential storage, runtime env leasing, and owned broker routes for Context7 or Corridor
12
+ - `services/wave-control-web/` is the Vite/Lit browser frontend that signs in through Stack, persists the browser session, exposes overview/runs/benchmarks/tokens, and adds superuser-only user, provider-grant, and write-only credential management
10
13
  - This source repo is itself kept as an adopted Wave workspace, so `node scripts/wave.mjs doctor --json` should pass from the repo root.
11
14
  - The default lane is `main`.
12
15
  - Planner foundation is now shipped:
@@ -55,6 +58,9 @@
55
58
  - authoritative proof registries projected to `.tmp/<lane>-wave-launcher/proof/` for compatibility, while preserving proof bundle lifecycle state so revoked or superseded operator evidence cannot keep satisfying closure
56
59
  - optional Wave Control telemetry under `.tmp/<lane>-wave-launcher/control-plane/telemetry/` for the implicit default project, or `.tmp/projects/<projectId>/<lane>-wave-launcher/control-plane/telemetry/` for explicit projects
57
60
  - packaged telemetry defaults now point at `https://wave-control.up.railway.app/api/v1` with `reportMode: metadata-only`, and repos must opt out explicitly if they do not want default project/lane/wave metadata delivery
61
+ - an optional `externalProviders.corridor` surface with `direct`, `broker`, and `hybrid` modes that writes `.tmp/<lane>-wave-launcher/security/wave-<n>-corridor.json` for the implicit default project, or `.tmp/projects/<projectId>/<lane>-wave-launcher/security/wave-<n>-corridor.json` for explicit projects
62
+ - closure-stage Corridor gating that can fail as `corridor-fetch-failed` or `corridor-blocked` before integration when the provider fetch fails or matched implementation-owned findings meet the configured threshold
63
+ - security and integration summaries that keep matched Corridor findings visible alongside the human security review instead of replacing the reviewer with provider output
58
64
  - reducer-driven live state snapshots plus persisted machine-readable shadow diffs for helper-assignment, blocker, contradiction, closure, and retry slices
59
65
  - reducer-authoritative helper-assignment blocking, retry target selection, and resume planning, with live gate and closure reads now driven from validated result envelopes
60
66
  - optional design agents that publish validated design packets under `docs/plans/waves/design/wave-<n>-<agent>.md`, gate implementation through `designGate`, and run before code-owning implementation agents
@@ -1,6 +1,6 @@
1
1
  # End-State Architecture
2
2
 
3
- This document describes the canonical architecture for the current Wave runtime. It is the authoritative reference for the engine boundaries, canonical authority set, and artifact ownership model that the shipped `0.9.1` surface now follows.
3
+ This document describes the canonical architecture for the current Wave runtime. It is the authoritative reference for the engine boundaries, canonical authority set, and artifact ownership model that the shipped `0.9.2` surface now follows.
4
4
 
5
5
  For the sandbox-specific execution model, including async supervisor ownership, daemon adoption goals, and forwarded closure-gap behavior, read [sandbox-end-state-architecture.md](./sandbox-end-state-architecture.md).
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Wave 12 - Optional Design Steward Handoff
2
2
 
3
- This is a showcase-first sample wave for the shipped `design` worker role in `0.9.1`.
3
+ This is a showcase-first sample wave for the shipped `design` worker role in `0.9.2`.
4
4
 
5
5
  This example demonstrates the docs-first design-steward path where a design packet is published before code-owning implementation begins.
6
6
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  This is a showcase-first sample wave.
4
4
 
5
- Use it as the single reference example for the current `0.9.1` Wave surface.
5
+ Use it as the single reference example for the current `0.9.2` Wave surface.
6
6
 
7
7
  It intentionally combines more sections than a normal production wave so one file can demonstrate:
8
8