@chllming/wave-orchestration 0.8.3 → 0.8.5

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 (59) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/README.md +60 -11
  3. package/docs/README.md +8 -2
  4. package/docs/agents/wave-design-role.md +47 -0
  5. package/docs/concepts/what-is-a-wave.md +11 -7
  6. package/docs/guides/author-and-run-waves.md +24 -0
  7. package/docs/guides/planner.md +44 -0
  8. package/docs/plans/architecture-hardening-migration.md +8 -1
  9. package/docs/plans/current-state.md +19 -7
  10. package/docs/plans/end-state-architecture.md +88 -70
  11. package/docs/plans/examples/wave-example-design-handoff.md +262 -0
  12. package/docs/plans/examples/wave-example-live-proof.md +1 -1
  13. package/docs/plans/migration.md +370 -64
  14. package/docs/plans/wave-orchestrator.md +49 -13
  15. package/docs/reference/cli-reference.md +46 -14
  16. package/docs/reference/coordination-and-closure.md +19 -6
  17. package/docs/reference/npmjs-trusted-publishing.md +5 -4
  18. package/docs/reference/sample-waves.md +14 -7
  19. package/docs/reference/skills.md +10 -0
  20. package/package.json +1 -1
  21. package/releases/manifest.json +39 -0
  22. package/scripts/wave-orchestrator/agent-state.mjs +64 -491
  23. package/scripts/wave-orchestrator/autonomous.mjs +10 -6
  24. package/scripts/wave-orchestrator/{launcher-closure.mjs → closure-engine.mjs} +190 -74
  25. package/scripts/wave-orchestrator/config.mjs +5 -0
  26. package/scripts/wave-orchestrator/coordination.mjs +42 -1
  27. package/scripts/wave-orchestrator/{launcher-derived-state.mjs → derived-state-engine.mjs} +34 -146
  28. package/scripts/wave-orchestrator/{launcher-gates.mjs → gate-engine.mjs} +501 -141
  29. package/scripts/wave-orchestrator/human-input-resolution.mjs +14 -10
  30. package/scripts/wave-orchestrator/human-input-workflow.mjs +104 -0
  31. package/scripts/wave-orchestrator/implementation-engine.mjs +120 -0
  32. package/scripts/wave-orchestrator/install.mjs +3 -0
  33. package/scripts/wave-orchestrator/launcher-runtime.mjs +11 -6
  34. package/scripts/wave-orchestrator/launcher.mjs +324 -723
  35. package/scripts/wave-orchestrator/ledger.mjs +56 -27
  36. package/scripts/wave-orchestrator/local-executor.mjs +37 -0
  37. package/scripts/wave-orchestrator/planner.mjs +24 -4
  38. package/scripts/wave-orchestrator/projection-writer.mjs +256 -0
  39. package/scripts/wave-orchestrator/reconcile-format.mjs +32 -0
  40. package/scripts/wave-orchestrator/reducer-snapshot.mjs +297 -0
  41. package/scripts/wave-orchestrator/replay.mjs +3 -1
  42. package/scripts/wave-orchestrator/result-envelope.mjs +620 -0
  43. package/scripts/wave-orchestrator/retry-control.mjs +22 -2
  44. package/scripts/wave-orchestrator/{launcher-retry.mjs → retry-engine.mjs} +352 -18
  45. package/scripts/wave-orchestrator/role-helpers.mjs +124 -1
  46. package/scripts/wave-orchestrator/{launcher-supervisor.mjs → session-supervisor.mjs} +178 -103
  47. package/scripts/wave-orchestrator/shared.mjs +2 -0
  48. package/scripts/wave-orchestrator/skills.mjs +1 -0
  49. package/scripts/wave-orchestrator/task-entity.mjs +65 -45
  50. package/scripts/wave-orchestrator/traces.mjs +10 -1
  51. package/scripts/wave-orchestrator/wave-files.mjs +96 -10
  52. package/scripts/wave-orchestrator/wave-state-reducer.mjs +76 -12
  53. package/skills/README.md +7 -0
  54. package/skills/role-design/SKILL.md +50 -0
  55. package/skills/role-design/skill.json +36 -0
  56. package/skills/tui-design/SKILL.md +77 -0
  57. package/skills/tui-design/references/tui-design.md +259 -0
  58. package/skills/tui-design/skill.json +36 -0
  59. package/wave.config.json +15 -1
