@chllming/wave-orchestration 0.5.4 → 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.
Files changed (126) hide show
  1. package/CHANGELOG.md +46 -3
  2. package/README.md +33 -5
  3. package/docs/README.md +18 -4
  4. package/docs/agents/wave-cont-eval-role.md +36 -0
  5. package/docs/agents/{wave-evaluator-role.md → wave-cont-qa-role.md} +14 -11
  6. package/docs/agents/wave-documentation-role.md +1 -1
  7. package/docs/agents/wave-infra-role.md +1 -1
  8. package/docs/agents/wave-integration-role.md +3 -3
  9. package/docs/agents/wave-launcher-role.md +4 -3
  10. package/docs/agents/wave-security-role.md +40 -0
  11. package/docs/concepts/context7-vs-skills.md +1 -1
  12. package/docs/concepts/what-is-a-wave.md +56 -6
  13. package/docs/evals/README.md +166 -0
  14. package/docs/evals/benchmark-catalog.json +663 -0
  15. package/docs/guides/author-and-run-waves.md +135 -0
  16. package/docs/guides/planner.md +5 -0
  17. package/docs/guides/terminal-surfaces.md +2 -0
  18. package/docs/plans/component-cutover-matrix.json +1 -1
  19. package/docs/plans/component-cutover-matrix.md +1 -1
  20. package/docs/plans/current-state.md +19 -1
  21. package/docs/plans/examples/wave-example-live-proof.md +435 -0
  22. package/docs/plans/migration.md +42 -0
  23. package/docs/plans/wave-orchestrator.md +46 -7
  24. package/docs/plans/waves/wave-0.md +4 -4
  25. package/docs/reference/live-proof-waves.md +177 -0
  26. package/docs/reference/migration-0.2-to-0.5.md +26 -19
  27. package/docs/reference/npmjs-trusted-publishing.md +6 -5
  28. package/docs/reference/runtime-config/README.md +13 -3
  29. package/docs/reference/sample-waves.md +87 -0
  30. package/docs/reference/skills.md +110 -42
  31. package/docs/research/agent-context-sources.md +130 -11
  32. package/docs/research/coordination-failure-review.md +266 -0
  33. package/docs/roadmap.md +6 -2
  34. package/package.json +2 -2
  35. package/releases/manifest.json +20 -2
  36. package/scripts/research/agent-context-archive.mjs +83 -1
  37. package/scripts/research/manifests/agent-context-expanded-2026-03-22.mjs +811 -0
  38. package/scripts/wave-orchestrator/adhoc.mjs +1331 -0
  39. package/scripts/wave-orchestrator/agent-state.mjs +358 -6
  40. package/scripts/wave-orchestrator/artifact-schemas.mjs +173 -0
  41. package/scripts/wave-orchestrator/clarification-triage.mjs +10 -3
  42. package/scripts/wave-orchestrator/config.mjs +48 -12
  43. package/scripts/wave-orchestrator/context7.mjs +2 -0
  44. package/scripts/wave-orchestrator/coord-cli.mjs +51 -19
  45. package/scripts/wave-orchestrator/coordination-store.mjs +26 -4
  46. package/scripts/wave-orchestrator/coordination.mjs +83 -9
  47. package/scripts/wave-orchestrator/dashboard-state.mjs +20 -8
  48. package/scripts/wave-orchestrator/dep-cli.mjs +5 -2
  49. package/scripts/wave-orchestrator/docs-queue.mjs +8 -2
  50. package/scripts/wave-orchestrator/evals.mjs +451 -0
  51. package/scripts/wave-orchestrator/feedback.mjs +15 -1
  52. package/scripts/wave-orchestrator/install.mjs +32 -9
  53. package/scripts/wave-orchestrator/launcher-closure.mjs +281 -0
  54. package/scripts/wave-orchestrator/launcher-runtime.mjs +334 -0
  55. package/scripts/wave-orchestrator/launcher.mjs +709 -601
  56. package/scripts/wave-orchestrator/ledger.mjs +123 -20
  57. package/scripts/wave-orchestrator/local-executor.mjs +99 -12
  58. package/scripts/wave-orchestrator/planner.mjs +177 -42
  59. package/scripts/wave-orchestrator/replay.mjs +6 -3
  60. package/scripts/wave-orchestrator/role-helpers.mjs +84 -0
  61. package/scripts/wave-orchestrator/shared.mjs +75 -11
  62. package/scripts/wave-orchestrator/skills.mjs +637 -106
  63. package/scripts/wave-orchestrator/traces.mjs +71 -48
  64. package/scripts/wave-orchestrator/wave-files.mjs +947 -101
  65. package/scripts/wave.mjs +9 -0
  66. package/skills/README.md +202 -0
  67. package/skills/provider-aws/SKILL.md +111 -0
  68. package/skills/provider-aws/adapters/claude.md +1 -0
  69. package/skills/provider-aws/adapters/codex.md +1 -0
  70. package/skills/provider-aws/references/service-verification.md +39 -0
  71. package/skills/provider-aws/skill.json +50 -1
  72. package/skills/provider-custom-deploy/SKILL.md +59 -0
  73. package/skills/provider-custom-deploy/skill.json +46 -1
  74. package/skills/provider-docker-compose/SKILL.md +90 -0
  75. package/skills/provider-docker-compose/adapters/local.md +1 -0
  76. package/skills/provider-docker-compose/skill.json +49 -1
  77. package/skills/provider-github-release/SKILL.md +116 -1
  78. package/skills/provider-github-release/adapters/claude.md +1 -0
  79. package/skills/provider-github-release/adapters/codex.md +1 -0
  80. package/skills/provider-github-release/skill.json +51 -1
  81. package/skills/provider-kubernetes/SKILL.md +137 -0
  82. package/skills/provider-kubernetes/adapters/claude.md +1 -0
  83. package/skills/provider-kubernetes/adapters/codex.md +1 -0
  84. package/skills/provider-kubernetes/references/kubectl-patterns.md +58 -0
  85. package/skills/provider-kubernetes/skill.json +48 -1
  86. package/skills/provider-railway/SKILL.md +118 -1
  87. package/skills/provider-railway/references/verification-commands.md +39 -0
  88. package/skills/provider-railway/skill.json +67 -1
  89. package/skills/provider-ssh-manual/SKILL.md +91 -0
  90. package/skills/provider-ssh-manual/skill.json +50 -1
  91. package/skills/repo-coding-rules/SKILL.md +84 -0
  92. package/skills/repo-coding-rules/skill.json +30 -1
  93. package/skills/role-cont-eval/SKILL.md +90 -0
  94. package/skills/role-cont-eval/adapters/codex.md +1 -0
  95. package/skills/role-cont-eval/skill.json +36 -0
  96. package/skills/role-cont-qa/SKILL.md +93 -0
  97. package/skills/role-cont-qa/adapters/claude.md +1 -0
  98. package/skills/role-cont-qa/skill.json +36 -0
  99. package/skills/role-deploy/SKILL.md +90 -0
  100. package/skills/role-deploy/skill.json +32 -1
  101. package/skills/role-documentation/SKILL.md +66 -0
  102. package/skills/role-documentation/skill.json +32 -1
  103. package/skills/role-implementation/SKILL.md +62 -0
  104. package/skills/role-implementation/skill.json +32 -1
  105. package/skills/role-infra/SKILL.md +74 -0
  106. package/skills/role-infra/skill.json +32 -1
  107. package/skills/role-integration/SKILL.md +79 -1
  108. package/skills/role-integration/skill.json +32 -1
  109. package/skills/role-research/SKILL.md +58 -0
  110. package/skills/role-research/skill.json +32 -1
  111. package/skills/role-security/SKILL.md +60 -0
  112. package/skills/role-security/skill.json +36 -0
  113. package/skills/runtime-claude/SKILL.md +60 -1
  114. package/skills/runtime-claude/skill.json +32 -1
  115. package/skills/runtime-codex/SKILL.md +52 -1
  116. package/skills/runtime-codex/skill.json +32 -1
  117. package/skills/runtime-local/SKILL.md +39 -0
  118. package/skills/runtime-local/skill.json +32 -1
  119. package/skills/runtime-opencode/SKILL.md +51 -0
  120. package/skills/runtime-opencode/skill.json +32 -1
  121. package/skills/wave-core/SKILL.md +107 -0
  122. package/skills/wave-core/references/marker-syntax.md +62 -0
  123. package/skills/wave-core/skill.json +31 -1
  124. package/wave.config.json +35 -6
  125. package/skills/role-evaluator/SKILL.md +0 -6
  126. package/skills/role-evaluator/skill.json +0 -5
