@chllming/wave-orchestration 0.8.8 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/README.md +23 -8
- package/docs/README.md +5 -3
- package/docs/concepts/context7-vs-skills.md +1 -1
- package/docs/concepts/operating-modes.md +1 -1
- package/docs/concepts/what-is-a-wave.md +1 -1
- package/docs/guides/author-and-run-waves.md +14 -1
- package/docs/guides/monorepo-projects.md +226 -0
- package/docs/guides/planner.md +9 -2
- package/docs/guides/{recommendations-0.8.8.md → recommendations-0.9.0.md} +7 -7
- package/docs/plans/current-state.md +8 -6
- package/docs/plans/end-state-architecture.md +1 -1
- package/docs/plans/examples/wave-example-design-handoff.md +3 -1
- package/docs/plans/examples/wave-example-live-proof.md +6 -1
- package/docs/plans/examples/wave-example-rollout-fidelity.md +2 -0
- package/docs/plans/migration.md +21 -18
- package/docs/plans/wave-orchestrator.md +4 -4
- package/docs/reference/cli-reference.md +55 -51
- package/docs/reference/coordination-and-closure.md +1 -1
- package/docs/reference/npmjs-trusted-publishing.md +2 -2
- package/docs/reference/runtime-config/README.md +140 -12
- package/docs/reference/sample-waves.md +100 -5
- package/docs/reference/skills.md +1 -1
- package/docs/reference/wave-control.md +23 -5
- package/docs/roadmap.md +2 -2
- package/package.json +1 -1
- package/releases/manifest.json +37 -0
- package/scripts/wave-orchestrator/adhoc.mjs +49 -17
- package/scripts/wave-orchestrator/autonomous.mjs +49 -15
- package/scripts/wave-orchestrator/benchmark-external.mjs +23 -7
- package/scripts/wave-orchestrator/benchmark.mjs +33 -10
- package/scripts/wave-orchestrator/config.mjs +239 -24
- package/scripts/wave-orchestrator/control-cli.mjs +29 -23
- package/scripts/wave-orchestrator/coord-cli.mjs +22 -14
- package/scripts/wave-orchestrator/coordination-store.mjs +8 -0
- package/scripts/wave-orchestrator/dashboard-renderer.mjs +10 -3
- package/scripts/wave-orchestrator/dep-cli.mjs +47 -21
- package/scripts/wave-orchestrator/feedback.mjs +28 -11
- package/scripts/wave-orchestrator/human-input-resolution.mjs +5 -1
- package/scripts/wave-orchestrator/launcher.mjs +200 -112
- package/scripts/wave-orchestrator/planner.mjs +48 -27
- package/scripts/wave-orchestrator/project-profile.mjs +31 -8
- package/scripts/wave-orchestrator/proof-cli.mjs +18 -12
- package/scripts/wave-orchestrator/retry-cli.mjs +19 -13
- package/scripts/wave-orchestrator/shared.mjs +77 -14
- package/scripts/wave-orchestrator/traces.mjs +7 -0
- package/scripts/wave-orchestrator/wave-control-client.mjs +84 -16
- package/scripts/wave-orchestrator/wave-files.mjs +5 -1
- package/scripts/wave-orchestrator/wave-state-reducer.mjs +8 -1
|
@@ -5,6 +5,7 @@ This directory is the canonical reference for executor configuration in the pack
|
|
|
5
5
|
Use it when you need the full supported surface for:
|
|
6
6
|
|
|
7
7
|
- `wave.config.json`
|
|
8
|
+
- `defaultProject` and `projects.<projectId>`
|
|
8
9
|
- `lanes.<lane>.executors`
|
|
9
10
|
- `waveControl`
|
|
10
11
|
- `executors.profiles.<profile>`
|
|
@@ -55,6 +56,121 @@ Then Wave filters configured skills through each bundle's activation metadata. E
|
|
|
55
56
|
|
|
56
57
|
When retry-time fallback changes the runtime, Wave recomputes the effective skill set and rewrites the executor overlay before relaunch.
|
|
57
58
|
|
|
59
|
+
## Projects
|
|
60
|
+
|
|
61
|
+
Wave can run multiple project tracks from one monorepo.
|
|
62
|
+
|
|
63
|
+
- `defaultProject` selects the implicit project when a command does not pass `--project`
|
|
64
|
+
- `projects.<projectId>.rootDir` relocates that project's default docs root under the repo
|
|
65
|
+
- `projects.<projectId>.paths.*` can relocate that project's docs, launcher-state, terminal-registry, Context7 bundle index, benchmark catalog, and component-matrix surfaces
|
|
66
|
+
- `projects.<projectId>.lanes.<lane>` owns lane-local runtime, planner, skill, and Wave Control overrides
|
|
67
|
+
- legacy top-level `lanes` still work as the implicit default project for backwards compatibility
|
|
68
|
+
- an explicit unknown `--project` is an error; Wave no longer falls back to `defaultProject` for typoed project ids
|
|
69
|
+
|
|
70
|
+
Example:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"defaultProject": "app",
|
|
75
|
+
"projects": {
|
|
76
|
+
"app": {
|
|
77
|
+
"rootDir": ".",
|
|
78
|
+
"lanes": {
|
|
79
|
+
"main": {}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"service": {
|
|
83
|
+
"rootDir": "services/api",
|
|
84
|
+
"lanes": {
|
|
85
|
+
"main": {}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Supported `projects.<projectId>.paths.*` fields:
|
|
93
|
+
|
|
94
|
+
| Key | Purpose |
|
|
95
|
+
| --- | --- |
|
|
96
|
+
| `docsDir` | Project-local docs root used as the default base for docs, plans, waves, and matrix defaults |
|
|
97
|
+
| `stateRoot` | Base directory for launcher state, logs, overlays, telemetry, and projections |
|
|
98
|
+
| `orchestratorStateDir` | Base directory for project-scoped orchestrator message boards, feedback, and dependency state |
|
|
99
|
+
| `terminalsPath` | VS Code terminal registry written when `--terminal-surface vscode` is active |
|
|
100
|
+
| `context7BundleIndexPath` | Project-specific Context7 bundle index |
|
|
101
|
+
| `benchmarkCatalogPath` | Project-specific benchmark catalog for `cont-EVAL` and benchmark commands |
|
|
102
|
+
| `componentCutoverMatrixDocPath` | Project-specific component cutover matrix markdown |
|
|
103
|
+
| `componentCutoverMatrixJsonPath` | Project-specific component cutover matrix JSON |
|
|
104
|
+
|
|
105
|
+
Path resolution order:
|
|
106
|
+
|
|
107
|
+
1. lane-specific override such as `projects.<projectId>.lanes.<lane>.terminalsPath`
|
|
108
|
+
2. `projects.<projectId>.paths.*`
|
|
109
|
+
3. repo-global `paths.*`
|
|
110
|
+
4. built-in derived defaults for `docsDir`, `plansDir`, `wavesDir`, and matrix paths
|
|
111
|
+
|
|
112
|
+
Advanced monorepo example:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"defaultProject": "app",
|
|
117
|
+
"paths": {
|
|
118
|
+
"stateRoot": ".tmp",
|
|
119
|
+
"terminalsPath": ".vscode/terminals.json"
|
|
120
|
+
},
|
|
121
|
+
"projects": {
|
|
122
|
+
"app": {
|
|
123
|
+
"rootDir": ".",
|
|
124
|
+
"lanes": {
|
|
125
|
+
"main": {}
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"service": {
|
|
129
|
+
"rootDir": "services/api",
|
|
130
|
+
"paths": {
|
|
131
|
+
"docsDir": "services/api/docs",
|
|
132
|
+
"stateRoot": ".tmp/service-wave",
|
|
133
|
+
"orchestratorStateDir": ".tmp/service-orchestrator",
|
|
134
|
+
"terminalsPath": ".vscode/service-terminals.json",
|
|
135
|
+
"context7BundleIndexPath": "services/api/docs/context7/bundles.json",
|
|
136
|
+
"benchmarkCatalogPath": "services/api/docs/evals/benchmark-catalog.json",
|
|
137
|
+
"componentCutoverMatrixDocPath": "services/api/docs/plans/component-cutover-matrix.md",
|
|
138
|
+
"componentCutoverMatrixJsonPath": "services/api/docs/plans/component-cutover-matrix.json"
|
|
139
|
+
},
|
|
140
|
+
"waveControl": {
|
|
141
|
+
"projectId": "service-api",
|
|
142
|
+
"reportMode": "metadata-plus-selected"
|
|
143
|
+
},
|
|
144
|
+
"lanes": {
|
|
145
|
+
"main": {
|
|
146
|
+
"runtimePolicy": {
|
|
147
|
+
"defaultExecutorByRole": {
|
|
148
|
+
"design": "claude",
|
|
149
|
+
"implementation": "codex",
|
|
150
|
+
"integration": "claude",
|
|
151
|
+
"documentation": "claude",
|
|
152
|
+
"cont-qa": "claude",
|
|
153
|
+
"cont-eval": "codex"
|
|
154
|
+
},
|
|
155
|
+
"runtimeMixTargets": {
|
|
156
|
+
"codex": 4,
|
|
157
|
+
"claude": 3,
|
|
158
|
+
"opencode": 1
|
|
159
|
+
},
|
|
160
|
+
"fallbackExecutorOrder": ["claude", "opencode", "codex"]
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"release": {
|
|
164
|
+
"docsDir": "services/api/docs/release",
|
|
165
|
+
"plansDir": "services/api/docs/release/plans",
|
|
166
|
+
"wavesDir": "services/api/docs/release/plans/waves"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
58
174
|
## Common Fields
|
|
59
175
|
|
|
60
176
|
These fields are shared across runtimes:
|
|
@@ -74,7 +190,7 @@ Practical guidance:
|
|
|
74
190
|
- prefer `budget.minutes` for normal synthesis, integration, and closure work
|
|
75
191
|
- use generic `budget.turns` as a planning hint, not a hard failure trigger
|
|
76
192
|
- only set `claude.maxTurns` or `opencode.steps` when you deliberately want a hard ceiling for that runtime
|
|
77
|
-
- see [../../guides/recommendations-0.
|
|
193
|
+
- see [../../guides/recommendations-0.9.0.md](../../guides/recommendations-0.9.0.md) for the recommended `0.9.0` operating stance that combines advisory turn budgets with softer non-proof coordination states
|
|
78
194
|
|
|
79
195
|
## Runtime Pages
|
|
80
196
|
|
|
@@ -86,16 +202,25 @@ Practical guidance:
|
|
|
86
202
|
|
|
87
203
|
`wave.config.json` may also declare a `waveControl` block for local-first telemetry delivery.
|
|
88
204
|
|
|
205
|
+
Packaged defaults in `@chllming/wave-orchestration@0.9.0`:
|
|
206
|
+
|
|
207
|
+
- `endpoint`: `https://wave-control.up.railway.app/api/v1`
|
|
208
|
+
- `reportMode`: `metadata-only`
|
|
209
|
+
- `enabled`: `true`
|
|
210
|
+
- project-scoped telemetry identity defaults to the resolved `projectId`, then lane and wave metadata from the active run
|
|
211
|
+
|
|
212
|
+
This package is distributed with the author's personal Wave Control endpoint enabled by default. Anyone who does not want telemetry delivered back to that endpoint must explicitly opt out in config or per run.
|
|
213
|
+
|
|
89
214
|
Supported top-level fields:
|
|
90
215
|
|
|
91
216
|
| Key | Type | Default | Purpose |
|
|
92
217
|
| --- | --- | --- | --- |
|
|
93
218
|
| `enabled` | boolean | `true` | Master switch for local queueing and remote delivery |
|
|
94
|
-
| `endpoint` | string |
|
|
219
|
+
| `endpoint` | string | `https://wave-control.up.railway.app/api/v1` | Base URL for the Railway-hosted `services/wave-control` API |
|
|
95
220
|
| `workspaceId` | string | derived from repo path | Stable workspace identity used across runs |
|
|
96
|
-
| `projectId` | string |
|
|
221
|
+
| `projectId` | string | resolved project id | Stable project identity used for cross-workspace reporting and filtering |
|
|
97
222
|
| `authTokenEnvVar` | string | `WAVE_CONTROL_AUTH_TOKEN` | Environment variable name holding the bearer token |
|
|
98
|
-
| `reportMode` | string | `metadata-
|
|
223
|
+
| `reportMode` | string | `metadata-only` | `disabled`, `metadata-only`, `metadata-plus-selected`, or `full-artifact-upload` |
|
|
99
224
|
| `uploadArtifactKinds` | string[] | selected proof/trace/benchmark kinds | Artifact classes eligible for body upload when an artifact's upload policy requests a body |
|
|
100
225
|
| `requestTimeoutMs` | integer | `5000` | Per-batch network timeout |
|
|
101
226
|
| `flushBatchSize` | integer | `25` | Max queued telemetry events flushed per batch |
|
|
@@ -105,11 +230,13 @@ Supported top-level fields:
|
|
|
105
230
|
| `captureTraceBundles` | boolean | `true` | Emit finalized trace-bundle artifacts and gate snapshots |
|
|
106
231
|
| `captureBenchmarkRuns` | boolean | `true` | Emit `benchmark_run`, `benchmark_item`, `verification`, and `review` events |
|
|
107
232
|
|
|
108
|
-
Lane overrides may refine the same keys under `lanes.<lane>.waveControl`.
|
|
233
|
+
Lane overrides may refine the same keys under `lanes.<lane>.waveControl` or `projects.<projectId>.lanes.<lane>.waveControl`.
|
|
109
234
|
|
|
110
235
|
One-run override:
|
|
111
236
|
|
|
112
237
|
- `wave launch --no-telemetry` disables Wave Control queueing and remote delivery for that launcher invocation without changing the repo config.
|
|
238
|
+
- `waveControl.enabled: false` disables queueing and remote delivery for the repo or project.
|
|
239
|
+
- `waveControl.reportMode: "disabled"` disables remote reporting while leaving the config surface explicit.
|
|
113
240
|
|
|
114
241
|
Example:
|
|
115
242
|
|
|
@@ -118,8 +245,8 @@ Example:
|
|
|
118
245
|
"waveControl": {
|
|
119
246
|
"endpoint": "https://wave-control.up.railway.app/api/v1",
|
|
120
247
|
"workspaceId": "wave-main",
|
|
121
|
-
"projectId": "
|
|
122
|
-
"reportMode": "metadata-
|
|
248
|
+
"projectId": "app",
|
|
249
|
+
"reportMode": "metadata-only",
|
|
123
250
|
"uploadArtifactKinds": [
|
|
124
251
|
"trace-run-metadata",
|
|
125
252
|
"trace-quality",
|
|
@@ -143,8 +270,8 @@ See [../wave-control.md](../wave-control.md) for the event contract and upload-p
|
|
|
143
270
|
|
|
144
271
|
Wave writes runtime artifacts here:
|
|
145
272
|
|
|
146
|
-
- live runs: `.tmp/<lane>-wave-launcher/executors/wave-<n>/<agent-slug>/`
|
|
147
|
-
- dry-run previews: `.tmp/<lane>-wave-launcher/dry-run/executors/wave-<n>/<agent-slug>/`
|
|
273
|
+
- live runs: `.tmp/<lane>-wave-launcher/executors/wave-<n>/<agent-slug>/` for the implicit default project, or `.tmp/projects/<projectId>/<lane>-wave-launcher/executors/wave-<n>/<agent-slug>/` for explicit projects
|
|
274
|
+
- dry-run previews: `.tmp/<lane>-wave-launcher/dry-run/executors/wave-<n>/<agent-slug>/` for the implicit default project, or `.tmp/projects/<projectId>/<lane>-wave-launcher/dry-run/executors/wave-<n>/<agent-slug>/` for explicit projects
|
|
148
275
|
|
|
149
276
|
Common files:
|
|
150
277
|
|
|
@@ -157,9 +284,10 @@ Common files:
|
|
|
157
284
|
- `claude-settings.json`: generated Claude settings overlay when inline settings data is present
|
|
158
285
|
- `opencode-agent-prompt.txt`: generated OpenCode harness prompt overlay
|
|
159
286
|
- `opencode.json`: generated OpenCode runtime config overlay
|
|
160
|
-
- `.tmp/<lane>-wave-launcher/control-plane/telemetry/events.jsonl`: local-first Wave Control event stream
|
|
161
|
-
- `.tmp/<lane>-wave-launcher/control-plane/telemetry/
|
|
162
|
-
- `.tmp
|
|
287
|
+
- `.tmp/<lane>-wave-launcher/control-plane/telemetry/events.jsonl`: local-first Wave Control event stream for the implicit default project
|
|
288
|
+
- `.tmp/projects/<projectId>/<lane>-wave-launcher/control-plane/telemetry/events.jsonl`: same stream for explicit projects
|
|
289
|
+
- `.tmp/.../control-plane/telemetry/pending/`: queued event batches awaiting remote delivery
|
|
290
|
+
- `.tmp/.../control-plane/telemetry/delivery-state.json`: remote-delivery counters and last-error state
|
|
163
291
|
|
|
164
292
|
Runtime-specific delivery:
|
|
165
293
|
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Sample Waves"
|
|
3
|
-
summary: "Showcase-first sample waves that demonstrate the shipped 0.
|
|
3
|
+
summary: "Showcase-first sample waves that demonstrate the shipped 0.9.0 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.
|
|
8
|
+
This guide points to showcase-first sample waves that demonstrate the shipped `0.9.0` 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
|
|
|
12
|
+
All example `.tmp/main-wave-launcher/...` paths assume the implicit default project. For explicit monorepo projects, rewrite those to `.tmp/projects/<projectId>/main-wave-launcher/...` and run the matching commands with `--project <projectId>`.
|
|
13
|
+
|
|
12
14
|
## Canonical Examples
|
|
13
15
|
|
|
14
16
|
- [High-fidelity repo-landed rollout wave](../plans/examples/wave-example-rollout-fidelity.md)
|
|
15
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.
|
|
16
18
|
|
|
17
19
|
- [Full modern sample wave](../plans/examples/wave-example-live-proof.md)
|
|
18
|
-
Shows the combined `0.
|
|
20
|
+
Shows the combined `0.9.0` 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.
|
|
19
21
|
|
|
20
22
|
- [Optional design-steward handoff wave](../plans/examples/wave-example-design-handoff.md)
|
|
21
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.
|
|
@@ -39,10 +41,12 @@ The examples are intentionally denser than typical production waves. Their job i
|
|
|
39
41
|
- deploy environments and provider-skill examples
|
|
40
42
|
- infra and deploy-verifier specialist slices
|
|
41
43
|
- optional pre-implementation design packets and design-to-implementation handoff
|
|
44
|
+
- security review before integration closure
|
|
45
|
+
- project-aware adaptation for launcher-owned `.tmp/...` paths
|
|
42
46
|
|
|
43
47
|
## Feature Coverage Map
|
|
44
48
|
|
|
45
|
-
Together these samples cover the main surfaces added or hardened through `0.
|
|
49
|
+
Together these samples cover the main surfaces added or hardened through `0.9.0`:
|
|
46
50
|
|
|
47
51
|
- repo-landed maturity discipline and anti-overclaim framing
|
|
48
52
|
- explicit shared-plan closure for future-wave safety
|
|
@@ -59,9 +63,100 @@ Together these samples cover the main surfaces added or hardened through `0.8.8`
|
|
|
59
63
|
- sticky retry for proof-bearing owners
|
|
60
64
|
- proof-first live-wave prompts
|
|
61
65
|
- deploy environments and deploy-kind-aware skills
|
|
66
|
+
- optional security review before integration closure
|
|
67
|
+
- custom closure-role ids when a repo does not want the starter `A0`/`E0`/`A8`/`A9`/`A7` names
|
|
68
|
+
- signal-driven long-running watcher agents through `signal-hygiene`
|
|
69
|
+
- explicit-project launcher-state path rewrites for monorepos
|
|
62
70
|
- integration, documentation, and cont-QA closure-role structure
|
|
63
71
|
- optional `design` worker role and `design-pass` executor profile
|
|
64
72
|
|
|
73
|
+
## Targeted Snippets For Narrower Surfaces
|
|
74
|
+
|
|
75
|
+
Some current features are real parts of the authored surface, but they do not belong in every full-length teaching wave. Use these snippets when you need those narrower shapes.
|
|
76
|
+
|
|
77
|
+
### Custom Closure Role Ids
|
|
78
|
+
|
|
79
|
+
Wave resolves closure roles from the wave definition first, then from starter defaults. You can keep the same closure semantics while changing the ids:
|
|
80
|
+
|
|
81
|
+
```md
|
|
82
|
+
## Agent Q4: cont-QA
|
|
83
|
+
|
|
84
|
+
### Role prompts
|
|
85
|
+
|
|
86
|
+
- docs/agents/wave-cont-qa-role.md
|
|
87
|
+
|
|
88
|
+
## Agent V2: cont-EVAL
|
|
89
|
+
|
|
90
|
+
### Role prompts
|
|
91
|
+
|
|
92
|
+
- docs/agents/wave-cont-eval-role.md
|
|
93
|
+
|
|
94
|
+
## Agent I6: Integration Steward
|
|
95
|
+
|
|
96
|
+
### Role prompts
|
|
97
|
+
|
|
98
|
+
- docs/agents/wave-integration-role.md
|
|
99
|
+
|
|
100
|
+
## Agent D8: Documentation Steward
|
|
101
|
+
|
|
102
|
+
### Role prompts
|
|
103
|
+
|
|
104
|
+
- docs/agents/wave-documentation-role.md
|
|
105
|
+
|
|
106
|
+
## Agent S3: Security Review
|
|
107
|
+
|
|
108
|
+
### Role prompts
|
|
109
|
+
|
|
110
|
+
- docs/agents/wave-security-role.md
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Keep the role prompt and closure meaning aligned even when the ids change. Launch, retry, derived state, and closure sequencing will honor the wave-level bindings.
|
|
114
|
+
|
|
115
|
+
### Long-Running Watchers With `signal-hygiene`
|
|
116
|
+
|
|
117
|
+
Use `signal-hygiene` only for intentionally long-running non-resident agents that should wait on orchestrator-written signal changes instead of inventing their own polling protocol.
|
|
118
|
+
|
|
119
|
+
````md
|
|
120
|
+
## Agent R5: Runtime Watcher
|
|
121
|
+
|
|
122
|
+
### Executor
|
|
123
|
+
|
|
124
|
+
- id: codex
|
|
125
|
+
- retry-policy: sticky
|
|
126
|
+
|
|
127
|
+
### Skills
|
|
128
|
+
|
|
129
|
+
- role-research
|
|
130
|
+
- runtime-codex
|
|
131
|
+
- signal-hygiene
|
|
132
|
+
|
|
133
|
+
### Prompt
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
Primary goal:
|
|
137
|
+
- Stay alive between orchestrator signal changes and only resume work after acknowledging the next visible signal version.
|
|
138
|
+
|
|
139
|
+
Specific expectations:
|
|
140
|
+
- use the prompt-visible signal state path and ack path exactly as provided
|
|
141
|
+
- do not create a second polling file or custom wakeup loop
|
|
142
|
+
- emit normal structured coordination records when new evidence or blockers appear
|
|
143
|
+
```
|
|
144
|
+
````
|
|
145
|
+
|
|
146
|
+
Pair that snippet with [signal-wrappers.md](../guides/signal-wrappers.md) when shell automation or external wait loops also need to observe the same signal surface.
|
|
147
|
+
|
|
148
|
+
### Project-Aware Launcher-Owned Paths
|
|
149
|
+
|
|
150
|
+
When copying a proof-first example into an explicit monorepo project, update launcher-owned file paths as well as the runtime command:
|
|
151
|
+
|
|
152
|
+
```md
|
|
153
|
+
File ownership (only touch these paths):
|
|
154
|
+
- .tmp/projects/service/main-wave-launcher/integration/wave-14.md
|
|
155
|
+
- .tmp/projects/service/main-wave-launcher/integration/wave-14.json
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
The same rewrite applies to proof bundles, logs, dashboards, coordination state, and telemetry spools under `.tmp/<lane>-wave-launcher/...`.
|
|
159
|
+
|
|
65
160
|
## When To Copy Literally Vs Adapt
|
|
66
161
|
|
|
67
162
|
Copy more literally when:
|
|
@@ -89,7 +184,7 @@ Adapt more aggressively when:
|
|
|
89
184
|
## Suggested Reading Order
|
|
90
185
|
|
|
91
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.
|
|
92
|
-
2. Read [Full modern sample wave](../plans/examples/wave-example-live-proof.md) if you want the denser proof-first and eval-heavy `0.
|
|
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.0` surface.
|
|
93
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.
|
|
94
189
|
4. Read [docs/evals/README.md](../evals/README.md) if you want more background on benchmark target selection.
|
|
95
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.
|
|
127
|
+
Optional design workers in the shipped `0.9.0` 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
|
|
|
@@ -129,7 +129,6 @@ Upload policy meanings:
|
|
|
129
129
|
|
|
130
130
|
- `local-only`: keep only the descriptor remotely
|
|
131
131
|
- `metadata-only`: report path, hash, size, and presence only
|
|
132
|
-
- `selected`: upload metadata plus the artifact body when the runtime is in `metadata-plus-selected`
|
|
133
132
|
- `selected`: upload metadata plus the artifact body when the runtime is in `metadata-plus-selected` or `full-artifact-upload` **and** the artifact kind is allowed by `waveControl.uploadArtifactKinds`
|
|
134
133
|
- `full`: upload the artifact body in `full-artifact-upload` flows; if `uploadArtifactKinds` is set, keep the kind allowlist aligned with that policy
|
|
135
134
|
|
|
@@ -142,9 +141,9 @@ Upload policy meanings:
|
|
|
142
141
|
"waveControl": {
|
|
143
142
|
"endpoint": "https://wave-control.up.railway.app/api/v1",
|
|
144
143
|
"workspaceId": "my-workspace",
|
|
145
|
-
"projectId": "
|
|
144
|
+
"projectId": "app",
|
|
146
145
|
"authTokenEnvVar": "WAVE_CONTROL_AUTH_TOKEN",
|
|
147
|
-
"reportMode": "metadata-
|
|
146
|
+
"reportMode": "metadata-only",
|
|
148
147
|
"uploadArtifactKinds": [
|
|
149
148
|
"trace-run-metadata",
|
|
150
149
|
"trace-quality",
|
|
@@ -154,7 +153,16 @@ Upload policy meanings:
|
|
|
154
153
|
}
|
|
155
154
|
```
|
|
156
155
|
|
|
157
|
-
|
|
156
|
+
Packaged defaults:
|
|
157
|
+
|
|
158
|
+
- endpoint: `https://wave-control.up.railway.app/api/v1`
|
|
159
|
+
- enabled: `true`
|
|
160
|
+
- report mode: `metadata-only`
|
|
161
|
+
- identity defaults to the resolved project, lane, wave, run kind, and run id
|
|
162
|
+
|
|
163
|
+
This package is distributed with the author's personal Wave Control endpoint enabled by default. Repos that do not want telemetry delivered there must explicitly opt out.
|
|
164
|
+
|
|
165
|
+
Lane overrides may refine the same surface under `lanes.<lane>.waveControl` or `projects.<projectId>.lanes.<lane>.waveControl`.
|
|
158
166
|
|
|
159
167
|
For a single run, operators can disable Wave Control reporting entirely with:
|
|
160
168
|
|
|
@@ -162,6 +170,16 @@ For a single run, operators can disable Wave Control reporting entirely with:
|
|
|
162
170
|
pnpm exec wave launch --lane main --no-telemetry
|
|
163
171
|
```
|
|
164
172
|
|
|
173
|
+
Repo or project config may also opt out with:
|
|
174
|
+
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"waveControl": {
|
|
178
|
+
"enabled": false
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
165
183
|
That suppresses the local telemetry spool and remote delivery for that invocation, while leaving the canonical runtime artifacts and local control-plane state intact.
|
|
166
184
|
|
|
167
185
|
## Delivery Model
|
|
@@ -169,7 +187,7 @@ That suppresses the local telemetry spool and remote delivery for that invocatio
|
|
|
169
187
|
Wave Control reporting should:
|
|
170
188
|
|
|
171
189
|
- append local telemetry first
|
|
172
|
-
- queue pending uploads under `.tmp/<lane>-wave-launcher/control-plane/telemetry/`
|
|
190
|
+
- queue pending uploads 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
|
|
173
191
|
- respect `waveControl.uploadArtifactKinds` before uploading any selected artifact body
|
|
174
192
|
- cap pending remote uploads with `waveControl.maxPendingEvents` by dropping the oldest queued remote-delivery files, while keeping the local `events.jsonl` stream intact
|
|
175
193
|
- retry delivery with idempotency keys
|
package/docs/roadmap.md
CHANGED
|
@@ -49,7 +49,7 @@ Generated waves and transient ad-hoc runs should default to these sections when
|
|
|
49
49
|
|
|
50
50
|
Status: shipped in `0.5.4`.
|
|
51
51
|
|
|
52
|
-
- Add saved project bootstrap memory in `.wave/project-profile.json`.
|
|
52
|
+
- Add saved project bootstrap memory in `.wave/project-profile.json` for the implicit default project, with project-scoped profiles under `.wave/projects/<projectId>/project-profile.json` for explicit monorepo projects.
|
|
53
53
|
- Ask once whether the repo is a new project and keep that answer for future drafts.
|
|
54
54
|
- Add `wave project setup` and `wave project show`.
|
|
55
55
|
- Add interactive `wave draft` that writes:
|
|
@@ -91,7 +91,7 @@ Behavior:
|
|
|
91
91
|
Storage model:
|
|
92
92
|
|
|
93
93
|
- do not write ad-hoc runs into the canonical numbered wave sequence under `docs/plans/waves/`
|
|
94
|
-
- store the original request, generated spec, rendered markdown, and final result under `.wave/adhoc
|
|
94
|
+
- store the original request, generated spec, rendered markdown, and final result under `.wave/adhoc/<projectId>/runs/<run-id>/` for explicit projects, while the implicit default project keeps the legacy layout
|
|
95
95
|
- keep runtime state isolated under `.tmp/<lane>-wave-launcher/adhoc/<run-id>/`
|
|
96
96
|
- extend trace metadata with `runKind: adhoc` and `runId`
|
|
97
97
|
|
package/package.json
CHANGED
package/releases/manifest.json
CHANGED
|
@@ -2,6 +2,43 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"packageName": "@chllming/wave-orchestration",
|
|
4
4
|
"releases": [
|
|
5
|
+
{
|
|
6
|
+
"version": "0.9.0",
|
|
7
|
+
"date": "2026-03-28",
|
|
8
|
+
"summary": "First-class monorepo project support, project-aware runtime isolation, default Wave Control metadata delivery, and 0.9.0 release-surface alignment.",
|
|
9
|
+
"features": [
|
|
10
|
+
"Wave configs can now declare `defaultProject` and `projects.<projectId>`, so one repo can host multiple projects with isolated lane roots, docs roots, planner defaults, and runtime state.",
|
|
11
|
+
"Lane-scoped CLI surfaces now accept `--project`, including launch, autonomous, dashboard, control, coordination, dependencies, ad-hoc work, proof, retry, feedback, drafting, and benchmarks.",
|
|
12
|
+
"Planner defaults, ad-hoc runs, dependency tickets, tmux naming, launcher state, and benchmark identity are now project-aware, which prevents same-lane-name collisions in monorepos.",
|
|
13
|
+
"Wave Control now defaults to `https://wave-control.up.railway.app/api/v1` with `reportMode: \"metadata-only\"`, and benchmark plus runtime metadata now include project, lane, and wave identity unless explicitly opted out.",
|
|
14
|
+
"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.",
|
|
15
|
+
"README, current-state notes, migration guidance, runtime-config docs, coordination docs, the new monorepo guide, the versioned recommendations guide, release manifest, and tracked install-state fixtures now all point at the `0.9.0` package surface."
|
|
16
|
+
],
|
|
17
|
+
"manualSteps": [
|
|
18
|
+
"Run `pnpm exec wave doctor` and `pnpm exec wave launch --lane main --dry-run --no-dashboard` after upgrading so the repo validates against the `0.9.0` release surface.",
|
|
19
|
+
"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/guides/monorepo-projects.md`, and `docs/guides/recommendations-0.9.0.md` so local guidance matches the packaged release.",
|
|
20
|
+
"If your repo copied starter `wave.config.json` defaults or automation around lane-only state paths, update them for `defaultProject`, `projects.<projectId>`, project-scoped `.wave/projects/<projectId>/project-profile.json`, project-scoped ad-hoc storage, and explicit telemetry opt-out controls before relying on monorepo behavior."
|
|
21
|
+
],
|
|
22
|
+
"breaking": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"version": "0.8.9",
|
|
26
|
+
"date": "2026-03-27",
|
|
27
|
+
"summary": "Design-gate report-path preservation, accurate post-design failure reporting, trace-summary alignment, and 0.8.9 release-surface sync.",
|
|
28
|
+
"features": [
|
|
29
|
+
"Reducer snapshots now preserve design packet report paths when rebuilding summaries from result envelopes, so `designGate` no longer reopens as `missing-design-packet` after a successful design pass.",
|
|
30
|
+
"Launcher transitions after design-only passes now stop on the actual design-gate blocker and record a design-specific blocker instead of falling through to a misleading downstream implementation `missing-result-envelope` error.",
|
|
31
|
+
"Trace bundle summary reconstruction now also resolves design packet report paths, so copied trace summaries stay aligned when design summaries are rebuilt from logs.",
|
|
32
|
+
"README, current-state notes, migration guidance, release manifest, tracked install-state fixtures, and the versioned recommendations guide now all point at the `0.8.9` package surface.",
|
|
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
|
+
"Run `pnpm exec wave doctor` and `pnpm exec wave launch --lane main --dry-run --no-dashboard` after upgrading so the repo validates against the `0.8.9` release surface.",
|
|
37
|
+
"If your repo copied current-surface 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`, and `docs/guides/recommendations-0.8.9.md` so local guidance matches the packaged release.",
|
|
38
|
+
"If your repo copied trace or replay helpers around design packets, sync the updated reducer, launcher, and trace-summary reconstruction behavior before relying on rebuilt design summaries in replay tooling."
|
|
39
|
+
],
|
|
40
|
+
"breaking": false
|
|
41
|
+
},
|
|
5
42
|
{
|
|
6
43
|
"version": "0.8.8",
|
|
7
44
|
"date": "2026-03-27",
|