@@ -1,8 +1,8 @@
1
1
  # End-State Architecture
2
2
 
3
- This document describes the target architecture for Wave Orchestration after the full refactor is complete. It is the authoritative reference for what the system should look like when all P0, P1, and P2 work items are landed.
3
+ This document describes the canonical architecture for the current Wave runtime. It is the authoritative reference for the engine boundaries, canonical authority set, and artifact ownership model that the shipped `0.8.5` surface now follows.
4
4
 
5
- The thesis is unchanged: bounded waves, closure roles, proof artifacts, selective rerun, and delivery discipline. What changes is the internal authority model. The launcher stops being the decision engine and becomes a thin session supervisor that reads decisions from canonical state and delegates work to explicit subsystems.
5
+ The thesis is unchanged: bounded waves, closure roles, proof artifacts, selective rerun, and delivery discipline. What changes is the internal authority model. The launcher stops being the decision engine and becomes a thin orchestrator that reads decisions from canonical state, sequences the engines, and delegates process work to the session supervisor.
6
6
 
7
7
  ---
8
8
 
@@ -12,7 +12,7 @@ The thesis is unchanged: bounded waves, closure roles, proof artifacts, selectiv
12
12
 
13
13
  2. **Phase engines replace the monolithic launcher loop.** Each distinct concern — implementation orchestration, derived-state materialization, gate evaluation, retry planning, closure sequencing, session supervision — lives in its own deterministic module with an explicit input/output contract.
14
14
 
15
- 3. **Planning engines emit intent; the supervisor emits observed facts.** A phase engine may output `agent_run_planned` or a launch intent. Only the session supervisor, after the process actually launches, writes `agent_run.started`. This distinction between desired action and observed action is critical for replay and auditability.
15
+ 3. **Planning engines emit intent; the supervisor emits observed facts.** A phase engine may output a run selection or launch request. Only the session supervisor, after the process actually launches, writes `agent_run.started`. This distinction between desired action and observed action is critical for replay and auditability.
16
16
 
17
17
  4. **Proof and closure are separate first-class states.** An agent can satisfy its own work contract (`owned_slice_proven`) without the wave being closeable (`wave_closure_ready`). These are distinct top-level state transitions, not implicit conditions scattered across gate checks.
18
18
 
@@ -48,6 +48,8 @@ The system uses **Model B: canonical authority set**, not a single event log. Th
48
48
 
49
49
  The reducer consumes all three canonical sources plus result envelopes to rebuild state. No other input is read for decision-making.
50
50
 
51
+ Optional design packets live in repo-owned docs, usually under `docs/plans/waves/design/`. They are not canonical runtime state by themselves, but the validated packet path and final `design` result are captured in summaries, envelopes, reducer state, and traces.
52
+
51
53
  ---
52
54
 
53
55
  ## Module Architecture
@@ -84,45 +86,48 @@ Each phase engine is a pure-ish function: it reads from the canonical authority
84
86
  implementation-engine.mjs Drives the implementation phase
85
87
  Inputs: wave definition, materialized event state,
86
88
  task graph, retry plan
87
- Outputs: launch intents (agent_run_planned),
88
- run selections, executor assignments,
89
+ Outputs: run selections, launch requests,
90
+ executor assignments,
89
91
  prompt construction requests
90
- Does NOT output: agent_run.started, attempt.created
92
+ Rule: optional design workers run before
93
+ code-owning implementation workers
94
+ Does NOT output: agent_run.started, attempt.running
91
95
  (those are observed facts written by the supervisor)
92
96
 
93
- derived-state-engine.mjs Materializes all derived state from canonical sources
94
- (launcher-derived- Inputs: coordination log, control-plane events,
95
- state.mjs today) agent result envelopes
96
- Outputs: shared summaries, per-agent inboxes,
97
- assignment snapshots, dependency snapshots,
98
- ledger, docs queue, security summary,
99
- integration summary
97
+ derived-state-engine.mjs Computes all derived state from canonical sources
98
+ Inputs: coordination log, control-plane events,
99
+ agent result envelopes
100
+ Outputs: derived payloads for shared summaries,
101
+ per-agent inboxes, assignment snapshots,
102
+ dependency snapshots, ledger, docs queue,
103
+ security summary, integration summary
100
104
  Rule: reads only from canonical authority set,
