@chllming/wave-orchestration 0.8.5 → 0.8.6

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 (38) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +14 -9
  3. package/docs/README.md +3 -1
  4. package/docs/context7/bundles.json +19 -20
  5. package/docs/context7/planner-agent/README.md +4 -1
  6. package/docs/guides/author-and-run-waves.md +4 -1
  7. package/docs/guides/planner.md +3 -1
  8. package/docs/guides/signal-wrappers.md +165 -0
  9. package/docs/guides/terminal-surfaces.md +13 -0
  10. package/docs/plans/context7-wave-orchestrator.md +24 -7
  11. package/docs/plans/current-state.md +7 -3
  12. package/docs/plans/end-state-architecture.md +16 -4
  13. package/docs/plans/examples/wave-example-design-handoff.md +1 -1
  14. package/docs/plans/examples/wave-example-live-proof.md +1 -1
  15. package/docs/plans/migration.md +165 -72
  16. package/docs/plans/wave-orchestrator.md +3 -0
  17. package/docs/reference/cli-reference.md +11 -2
  18. package/docs/reference/npmjs-trusted-publishing.md +2 -2
  19. package/docs/reference/sample-waves.md +5 -5
  20. package/docs/reference/skills.md +9 -1
  21. package/docs/reference/wave-control.md +2 -0
  22. package/package.json +1 -1
  23. package/releases/manifest.json +19 -0
  24. package/scripts/context7-api-check.sh +57 -13
  25. package/scripts/wave-orchestrator/control-cli.mjs +19 -0
  26. package/scripts/wave-orchestrator/coordination.mjs +35 -0
  27. package/scripts/wave-orchestrator/install.mjs +2 -0
  28. package/scripts/wave-orchestrator/launcher-runtime.mjs +11 -0
  29. package/scripts/wave-orchestrator/launcher.mjs +20 -0
  30. package/scripts/wave-orchestrator/session-supervisor.mjs +113 -0
  31. package/scripts/wave-orchestrator/shared.mjs +1 -0
  32. package/scripts/wave-orchestrator/signals.mjs +681 -0
  33. package/scripts/wave-orchestrator/wave-control-schema.mjs +2 -0
  34. package/scripts/wave-status.sh +200 -0
  35. package/scripts/wave-watch.sh +200 -0
  36. package/skills/README.md +3 -0
  37. package/skills/signal-hygiene/SKILL.md +51 -0
  38. package/skills/signal-hygiene/skill.json +20 -0