@@ -21,3 +21,45 @@ GitHub Packages remains available as an authenticated fallback path, and maintai
21
21
  - Existing `wave.config.json`, role prompts, plan docs, `skills/` bundles, Context7 bundles, and wave files are never overwritten by the upgrade flow.
22
22
  - Fresh `wave init` seeds the starter `skills/` library. `wave init --adopt-existing` records existing repo-owned skill bundles when they are already present, but does not replace or rewrite them.
23
23
  - The current runtime expects the post-roadmap model: typed coordination, compiled inboxes, `A8` integration, staged closure, orchestrator-first clarification, and operational runtime policy.
24
+
25
+ ## Upgrading From 0.5.4 To 0.6.0
26
+
27
+ Read `CHANGELOG.md` first, then treat the rest of this page as the manual repo-owned migration checklist for the `0.6.0` release. `wave upgrade` will update package-owned runtime code only; it will not rewrite the docs, prompts, config, or wave files that your repo already owns.
28
+
29
+ ### Required Repo Changes
30
+
31
+ 1. Rename legacy `evaluator` config and prompt terminology to `cont-QA`.
32
+ 2. Keep `A0` as the final closure owner that emits both the final verdict and `[wave-gate]`.
33
+ 3. Add `E0` only when the wave needs benchmark-driven tuning or service-output evaluation.
34
+ 4. Add wave-level `## Eval targets` whenever `cont-EVAL` is present.
35
+ 5. Update any starter docs or examples that still describe the pre-`0.6.0` evaluator model.
36
+
37
+ In practice that means checking:
38
+
39
+ - `wave.config.json`
40
+ Remove or rename `roles.evaluator*`, `skills.byRole.evaluator`, and `runtimePolicy.defaultExecutorByRole.evaluator`.
41
+ - `docs/agents/*.md`
42
+ Rename or replace any legacy evaluator prompt files so the repo clearly distinguishes `cont-QA`, `cont-EVAL`, and optional security review.
43
+ - `docs/plans/waves/*.md`
44
+ Update wave agent headings, role prompts, and closure expectations to use `A0` for `cont-QA`, optional `E0` for eval tuning, and optional security review before integration.
45
+ - `docs/reference/` and other operator docs
46
+ Refresh any examples or internal runbooks that still describe one overloaded evaluator role.
47
+
48
+ ### Closure And Marker Changes
49
+
50
+ Live `0.6.0` closure is stricter than `0.5.4`.
51
+
52
+ - `cont-EVAL` must leave a report plus a final `[wave-eval]` marker whose `target_ids` exactly matches the wave contract and whose `benchmark_ids` stays within the benchmark catalog.
53
+ - Security review, when present, must leave a report plus a final `[wave-security]` marker.
54
+ - `cont-QA` must leave both the final `Verdict:` line and the final `[wave-gate]` marker.
55
+ - Older evaluator-era or verdict-only artifacts remain replay-readable, but they do not satisfy live completion anymore.
56
+
57
+ ### Recommended Upgrade Validation
58
+
59
+ After updating repo-owned files:
60
+
61
+ 1. Run `pnpm exec wave doctor`.
62
+ 2. Run `pnpm exec wave launch --lane main --dry-run --no-dashboard`.
63
+ 3. Use `pnpm exec wave coord show --lane main --wave 0 --dry-run --json` as a read-only inspection path for the coordination state.
64
+ 4. Use `pnpm exec wave coord inbox --lane main --wave 0 --agent A1 --dry-run` when you want the launcher to materialize shared-summary and inbox artifacts for review.
65
+ 5. If the repo adopts `cont-EVAL`, verify that every live eval wave declares `## Eval targets` and that the benchmark ids exist in `docs/evals/benchmark-catalog.json`.
@@ -7,23 +7,30 @@ For the broader docs map, concept pages, and workflow guides, start at [docs/REA
7
7
  ## What It Does
8
8
 
9
9
  - parses wave plans from `docs/plans/waves/`
10
+ - supports transient ad-hoc runs from `.wave/adhoc/runs/` on the same launcher substrate
10
11
  - fans a wave out into one session per `## Agent ...` section
11
12
  - supports standing role imports from `docs/agents/*.md`
12
13
  - seeds a coordination log, generated board, compiled shared summary, and per-agent inboxes
13
- - 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
14
16
  - validates Context7 declarations and exit contracts from configurable wave thresholds
15
17
  - validates component promotions and component-owned proof from configurable wave thresholds
16
18
  - writes prompts, logs, dashboards, coordination state, and status summaries under `.tmp/`
17
19
  - supports launcher-side Context7 prefetch and injection for headless runs
18
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-*`
19
22
  - supports a file-backed human feedback queue
20
- - performs a closure sweep so integration, documentation, and evaluator gates reflect final landed state
23
+ - performs a closure sweep so optional `cont-EVAL`, optional security review, integration, documentation, and cont-QA gates reflect final landed state
21
24
 
22
25
  ## Main Commands
23
26
 
24
27
  - `pnpm exec wave project setup`
25
28
  - `pnpm exec wave project show --json`
26
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`
27
34
  - `pnpm exec wave init`
28
35
  - `pnpm exec wave init --adopt-existing`
29
36
  - `pnpm exec wave doctor`
@@ -42,11 +49,18 @@ For the broader docs map, concept pages, and workflow guides, start at [docs/REA
42
49
 
43
50
  ## Configuration
44
51
 
45
- - `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.
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.
46
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.
47
57
  - `docs/plans/component-cutover-matrix.json` is the canonical machine-readable source for component maturity and per-wave promotion targets.
48
58
  - `.wave/install-state.json` records how the workspace was initialized and which package version is installed.
49
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.
50
64
 
51
65
  ## Skill Packs
52
66
 
@@ -58,7 +72,7 @@ For the broader docs map, concept pages, and workflow guides, start at [docs/REA
58
72
  - Starter bundles in this repo cover:
59
73
  - core Wave coordination and repo coding rules
60
74
  - runtime packs for Codex, Claude, OpenCode, and local execution
61
- - role packs for implementation, integration, documentation, evaluator, infra, deploy, and research work
75
+ - role packs for implementation, `cont-EVAL`, security review, integration, documentation, cont-QA, infra, deploy, and research work
62
76
  - deploy and environment packs for Railway, Docker Compose, Kubernetes, SSH/manual rollout, and generic custom deploys
63
77
  - explicit provider packs for GitHub release flow and AWS norms when a wave or lane wants to attach them
64
78
 
@@ -101,7 +115,7 @@ pnpm exec wave launch --lane main --start-wave 0 --end-wave 0 --executor codex -
101
115
 
102
116
  ## Coordination Surfaces
103
117
 
104
- - `wave coord show` reads the materialized coordination state for a wave.
118
+ - `wave coord show` is a read-only view of the materialized coordination state for a wave.
105
119
  - `wave coord render` regenerates the markdown board projection from the canonical coordination log.
106
120
  - `wave coord inbox` writes the compiled shared summary plus the selected agent inbox.
107
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.
@@ -149,11 +163,14 @@ pnpm exec wave changelog --since-installed
149
163
  - prompts: `.tmp/<lane>-wave-launcher/prompts/`
150
164
  - logs: `.tmp/<lane>-wave-launcher/logs/`
151
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.
152
167
  - coordination logs: `.tmp/<lane>-wave-launcher/coordination/`
153
168
  - helper-assignment snapshots: `.tmp/<lane>-wave-launcher/assignments/`
154
169
  - message boards: `.tmp/<lane>-wave-launcher/messageboards/`
155
170
  - compiled inboxes: `.tmp/<lane>-wave-launcher/inboxes/`
156
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.
157
174
  - integration summaries: `.tmp/<lane>-wave-launcher/integration/`
158
175
  These summaries now carry actionable evidence for conflicting claims, changed interfaces, cross-component impacts, proof gaps, documentation gaps, and deploy or ops risk.
159
176
  - dependency snapshots: `.tmp/<lane>-wave-launcher/dependencies/`
@@ -161,6 +178,7 @@ pnpm exec wave changelog --since-installed
161
178
  - trace bundles: `.tmp/<lane>-wave-launcher/traces/`
162
179
  - clarification triage: `.tmp/<lane>-wave-launcher/feedback/triage/`
163
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.
164
182
  - Context7 cache: `.tmp/<lane>-wave-launcher/context7-cache/`
165
183
  - executor overlays: `.tmp/<lane>-wave-launcher/executors/`
166
184
  Each agent overlay can include `skills.resolved.md`, `skills.metadata.json`, and `<runtime>-skills.txt` in addition to the runtime-specific executor files.
@@ -168,6 +186,10 @@ pnpm exec wave changelog --since-installed
168
186
  Required inbound tickets in this directory block both autonomous wave launch and lane finalization until they resolve.
169
187
  - cross-wave orchestration board: `.tmp/wave-orchestrator/messageboards/orchestrator.md`
170
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
+
171
193
  ## Trace Contract
172
194
 
173
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/`.
@@ -178,6 +200,7 @@ pnpm exec wave changelog --since-installed
178
200
  - `coordination.materialized.json`
179
201
  - `ledger.json`
180
202
  - `docs-queue.json`
203
+ - `security.json`
181
204
  - `integration.json`
182
205
  - `outcome.json`
183
206
  - `shared-summary.md`
@@ -188,6 +211,7 @@ pnpm exec wave changelog --since-installed
188
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.
189
212
  - `outcome.json` is the stored replay baseline. Replay compares recomputed gates and quality against it instead of trusting only inline metadata.
190
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.
191
215
  - `quality.json` is cumulative through the current attempt. It is intended for regression comparison, not only for one-shot pass/fail reporting.
192
216
  - `quality.json` also reports capability-assignment and dependency-resolution metrics in addition to the Phase 2/3 communication, fallback, and closure metrics.
193
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.
@@ -195,7 +219,7 @@ pnpm exec wave changelog --since-installed
195
219
 
196
220
  ## Authoring Rules
197
221
 
198
- - Every wave must include the configured evaluator agent.
222
+ - Every wave must include the configured cont-QA agent.
199
223
  - Under the starter config, every wave must also include the configured integration steward and documentation steward.
200
224
  - From the configured thresholds onward, declare `## Component promotions` and keep them aligned with the component cutover matrix.
201
225
  - From the configured thresholds onward, every non-A0/A8/A9 agent must declare `### Components` and emit `[wave-component]` markers for those components.
@@ -203,12 +227,19 @@ pnpm exec wave changelog --since-installed
203
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.
204
228
  - `### Skills` is optional and adds explicit skill ids from `skills/` on top of the lane, role, runtime, and deploy-kind defaults.
205
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.
206
231
  - `## Deploy environments` lets the wave declare named deployment targets. The default deploy environment kind is also used for deploy-kind skill attachment.
207
232
  - Lane runtime policy can assign a default executor by role even when the wave omits `### Executor`.
208
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>`.
209
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.
210
239
  - Keep file ownership explicit inside each `### Prompt`.
211
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).
212
243
  - Agents should use `wave coord post` for durable blockers, handoffs, evidence, and requests instead of relying on ad hoc board edits.
213
244
  - Keep shared plan docs and the component cutover matrix owned by the configured documentation steward once that rule becomes active.
214
245
  - Use the runtime reference pages for the full executor surface instead of relying on this runbook to enumerate every key:
@@ -225,6 +256,7 @@ pnpm exec wave changelog --since-installed
225
256
  - `--executor local` exists only for smoke-testing prompt and closure behavior.
226
257
  - `--codex-sandbox danger-full-access` is the default because it avoids host bubblewrap assumptions.
227
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`.
228
260
  - Skills resolve only after that executor choice is known. Runtime-specific skill overlays are regenerated whenever retry-time fallback changes the selected executor.
229
261
  - Runtime mix targets are enforced before launch and again before any retry-time fallback reassignment.
230
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.
@@ -276,4 +308,11 @@ pnpm exec wave feedback respond --id <request-id> --response "..."
276
308
 
277
309
  ## Closure Sweep
278
310
 
279
- 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 evaluator closure only run after integration is explicitly ready for doc closure; if integration reports `needs-more-work`, or if helper assignments or required dependency tickets remain open, the wave stops there and retries only the implicated owners plus the integration steward.
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: Running Evaluator
15
+ ## Agent A0: cont-QA
16
16
 
17
17
  ### Role prompts
18
18
 
19
- - docs/agents/wave-evaluator-role.md
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-evaluator.md
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 evaluator closure.
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 evaluator and A9 documentation stewardship
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 require an integration steward |
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 evaluator closure must not run until the integration
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 evaluator
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
- "evaluatorAgentId": "A0",
150
+ "contQaAgentId": "A0",
144
151
  "documentationAgentId": "A9",
145
- "evaluatorRolePromptPath": "docs/agents/wave-evaluator-role.md",
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
- "evaluatorAgentId": "A0",
179
+ "contQaAgentId": "A0",
173
180
  "integrationAgentId": "A8",
174
181
  "documentationAgentId": "A9",
175
- "evaluatorRolePromptPath": "docs/agents/wave-evaluator-role.md",
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
- "evaluator": "claude",
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, evaluator, and review-heavy work
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
- - evaluator verdict
263
+ - cont-QA verdict
257
264
 
258
- If your 0.2 repo used evaluator prose to absorb integration work implicitly,
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 evaluator
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 evaluator closure.
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 evaluator roles:
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
- - evaluator: `claude`
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
- - evaluator verdict is explicit
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 evaluator closure run only after the integration steward
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
- It currently publishes through a repository Actions secret named `NPM_TOKEN`.
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
- ## First Release Checklist
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.4.1`.
50
- 5. Verify the GitHub Actions run publishes successfully to npmjs.
51
- 6. After the publish is visible on npmjs, update README install guidance if npmjs should become the primary documented install path.
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.
@@ -50,6 +50,8 @@ Skill settings resolve after executor selection, because runtime and deploy-kind
50
50
  8. `lanes.<lane>.skills.byDeployKind[defaultDeployEnvironmentKind]`
51
51
  9. agent `### Skills`
52
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
+
53
55
  When retry-time fallback changes the runtime, Wave recomputes the effective skill set and rewrites the executor overlay before relaunch.
54
56
 
55
57
  ## Common Fields
@@ -82,14 +84,22 @@ Wave writes runtime artifacts here:
82
84
  Common files:
83
85
 
84
86
  - `launch-preview.json`: resolved invocation lines, env vars, and retry mode
85
- - `skills.resolved.md`: canonical merged skill payload for the selected agent and runtime
86
- - `skills.metadata.json`: resolved skill ids, bundle metadata, hashes, and generated artifact paths
87
- - `<runtime>-skills.txt`: runtime-projected skill text used by the selected executor
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
88
91
  - `claude-system-prompt.txt`: generated Claude harness prompt overlay
89
92
  - `claude-settings.json`: generated Claude settings overlay when inline settings data is present
90
93
  - `opencode-agent-prompt.txt`: generated OpenCode harness prompt overlay
91
94
  - `opencode.json`: generated OpenCode runtime config overlay
92
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
+
93
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.
94
104
 
95
105
  ## Recommended Validation Path