101
- never from its own prior outputs
105
+ never from its own prior outputs and
106
+ never persists projections directly
102
107
 
103
108
  gate-engine.mjs Evaluates all closure gates
104
- (launcher-gates.mjs Inputs: agent result envelopes, proof registry,
105
- today) coordination state, component matrix,
109
+ Inputs: agent result envelopes, proof registry,
110
+ coordination state, component matrix,
106
111
  task graph
107
112
  Outputs: per-gate verdicts (ok/blocked + detail),
108
113
  per-task owned_slice_proven verdicts
109
114
  Does NOT write: gate events to control-plane
110
115
  (the caller writes gate events after receiving verdicts)
111
- Gates: implementation-proof, cont-eval, security,
116
+ Gates: design, implementation-proof, cont-eval, security,
112
117
  integration, documentation, cont-qa,
113
118
  component-matrix, assignment-barrier,
114
119
  dependency-barrier, clarification-barrier
115
120
 
116
121
  closure-engine.mjs Sequences the closure sweep
117
- (launcher-closure.mjs Inputs: gate verdicts, wave definition, task graph
118
- today) Outputs: closure phase transitions, agent relaunch
122
+ Inputs: gate verdicts, wave definition, task graph
123
+ Outputs: closure phase transitions, agent relaunch
119
124
  requests, wave completion or block events
120
125
  Stages: implementation+proof → cont-eval → security →
121
126
  integration → documentation → cont-qa
122
127
 
123
128
  retry-engine.mjs Plans all retry and resume operations
124
- (launcher-retry.mjs Inputs: failure records, proof registry, rerun
125
- today) requests, executor history, task graph
129
+ Inputs: failure records, proof registry, rerun
130
+ requests, executor history, task graph
126
131
  Outputs: retry plan with explicit contract:
127
132
  - why_resuming
128
133
  - invalidated (task ids)
@@ -148,26 +153,27 @@ wave-state-reducer.mjs Rebuilds full wave state from canonical authority set
148
153
 
149
154
  The supervisor is the only module that interacts with the outside world: launching processes, managing terminals, and monitoring sessions. It reads decisions from phase engines and executes them. It is the only module that writes observed lifecycle events.
150
155
 
151
- The projection writer is the single module responsible for all non-canonical file writes.
156
+ The projection writer is the single module responsible for projection writes. Workflow-owned compatibility state, clarification triage, and canonical coordination/control-plane mutations stay in their own modules.
152
157
 
153
158
  ```
154
159
  session-supervisor.mjs Launches and monitors agent sessions
155
- (launcher-supervisor.mjs Inputs: launch intents from implementation engine,
156
- today) launch specs from executor adapters
160
+ Inputs: run selections / launch requests from
161
+ implementation engine and closure engine,
162
+ launch specs from executor adapters
157
163
  Owns: process lifecycle, tmux sessions,
158
164
  terminal surfaces, PID tracking,
159
165
  lock management, rate-limit retry loops,
160
166
  resident orchestrator sessions
161
- Writes: agent_run.started (after real launch),
162
- agent_run.completed (after real completion),
163
- attempt.created, attempt.completed
167
+ Writes: wave_run.started|completed|failed,
168
+ attempt.running|completed|failed,
169
+ agent_run.started|completed|failed|timed_out
164
170
  Observes: human feedback responses (collects and
165
171
  submits, but does NOT own SLA, reroute,
166
172
  escalation, or timeout policy — those
167
173
  are control-plane workflow semantics
168
174
  materialized by the reducer)
169
175
 
170
- projection-writer.mjs Writes all non-canonical outputs
176
+ projection-writer.mjs Writes projection outputs
171
177
  (new) Inputs: derived state from materializer,
172
178
  gate verdicts from gate engine,
173
179
  wave state from reducer
@@ -175,7 +181,10 @@ projection-writer.mjs Writes all non-canonical outputs
175
181
  markdown board projections,
176
182
  coordination board projection,
177
183
  trace bundles, quality metrics,
178
- human-facing status summaries
184
+ shared summaries, inboxes, assignment
185
+ and dependency snapshots, ledger,
186
+ docs queue, security summary,
187
+ integration summary
179
188
  Rule: never reads its own outputs,
180
189
  always writes atomically,
181
190
  labels every artifact with its class
@@ -192,15 +201,16 @@ launcher.mjs Thin orchestrator
192
201
  3. For each wave:
193
202
  a. reducer.rebuild() → current state
194
203
  b. retry-engine.plan() → retry decisions
195
- c. implementation-engine.select() → launch intents
196
- d. derived-state-engine.materialize() projections
197
- e. supervisor.launch(intents) → agent sessions
204
+ c. implementation-engine.select() → run selections
205
+ (design-first when the wave declares design workers)
206
+ d. derived-state-engine.materialize() → derived payloads
207
+ e. supervisor.launch(run selections) → agent sessions
198
208
  (supervisor writes agent_run.started)
199
209
  f. supervisor.wait() → completion
200
210
  (supervisor writes agent_run.completed)
201
211
  g. gate-engine.evaluate() → gate verdicts
202
212
  h. closure-engine.sequence() → closure phases
203
- i. projection-writer.write() → dashboards, traces
213
+ i. projection-writer.write() → persisted projections
204
214
  4. Release lock, exit
205
215
  ```