@@ -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.5` Wave surface.
5
+ Use it as the single reference example for the current `0.8.6` Wave surface.
6
6
 
7
7
  It intentionally combines more sections than a normal production wave so one file can demonstrate:
8
8
 
@@ -1,6 +1,6 @@
1
1
  # Migration
2
2
 
3
- This page is the practical repo-upgrade guide for the current `0.8.5` surface.
3
+ This page is the practical repo-upgrade guide for the current `0.8.6` surface.
4
4
 
5
5
  Use it when you are:
6
6
 
@@ -10,21 +10,20 @@ Use it when you are:
10
10
 
11
11
  For the completed internal architecture cutover record, see [architecture-hardening-migration.md](./architecture-hardening-migration.md). That document is historical. This one is the operator-facing upgrade checklist.
12
12
 
13
- ## What `0.8.5` Changes
13
+ ## What `0.8.6` Changes
14
14
 
15
- `0.8.5` ships a new authored and runtime surface, not just a patch-level hardening change.
15
+ `0.8.6` keeps the `0.8.5` design-role surface and adds a new signal-driven operator and long-running-agent model.
16
16
 
17
17
  The biggest additions are:
18
18
 
19
- - the optional `design` worker role is now part of the published package surface
20
- - starter design bundles now ship in `docs/agents/wave-design-role.md`, `skills/role-design/`, and `skills/tui-design/`
21
- - design stewards are docs-first by default, but a wave may explicitly give one implementation ownership
22
- - hybrid design stewards now run in two phases:
23
- - design packet first
24
- - implementation follow-through second
25
- - gates, retry or resume planning, reducer state, prompts, local smoke execution, and result envelopes now all agree on that hybrid-design contract
19
+ - the optional `design` worker role remains part of the published package surface
20
+ - starter design bundles still ship in `docs/agents/wave-design-role.md`, `skills/role-design/`, and `skills/tui-design/`
21
+ - starter signal bundles now also ship in `skills/signal-hygiene/`, `scripts/wave-status.sh`, and `scripts/wave-watch.sh`
22
+ - long-running agents and resident orchestrators now receive prompt-visible signal-state and signal-ack paths
23
+ - canonical versioned wave and agent signal snapshots now live under `.tmp/<lane>-wave-launcher/signals/`
24
+ - wrapper and signal semantics now treat `completed` and `failed` as truly terminal, with wrapper exit `40` for failed terminal state
26
25
 
27
- There are no new top-level CLI commands for `0.8.5`.
26
+ There are no new top-level CLI commands for `0.8.6`. The wrapper scripts are starter utilities layered over `wave control status --json`, not a new top-level CLI family.
28
27
 
29
28
  ## Upgrade Contract
30
29
 
@@ -39,6 +38,9 @@ Treat these as package-owned starter surface unless your repo intentionally copi
39
38
 
40
39
  - `docs/agents/*.md`
41
40
  - `skills/*`
41
+ - `scripts/wave-status.sh`
42
+ - `scripts/wave-watch.sh`
43
+ - `docs/guides/signal-wrappers.md`
42
44
  - `docs/plans/current-state.md`
43
45
  - `docs/plans/end-state-architecture.md`
44
46
  - `docs/plans/wave-orchestrator.md`
@@ -73,7 +75,7 @@ pnpm exec wave upgrade
73
75
 
74
76
  ### 3. Sync repo-owned starter surface only if you copied it
75
77
 
76
- The most common sync set for `0.8.5` is:
78
+ The most common sync set for `0.8.6` is:
77
79
 
78
80
  - `docs/agents/wave-launcher-role.md`
79
81
  - `docs/agents/wave-orchestrator-role.md`
@@ -82,17 +84,25 @@ The most common sync set for `0.8.5` is:
82
84
  - `skills/wave-core/`
83
85
  - `skills/role-planner/`
84
86
  - `skills/role-design/`
85
- - `skills/tui-design/` when your repo wants the terminal or operator-surface design reference
87
+ - `skills/tui-design/`
88
+ - `skills/signal-hygiene/`
89
+ - `scripts/wave-status.sh`
90
+ - `scripts/wave-watch.sh`
91
+ - `docs/guides/author-and-run-waves.md`
92
+ - `docs/guides/planner.md`
93
+ - `docs/guides/terminal-surfaces.md`
94
+ - `docs/guides/signal-wrappers.md`
86
95
  - `docs/context7/planner-agent/`
87
96
  - `docs/reference/wave-planning-lessons.md`
97
+ - `docs/reference/cli-reference.md`
98
+ - `docs/reference/skills.md`
99
+ - `docs/reference/sample-waves.md`
88
100
  - `docs/plans/current-state.md`
89
101
  - `docs/plans/end-state-architecture.md`
90
102
  - `docs/plans/wave-orchestrator.md`
91
103
  - `docs/plans/migration.md`
92
- - `docs/reference/skills.md`
93
- - `docs/reference/sample-waves.md`
94
104
 
95
- If your repo copied starter `wave.config.json` defaults, also sync the design-role entries:
105
+ If your repo copied starter `wave.config.json` defaults, also sync:
96
106
 
97
107
  - `roles.designRolePromptPath`
98
108
  - `skills.byRole.design`
@@ -106,29 +116,62 @@ Run these from the repo root:
106
116
  pnpm exec wave doctor --json
107
117
  pnpm exec wave launch --lane main --dry-run --no-dashboard
108
118
  pnpm exec wave control status --lane main --wave 0 --json
119
+ scripts/wave-status.sh --lane main --wave 0
120
+ scripts/wave-watch.sh --lane main --wave 0 --until-change --refresh-ms 500
109
121
  pnpm exec wave coord inbox --lane main --wave 0 --agent A1 --dry-run
110
122
  ```
111
123
 
112
124
  Use `pnpm exec wave dashboard --lane <lane> --attach current` or `--attach global` when you need to reattach to a tmux-backed dashboard after the upgrade.
113
125
 
114
- ## `0.8.5` Design-Steward Model
126
+ ## `0.8.6` Release Model
127
+
128
+ The current `0.8.6` surface is two changes together:
129
+
130
+ - the shipped `design` worker role and hybrid design-steward flow introduced in `0.8.5`
131
+ - the signal-driven long-running-agent and wrapper model introduced in `0.8.6`
132
+
133
+ ### Signal-driven waiting and wrapper model
134
+
135
+ This is the main new behavior in `0.8.6`.
115
136
 
116
- This is the main new behavior in the current `0.8.5` surface.
137
+ Starter repos now include:
117
138
 
118
- ### Docs-first design stewards
139
+ - `skills/signal-hygiene/`
140
+ - `scripts/wave-status.sh`
141
+ - `scripts/wave-watch.sh`
119
142
 
120
- Default design stewards:
143
+ Use that model when:
144
+
145
+ - an external shell loop or CI job should wait for a wave or agent to change state
146
+ - a non-resident agent is intentionally long-running and should wake only on orchestrator-written signal changes
147
+ - a resident orchestrator should explicitly acknowledge that it observed a reroute, answered feedback, or terminal transition
148
+
149
+ The contract is:
150
+
151
+ - the runtime publishes versioned signal snapshots under `.tmp/<lane>-wave-launcher/signals/`
152
+ - long-running watchers receive a signal-state path and signal-ack path in the prompt
153
+ - the watcher writes the ack file immediately after it observes a new signal version
154
+ - wrapper exit codes are now:
155
+ - `0` completed
156
+ - `10` still active or waiting
157
+ - `20` input required
158
+ - `30` signal changed while still active from `wave-watch.sh --until-change`
159
+ - `40` failed
160
+
161
+ If your repo copied operator docs, shell automation, or starter scripts, this is the main sync set to apply from `0.8.6`.
162
+
163
+ ### `0.8.5` design-steward model
164
+
165
+ Docs-first design stewards:
121
166
 
122
167
  - import `docs/agents/wave-design-role.md`
123
168
  - own at least one packet path such as `docs/plans/waves/design/wave-<n>-<agentId>.md`
124
169
  - stay docs or spec-first
125
170
  - finish with `[wave-design] state=<ready-for-implementation|needs-clarification|blocked> ...`
126
171
 
127
- ### Hybrid design stewards
128
-
129
172
  If the wave explicitly assigns non-packet ownership to a design agent, that agent becomes a hybrid design steward.
130
173
 
131
- The runtime now treats that as:
174
+ The runtime treats that as:
132
175
 
133
176
  1. a design pass first
134
177
  2. then the same agent rejoins implementation with normal proof obligations
@@ -143,72 +186,58 @@ For a hybrid design steward, make sure the wave still includes:
143
186
 
144
187
  The second pass must still re-emit `[wave-design]`, and it must also satisfy the normal implementation proof, doc-delta, and component-marker contract.
145
188
 
146
- ### Planner note
147
-
148
- The interactive `wave draft` flow now supports `design` as a worker role and scaffolds the docs-first default path.
149
-
150
- If you want a hybrid design steward today, the safest authoring paths are:
151
-
152
- - edit the drafted wave manually
153
- - or use an agentic planner payload that already declares the design agent's explicit implementation ownership
189
+ The interactive `wave draft` flow supports `design` as a worker role and scaffolds the docs-first default path. If you want a hybrid design steward today, the safest authoring paths are manual edits or an agentic planner payload that already declares the design agent's explicit implementation ownership.
154
190
 
155
191
  ## Version-Specific Upgrade Guidance
156
192
 
157
- ## Upgrading From `0.8.3` To `0.8.5`
193
+ ## Upgrading From `0.8.5` To `0.8.6`
158
194
 
159
- This is the most common one-step package upgrade path.
195
+ This is the smallest upgrade, but it changes the live wait-loop contract for external automation and intentionally long-running agents.
160
196
 
161
- ### What changed across that range
197
+ ### What changed
162
198
 
163
- - `0.8.4` tightened contradiction replay, component-promotion threshold handling, and projection persistence boundaries
164
- - `0.8.5` ships the `design` worker role, the `role-design` and `tui-design` starter bundles, and the hybrid design-steward runtime model as part of the published package
165
- - current operator and planner docs now describe the shipped surface directly instead of splitting behavior between a published package and newer `main`-only additions
199
+ - versioned signal snapshots are now published under `.tmp/<lane>-wave-launcher/signals/`
200
+ - starter repos now include `skills/signal-hygiene/`, `scripts/wave-status.sh`, and `scripts/wave-watch.sh`
201
+ - the runtime injects signal-state plus signal-ack paths into long-running agent and resident-orchestrator prompts
202
+ - `completed` and `failed` now override stale feedback or coordination wakeups in agent signal state
203
+ - wrapper scripts now treat `failed` as terminal with exit `40`
166
204
 
167
205
  ### Required repo changes
168
206
 
169
- Usually none if the repo does not copy starter prompts, skills, or planning docs.
207
+ Usually none if the repo did not copy starter scripts, operator docs, or skill bundles.
170
208
 
171
209
  ### Strongly recommended sync
172
210
 
173
211
  If the repo copied starter surface, sync:
174
212
 
175
- - `docs/agents/wave-design-role.md`
176
- - `skills/role-design/`
177
- - `skills/tui-design/`
178
- - `docs/guides/author-and-run-waves.md`
179
- - `docs/guides/planner.md`
213
+ - `skills/signal-hygiene/`
214
+ - `scripts/wave-status.sh`
215
+ - `scripts/wave-watch.sh`
216
+ - `docs/guides/signal-wrappers.md`
217
+ - `docs/guides/terminal-surfaces.md`
218
+ - `docs/reference/cli-reference.md`
180
219
  - `docs/reference/skills.md`
181
- - `docs/reference/sample-waves.md`
182
220
  - `docs/plans/current-state.md`
183
- - `docs/plans/wave-orchestrator.md`
184
221
  - `docs/plans/end-state-architecture.md`
185
-
186
- If the repo copied starter `wave.config.json` defaults, also sync:
187
-
188
- - `roles.designRolePromptPath`
189
- - `skills.byRole.design`
190
- - `executors.profiles.design-pass`
222
+ - `docs/plans/wave-orchestrator.md`
191
223
 
192
224
  ### Validation focus
193
225
 
194
- - confirm contradiction-blocked replay cases still compare cleanly if the repo keeps replay fixtures
195
- - if the repo uses design stewards, confirm packet-only design waves still block implementation until `ready-for-implementation`
196
- - if the repo uses hybrid design stewards, confirm the same agent rejoins implementation only when the authored wave explicitly gives it code ownership
197
-
198
- ## Upgrading From `0.8.4` To `0.8.5`
226
+ - confirm any existing shell automation treats wrapper exit `40` as terminal failure
227
+ - if the repo uses long-running watchers, confirm they can write the ack file where the prompt tells them to
228
+ - reroute one targeted feedback or coordination request and confirm the resident signal version changes even when the signal kind stays the same
199
229
 
200
- This is the smallest upgrade that still changes authored behavior.
230
+ ## Upgrading From `0.8.4` To `0.8.6`
201
231
 
202
232
  ### What changed
203
233
 
204
- - the optional `design` worker role is now part of the published package surface
205
- - `role-design` and `tui-design` starter bundles now ship with the release
234
+ - `0.8.5` added the optional `design` worker role plus the `role-design` and `tui-design` starter bundles
206
235
  - design stewards can now be docs-first or explicit hybrid design stewards
207
- - prompts, gates, retry or resume planning, reducer state, and local smoke execution now honor that hybrid-design contract consistently
236
+ - `0.8.6` adds signal-driven waiting, `signal-hygiene`, and the seeded wrapper scripts
208
237
 
209
238
  ### Required repo changes
210
239
 
211
- None if your repo does not use design stewards.
240
+ None if your repo does not use design stewards, long-running watcher agents, or copied starter scripts.
212
241
 
213
242
  ### Strongly recommended sync
214
243
 
@@ -217,7 +246,11 @@ If your repo copied starter prompts, skills, or authoring docs, sync:
217
246
  - `docs/agents/wave-design-role.md`
218
247
  - `skills/role-design/`
219
248
  - `skills/tui-design/`
249
+ - `skills/signal-hygiene/`
250
+ - `scripts/wave-status.sh`
251
+ - `scripts/wave-watch.sh`
220
252
  - `docs/guides/author-and-run-waves.md`
253
+ - `docs/guides/signal-wrappers.md`
221
254
  - `docs/guides/planner.md`
222
255
  - `docs/reference/skills.md`
223
256
  - `docs/reference/sample-waves.md`
@@ -226,17 +259,62 @@ If your repo copied starter config defaults, also sync the `designRolePromptPath
226
259
 
227
260
  ### Validation focus
228
261
 
229
- If the repo uses design stewards, dry-run at least one wave that proves:
230
-
231
262
  - the design packet path resolves inside the repo
232
263
  - design runs before implementation
233
264
  - implementation does not start until every design packet is `ready-for-implementation`
234
265
  - hybrid design stewards rejoin implementation when they explicitly own code
235
- - downstream implementation prompts read the same-wave design packet context
266
+ - long-running prompts receive signal-state and ack paths when the repo uses the new waiting model
267
+
268
+ ## Upgrading From `0.8.3` To `0.8.6`
269
+
270
+ This is the most common one-step package upgrade path.
271
+
272
+ ### What changed across that range
273
+
274
+ - `0.8.4` tightened contradiction replay, component-promotion threshold handling, and projection persistence boundaries
275
+ - `0.8.5` ships the `design` worker role, the `role-design` and `tui-design` starter bundles, and the hybrid design-steward runtime model as part of the published package
276
+ - `0.8.6` adds versioned signal snapshots, `signal-hygiene`, prompt-injected signal ack loops, and the seeded operator wrappers
277
+ - current operator and planner docs now describe the shipped surface directly instead of splitting behavior between a published package and newer `main`-only additions
278
+
279
+ ### Required repo changes
280
+
281
+ Usually none if the repo does not copy starter prompts, skills, planning docs, or wrapper scripts.
282
+
283
+ ### Strongly recommended sync
284
+
285
+ If the repo copied starter surface, sync:
286
+
287
+ - `docs/agents/wave-design-role.md`
288
+ - `skills/role-design/`
289
+ - `skills/tui-design/`
290
+ - `skills/signal-hygiene/`
291
+ - `scripts/wave-status.sh`
292
+ - `scripts/wave-watch.sh`
293
+ - `docs/guides/author-and-run-waves.md`
294
+ - `docs/guides/signal-wrappers.md`
295
+ - `docs/guides/planner.md`
296
+ - `docs/reference/skills.md`
297
+ - `docs/reference/sample-waves.md`
298
+ - `docs/plans/current-state.md`
299
+ - `docs/plans/wave-orchestrator.md`
300
+ - `docs/plans/end-state-architecture.md`
301
+
302
+ If the repo copied starter `wave.config.json` defaults, also sync:
303
+
304
+ - `roles.designRolePromptPath`
305
+ - `skills.byRole.design`
306
+ - `executors.profiles.design-pass`
236
307
 
237
- ## Upgrading From `0.8.0`-`0.8.4` To `0.8.5`
308
+ ### Validation focus
238
309
 
239
- Treat this as one move to the current `0.8.5` surface.
310
+ - confirm contradiction-blocked replay cases still compare cleanly if the repo keeps replay fixtures
311
+ - if the repo uses design stewards, confirm packet-only design waves still block implementation until `ready-for-implementation`
312
+ - if the repo uses hybrid design stewards, confirm the same agent rejoins implementation only when the authored wave explicitly gives it code ownership
313
+ - if the repo uses long-running agents or shell automation, confirm the new wrapper exit contract and ack-loop semantics before relying on an older polling script
314
+
315
+ ## Upgrading From `0.8.0`-`0.8.4` To `0.8.6`
316
+
317
+ Treat this as one move to the current `0.8.6` surface.
240
318
 
241
319
  ### What changed across that range
242
320
 
@@ -245,6 +323,7 @@ Treat this as one move to the current `0.8.5` surface.
245
323
  - contradiction replay and component-threshold handling were tightened
246
324
  - projection persistence centralized under `projection-writer.mjs`
247
325
  - the design-role surface is now shipped instead of living only on source `main`
326
+ - versioned signal snapshots, wrapper scripts, and long-running signal ack loops are now part of the shipped operator surface
248
327
 
249
328
  ### Required repo changes
250
329
 
@@ -257,6 +336,7 @@ If your repo copied starter docs or skills, sync:
257
336
  - current operator runbook and architecture docs
258
337
  - planner starter corpus
259
338
  - design-role starter prompt and skill bundles
339
+ - signal-wrapper starter scripts and docs
260
340
  - any repo-local docs that still describe design as “main only” or “future”
261
341
 
262
342
  ### Validation focus
@@ -265,8 +345,9 @@ If your repo copied starter docs or skills, sync:
265
345
  - answer at least one human-feedback ticket in a test lane and confirm the linked clarification or escalation chain closes cleanly
266
346
  - replay one contradiction-blocked trace if your repo relies on replay regression coverage
267
347
  - dry-run one design-steward wave if the repo wants the new authored surface
348
+ - if the repo uses long-running watcher agents or shell automation, validate `scripts/wave-status.sh` and `scripts/wave-watch.sh` against a live or staged lane
268
349
 
269
- ## Upgrading From `0.6.x` Or `0.7.x` To `0.8.5`
350
+ ## Upgrading From `0.6.x` Or `0.7.x` To `0.8.6`
270
351
 
271
352
  This is the main migration path for older adopted repos.
272
353
 
@@ -278,6 +359,7 @@ This is the main migration path for older adopted repos.
278
359
  - live closure depends on validated result envelopes plus canonical state
279
360
  - control-plane state, reducer state, and replay are first-class runtime surfaces
280
361
  - optional design stewards are now a supported authored shape
362
+ - signal-driven long-running watchers are now a supported operator shape
281
363
 
282
364
  ### Required repo changes
283
365
 
@@ -292,6 +374,7 @@ This is the main migration path for older adopted repos.
292
374
  - the `planner-agentic` entry in `docs/context7/bundles.json`
293
375
  5. Review any repo-owned docs or runbooks that still describe summary-era closure, pre-control-plane retry or proof behavior, or a single overloaded evaluator role.
294
376
  6. If the repo wants design stewards, sync the design starter surface listed above and update local authoring docs accordingly.
377
+ 7. If the repo wants signal-driven long-running watchers or shell automation, sync `skills/signal-hygiene/`, `scripts/wave-status.sh`, `scripts/wave-watch.sh`, and the wrapper docs before relying on local polling scripts.
295
378
 
296
379
  ### Additional validation
297
380
 
@@ -305,7 +388,7 @@ pnpm exec wave control proof get --lane main --wave 0 --json
305
388
 
306
389
  If the repo carries proof-first waves, verify that required proof artifacts still exist locally and not only in historical summaries.
307
390
 
308
- ## Upgrading From `0.5.x` Or Earlier To `0.8.5`
391
+ ## Upgrading From `0.5.x` Or Earlier To `0.8.6`
309
392
 
310
393
  Do not treat this as a tiny patch bump.
311
394
 
@@ -314,7 +397,7 @@ Do not treat this as a tiny patch bump.
314
397
  1. Read [docs/reference/migration-0.2-to-0.5.md](../reference/migration-0.2-to-0.5.md) first if the repo still looks pre-`0.5`.
315
398
  2. Run `pnpm exec wave init --adopt-existing` on a branch so the workspace records install state without overwriting repo-owned material.
316
399
  3. Move the repo onto the `0.6.x` and later surface using the section above.
317
- 4. Sync the planner corpus and, if needed, the design starter surface.
400
+ 4. Sync the planner corpus and, if needed, the design starter surface plus the signal-wrapper starter surface.
318
401
  5. Re-run the full validation checklist before any live executor run.
319
402
 
320
403
  ### Why
@@ -326,6 +409,7 @@ Older repos often differ in:
326
409
  - runtime config keys
327
410
  - planner starter corpus
328
411
  - proof and retry operator surfaces
412
+ - wrapper and signal-monitoring expectations
329
413
  - generated state layout under `.tmp/`
330
414
 
331
415
  Trying to jump directly with ad hoc edits usually leaves hidden drift in prompts, docs, or config.
@@ -345,6 +429,7 @@ Trying to jump directly with ad hoc edits usually leaves hidden drift in prompts
345
429
  - `docs/plans/wave-orchestrator.md`
346
430
  - `docs/plans/end-state-architecture.md`
347
431
  - `docs/plans/migration.md`
432
+ - `docs/guides/signal-wrappers.md`
348
433
  - `docs/reference/cli-reference.md`
349
434
  - `docs/reference/wave-control.md`
350
435
  - `docs/reference/sample-waves.md`
@@ -366,6 +451,8 @@ Use this exact sequence unless your repo has a better repo-specific smoke suite.
366
451
  pnpm exec wave doctor --json
367
452
  pnpm exec wave launch --lane main --dry-run --no-dashboard
368
453
  pnpm exec wave control status --lane main --wave 0 --json
454
+ scripts/wave-status.sh --lane main --wave 0
455
+ scripts/wave-watch.sh --lane main --wave 0 --until-change --refresh-ms 500
369
456
  pnpm exec wave coord show --lane main --wave 0 --dry-run --json
370
457
  pnpm exec wave coord inbox --lane main --wave 0 --agent A1 --dry-run
371
458
  ```
@@ -394,15 +481,21 @@ For repos that depend on replay parity, replay at least:
394
481
  ### A live lane looks blocked after the bump
395
482
 
396
483
  - use `wave control status --lane <lane> --wave <n> --json`
397
- - confirm whether the blocker is canonical coordination, dependency, proof, human-input, or design-gate state
484
+ - confirm whether the blocker is canonical coordination, dependency, proof, human-input, design-gate, or signal-ready state
398
485
  - do not trust generated markdown alone
399
486
 
487
+ ### External automation hangs after the upgrade
488
+
489
+ - confirm your wrapper loop treats exit `40` as terminal failure
490
+ - confirm `wave-watch.sh --until-change` expects exit `30` only for non-terminal signal changes
491
+ - if a long-running agent never wakes, inspect its ack file under `.tmp/<lane>-wave-launcher/signals/wave-<n>/acks/`
492
+
400
493
  ### Replay differs from old expectations
401
494
 
402
495
  - verify whether the trace declares promoted components
403
496
  - compare `storedOutcome.gateSnapshot` against recomputed replay output before changing live policy
404
- - if the repo copied local replay docs, update them to the current reducer and envelope model
497
+ - if the repo copied local replay docs, update them to the current reducer, envelope, and signal model
405
498
 
406
499
  ## Summary
407
500
 
408
- The current `0.8.5` surface keeps the same authority-set and phase-engine architecture, but it now ships the design-role starter surface and the hybrid design-steward runtime model as part of the published package. For most repos already on `0.8.x`, the upgrade is package bump plus validation. For older adopted repos, the real work is syncing repo-owned prompts, skills, planner corpus, and runbooks so they describe the runtime the package now ships.
501
+ The current `0.8.6` surface keeps the same authority-set and phase-engine architecture, but it now ships both the design-role starter surface and the signal-driven long-running-agent starter surface as part of the published package. For most repos already on `0.8.x`, the upgrade is package bump plus validation. For older adopted repos, the real work is syncing repo-owned prompts, skills, planner corpus, wrapper scripts, and runbooks so they describe the runtime the package now ships.
@@ -77,6 +77,8 @@ The live runtime is organized around explicit modules:
77
77
  - `pnpm exec wave feedback list --lane main --pending`
78
78
  - `pnpm exec wave control status --lane main --wave 0 --json`
79
79
  - `pnpm exec wave control status --lane main --wave 0 --agent A1 --json`
80
+ - `scripts/wave-status.sh --lane main --wave 0 --agent A1`
81
+ - `scripts/wave-watch.sh --lane main --wave 0 --agent A1 --until-change --refresh-ms 500`
80
82
  - `pnpm exec wave coord inbox --lane main --wave 0 --agent A1 --dry-run`
81
83
  - `pnpm exec wave control task create --lane main --wave 0 --agent A1 --kind blocker --summary "Need repository decision"`
82
84
  - `pnpm exec wave control task act reassign --lane main --wave 0 --id <task-id> --to A2`
@@ -164,6 +166,7 @@ pnpm exec wave launch --lane main --start-wave 0 --end-wave 0 --executor codex -
164
166
  - `wave control rerun request|get|clear` manages targeted rerun intent under `.tmp/<lane>-wave-launcher/control-plane/` and projects compatible retry overrides under `.tmp/<lane>-wave-launcher/control/`, including selected agents, reuse selectors, invalidated components, and clear or preserve reuse lists.
165
167
  - `wave control proof register|get|supersede|revoke` manages authoritative proof bundles in the same control-plane log and projects compatible proof registries under `.tmp/<lane>-wave-launcher/proof/`.
166
168
  - `wave control telemetry status|flush` inspects and delivers the local Wave Control event queue. Pass `--no-telemetry` on `wave launch` to disable event publication for a single run.
169
+ - `scripts/wave-status.sh` and `scripts/wave-watch.sh` are thin wrapper readers over `wave control status --json` for shell automation and long-running watcher loops. Use [guides/signal-wrappers.md](../guides/signal-wrappers.md) for the exit-code and ack-loop contract.
167
170
  - `wave coord render` regenerates the markdown board projection from the canonical coordination log.
168
171
  - `wave coord inbox` writes the compiled shared summary plus the selected agent inbox.
169
172
 
@@ -96,7 +96,7 @@ Unified operator control surface. Preferred over legacy `wave coord`, `wave retr
96
96
 
97
97
  ### wave control status
98
98
 
99
- Read-only view: blocking edges, logical agent state, tasks, dependencies, rerun intent, proof bundles, and next timers.
99
+ Read-only view: blocking edges, logical agent state, tasks, dependencies, rerun intent, proof bundles, next timers, and derived wave or agent signal snapshots.
100
100
 
101
101
  When a launcher attempt is already running, `wave control status` treats that active attempt as the authoritative current fan-out. Older relaunch plans or unrelated closure blockers remain visible in the payload, but they do not override the live attempt view.
102
102
 
@@ -104,6 +104,15 @@ When a launcher attempt is already running, `wave control status` treats that ac
104
104
  wave control status --lane <lane> --wave <n> [--agent <id>] [--run <id>] [--json]
105
105
  ```
106
106
 
107
+ The JSON payload now includes:
108
+
109
+ - `signals.wave`
110
+ Versioned wave-level signal state for wrappers and external operators.
111
+ - `signals.agents`
112
+ Versioned per-agent signal state, including `shouldWake` plus any observed ack metadata.
113
+
114
+ Starter repos also include `scripts/wave-status.sh` and `scripts/wave-watch.sh` as thin readers over this JSON payload. They use exit `0` for completed, `20` for input-required, `40` for failed, and `30` from `wave-watch.sh --until-change` when the signal changed but the wave stayed active. For the full wrapper contract, read [../guides/signal-wrappers.md](../guides/signal-wrappers.md).
115
+
107
116
  ### wave control telemetry
108
117
 
109
118
  Inspect and deliver the local Wave Control event queue.
@@ -544,7 +553,7 @@ Interactive draft currently offers worker role kinds:
544
553
  - `research`
545
554
  - `security`
546
555
 
547
- Agentic planner payloads also accept `workerAgents[].roleKind = "design"`. The shipped `0.8.5` surface uses `design-pass` as the default executor profile for that role and typically assigns a packet path like `docs/plans/waves/design/wave-<n>-<agentId>.md`. Interactive draft scaffolds the docs-first default; hybrid design stewards are authored by explicitly adding implementation-owned paths and the normal implementation contract sections.
556
+ Agentic planner payloads also accept `workerAgents[].roleKind = "design"`. The shipped `0.8.6` surface uses `design-pass` as the default executor profile for that role and typically assigns a packet path like `docs/plans/waves/design/wave-<n>-<agentId>.md`. Interactive draft scaffolds the docs-first default; hybrid design stewards are authored by explicitly adding implementation-owned paths and the normal implementation contract sections.
548
557
 
549
558
  ## Ad-Hoc Task Commands
550
559
 
@@ -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
- The current `0.8.5` release procedure publishes through a repository Actions secret named `NPM_TOKEN`.
5
+ The current `0.8.6` release procedure publishes through a repository Actions secret named `NPM_TOKEN`.
6
6
 
7
7
  ## What This Repo Already Does
8
8
 
@@ -48,6 +48,6 @@ If this repo later needs private npm dependencies during CI, consider a separate
48
48
  2. Confirm `NPM_TOKEN` exists in the GitHub repo secrets.
49
49
  3. Confirm the package version has been bumped and committed.
50
50
  4. Confirm `README.md`, `CHANGELOG.md`, `releases/manifest.json`, and `docs/plans/migration.md` all describe the same release surface.
51
- 5. Push the release commit and release tag, for example `v0.8.5`.
51
+ 5. Push the release commit and release tag, for example `v0.8.6`.
52
52
  6. Verify both `publish-npm.yml` and `publish-package.yml` start from the tag push.
53
53
  7. Verify the npmjs publish completes successfully for the tagged source.
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  title: "Sample Waves"
3
- summary: "Showcase-first sample waves that demonstrate the shipped 0.8.5 authored surface, including the optional design-role path."
3
+ summary: "Showcase-first sample waves that demonstrate the shipped 0.8.6 authored surface, including the optional design-role path."
4
4
  ---
5
5
 
6
6
  # Sample Waves
7
7
 
8
- This guide points to showcase-first sample waves that demonstrate the shipped `0.8.5` authored Wave surface.
8
+ This guide points to showcase-first sample waves that demonstrate the shipped `0.8.6` authored Wave surface.
9
9
 
10
10
  The examples are intentionally denser than typical production waves. Their job is to teach the current authoring and runtime surface quickly, not to be the smallest possible launch-ready files.
11
11
 
@@ -15,7 +15,7 @@ The examples are intentionally denser than typical production waves. Their job i
15
15
  Shows what a good `repo-landed` outcome looks like when one promoted component only closes honestly if desired-state records, reconcile-loop substrate, and cluster-view surfaces land together. It emphasizes maturity discipline, explicit deliverables, and shared-plan closure without drifting into `pilot-live` claims.
16
16
 
17
17
  - [Full modern sample wave](../plans/examples/wave-example-live-proof.md)
18
- Shows the combined `0.8.5` authored surface in one file: closure roles, `E0`, optional security review, delegated and pinned benchmark targets, richer executor config, `### Skills`, `### Capabilities`, `### Deliverables`, `### Exit contract`, `### Proof artifacts`, sticky retry, deploy environments, and proof-first live-wave structure.
18
+ Shows the combined `0.8.6` authored surface in one file: closure roles, `E0`, optional security review, delegated and pinned benchmark targets, richer executor config, `### Skills`, `### Capabilities`, `### Deliverables`, `### Exit contract`, `### Proof artifacts`, sticky retry, deploy environments, and proof-first live-wave structure.
19
19
 
20
20
  - [Optional design-steward handoff wave](../plans/examples/wave-example-design-handoff.md)
21
21
  Shows the shipped design-role surface: one pre-implementation design steward publishes a design packet, downstream implementation owners read that packet before coding, and normal closure roles still decide final completion. For terminal or operator-surface work, pair that shape with explicit `tui-design` in the design steward's `### Skills`. For the hybrid variant, explicitly give that same design agent implementation-owned paths and the normal implementation contract sections.
@@ -42,7 +42,7 @@ The examples are intentionally denser than typical production waves. Their job i
42
42
 
43
43
  ## Feature Coverage Map
44
44
 
45
- Together these samples cover the main surfaces added or hardened through `0.8.5`:
45
+ Together these samples cover the main surfaces added or hardened through `0.8.6`:
46
46
 
47
47
  - repo-landed maturity discipline and anti-overclaim framing
48
48
  - explicit shared-plan closure for future-wave safety
@@ -89,7 +89,7 @@ Adapt more aggressively when:
89
89
  ## Suggested Reading Order
90
90
 
91
91
  1. Start with [High-fidelity repo-landed rollout wave](../plans/examples/wave-example-rollout-fidelity.md) if you want the clearest example of good closure-ready wave fidelity for a repo-only outcome.
92
- 2. Read [Full modern sample wave](../plans/examples/wave-example-live-proof.md) if you want the denser proof-first and eval-heavy `0.8.5` surface.
92
+ 2. Read [Full modern sample wave](../plans/examples/wave-example-live-proof.md) if you want the denser proof-first and eval-heavy `0.8.6` surface.
93
93
  3. Read [Optional design-steward handoff wave](../plans/examples/wave-example-design-handoff.md) if the task needs a design packet before implementation fan-out.
94
94
  4. Read [docs/evals/README.md](../evals/README.md) if you want more background on benchmark target selection.
95
95
  5. Read [docs/reference/live-proof-waves.md](./live-proof-waves.md) if you want more detail on proof-first `pilot-live` authoring.
@@ -124,7 +124,9 @@ Top-level and lane-local skill attachment use the same shape:
124
124
 
125
125
  Lane-local `lanes.<lane>.skills` extends the global config instead of replacing it.
126
126
 
127
- Optional design workers in the shipped `0.8.5` surface normally attach `role-design`. That bundle is intended for docs/spec-first design packets and explicit implementation handoff work before implementation starts. When the design packet covers terminal UX, dashboards, or other operator surfaces, add `tui-design` explicitly in the wave's `### Skills`.
127
+ Optional design workers in the shipped `0.8.6` surface normally attach `role-design`. That bundle is intended for docs/spec-first design packets and explicit implementation handoff work before implementation starts. When the design packet covers terminal UX, dashboards, or other operator surfaces, add `tui-design` explicitly in the wave's `### Skills`.
128
+
129
+ Long-running agents that should stay resident and react only to orchestrator signal changes can add `signal-hygiene` explicitly in `### Skills`. That bundle is not auto-attached and is not meant for normal one-shot implementation agents.
128
130
 
129
131
  ## Resolution Order
130
132
 
@@ -204,6 +206,12 @@ For the optional `design` worker role, the default pattern is:
204
206
  - `tui-design` only when the packet covers terminal UX, dashboards, or other operator surfaces
205
207
  - no runtime-specific coding bundle unless the wave explicitly gives the design steward code ownership and makes it a hybrid design steward
206
208
 
209
+ For long-running watcher agents, the default pattern is:
210
+
211
+ - no special bundle by default
212
+ - add `signal-hygiene` only when the agent should stay alive and wait for signal-version changes
213
+ - use the provided signal state path plus signal ack path instead of inventing a second wakeup loop
214
+
207
215
  ## Generated Artifacts
208
216
 
209
217
  Executor overlay directories can contain:
@@ -19,6 +19,8 @@ Wave Control normalizes these entity types:
19
19
 
20
20
  - `wave_run`
21
21
  - `agent_run`
22
+ - `wave_signal`
23
+ - `agent_signal`
22
24
  - `coordination_record`
23
25
  - `task`
24
26
  - `attempt`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chllming/wave-orchestration",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "license": "MIT",
5
5
  "description": "Generic wave-based multi-agent orchestration for repository work.",
6
6
  "repository": {
@@ -2,6 +2,25 @@
2
2
  "schemaVersion": 1,
3
3
  "packageName": "@chllming/wave-orchestration",
4
4
  "releases": [
5
+ {
6
+ "version": "0.8.6",
7
+ "date": "2026-03-25",
8
+ "summary": "Signal-hygiene starter surface, versioned signal wrappers, terminal watcher hardening, and 0.8.6 release-surface alignment.",
9
+ "features": [
10
+ "Versioned wave and agent signal snapshots now ship as part of the operator surface under `.tmp/<lane>-wave-launcher/signals/`, with resident-orchestrator and long-running-agent ack loops built on the same model.",
11
+ "Starter repos now include `skills/signal-hygiene/`, `scripts/wave-status.sh`, and `scripts/wave-watch.sh` for long-running watcher agents plus shell-friendly operator automation.",
12
+ "Wrapper exit semantics now expose terminal failure with exit `40`, while `wave-watch.sh --until-change` still returns `30` only when a signal changed and the wave stayed active.",
13
+ "Agent signal materialization now treats completed and failed as terminal even when stale answered feedback or old coordination tasks still exist in the materialized status payload.",
14
+ "The migration guide now covers fresh adoption plus upgrades from `0.8.5`, `0.8.4`, `0.8.3`, `0.8.0`-`0.8.4`, `0.6.x`-`0.7.x`, and `0.5.x` or earlier, including repo-owned sync guidance for `skills/signal-hygiene/`, the wrapper scripts, and the `planner-agentic` corpus."
15
+ ],
16
+ "manualSteps": [
17
+ "Run `pnpm exec wave doctor` and `pnpm exec wave launch --lane main --dry-run --no-dashboard` after upgrading so the repo validates against the `0.8.6` signal-hygiene, wrapper, and design-role behavior.",
18
+ "If your repo copied starter prompts, skills, scripts, or runbooks, sync `skills/signal-hygiene/`, `scripts/wave-status.sh`, `scripts/wave-watch.sh`, `docs/guides/signal-wrappers.md`, `docs/guides/terminal-surfaces.md`, `docs/reference/cli-reference.md`, and any local operator docs that describe waiting or failure handling.",
19
+ "If your repo uses planner workflows and copied the planner starter corpus, keep `docs/agents/wave-planner-role.md`, `skills/role-planner/`, `docs/context7/planner-agent/`, `docs/reference/wave-planning-lessons.md`, and the `planner-agentic` bundle entry in sync before relying on local planner docs.",
20
+ "If your repo uses long-running watcher agents or shell automation, update local loops so wrapper exit `40` is treated as terminal failure and confirm watchers can write their signal ack files under `.tmp/<lane>-wave-launcher/signals/`."
21
+ ],
22
+ "breaking": false
23
+ },
5
24
  {
6
25
  "version": "0.8.5",
7
26
  "date": "2026-03-25",