@chllming/wave-orchestration 0.5.3 → 0.6.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 +53 -3
- package/README.md +81 -506
- package/docs/README.md +53 -0
- package/docs/agents/wave-cont-eval-role.md +36 -0
- package/docs/agents/{wave-evaluator-role.md → wave-cont-qa-role.md} +14 -11
- package/docs/agents/wave-documentation-role.md +1 -1
- package/docs/agents/wave-infra-role.md +1 -1
- package/docs/agents/wave-integration-role.md +3 -3
- package/docs/agents/wave-launcher-role.md +4 -3
- package/docs/agents/wave-security-role.md +40 -0
- package/docs/concepts/context7-vs-skills.md +94 -0
- package/docs/concepts/operating-modes.md +91 -0
- package/docs/concepts/runtime-agnostic-orchestration.md +95 -0
- package/docs/concepts/what-is-a-wave.md +183 -0
- package/docs/evals/README.md +166 -0
- package/docs/evals/benchmark-catalog.json +663 -0
- package/docs/guides/author-and-run-waves.md +135 -0
- package/docs/guides/planner.md +118 -0
- package/docs/guides/terminal-surfaces.md +82 -0
- package/docs/image.png +0 -0
- package/docs/plans/component-cutover-matrix.json +1 -1
- package/docs/plans/component-cutover-matrix.md +1 -1
- package/docs/plans/context7-wave-orchestrator.md +2 -0
- package/docs/plans/current-state.md +29 -1
- package/docs/plans/examples/wave-example-live-proof.md +435 -0
- package/docs/plans/master-plan.md +3 -3
- package/docs/plans/migration.md +46 -3
- package/docs/plans/wave-orchestrator.md +71 -8
- package/docs/plans/waves/wave-0.md +4 -4
- package/docs/reference/live-proof-waves.md +177 -0
- package/docs/reference/migration-0.2-to-0.5.md +26 -19
- package/docs/reference/npmjs-trusted-publishing.md +6 -5
- package/docs/reference/runtime-config/README.md +29 -0
- package/docs/reference/sample-waves.md +87 -0
- package/docs/reference/skills.md +224 -0
- package/docs/research/agent-context-sources.md +130 -11
- package/docs/research/coordination-failure-review.md +266 -0
- package/docs/roadmap.md +164 -564
- package/package.json +3 -2
- package/releases/manifest.json +37 -2
- package/scripts/research/agent-context-archive.mjs +83 -1
- package/scripts/research/manifests/agent-context-expanded-2026-03-22.mjs +811 -0
- package/scripts/wave-orchestrator/adhoc.mjs +1331 -0
- package/scripts/wave-orchestrator/agent-state.mjs +358 -6
- package/scripts/wave-orchestrator/artifact-schemas.mjs +173 -0
- package/scripts/wave-orchestrator/clarification-triage.mjs +10 -3
- package/scripts/wave-orchestrator/config.mjs +65 -12
- package/scripts/wave-orchestrator/context7.mjs +11 -0
- package/scripts/wave-orchestrator/coord-cli.mjs +51 -19
- package/scripts/wave-orchestrator/coordination-store.mjs +26 -4
- package/scripts/wave-orchestrator/coordination.mjs +99 -9
- package/scripts/wave-orchestrator/dashboard-state.mjs +20 -8
- package/scripts/wave-orchestrator/dep-cli.mjs +5 -2
- package/scripts/wave-orchestrator/docs-queue.mjs +8 -2
- package/scripts/wave-orchestrator/evals.mjs +451 -0
- package/scripts/wave-orchestrator/executors.mjs +24 -11
- package/scripts/wave-orchestrator/feedback.mjs +15 -1
- package/scripts/wave-orchestrator/install.mjs +69 -7
- package/scripts/wave-orchestrator/launcher-closure.mjs +281 -0
- package/scripts/wave-orchestrator/launcher-runtime.mjs +334 -0
- package/scripts/wave-orchestrator/launcher.mjs +778 -577
- package/scripts/wave-orchestrator/ledger.mjs +123 -20
- package/scripts/wave-orchestrator/local-executor.mjs +99 -12
- package/scripts/wave-orchestrator/planner.mjs +1463 -0
- package/scripts/wave-orchestrator/project-profile.mjs +190 -0
- package/scripts/wave-orchestrator/replay.mjs +6 -3
- package/scripts/wave-orchestrator/role-helpers.mjs +84 -0
- package/scripts/wave-orchestrator/shared.mjs +77 -11
- package/scripts/wave-orchestrator/skills.mjs +979 -0
- package/scripts/wave-orchestrator/terminals.mjs +16 -0
- package/scripts/wave-orchestrator/traces.mjs +73 -27
- package/scripts/wave-orchestrator/wave-files.mjs +1224 -163
- package/scripts/wave.mjs +20 -0
- package/skills/README.md +202 -0
- package/skills/provider-aws/SKILL.md +117 -0
- package/skills/provider-aws/adapters/claude.md +1 -0
- package/skills/provider-aws/adapters/codex.md +1 -0
- package/skills/provider-aws/references/service-verification.md +39 -0
- package/skills/provider-aws/skill.json +54 -0
- package/skills/provider-custom-deploy/SKILL.md +64 -0
- package/skills/provider-custom-deploy/skill.json +50 -0
- package/skills/provider-docker-compose/SKILL.md +96 -0
- package/skills/provider-docker-compose/adapters/local.md +1 -0
- package/skills/provider-docker-compose/skill.json +53 -0
- package/skills/provider-github-release/SKILL.md +121 -0
- package/skills/provider-github-release/adapters/claude.md +1 -0
- package/skills/provider-github-release/adapters/codex.md +1 -0
- package/skills/provider-github-release/skill.json +55 -0
- package/skills/provider-kubernetes/SKILL.md +143 -0
- package/skills/provider-kubernetes/adapters/claude.md +1 -0
- package/skills/provider-kubernetes/adapters/codex.md +1 -0
- package/skills/provider-kubernetes/references/kubectl-patterns.md +58 -0
- package/skills/provider-kubernetes/skill.json +52 -0
- package/skills/provider-railway/SKILL.md +123 -0
- package/skills/provider-railway/adapters/claude.md +1 -0
- package/skills/provider-railway/adapters/codex.md +1 -0
- package/skills/provider-railway/adapters/local.md +1 -0
- package/skills/provider-railway/adapters/opencode.md +1 -0
- package/skills/provider-railway/references/verification-commands.md +39 -0
- package/skills/provider-railway/skill.json +71 -0
- package/skills/provider-ssh-manual/SKILL.md +97 -0
- package/skills/provider-ssh-manual/skill.json +54 -0
- package/skills/repo-coding-rules/SKILL.md +91 -0
- package/skills/repo-coding-rules/skill.json +34 -0
- package/skills/role-cont-eval/SKILL.md +90 -0
- package/skills/role-cont-eval/adapters/codex.md +1 -0
- package/skills/role-cont-eval/skill.json +36 -0
- package/skills/role-cont-qa/SKILL.md +93 -0
- package/skills/role-cont-qa/adapters/claude.md +1 -0
- package/skills/role-cont-qa/skill.json +36 -0
- package/skills/role-deploy/SKILL.md +96 -0
- package/skills/role-deploy/skill.json +36 -0
- package/skills/role-documentation/SKILL.md +72 -0
- package/skills/role-documentation/skill.json +36 -0
- package/skills/role-implementation/SKILL.md +68 -0
- package/skills/role-implementation/skill.json +36 -0
- package/skills/role-infra/SKILL.md +80 -0
- package/skills/role-infra/skill.json +36 -0
- package/skills/role-integration/SKILL.md +84 -0
- package/skills/role-integration/skill.json +36 -0
- package/skills/role-research/SKILL.md +64 -0
- package/skills/role-research/skill.json +36 -0
- package/skills/role-security/SKILL.md +60 -0
- package/skills/role-security/skill.json +36 -0
- package/skills/runtime-claude/SKILL.md +65 -0
- package/skills/runtime-claude/skill.json +36 -0
- package/skills/runtime-codex/SKILL.md +57 -0
- package/skills/runtime-codex/skill.json +36 -0
- package/skills/runtime-local/SKILL.md +44 -0
- package/skills/runtime-local/skill.json +36 -0
- package/skills/runtime-opencode/SKILL.md +57 -0
- package/skills/runtime-opencode/skill.json +36 -0
- package/skills/wave-core/SKILL.md +114 -0
- package/skills/wave-core/references/marker-syntax.md +62 -0
- package/skills/wave-core/skill.json +35 -0
- package/wave.config.json +61 -5
|
@@ -2,23 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
The Wave Orchestrator coordinates repository work as bounded execution waves.
|
|
4
4
|
|
|
5
|
+
For the broader docs map, concept pages, and workflow guides, start at [docs/README.md](../README.md).
|
|
6
|
+
|
|
5
7
|
## What It Does
|
|
6
8
|
|
|
7
9
|
- parses wave plans from `docs/plans/waves/`
|
|
10
|
+
- supports transient ad-hoc runs from `.wave/adhoc/runs/` on the same launcher substrate
|
|
8
11
|
- fans a wave out into one session per `## Agent ...` section
|
|
9
12
|
- supports standing role imports from `docs/agents/*.md`
|
|
10
13
|
- seeds a coordination log, generated board, compiled shared summary, and per-agent inboxes
|
|
11
|
-
- derives a per-wave ledger, docs queue, integration summary, and versioned per-attempt trace bundle
|
|
14
|
+
- derives a per-wave ledger, security summary, docs queue, integration summary, and versioned per-attempt trace bundle
|
|
15
|
+
- versions the runtime JSON surfaces that operators and replay tooling consume, including manifests, dashboards, relaunch plans, assignment snapshots, dependency snapshots, and run-state
|
|
12
16
|
- validates Context7 declarations and exit contracts from configurable wave thresholds
|
|
13
17
|
- validates component promotions and component-owned proof from configurable wave thresholds
|
|
14
18
|
- writes prompts, logs, dashboards, coordination state, and status summaries under `.tmp/`
|
|
15
19
|
- supports launcher-side Context7 prefetch and injection for headless runs
|
|
16
20
|
- supports headless execution through `codex`, `claude`, `opencode`, and the local smoke executor
|
|
21
|
+
- can retry rate-limited `codex`, `claude`, and `opencode` launches with per-agent exponential backoff via `--agent-rate-limit-*`
|
|
17
22
|
- supports a file-backed human feedback queue
|
|
18
|
-
- performs a closure sweep so integration, documentation, and
|
|
23
|
+
- performs a closure sweep so optional `cont-EVAL`, optional security review, integration, documentation, and cont-QA gates reflect final landed state
|
|
19
24
|
|
|
20
25
|
## Main Commands
|
|
21
26
|
|
|
27
|
+
- `pnpm exec wave project setup`
|
|
28
|
+
- `pnpm exec wave project show --json`
|
|
29
|
+
- `pnpm exec wave draft --wave 1 --template implementation`
|
|
30
|
+
- `pnpm exec wave adhoc plan --task "patch the planner output"`
|
|
31
|
+
- `pnpm exec wave adhoc run --task "patch the planner output" --yes`
|
|
32
|
+
- `pnpm exec wave adhoc show --run <id>`
|
|
33
|
+
- `pnpm exec wave adhoc promote --run <id> --wave 4`
|
|
22
34
|
- `pnpm exec wave init`
|
|
23
35
|
- `pnpm exec wave init --adopt-existing`
|
|
24
36
|
- `pnpm exec wave doctor`
|
|
@@ -37,10 +49,32 @@ The Wave Orchestrator coordinates repository work as bounded execution waves.
|
|
|
37
49
|
|
|
38
50
|
## Configuration
|
|
39
51
|
|
|
40
|
-
- `wave.config.json` controls docs roots, shared plan docs, role prompts, validation thresholds, executor defaults, executor profiles, per-lane runtime policy, component-cutover matrix paths, capability-routing preferences, and Context7 bundle-index location.
|
|
52
|
+
- `wave.config.json` controls docs roots, shared plan docs, role prompts, validation thresholds, executor defaults, executor profiles, per-lane runtime policy, skill attachment policy, component-cutover matrix paths, capability-routing preferences, and Context7 bundle-index location. The starter config also wires the optional security reviewer prompt at `docs/agents/wave-security-role.md` and the `security-review` executor profile.
|
|
41
53
|
- `docs/context7/bundles.json` controls allowed external library bundles and lane defaults.
|
|
54
|
+
- `docs/evals/README.md` explains how to author delegated versus pinned `## Eval targets`, including the coordination-oriented benchmark families.
|
|
55
|
+
- `docs/reference/live-proof-waves.md` explains how to author proof-first `pilot-live` and higher-maturity waves with `### Proof artifacts`, sticky executors, and operator command capture.
|
|
56
|
+
- `docs/reference/sample-waves.md` points to showcase-first sample waves that combine the modern authored wave surface in concrete examples.
|
|
42
57
|
- `docs/plans/component-cutover-matrix.json` is the canonical machine-readable source for component maturity and per-wave promotion targets.
|
|
43
58
|
- `.wave/install-state.json` records how the workspace was initialized and which package version is installed.
|
|
59
|
+
- `.wave/project-profile.json` records planner defaults such as oversight mode, terminal surface, and deploy-environment memory.
|
|
60
|
+
- `.wave/adhoc/runs/<run-id>/` stores transient ad-hoc request, spec, rendered markdown, and result artifacts.
|
|
61
|
+
- ad-hoc documentation closure always writes `.wave/adhoc/runs/<run-id>/reports/`, but shared-plan deltas still queue the canonical lane shared-plan docs.
|
|
62
|
+
- ad-hoc task ownership inference only accepts repo-local paths; URLs and other external references are ignored.
|
|
63
|
+
- `wave adhoc promote` promotes the stored ad-hoc spec into `docs/plans/waves/` instead of re-reading the current project profile.
|
|
64
|
+
|
|
65
|
+
## Skill Packs
|
|
66
|
+
|
|
67
|
+
- Wave skill bundles live under `skills/<skill-id>/`.
|
|
68
|
+
- Each bundle requires `skill.json` and `SKILL.md`.
|
|
69
|
+
- Bundles can also include runtime adapters at `adapters/<runtime>.md` for `codex`, `claude`, `opencode`, or `local`.
|
|
70
|
+
- The starter config resolves skills in this order: global base, lane base, global role map, lane role map, global runtime map, lane runtime map, global deploy-kind map, lane deploy-kind map, then explicit per-agent `### Skills`.
|
|
71
|
+
- The effective skill set is recomputed after final executor resolution, including retry-time runtime fallback, so a fallback from one runtime to another also swaps runtime-specific skill overlays.
|
|
72
|
+
- Starter bundles in this repo cover:
|
|
73
|
+
- core Wave coordination and repo coding rules
|
|
74
|
+
- runtime packs for Codex, Claude, OpenCode, and local execution
|
|
75
|
+
- role packs for implementation, `cont-EVAL`, security review, integration, documentation, cont-QA, infra, deploy, and research work
|
|
76
|
+
- deploy and environment packs for Railway, Docker Compose, Kubernetes, SSH/manual rollout, and generic custom deploys
|
|
77
|
+
- explicit provider packs for GitHub release flow and AWS norms when a wave or lane wants to attach them
|
|
44
78
|
|
|
45
79
|
## Setup
|
|
46
80
|
|
|
@@ -48,7 +82,7 @@ The Wave Orchestrator coordinates repository work as bounded execution waves.
|
|
|
48
82
|
2. Confirm `tmux` and at least one real executor (`codex`, `claude`, or `opencode`) are available if you want real wave execution.
|
|
49
83
|
3. Run `pnpm exec wave init` for a fresh repo, or `pnpm exec wave init --adopt-existing` for a repo with existing Wave files you want preserved.
|
|
50
84
|
4. Review [wave.config.json](../../wave.config.json).
|
|
51
|
-
5. Review the role prompts and docs you want the repo to own.
|
|
85
|
+
5. Review the role prompts, starter `skills/` bundles, and docs you want the repo to own.
|
|
52
86
|
|
|
53
87
|
## Recommended Launch Flow
|
|
54
88
|
|
|
@@ -81,7 +115,7 @@ pnpm exec wave launch --lane main --start-wave 0 --end-wave 0 --executor codex -
|
|
|
81
115
|
|
|
82
116
|
## Coordination Surfaces
|
|
83
117
|
|
|
84
|
-
- `wave coord show`
|
|
118
|
+
- `wave coord show` is a read-only view of the materialized coordination state for a wave.
|
|
85
119
|
- `wave coord render` regenerates the markdown board projection from the canonical coordination log.
|
|
86
120
|
- `wave coord inbox` writes the compiled shared summary plus the selected agent inbox.
|
|
87
121
|
- `wave coord post` appends a structured record to the coordination log. This is the machine-readable path for blockers, handoffs, evidence, targeted requests, and clarification requests.
|
|
@@ -129,11 +163,14 @@ pnpm exec wave changelog --since-installed
|
|
|
129
163
|
- prompts: `.tmp/<lane>-wave-launcher/prompts/`
|
|
130
164
|
- logs: `.tmp/<lane>-wave-launcher/logs/`
|
|
131
165
|
- status summaries: `.tmp/<lane>-wave-launcher/status/`
|
|
166
|
+
`run-state.json` keeps compatibility `completedWaves`, but now also stores per-wave current state plus append-only transition history and completion or blocker evidence. Relaunch plans in this directory are schema-versioned.
|
|
132
167
|
- coordination logs: `.tmp/<lane>-wave-launcher/coordination/`
|
|
133
168
|
- helper-assignment snapshots: `.tmp/<lane>-wave-launcher/assignments/`
|
|
134
169
|
- message boards: `.tmp/<lane>-wave-launcher/messageboards/`
|
|
135
170
|
- compiled inboxes: `.tmp/<lane>-wave-launcher/inboxes/`
|
|
136
171
|
- ledger: `.tmp/<lane>-wave-launcher/ledger/`
|
|
172
|
+
- security summaries: `.tmp/<lane>-wave-launcher/security/`
|
|
173
|
+
The launcher writes `wave-<n>.json` and `wave-<n>.md` summaries here, and the starter planner also places the reviewer-owned security report in this directory.
|
|
137
174
|
- integration summaries: `.tmp/<lane>-wave-launcher/integration/`
|
|
138
175
|
These summaries now carry actionable evidence for conflicting claims, changed interfaces, cross-component impacts, proof gaps, documentation gaps, and deploy or ops risk.
|
|
139
176
|
- dependency snapshots: `.tmp/<lane>-wave-launcher/dependencies/`
|
|
@@ -141,12 +178,18 @@ pnpm exec wave changelog --since-installed
|
|
|
141
178
|
- trace bundles: `.tmp/<lane>-wave-launcher/traces/`
|
|
142
179
|
- clarification triage: `.tmp/<lane>-wave-launcher/feedback/triage/`
|
|
143
180
|
- dashboards: `.tmp/<lane>-wave-launcher/dashboards/`
|
|
181
|
+
Dashboard JSON is a versioned contract. `global.json` and `wave-<n>.json` now carry explicit `schemaVersion` and `kind` fields.
|
|
144
182
|
- Context7 cache: `.tmp/<lane>-wave-launcher/context7-cache/`
|
|
145
183
|
- executor overlays: `.tmp/<lane>-wave-launcher/executors/`
|
|
184
|
+
Each agent overlay can include `skills.resolved.md`, `skills.metadata.json`, and `<runtime>-skills.txt` in addition to the runtime-specific executor files.
|
|
146
185
|
- cross-lane dependencies: `.tmp/wave-orchestrator/dependencies/`
|
|
147
186
|
Required inbound tickets in this directory block both autonomous wave launch and lane finalization until they resolve.
|
|
148
187
|
- cross-wave orchestration board: `.tmp/wave-orchestrator/messageboards/orchestrator.md`
|
|
149
188
|
|
|
189
|
+
Ad-hoc runs mirror the same state shape under `.tmp/<lane>-wave-launcher/adhoc/<run-id>/`, including dry-run previews at `.tmp/<lane>-wave-launcher/adhoc/<run-id>/dry-run/`. Their docs queue can still point at canonical shared-plan docs when the run reports a shared-plan delta.
|
|
190
|
+
|
|
191
|
+
The launcher entrypoint in `scripts/wave-orchestrator/launcher.mjs` now delegates session launch or wait mechanics to `launcher-runtime.mjs` and closure-sweep sequencing to `launcher-closure.mjs`. The CLI and `traceVersion: 2` replay contract stay unchanged.
|
|
192
|
+
|
|
150
193
|
## Trace Contract
|
|
151
194
|
|
|
152
195
|
- Dry-run is pre-attempt only. It writes manifest, coordination, board projection, inboxes, ledger, docs queue, and integration state under `.tmp/<lane>-wave-launcher/dry-run/`.
|
|
@@ -157,6 +200,7 @@ pnpm exec wave changelog --since-installed
|
|
|
157
200
|
- `coordination.materialized.json`
|
|
158
201
|
- `ledger.json`
|
|
159
202
|
- `docs-queue.json`
|
|
203
|
+
- `security.json`
|
|
160
204
|
- `integration.json`
|
|
161
205
|
- `outcome.json`
|
|
162
206
|
- `shared-summary.md`
|
|
@@ -164,9 +208,10 @@ pnpm exec wave changelog --since-installed
|
|
|
164
208
|
- `structured-signals.json`
|
|
165
209
|
- `quality.json`
|
|
166
210
|
- `run-metadata.json`
|
|
167
|
-
- `run-metadata.json` is the canonical trace index. It records attempt settings, artifact presence, executor history, prompt hashes, Context7 snippet hashes, the gate snapshot, `replayContext`, and the cumulative `historySnapshot` for that attempt.
|
|
211
|
+
- `run-metadata.json` is the canonical trace index. It records attempt settings, artifact presence, executor history, prompt hashes, Context7 snippet hashes, resolved skill ids and bundle metadata, the gate snapshot, `replayContext`, and the cumulative `historySnapshot` for that attempt.
|
|
168
212
|
- `outcome.json` is the stored replay baseline. Replay compares recomputed gates and quality against it instead of trusting only inline metadata.
|
|
169
213
|
- For `traceVersion: 2`, launched agents must have copied prompt/log/status/inbox/summary artifacts, and promoted-component waves must include the copied component matrix JSON.
|
|
214
|
+
- `security.json` stores the derived per-wave security state that feeds integration summaries, gate snapshots, and replay.
|
|
170
215
|
- `quality.json` is cumulative through the current attempt. It is intended for regression comparison, not only for one-shot pass/fail reporting.
|
|
171
216
|
- `quality.json` also reports capability-assignment and dependency-resolution metrics in addition to the Phase 2/3 communication, fallback, and closure metrics.
|
|
172
217
|
- Replay support is internal. The source tree contains helpers to load, validate, and replay trace bundles against the same gate logic the launcher uses, but there is no public replay CLI yet.
|
|
@@ -174,18 +219,27 @@ pnpm exec wave changelog --since-installed
|
|
|
174
219
|
|
|
175
220
|
## Authoring Rules
|
|
176
221
|
|
|
177
|
-
- Every wave must include the configured
|
|
222
|
+
- Every wave must include the configured cont-QA agent.
|
|
178
223
|
- Under the starter config, every wave must also include the configured integration steward and documentation steward.
|
|
179
224
|
- From the configured thresholds onward, declare `## Component promotions` and keep them aligned with the component cutover matrix.
|
|
180
225
|
- From the configured thresholds onward, every non-A0/A8/A9 agent must declare `### Components` and emit `[wave-component]` markers for those components.
|
|
181
226
|
- `### Capabilities` is optional and lets the scheduler route targeted follow-up work by capability.
|
|
182
227
|
- `### Deliverables` is optional and lets a wave declare exact repo-relative file outputs that must exist, and that stay within the agent's declared file ownership, before an implementation agent can satisfy its exit contract.
|
|
228
|
+
- `### Skills` is optional and adds explicit skill ids from `skills/` on top of the lane, role, runtime, and deploy-kind defaults.
|
|
183
229
|
- `### Executor` can declare `profile`, `fallbacks`, `tags`, and runtime budgets in addition to vendor-specific overrides.
|
|
230
|
+
- `### Proof artifacts` is optional for repo-only waves and recommended for `pilot-live` and above; use it to declare machine-visible local evidence required for closure.
|
|
231
|
+
- `## Deploy environments` lets the wave declare named deployment targets. The default deploy environment kind is also used for deploy-kind skill attachment.
|
|
184
232
|
- Lane runtime policy can assign a default executor by role even when the wave omits `### Executor`.
|
|
185
233
|
- Use `### Role prompts` for standing-role imports from `docs/agents/*.md`.
|
|
234
|
+
- Optional security review is declared by importing `docs/agents/wave-security-role.md` on a report-owning reviewer agent. The starter planner uses a report path under `.tmp/<lane>-wave-launcher/security/` and the `security-review` executor profile.
|
|
235
|
+
- A security reviewer must own at least one security report path. Any owned `.md` or `.txt` path containing `security` is accepted by the validator.
|
|
236
|
+
- Security reviewers are report-only by default. They should route fixes to the owning implementation agent instead of taking over product-code ownership.
|
|
237
|
+
- Security closure requires one final structured marker: `[wave-security] state=<clear|concerns|blocked> findings=<n> approvals=<n> detail=<short-note>`.
|
|
186
238
|
- Optional standing roles available in this repo include `docs/agents/wave-infra-role.md` for infra proof and `docs/agents/wave-deploy-verifier-role.md` for rollout verification.
|
|
187
239
|
- Keep file ownership explicit inside each `### Prompt`.
|
|
188
240
|
- From the configured thresholds onward, declare `## Context7 defaults`, per-agent `### Context7`, and per-agent `### Exit contract`.
|
|
241
|
+
- For benchmark-family guidance and delegated-versus-pinned eval examples, see [docs/evals/README.md](../evals/README.md).
|
|
242
|
+
- For proof-first live-wave patterns, sticky retry guidance, and `### Proof artifacts` examples, see [docs/reference/live-proof-waves.md](../reference/live-proof-waves.md).
|
|
189
243
|
- Agents should use `wave coord post` for durable blockers, handoffs, evidence, and requests instead of relying on ad hoc board edits.
|
|
190
244
|
- Keep shared plan docs and the component cutover matrix owned by the configured documentation steward once that rule becomes active.
|
|
191
245
|
- Use the runtime reference pages for the full executor surface instead of relying on this runbook to enumerate every key:
|
|
@@ -202,6 +256,8 @@ pnpm exec wave changelog --since-installed
|
|
|
202
256
|
- `--executor local` exists only for smoke-testing prompt and closure behavior.
|
|
203
257
|
- `--codex-sandbox danger-full-access` is the default because it avoids host bubblewrap assumptions.
|
|
204
258
|
- Resolution order is: per-agent explicit executor id, executor profile id, lane role default, CLI `--executor`, then `executors.default`.
|
|
259
|
+
- The starter config includes a `security-review` profile for the optional security reviewer. It is intended for read-heavy closure passes and pairs with `docs/agents/wave-security-role.md`.
|
|
260
|
+
- Skills resolve only after that executor choice is known. Runtime-specific skill overlays are regenerated whenever retry-time fallback changes the selected executor.
|
|
205
261
|
- Runtime mix targets are enforced before launch and again before any retry-time fallback reassignment.
|
|
206
262
|
- Fallbacks are declared in profiles or lane policy, can be applied automatically on retry when the next executor is available and still satisfies mix targets, and are recorded in the ledger, integration summary, and traces when used.
|
|
207
263
|
- Generic `budget.minutes` caps per-agent attempt timeouts. Generic `budget.turns` seeds `claude.maxTurns` and `opencode.steps` when executor-specific values are not set.
|
|
@@ -252,4 +308,11 @@ pnpm exec wave feedback respond --id <request-id> --response "..."
|
|
|
252
308
|
|
|
253
309
|
## Closure Sweep
|
|
254
310
|
|
|
255
|
-
If implementation agents ran, the launcher does not stop at `exit 0`. It checks implementation exit contracts, promoted component proof, helper assignments, required dependencies, and the integration recommendation first. Documentation and
|
|
311
|
+
If implementation agents ran, the launcher does not stop at `exit 0`. It checks implementation exit contracts, promoted component proof, helper assignments, required dependencies, and the integration recommendation first. When present, `cont-EVAL` must satisfy its declared eval targets before integration can close. Optional security review then runs before integration so the reviewer can publish findings and approval-sensitive actions while the wave is still active. In the default planner shape `E0` is report-only; if a wave explicitly assigns `E0` non-report files, the launcher also applies the normal implementation proof gates to that role. Security reviewers stay report-only by default. Documentation and cont-QA closure only run after integration is explicitly ready for doc closure; if `cont-EVAL`, security review, or integration reports more work, or if helper assignments or required dependency tickets remain open, the wave stops there and retries only the implicated owners plus the relevant closure steward.
|
|
312
|
+
|
|
313
|
+
Live closure is fail-closed:
|
|
314
|
+
|
|
315
|
+
- `cont-EVAL` PASS requires a report artifact plus a structured `[wave-eval]` marker whose `target_ids` exactly matches the wave contract and whose `benchmark_ids` stays within the declared benchmark catalog surface.
|
|
316
|
+
- Security review requires a report artifact plus a structured `[wave-security]` marker. `state=blocked` stops the wave before integration, while `state=concerns` is preserved in summaries and traces without automatically failing closure.
|
|
317
|
+
- `cont-QA` PASS requires both the final verdict and the final `[wave-gate]` marker.
|
|
318
|
+
- Legacy evaluator-era or underspecified closure artifacts are still readable in replay and trace analysis, but they no longer satisfy live completion.
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
- bundle: node-typescript
|
|
13
13
|
- query: "Node.js and TypeScript basics for orchestrator maintenance"
|
|
14
14
|
|
|
15
|
-
## Agent A0:
|
|
15
|
+
## Agent A0: cont-QA
|
|
16
16
|
|
|
17
17
|
### Role prompts
|
|
18
18
|
|
|
19
|
-
- docs/agents/wave-
|
|
19
|
+
- docs/agents/wave-cont-qa-role.md
|
|
20
20
|
|
|
21
21
|
### Executor
|
|
22
22
|
|
|
@@ -42,7 +42,7 @@ Required context before coding:
|
|
|
42
42
|
- Read docs/plans/master-plan.md, docs/plans/current-state.md, and docs/plans/migration.md.
|
|
43
43
|
|
|
44
44
|
File ownership (only touch these paths):
|
|
45
|
-
- docs/plans/waves/reviews/wave-0-
|
|
45
|
+
- docs/plans/waves/reviews/wave-0-cont-qa.md
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
## Agent A8: Integration Steward
|
|
@@ -70,7 +70,7 @@ File ownership (only touch these paths):
|
|
|
70
70
|
### Prompt
|
|
71
71
|
|
|
72
72
|
```text
|
|
73
|
-
Synthesize the wave before documentation and
|
|
73
|
+
Synthesize the wave before documentation and cont-QA closure.
|
|
74
74
|
|
|
75
75
|
Required context before coding:
|
|
76
76
|
- Read docs/reference/repository-guidance.md.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Live Proof Waves"
|
|
3
|
+
summary: "How to author proof-first `pilot-live` and higher-maturity waves with explicit proof artifacts, sticky executors, and operator-visible closure evidence."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Live Proof Waves
|
|
7
|
+
|
|
8
|
+
`pilot-live`, `fleet-ready`, `cutover-ready`, and `deprecation-ready` waves are not normal repo-only implementation waves.
|
|
9
|
+
|
|
10
|
+
For these waves:
|
|
11
|
+
|
|
12
|
+
- operator-run commands are part of closure
|
|
13
|
+
- local proof artifacts are part of closure
|
|
14
|
+
- stale success is dangerous
|
|
15
|
+
- sticky executors are safer than loose retry fallback
|
|
16
|
+
- targeted reruns after new proof arrives are normal
|
|
17
|
+
|
|
18
|
+
## Core Rule
|
|
19
|
+
|
|
20
|
+
Repo-landed waves can stay repo-centric.
|
|
21
|
+
|
|
22
|
+
`pilot-live` and above should be proof-centric.
|
|
23
|
+
|
|
24
|
+
That means the wave should declare:
|
|
25
|
+
|
|
26
|
+
- the exact proof owner
|
|
27
|
+
- the exact operator command sequence
|
|
28
|
+
- the exact artifact bundle written locally
|
|
29
|
+
- the exact proof surfaces that closure should trust
|
|
30
|
+
|
|
31
|
+
For a full authored example wave that uses this pattern, see [docs/reference/sample-waves.md](./sample-waves.md) and the linked proof-first live-wave sample.
|
|
32
|
+
|
|
33
|
+
## Recommended Authoring Pattern
|
|
34
|
+
|
|
35
|
+
For live-proof owners:
|
|
36
|
+
|
|
37
|
+
- declare `### Deliverables` for the review/report surface
|
|
38
|
+
- declare `### Proof artifacts` for machine-visible local evidence
|
|
39
|
+
- keep the executor sticky unless fallback is explicitly required
|
|
40
|
+
- prefer wall-clock budgets over tiny hard turn caps
|
|
41
|
+
|
|
42
|
+
Example:
|
|
43
|
+
|
|
44
|
+
````md
|
|
45
|
+
## Agent A6: Learning Plane Live Validation
|
|
46
|
+
|
|
47
|
+
### Executor
|
|
48
|
+
|
|
49
|
+
- id: codex
|
|
50
|
+
- retry-policy: sticky
|
|
51
|
+
- budget.minutes: 30
|
|
52
|
+
|
|
53
|
+
### Exit contract
|
|
54
|
+
|
|
55
|
+
- completion: live
|
|
56
|
+
- durability: durable
|
|
57
|
+
- proof: live
|
|
58
|
+
- doc-impact: owned
|
|
59
|
+
|
|
60
|
+
### Deliverables
|
|
61
|
+
|
|
62
|
+
- docs/plans/waves/reviews/wave-8-live-proof.md
|
|
63
|
+
|
|
64
|
+
### Proof artifacts
|
|
65
|
+
|
|
66
|
+
- path: .tmp/wave-8-learning-proof/learning-plane-before-restart.json | kind: live-status | required-for: pilot-live
|
|
67
|
+
- path: .tmp/wave-8-learning-proof/learning-plane-after-restart.json | kind: restart-check | required-for: pilot-live
|
|
68
|
+
- path: .tmp/wave-8-learning-proof/learning-vector-manifest.json | kind: manifest | required-for: pilot-live
|
|
69
|
+
|
|
70
|
+
### Prompt
|
|
71
|
+
```text
|
|
72
|
+
Operator command sequence:
|
|
73
|
+
- leapctl learning status --json > .tmp/wave-8-learning-proof/learning-plane-before-restart.json
|
|
74
|
+
- leapctl learning restart ...
|
|
75
|
+
- leapctl learning status --json > .tmp/wave-8-learning-proof/learning-plane-after-restart.json
|
|
76
|
+
|
|
77
|
+
Closure only counts when the declared proof artifacts exist locally and match the claimed live state.
|
|
78
|
+
|
|
79
|
+
File ownership (only touch these paths):
|
|
80
|
+
- .tmp/wave-8-learning-proof/
|
|
81
|
+
- docs/plans/waves/reviews/wave-8-live-proof.md
|
|
82
|
+
```
|
|
83
|
+
````
|
|
84
|
+
|
|
85
|
+
## `### Proof artifacts`
|
|
86
|
+
|
|
87
|
+
Use `### Proof artifacts` for the local machine-visible evidence that must exist before closure can trust a live claim.
|
|
88
|
+
|
|
89
|
+
Supported shape:
|
|
90
|
+
|
|
91
|
+
```md
|
|
92
|
+
### Proof artifacts
|
|
93
|
+
|
|
94
|
+
- path: .tmp/example/live-status.json | kind: live-status | required-for: pilot-live
|
|
95
|
+
- path: .tmp/example/after-restart.json | kind: restart-check | required-for: pilot-live
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Guidance:
|
|
99
|
+
|
|
100
|
+
- keep artifact paths repo-relative
|
|
101
|
+
- keep artifact paths inside the agent's owned paths
|
|
102
|
+
- use one file per important proof surface
|
|
103
|
+
- prefer canonical JSON or markdown artifacts over ad hoc screenshots or ephemeral terminal output
|
|
104
|
+
|
|
105
|
+
## Retry And Executor Guidance
|
|
106
|
+
|
|
107
|
+
For proof-bearing owners, default to sticky retry:
|
|
108
|
+
|
|
109
|
+
```md
|
|
110
|
+
### Executor
|
|
111
|
+
|
|
112
|
+
- id: codex
|
|
113
|
+
- retry-policy: sticky
|
|
114
|
+
- budget.minutes: 45
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Only enable cross-executor retry when there is a deliberate reason to do so.
|
|
118
|
+
|
|
119
|
+
If you do allow fallback, declare it explicitly:
|
|
120
|
+
|
|
121
|
+
```md
|
|
122
|
+
### Executor
|
|
123
|
+
|
|
124
|
+
- id: codex
|
|
125
|
+
- retry-policy: fallback-allowed
|
|
126
|
+
- fallbacks: claude
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## What Closure Should Trust
|
|
130
|
+
|
|
131
|
+
Closure roles should trust:
|
|
132
|
+
|
|
133
|
+
- declared proof artifacts that exist locally
|
|
134
|
+
- structured markers
|
|
135
|
+
- integration summaries grounded in current artifacts
|
|
136
|
+
|
|
137
|
+
Closure roles should not trust:
|
|
138
|
+
|
|
139
|
+
- implied host state
|
|
140
|
+
- stale cached snapshots
|
|
141
|
+
- repo-local inference when the wave claims live proof
|
|
142
|
+
- old `status=0` results that no longer match the current proof surface
|
|
143
|
+
|
|
144
|
+
## Targeted Reruns
|
|
145
|
+
|
|
146
|
+
When new proof artifacts arrive after an earlier failed attempt, the right response is usually a targeted rerun, not a full implementation replay.
|
|
147
|
+
|
|
148
|
+
Typical pattern:
|
|
149
|
+
|
|
150
|
+
1. operator captures the missing proof bundle locally
|
|
151
|
+
2. the proof owner reruns on the same executor
|
|
152
|
+
3. any stale synthesis or integration owner reruns if needed
|
|
153
|
+
4. already-valid implementation slices stay reused
|
|
154
|
+
|
|
155
|
+
## Suggested Eval Targets For Live-Proof Waves
|
|
156
|
+
|
|
157
|
+
Good live-proof waves often pair the proof owner with `cont-EVAL` targets that check coordination quality as well as service behavior.
|
|
158
|
+
|
|
159
|
+
Useful examples:
|
|
160
|
+
|
|
161
|
+
```md
|
|
162
|
+
## Eval targets
|
|
163
|
+
|
|
164
|
+
- id: blackboard-fidelity | selection: delegated | benchmark-family: blackboard-fidelity | objective: Preserve machine-visible proof through summaries and integration | threshold: Critical live proof facts remain visible through closure
|
|
165
|
+
- id: contradiction-recovery | selection: pinned | benchmarks: claim-conflict-detection,evidence-based-repair | objective: Surface and repair conflicting live claims before PASS | threshold: Material contradictions become explicit repair work before final closure
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Promotion-Level Guidance
|
|
169
|
+
|
|
170
|
+
- `pilot-live`
|
|
171
|
+
Require explicit proof artifacts and prefer sticky executors for proof owners.
|
|
172
|
+
- `fleet-ready`
|
|
173
|
+
Require the `pilot-live` discipline plus stronger infra/deploy readiness evidence.
|
|
174
|
+
- `cutover-ready`
|
|
175
|
+
Require the `fleet-ready` discipline plus explicit rollback or cutover evidence.
|
|
176
|
+
|
|
177
|
+
The important principle is that higher maturity should mean stronger machine-visible proof, not just more prose.
|
|
@@ -8,6 +8,13 @@ summary: "How to migrate a repository from the earlier 0.2 wave baseline to the
|
|
|
8
8
|
This guide explains how to migrate a repository from the earlier Wave
|
|
9
9
|
Orchestration 0.2 baseline to the current post-roadmap Wave model.
|
|
10
10
|
|
|
11
|
+
Current mainline note:
|
|
12
|
+
|
|
13
|
+
- legacy `evaluator` terminology has been retired in favor of `cont-QA`
|
|
14
|
+
- waves can now add optional `cont-EVAL` plus `## Eval targets` for iterative benchmark or output tuning
|
|
15
|
+
- live closure is stricter than replay compatibility: current waves must emit structured cont-QA and cont-EVAL artifacts even though replay can still read older evaluator-era traces
|
|
16
|
+
- the benchmark catalog lives in `docs/evals/benchmark-catalog.json`
|
|
17
|
+
|
|
11
18
|
It uses two concrete references:
|
|
12
19
|
|
|
13
20
|
- the 0.2-style baseline in the sibling `~/slowfast.ai` repo
|
|
@@ -35,8 +42,8 @@ The migration is intentionally evolutionary:
|
|
|
35
42
|
- keep wave markdown as the authored plan surface
|
|
36
43
|
- keep lanes
|
|
37
44
|
- keep multi-role agents
|
|
38
|
-
- keep A0
|
|
39
|
-
- add stronger runtime planning, typed coordination, A8 integration, and
|
|
45
|
+
- keep A0 cont-QA and A9 documentation stewardship
|
|
46
|
+
- add stronger runtime planning, typed coordination, optional E0 cont-EVAL, A8 integration, and
|
|
40
47
|
orchestrator-first clarification handling
|
|
41
48
|
|
|
42
49
|
## What Changes
|
|
@@ -45,7 +52,7 @@ The migration is intentionally evolutionary:
|
|
|
45
52
|
| --- | --- | --- | --- |
|
|
46
53
|
| Shared coordination | markdown message board plus status files | canonical coordination JSONL plus rendered board projection | Treat the markdown board as a view, not the source of truth |
|
|
47
54
|
| Agent context | raw board snapshots in prompts | compiled shared summary plus per-agent inbox | Switch operator review and agent recovery to inbox artifacts |
|
|
48
|
-
| Closure flow | implementation -> A9 -> A0 | implementation -> A8 integration -> A9 -> A0 | Add and
|
|
55
|
+
| Closure flow | implementation -> A9 -> A0 | implementation -> optional E0 cont-EVAL -> A8 integration -> A9 -> A0 | Add the integration steward and use cont-EVAL when the outcome needs iterative eval tuning |
|
|
49
56
|
| Runtime selection | lane default plus limited per-agent overrides | runtime profiles, role defaults, mix targets, fallbacks, budgets | Expand `wave.config.json` and deliberate `### Executor` planning |
|
|
50
57
|
| Clarification flow | file-backed human feedback queue | `clarification-request` -> orchestrator triage -> human escalation only if needed | Move humans to the end of the escalation ladder |
|
|
51
58
|
| Derived state | status summaries and dashboards | ledger, docs queue, integration summary, traces, triage logs | Update operator workflow and acceptance checks |
|
|
@@ -62,7 +69,7 @@ do otherwise:
|
|
|
62
69
|
- Fallback executors are allowed on retry after unavailability, timeout, or
|
|
63
70
|
failed attempt when policy permits.
|
|
64
71
|
- Automatic fallback must stay within the declared runtime mix.
|
|
65
|
-
- Documentation and
|
|
72
|
+
- Documentation and cont-QA closure must not run until the integration
|
|
66
73
|
steward reports `ready-for-doc-closure`.
|
|
67
74
|
|
|
68
75
|
These defaults match the intended 0.5 operating model and keep the runtime
|
|
@@ -119,7 +126,7 @@ The migration assumes you preserve existing plans and waves. Do not wipe
|
|
|
119
126
|
The most obvious config difference between the `slowfast.ai` baseline and the
|
|
120
127
|
0.5 target is that 0.2 only models:
|
|
121
128
|
|
|
122
|
-
- A0
|
|
129
|
+
- A0 cont-QA
|
|
123
130
|
- A9 documentation steward
|
|
124
131
|
- global executor defaults
|
|
125
132
|
- validation thresholds
|
|
@@ -140,9 +147,9 @@ look like:
|
|
|
140
147
|
```json
|
|
141
148
|
{
|
|
142
149
|
"roles": {
|
|
143
|
-
"
|
|
150
|
+
"contQaAgentId": "A0",
|
|
144
151
|
"documentationAgentId": "A9",
|
|
145
|
-
"
|
|
152
|
+
"contQaRolePromptPath": "docs/agents/wave-cont-qa-role.md",
|
|
146
153
|
"documentationRolePromptPath": "docs/agents/wave-documentation-role.md"
|
|
147
154
|
},
|
|
148
155
|
"executors": {
|
|
@@ -169,10 +176,10 @@ adds the missing surfaces:
|
|
|
169
176
|
```json
|
|
170
177
|
{
|
|
171
178
|
"roles": {
|
|
172
|
-
"
|
|
179
|
+
"contQaAgentId": "A0",
|
|
173
180
|
"integrationAgentId": "A8",
|
|
174
181
|
"documentationAgentId": "A9",
|
|
175
|
-
"
|
|
182
|
+
"contQaRolePromptPath": "docs/agents/wave-cont-qa-role.md",
|
|
176
183
|
"integrationRolePromptPath": "docs/agents/wave-integration-role.md",
|
|
177
184
|
"documentationRolePromptPath": "docs/agents/wave-documentation-role.md"
|
|
178
185
|
},
|
|
@@ -199,7 +206,7 @@ adds the missing surfaces:
|
|
|
199
206
|
"implementation": "codex",
|
|
200
207
|
"integration": "claude",
|
|
201
208
|
"documentation": "claude",
|
|
202
|
-
"
|
|
209
|
+
"cont-qa": "claude",
|
|
203
210
|
"research": "opencode",
|
|
204
211
|
"infra": "opencode",
|
|
205
212
|
"deploy": "opencode"
|
|
@@ -227,7 +234,7 @@ adds the missing surfaces:
|
|
|
227
234
|
Use four profiles first:
|
|
228
235
|
|
|
229
236
|
- `implement-fast`: default implementation work
|
|
230
|
-
- `deep-review`: integration,
|
|
237
|
+
- `deep-review`: integration, cont-QA, and review-heavy work
|
|
231
238
|
- `docs-pass`: documentation steward work
|
|
232
239
|
- `ops-triage`: research, infra, and deployment triage work
|
|
233
240
|
|
|
@@ -253,16 +260,16 @@ What A8 does not own:
|
|
|
253
260
|
|
|
254
261
|
- feature implementation
|
|
255
262
|
- documentation closure
|
|
256
|
-
-
|
|
263
|
+
- cont-QA verdict
|
|
257
264
|
|
|
258
|
-
If your 0.2 repo used
|
|
265
|
+
If your 0.2 repo used cont-QA prose to absorb integration work implicitly,
|
|
259
266
|
move that responsibility out of A0 and into A8.
|
|
260
267
|
|
|
261
268
|
## Step 4: Migrate Wave Files
|
|
262
269
|
|
|
263
270
|
The baseline `slowfast.ai` waves already have several good habits:
|
|
264
271
|
|
|
265
|
-
- explicit A0
|
|
272
|
+
- explicit A0 cont-QA
|
|
266
273
|
- explicit A9 documentation steward
|
|
267
274
|
- Context7 declarations
|
|
268
275
|
- component promotions
|
|
@@ -321,7 +328,7 @@ A minimal 0.5 upgrade looks like this:
|
|
|
321
328
|
|
|
322
329
|
### Prompt
|
|
323
330
|
```text
|
|
324
|
-
Synthesize cross-agent state before documentation and
|
|
331
|
+
Synthesize cross-agent state before documentation and cont-QA closure.
|
|
325
332
|
|
|
326
333
|
File ownership (only touch these paths):
|
|
327
334
|
- .tmp/<lane>-wave-launcher/integration/wave-<n>.md
|
|
@@ -339,7 +346,7 @@ sections instead of relying on lane defaults:
|
|
|
339
346
|
- fallbacks: claude, opencode
|
|
340
347
|
````
|
|
341
348
|
|
|
342
|
-
For documentation or
|
|
349
|
+
For documentation or cont-QA roles:
|
|
343
350
|
|
|
344
351
|
````md
|
|
345
352
|
### Executor
|
|
@@ -358,7 +365,7 @@ Recommended first mapping:
|
|
|
358
365
|
- implementation and test-fix roles: `codex`
|
|
359
366
|
- integration steward: `claude`
|
|
360
367
|
- documentation steward: `claude`
|
|
361
|
-
-
|
|
368
|
+
- cont-QA: `claude`
|
|
362
369
|
- infra or deploy roles: `opencode` or `codex`, chosen deliberately
|
|
363
370
|
- research helpers: `opencode`
|
|
364
371
|
|
|
@@ -522,7 +529,7 @@ The 0.5 target adds more explicit acceptance state:
|
|
|
522
529
|
- no unresolved high-priority blocker
|
|
523
530
|
- runtime plan is within policy
|
|
524
531
|
- documentation closure is explicit
|
|
525
|
-
-
|
|
532
|
+
- cont-QA verdict is explicit
|
|
526
533
|
- the ledger says the wave is actually complete
|
|
527
534
|
- traces capture the final state for replay
|
|
528
535
|
|
|
@@ -537,7 +544,7 @@ Use this acceptance checklist after the migration:
|
|
|
537
544
|
7. No resolved executor count exceeds lane mix targets.
|
|
538
545
|
8. Clarification triage works without immediately creating human tickets for
|
|
539
546
|
obvious ownership questions.
|
|
540
|
-
9. Documentation and
|
|
547
|
+
9. Documentation and cont-QA closure run only after the integration steward
|
|
541
548
|
is ready.
|
|
542
549
|
10. A live attempt writes a trace bundle with coordination, inbox, ledger,
|
|
543
550
|
integration, structured signals, `run-metadata.json`, and cumulative
|
|
@@ -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
|
-
|
|
5
|
+
The current `0.6.0` release procedure publishes through a repository Actions secret named `NPM_TOKEN`.
|
|
6
6
|
|
|
7
7
|
## What This Repo Already Does
|
|
8
8
|
|
|
@@ -10,6 +10,7 @@ It currently publishes through a repository Actions secret named `NPM_TOKEN`.
|
|
|
10
10
|
- `publish-npm.yml` publishes tagged releases to `https://registry.npmjs.org`.
|
|
11
11
|
- `publish-package.yml` still publishes to GitHub Packages explicitly, so both registries can coexist.
|
|
12
12
|
- `publish-npm.yml` expects `NPM_TOKEN` in GitHub Actions secrets.
|
|
13
|
+
- The public install path is already npmjs; GitHub Packages remains the authenticated fallback path.
|
|
13
14
|
|
|
14
15
|
## One-Time npm Setup
|
|
15
16
|
|
|
@@ -41,11 +42,11 @@ After a successful npm publish:
|
|
|
41
42
|
|
|
42
43
|
If this repo later needs private npm dependencies during CI, consider a separate read-only install token rather than reusing the publish token.
|
|
43
44
|
|
|
44
|
-
##
|
|
45
|
+
## Release Checklist
|
|
45
46
|
|
|
46
47
|
1. Confirm [publish-npm.yml](../../.github/workflows/publish-npm.yml) is on the default branch.
|
|
47
48
|
2. Confirm `NPM_TOKEN` exists in the GitHub repo secrets.
|
|
48
49
|
3. Confirm the package version has been bumped and committed.
|
|
49
|
-
4. Push the release tag, for example `v0.
|
|
50
|
-
5. Verify
|
|
51
|
-
6.
|
|
50
|
+
4. Push the release commit and release tag, for example `v0.6.0`.
|
|
51
|
+
5. Verify both `publish-npm.yml` and `publish-package.yml` start from the tag push.
|
|
52
|
+
6. Verify the npmjs publish completes successfully for the tagged source.
|
|
@@ -38,6 +38,22 @@ Merge behavior:
|
|
|
38
38
|
- lane executor overrides replace the corresponding global runtime fields before profile and agent resolution
|
|
39
39
|
- a lane profile with the same name as a global profile replaces that profile definition for the lane
|
|
40
40
|
|
|
41
|
+
Skill settings resolve after executor selection, because runtime and deploy-kind skill attachment depend on the resolved executor id and the wave's default deploy environment kind. The starter layering order is:
|
|
42
|
+
|
|
43
|
+
1. `skills.base`
|
|
44
|
+
2. `lanes.<lane>.skills.base`
|
|
45
|
+
3. `skills.byRole[resolvedRole]`
|
|
46
|
+
4. `lanes.<lane>.skills.byRole[resolvedRole]`
|
|
47
|
+
5. `skills.byRuntime[resolvedExecutorId]`
|
|
48
|
+
6. `lanes.<lane>.skills.byRuntime[resolvedExecutorId]`
|
|
49
|
+
7. `skills.byDeployKind[defaultDeployEnvironmentKind]`
|
|
50
|
+
8. `lanes.<lane>.skills.byDeployKind[defaultDeployEnvironmentKind]`
|
|
51
|
+
9. agent `### Skills`
|
|
52
|
+
|
|
53
|
+
Then Wave filters configured skills through each bundle's activation metadata. Explicit per-agent `### Skills` still force attachment even when activation metadata would not auto-match.
|
|
54
|
+
|
|
55
|
+
When retry-time fallback changes the runtime, Wave recomputes the effective skill set and rewrites the executor overlay before relaunch.
|
|
56
|
+
|
|
41
57
|
## Common Fields
|
|
42
58
|
|
|
43
59
|
These fields are shared across runtimes:
|
|
@@ -68,11 +84,24 @@ Wave writes runtime artifacts here:
|
|
|
68
84
|
Common files:
|
|
69
85
|
|
|
70
86
|
- `launch-preview.json`: resolved invocation lines, env vars, and retry mode
|
|
87
|
+
- `skills.resolved.md`: compact metadata-first skill catalog for the selected agent and runtime
|
|
88
|
+
- `skills.expanded.md`: full canonical/debug skill payload with `SKILL.md` bodies and adapters
|
|
89
|
+
- `skills.metadata.json`: resolved skill ids, activation metadata, permissions, hashes, and generated artifact paths
|
|
90
|
+
- `<runtime>-skills.txt`: runtime-projected compact skill text used by the selected executor
|
|
71
91
|
- `claude-system-prompt.txt`: generated Claude harness prompt overlay
|
|
72
92
|
- `claude-settings.json`: generated Claude settings overlay when inline settings data is present
|
|
73
93
|
- `opencode-agent-prompt.txt`: generated OpenCode harness prompt overlay
|
|
74
94
|
- `opencode.json`: generated OpenCode runtime config overlay
|
|
75
95
|
|
|
96
|
+
Runtime-specific delivery:
|
|
97
|
+
|
|
98
|
+
- Codex uses the compact catalog in the compiled prompt and attaches bundle directories through `--add-dir`.
|
|
99
|
+
- Claude appends the compact catalog to the generated system-prompt overlay.
|
|
100
|
+
- OpenCode injects the compact catalog into `opencode.json` and attaches `skill.json`, `SKILL.md`, the selected adapter, and recursive `references/**` files through `--file`.
|
|
101
|
+
- Local keeps skills prompt-only.
|
|
102
|
+
|
|
103
|
+
`launch-preview.json` also records the resolved skill metadata so dry-run can verify the exact runtime plus skill combination before any live launch.
|
|
104
|
+
|
|
76
105
|
## Recommended Validation Path
|
|
77
106
|
|
|
78
107
|
Use dry-run before relying on a new runtime configuration:
|