206
216
 
@@ -361,11 +371,11 @@ All tasks in the wave are `owned_slice_proven` AND all cross-cutting closure con
361
371
  - no open clarification barriers
362
372
  - no open helper assignment barriers
363
373
  - no open cross-lane dependency barriers
364
- - integration gate passed (A8)
365
- - documentation gate passed (A9)
366
- - cont-eval gate passed (E0) if applicable
374
+ - integration gate passed (effective integration steward; starter default `A8`)
375
+ - documentation gate passed (effective documentation steward; starter default `A9`)
376
+ - cont-eval gate passed (effective `cont-EVAL`; starter default `E0`) if applicable
367
377
  - security gate passed if applicable
368
- - cont-qa final verdict is PASS (A0)
378
+ - cont-qa final verdict is PASS (effective `cont-QA`; starter default `A0`)
369
379
  - component matrix promotions validated
370
380
 
371
381
  Only when `wave_closure_ready` is true does the closure engine emit the `wave_run.completed` event.
@@ -499,13 +509,11 @@ Agent result envelopes are classified as canonical structured snapshots and must
499
509
  .tmp/<lane>-wave-launcher/results/wave-<N>/attempt-<A>/<agentId>.json
500
510
  ```
501
511
 
502
- ### Migration path
503
-
504
- - Phase 1: agents emit the envelope alongside existing log markers. Gate engine reads the envelope when present, falls back to the legacy adapter.
505
- - Phase 2: gate engine requires the envelope. Log markers become human-readable only.
506
- - Phase 3: log-parsing code is removed.
512
+ ### Current runtime behavior
507
513
 
508
- During migration, the `agent-state.mjs` module gains a `buildEnvelopeFromLegacySignals()` adapter that synthesizes an envelope from parsed log markers, so the gate engine always sees the same shape.
514
+ - Live runs read and write the attempt-scoped canonical envelope path directly.
515
+ - Legacy sibling `*.envelope.json` files and marker-era artifacts are compatibility import inputs for replay, reconcile, and historical trace materialization only.
516
+ - `synthesizeLegacyEnvelope()` remains explicit migration-only compatibility code; live gate, retry, closure, and reducer decisions do not use it as a correctness path.
509
517
 
510
518
  ---
511
519
 
@@ -545,15 +553,17 @@ Projections materialized from Class 1 and Class 2 sources. Can be deleted and re
545
553
  | Relaunch plan | `.tmp/<lane>-wave-launcher/status/relaunch-plan-wave-<N>.json` | JSON |
546
554
  | Assignment snapshot | `.tmp/<lane>-wave-launcher/assignments/wave-<N>.json` | JSON |
547
555
  | Dependency snapshot | `.tmp/<lane>-wave-launcher/dependencies/wave-<N>.json` | JSON |
548
- | Shared summary | `.tmp/<lane>-wave-launcher/summaries/wave-<N>-shared.md` | Markdown |
556
+ | Shared summary | `.tmp/<lane>-wave-launcher/inboxes/wave-<N>/shared-summary.md` | Markdown |
549
557
  | Per-agent inbox | `.tmp/<lane>-wave-launcher/inboxes/wave-<N>/<agentId>.md` | Markdown |
550
- | Ledger | `.tmp/<lane>-wave-launcher/ledgers/wave-<N>.json` | JSON |
558
+ | Ledger | `.tmp/<lane>-wave-launcher/ledger/wave-<N>.json` | JSON |
551
559
  | Docs queue | `.tmp/<lane>-wave-launcher/docs-queue/wave-<N>.json` | JSON |
552
- | Security summary | `.tmp/<lane>-wave-launcher/summaries/wave-<N>-security.md` | Markdown |
553
- | Integration summary | `.tmp/<lane>-wave-launcher/summaries/wave-<N>-integration.md` | Markdown |
560
+ | Security summary JSON | `.tmp/<lane>-wave-launcher/security/wave-<N>.json` | JSON |
561
+ | Security summary markdown | `.tmp/<lane>-wave-launcher/security/wave-<N>.md` | Markdown |
562
+ | Integration summary JSON | `.tmp/<lane>-wave-launcher/integration/wave-<N>.json` | JSON |
563
+ | Integration summary markdown | `.tmp/<lane>-wave-launcher/integration/wave-<N>.md` | Markdown |
554
564
  | Run state | `.tmp/<lane>-wave-launcher/run-state.json` | JSON |
555
565
  | Quality metrics | `.tmp/<lane>-wave-launcher/traces/wave-<N>/attempt-<A>/quality.json` | JSON |
556
- | Task graph snapshot | `.tmp/<lane>-wave-launcher/tasks/wave-<N>.json` | JSON |
566
+ | Reducer snapshot | `.tmp/<lane>-wave-launcher/reducer/wave-<N>.json` | JSON |
557
567
 
558
568
  ### Class 4 — Human-Facing Projections
559
569
 
@@ -563,9 +573,9 @@ Convenience outputs for operator dashboards and review. Never read by the system
563
573
  |----------|------|--------|
564
574
  | Global dashboard | `.tmp/<lane>-wave-launcher/dashboards/global.json` | JSON |
565
575
  | Wave dashboard | `.tmp/<lane>-wave-launcher/dashboards/wave-<N>.json` | JSON |
566
- | Coordination board | `.tmp/<lane>-wave-launcher/coordination/wave-<N>-board.md` | Markdown |
567
- | Orchestrator board | `.tmp/<lane>-wave-launcher/coordination/orchestrator-board.md` | Markdown |
568
- | Wave manifest | `.tmp/<lane>-wave-launcher/wave-manifest.json` | JSON |
576
+ | Coordination board | `.tmp/<lane>-wave-launcher/messageboards/wave-<N>.md` | Markdown |
577
+ | Orchestrator board | `.tmp/wave-orchestrator/messageboards/orchestrator.md` | Markdown |
578
+ | Wave manifest | `.tmp/<lane>-wave-launcher/waves.manifest.json` | JSON |
569
579
 
570
580
  Each artifact file includes a `_meta` field (or frontmatter for markdown) declaring:
571
581
 
@@ -839,23 +849,31 @@ This boundary means a future Temporal-backed or service-backed orchestrator can
839
849
 
840
850
  ---
841
851
 
842
- ## File-to-Module Migration Map
843
-
844
- This maps current files to their end-state locations.
845
-
846
- | Current File | End-State Module | Notes |
847
- |-------------|-----------------|-------|
848
- | `launcher.mjs` (monolith) | `launcher.mjs` (thin orchestrator) | ~95% of logic moves to engines |
849
- | `launcher-runtime.mjs` | `session-supervisor.mjs` | Session launch/wait |
850
- | `launcher-closure.mjs` | `closure-engine.mjs` | Closure sequencing |
851
- | `launcher-gates.mjs` | `gate-engine.mjs` | Gate evaluation |
852
- | `launcher-retry.mjs` | `retry-engine.mjs` | Retry planning |
853
- | `launcher-derived-state.mjs` | `derived-state-engine.mjs` | State materialization |
854
- | `launcher-supervisor.mjs` | `session-supervisor.mjs` | Merged with runtime |
855
- | (new) | `implementation-engine.mjs` | Implementation phase orchestration |
856
- | (new) | `wave-state-reducer.mjs` | Pure state reducer |
857
- | (new) | `projection-writer.mjs` | All non-canonical writes |
858
- | (new) | `result-envelope.mjs` | Envelope schema + validation |
852
+ ## Runtime Module Layout
853
+
854
+ The runtime tree now uses the engine-oriented module names directly.
855
+
856
+ | Runtime Module | Responsibility |
857
+ |---------------|----------------|
858
+ | `launcher.mjs` | Thin orchestrator and CLI entrypoint |
859
+ | `implementation-engine.mjs` | Implementation fan-out planning |
860
+ | `derived-state-engine.mjs` | Derived state computation from canonical inputs |
861
+ | `gate-engine.mjs` | Live gate evaluation |
862
+ | `closure-engine.mjs` | Closure sequencing |
863
+ | `retry-engine.mjs` | Retry and resume planning |
864
+ | `wave-state-reducer.mjs` | Deterministic wave-state reconstruction |
865
+ | `session-supervisor.mjs` | Session launch and observation |
866
+ | `projection-writer.mjs` | Projection writes |
867
+ | `result-envelope.mjs` | Envelope schema, validation, and compatibility synthesis |
868
+ | `launcher-runtime.mjs` | Low-level launch and wait helpers used by the session supervisor |
869
+ | `control-plane.mjs` | Canonical control-plane event log |
870
+ | `coordination-store.mjs` | Canonical coordination log |
871
+ | `wave-files.mjs` | Parsed wave definitions |
872
+
873
+ Historical note:
874
+
875
+ - earlier transition builds used `launcher-gates.mjs`, `launcher-retry.mjs`, `launcher-derived-state.mjs`, `launcher-closure.mjs`, and `launcher-supervisor.mjs` as extracted runtime modules
876
+ - those compatibility names are no longer part of the live runtime tree
859
877
  | (new) | `contradiction-entity.mjs` | Contradiction lifecycle |
860
878
  | (new) | `fact-entity.mjs` | Fact/evidence lineage |
861
879
  | (new) | `human-input-workflow.mjs` | Human input workflow logic |
@@ -900,7 +918,7 @@ This section documents the 10 feedback corrections incorporated from architectur
900
918
 
901
919
  2. **Task vs coordination_record boundary:** added an explicit section defining the crisp rule. Task = durable work unit with ownership, artifact contract, proof rules, closure semantics. Coordination record = event or message about a task. They do not overlap.
902
920
 
903
- 3. **Intent vs observation:** implementation engine now emits `agent_run_planned` (intent). Only the session supervisor writes `agent_run.started` (observed fact). The `agent_run` state machine now includes `planned started` to capture this.
921
+ 3. **Intent vs observation:** planning engines emit run selections or launch requests (intent). Only the session supervisor writes `wave_run.*`, `attempt.*`, and `agent_run.*` observed lifecycle facts after those events actually happen.
904
922
 
905
923
  4. **Reducer input model:** the reducer explicitly takes all three canonical sources (control-plane events, coordination records, agent result envelopes) as arguments. The doc no longer claims a single event log.
906
924
 
@@ -914,7 +932,7 @@ This section documents the 10 feedback corrections incorporated from architectur
914
932
 
915
933
  9. **Human input workflow ownership:** explicitly moved SLA, reroute, escalation, and timeout logic out of the supervisor. The supervisor observes and submits; workflow semantics live in control-plane events, the reducer, and `human-input-workflow.mjs`.
916
934
 
917
- 10. **Executor adapter contract:** `buildResultEnvelope(logPath, statusPath)` replaced with `locateResultEnvelope()` + `validateResultEnvelope()` for the end state, and `synthesizeLegacyEnvelope()` explicitly named as migration-only.
935
+ 10. **Executor adapter contract:** `locateResultEnvelope()` + `validateResultEnvelope()` define the live end state, and `synthesizeLegacyEnvelope()` is explicitly named as migration-only compatibility code.
918
936
 
919
937
  ---
920
938
 
@@ -0,0 +1,262 @@
1
+ # Wave 12 - Optional Design Steward Handoff
2
+
3
+ This is a showcase-first sample wave for the shipped `design` worker role in `0.8.5`.
4
+
5
+ This example demonstrates the docs-first design-steward path where a design packet is published before code-owning implementation begins.
6
+
7
+ Use this shape when:
8
+
9
+ - the task has interface or architecture ambiguity
10
+ - multiple implementation owners need the same decisions and assumptions
11
+ - you want explicit design lineage instead of re-deriving the same plan in each coding prompt
12
+
13
+ If you want the hybrid design-steward variant instead, keep the same packet path but also assign that same design agent implementation-owned files plus the normal implementation contract sections. The runtime will then run the design pass first and include that same agent in the later implementation fan-out.
14
+
15
+ **Commit message**: `Feat: add design packet before implementation fan-out`
16
+
17
+ ## Component promotions
18
+
19
+ - api-boundary: repo-landed
20
+ - runtime-integration: repo-landed
21
+
22
+ ## Context7 defaults
23
+
24
+ - bundle: node-typescript
25
+ - query: "Interface boundaries, migration sequencing, and implementation handoff patterns for repository work"
26
+
27
+ ## Agent A0: cont-QA
28
+
29
+ ### Role prompts
30
+
31
+ - docs/agents/wave-cont-qa-role.md
32
+
33
+ ### Executor
34
+
35
+ - profile: deep-review
36
+
37
+ ### Context7
38
+
39
+ - bundle: none
40
+
41
+ ### Prompt
42
+
43
+ ```text
44
+ Primary goal:
45
+ - Judge whether the design packet, implementation slices, and closure evidence line up without hidden architectural drift.
46
+
47
+ Required context before coding:
48
+ - Read docs/reference/repository-guidance.md.
49
+ - Read docs/plans/current-state.md and docs/plans/migration.md.
50
+ - Read docs/plans/waves/design/wave-12-D1.md.
51
+
52
+ File ownership (only touch these paths):
53
+ - docs/plans/waves/reviews/wave-12-cont-qa.md
54
+ ```
55
+
56
+ ## Agent A8: Integration Steward
57
+
58
+ ### Role prompts
59
+
60
+ - docs/agents/wave-integration-role.md
61
+
62
+ ### Executor
63
+
64
+ - profile: deep-review
65
+
66
+ ### Context7
67
+
68
+ - bundle: none
69
+
70
+ ### Prompt
71
+
72
+ ```text
73
+ Primary goal:
74
+ - Reconcile the landed implementation against the design packet and the actual repo changes.
75
+
76
+ Required context before coding:
77
+ - Read docs/plans/current-state.md.
78
+ - Read docs/plans/waves/design/wave-12-D1.md.
79
+
80
+ File ownership (only touch these paths):
81
+ - .tmp/main-wave-launcher/integration/wave-12.md
82
+ - .tmp/main-wave-launcher/integration/wave-12.json
83
+ ```
84
+
85
+ ## Agent A9: Documentation Steward
86
+
87
+ ### Role prompts
88
+
89
+ - docs/agents/wave-documentation-role.md
90
+
91
+ ### Executor
92
+
93
+ - profile: docs-pass
94
+
95
+ ### Context7
96
+
97
+ - bundle: none
98
+
99
+ ### Prompt
100
+
101
+ ```text
102
+ Primary goal:
103
+ - Keep the shared docs and migration notes aligned with the design packet and final implementation outcome.
104
+
105
+ Required context before coding:
106
+ - Read docs/plans/current-state.md.
107
+ - Read docs/plans/migration.md.
108
+ - Read docs/plans/waves/design/wave-12-D1.md.
109
+
110
+ File ownership (only touch these paths):
111
+ - docs/plans/current-state.md
112
+ - docs/plans/migration.md
113
+ ```
114
+
115
+ ## Agent D1: Design Steward
116
+
117
+ ### Role prompts
118
+
119
+ - docs/agents/wave-design-role.md
120
+
121
+ ### Executor
122
+
123
+ - profile: design-pass
124
+
125
+ ### Context7
126
+
127
+ - bundle: none
128
+
129
+ ### Skills
130
+
131
+ - role-design
132
+
133
+ Add `tui-design` here too when the design packet owns terminal UX, dashboards, or other operator-surface behavior. Omit it for generic API or migration design.
134
+
135
+ ### Capabilities
136
+
137
+ - design
138
+ - interface-handoff
139
+ - decision-lineage
140
+
141
+ ### Prompt
142
+
143
+ ```text
144
+ Primary goal:
145
+ - Produce the implementation-ready design packet for the Wave 12 slice before coding starts.
146
+
147
+ Required context before coding:
148
+ - Read docs/reference/repository-guidance.md.
149
+ - Read docs/plans/current-state.md.
150
+ - Read docs/plans/migration.md.
151
+
152
+ Specific expectations:
153
+ - make the implementation handoff concrete enough that A1 and A2 can start without re-deriving the same architecture
154
+ - keep assumptions and open questions explicit
155
+ - do not silently expand into source-code changes
156
+
157
+ File ownership (only touch these paths):
158
+ - docs/plans/waves/design/wave-12-D1.md
159
+ ```
160
+
161
+ ## Agent A1: API Boundary Update
162
+
163
+ ### Executor
164
+
165
+ - profile: implement-fast
166
+
167
+ ### Context7
168
+
169
+ - bundle: node-typescript
170
+ - query: "API boundary refactors and compatibility-safe migration sequencing"
171
+
172
+ ### Skills
173
+
174
+ - role-implementation
175
+ - runtime-codex
176
+ - repo-coding-rules
177
+
178
+ ### Components
179
+
180
+ - api-boundary
181
+
182
+ ### Deliverables
183
+
184
+ - scripts/wave-orchestrator/api-boundary.mjs
185
+ - test/wave-orchestrator/api-boundary.test.ts
186
+
187
+ ### Exit contract
188
+
189
+ - completion: integrated
190
+ - durability: durable
191
+ - proof: integration
192
+ - doc-impact: none
193
+
194
+ ### Prompt
195
+
196
+ ```text
197
+ Primary goal:
198
+ - Land the API-boundary changes described in the Wave 12 design packet.
199
+
200
+ Required context before coding:
201
+ - Read docs/plans/waves/design/wave-12-D1.md before changing code.
202
+
203
+ File ownership (only touch these paths):
204
+ - scripts/wave-orchestrator/api-boundary.mjs
205
+ - test/wave-orchestrator/api-boundary.test.ts
206
+ ```
207
+
208
+ ## Agent A2: Runtime Integration Update
209
+
210
+ ### Executor
211
+
212
+ - profile: implement-fast
213
+
214
+ ### Context7
215
+
216
+ - bundle: node-typescript
217
+ - query: "Runtime integration updates and handoff-safe staged migration"
218
+
219
+ ### Skills
220
+
221
+ - role-implementation
222
+ - runtime-codex
223
+ - repo-coding-rules
224
+
225
+ ### Components
226
+
227
+ - runtime-integration
228
+
229
+ ### Deliverables
230
+
231
+ - scripts/wave-orchestrator/runtime-integration.mjs
232
+ - test/wave-orchestrator/runtime-integration.test.ts
233
+
234
+ ### Exit contract
235
+
236
+ - completion: integrated
237
+ - durability: durable
238
+ - proof: integration
239
+ - doc-impact: none
240
+
241
+ ### Prompt
242
+
243
+ ```text
244
+ Primary goal:
245
+ - Land the runtime integration changes described in the Wave 12 design packet.
246
+
247
+ Required context before coding:
248
+ - Read docs/plans/waves/design/wave-12-D1.md before changing code.
249
+
250
+ File ownership (only touch these paths):
251
+ - scripts/wave-orchestrator/runtime-integration.mjs
252
+ - test/wave-orchestrator/runtime-integration.test.ts
253
+ ```
254
+
255
+ ## Why This Example Exists
256
+
257
+ This example demonstrates the intended boundary:
258
+
259
+ - the design steward is report-first and docs/spec-owned
260
+ - implementation owners still own code changes and proof
261
+ - closure roles stay the same
262
+ - the design packet becomes an explicit handoff artifact instead of hidden reasoning inside one agent transcript
@@ -2,7 +2,7 @@
2
2
 
3
3
  This is a showcase-first sample wave.
4
4
 
5
- Use it as the single reference example for the current `0.8.3` Wave surface.
5
+ Use it as the single reference example for the current `0.8.5` Wave surface.
6
6
 
7
7
  It intentionally combines more sections than a normal production wave so one file can demonstrate:
8
8