@chllming/wave-orchestration 0.7.1 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +8 -8
- package/docs/plans/component-cutover-matrix.json +50 -3
- package/docs/plans/current-state.md +1 -1
- package/docs/plans/end-state-architecture.md +927 -0
- package/docs/plans/examples/wave-example-live-proof.md +1 -1
- package/docs/plans/migration.md +2 -2
- package/docs/plans/waves/wave-1.md +376 -0
- package/docs/plans/waves/wave-2.md +292 -0
- package/docs/plans/waves/wave-3.md +342 -0
- package/docs/plans/waves/wave-4.md +391 -0
- package/docs/plans/waves/wave-5.md +382 -0
- package/docs/plans/waves/wave-6.md +321 -0
- package/docs/reference/npmjs-trusted-publishing.md +2 -2
- package/docs/reference/sample-waves.md +4 -4
- package/package.json +1 -1
- package/releases/manifest.json +36 -0
- package/scripts/wave-orchestrator/agent-state.mjs +462 -35
- package/scripts/wave-orchestrator/artifact-schemas.mjs +81 -0
- package/scripts/wave-orchestrator/control-cli.mjs +7 -1
- package/scripts/wave-orchestrator/coordination.mjs +11 -10
- package/scripts/wave-orchestrator/human-input-workflow.mjs +289 -0
- package/scripts/wave-orchestrator/install.mjs +22 -0
- package/scripts/wave-orchestrator/launcher-derived-state.mjs +915 -0
- package/scripts/wave-orchestrator/launcher-gates.mjs +1061 -0
- package/scripts/wave-orchestrator/launcher-retry.mjs +873 -0
- package/scripts/wave-orchestrator/launcher-supervisor.mjs +704 -0
- package/scripts/wave-orchestrator/launcher.mjs +153 -2922
- package/scripts/wave-orchestrator/task-entity.mjs +557 -0
- package/scripts/wave-orchestrator/wave-files.mjs +11 -2
- package/scripts/wave-orchestrator/wave-state-reducer.mjs +566 -0
- package/wave.config.json +1 -1
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# Wave 5 - Schema Versioning, Artifact Hierarchy, and Human Input Workflow
|
|
2
|
+
|
|
3
|
+
**Commit message**: `Arch: harden schema versioning, artifact classification, and human input workflow`
|
|
4
|
+
|
|
5
|
+
## Component promotions
|
|
6
|
+
|
|
7
|
+
- state-artifacts-and-feedback: qa-proved
|
|
8
|
+
|
|
9
|
+
## Context7 defaults
|
|
10
|
+
|
|
11
|
+
- bundle: node-typescript
|
|
12
|
+
- query: "JSON schema migration, artifact metadata, workflow state machines, SLA tracking in Node.js"
|
|
13
|
+
|
|
14
|
+
## Agent A0: cont-QA
|
|
15
|
+
|
|
16
|
+
### Role prompts
|
|
17
|
+
|
|
18
|
+
- docs/agents/wave-cont-qa-role.md
|
|
19
|
+
|
|
20
|
+
### Executor
|
|
21
|
+
|
|
22
|
+
- id: codex
|
|
23
|
+
- model: gpt-5-codex
|
|
24
|
+
- codex.profile_name: review
|
|
25
|
+
- codex.search: true
|
|
26
|
+
- codex.json: true
|
|
27
|
+
|
|
28
|
+
### Context7
|
|
29
|
+
|
|
30
|
+
- bundle: none
|
|
31
|
+
|
|
32
|
+
### Prompt
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
Primary goal:
|
|
36
|
+
- Verify schema versioning is explicit on all derived-state schemas, artifact classes are labeled, and human input workflow semantics are in the control plane — not the supervisor.
|
|
37
|
+
|
|
38
|
+
Required context before coding:
|
|
39
|
+
- Read docs/plans/end-state-architecture.md (sections: Schema Versioning, Artifact Hierarchy, Human Input Workflow).
|
|
40
|
+
- Read docs/reference/repository-guidance.md.
|
|
41
|
+
|
|
42
|
+
Specific expectations:
|
|
43
|
+
- confirm every persisted artifact carries _meta.artifactClass
|
|
44
|
+
- confirm every derived-state schema carries schemaVersion
|
|
45
|
+
- confirm readers tolerate unknown fields (forward compatibility)
|
|
46
|
+
- confirm human input SLA, reroute, escalation, and timeout semantics live in control-plane events and the reducer, NOT in the supervisor
|
|
47
|
+
- confirm the supervisor only observes/collects/submits human-input responses
|
|
48
|
+
- do not PASS if any derived cache is missing _meta or schemaVersion
|
|
49
|
+
|
|
50
|
+
File ownership (only touch these paths):
|
|
51
|
+
- docs/plans/waves/reviews/wave-5-cont-qa.md
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Agent A8: Integration Steward
|
|
55
|
+
|
|
56
|
+
### Role prompts
|
|
57
|
+
|
|
58
|
+
- docs/agents/wave-integration-role.md
|
|
59
|
+
|
|
60
|
+
### Executor
|
|
61
|
+
|
|
62
|
+
- id: claude
|
|
63
|
+
- model: claude-sonnet-4-6
|
|
64
|
+
|
|
65
|
+
### Context7
|
|
66
|
+
|
|
67
|
+
- bundle: none
|
|
68
|
+
|
|
69
|
+
### Capabilities
|
|
70
|
+
|
|
71
|
+
- integration
|
|
72
|
+
- docs-shared-plan
|
|
73
|
+
|
|
74
|
+
### Prompt
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
Synthesize schema versioning, artifact hierarchy, and human input workflow changes.
|
|
78
|
+
|
|
79
|
+
Required context before coding:
|
|
80
|
+
- Read docs/plans/end-state-architecture.md.
|
|
81
|
+
- Read docs/reference/repository-guidance.md.
|
|
82
|
+
- Read docs/research/agent-context-sources.md.
|
|
83
|
+
|
|
84
|
+
Verify:
|
|
85
|
+
- schema migration functions exist for all version transitions
|
|
86
|
+
- artifact classes are consistent between the hierarchy doc and actual file writes
|
|
87
|
+
- human input workflow integrates with existing clarification triage and escalation paths
|
|
88
|
+
- no regression in existing coordination flows
|
|
89
|
+
|
|
90
|
+
File ownership (only touch these paths):
|
|
91
|
+
- .tmp/main-wave-launcher/integration/wave-5.md
|
|
92
|
+
- .tmp/main-wave-launcher/integration/wave-5.json
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Agent A9: Documentation Steward
|
|
96
|
+
|
|
97
|
+
### Role prompts
|
|
98
|
+
|
|
99
|
+
- docs/agents/wave-documentation-role.md
|
|
100
|
+
|
|
101
|
+
### Executor
|
|
102
|
+
|
|
103
|
+
- id: opencode
|
|
104
|
+
- opencode.files: docs/plans/end-state-architecture.md,docs/plans/current-state.md
|
|
105
|
+
|
|
106
|
+
### Context7
|
|
107
|
+
|
|
108
|
+
- bundle: none
|
|
109
|
+
|
|
110
|
+
### Prompt
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
Update shared plan docs to reflect schema versioning, artifact classification, and human input workflow.
|
|
114
|
+
|
|
115
|
+
Required context before coding:
|
|
116
|
+
- Read docs/reference/repository-guidance.md.
|
|
117
|
+
- Read docs/research/agent-context-sources.md.
|
|
118
|
+
|
|
119
|
+
File ownership (only touch these paths):
|
|
120
|
+
- docs/plans/current-state.md
|
|
121
|
+
- docs/plans/master-plan.md
|
|
122
|
+
- docs/plans/migration.md
|
|
123
|
+
- docs/plans/wave-orchestrator.md
|
|
124
|
+
- docs/plans/component-cutover-matrix.md
|
|
125
|
+
- docs/plans/component-cutover-matrix.json
|
|
126
|
+
- docs/reference/wave-control.md
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Agent A1: Schema Versioning and Artifact Classification
|
|
130
|
+
|
|
131
|
+
### Executor
|
|
132
|
+
|
|
133
|
+
- profile: implement-fast
|
|
134
|
+
- model: gpt-5-codex
|
|
135
|
+
- codex.add_dirs: scripts,test
|
|
136
|
+
- fallbacks: claude, opencode
|
|
137
|
+
|
|
138
|
+
### Context7
|
|
139
|
+
|
|
140
|
+
- bundle: node-typescript
|
|
141
|
+
- query: "JSON schema migration, semver, forward compatibility patterns"
|
|
142
|
+
|
|
143
|
+
### Components
|
|
144
|
+
|
|
145
|
+
- state-artifacts-and-feedback
|
|
146
|
+
|
|
147
|
+
### Exit contract
|
|
148
|
+
|
|
149
|
+
- completion: contract
|
|
150
|
+
- durability: none
|
|
151
|
+
- proof: unit
|
|
152
|
+
- doc-impact: owned
|
|
153
|
+
|
|
154
|
+
### Deliverables
|
|
155
|
+
|
|
156
|
+
- scripts/wave-orchestrator/schema-versioning.mjs
|
|
157
|
+
- test/wave-orchestrator/schema-versioning.test.ts
|
|
158
|
+
|
|
159
|
+
### Proof artifacts
|
|
160
|
+
|
|
161
|
+
- path: .tmp/wave-5-state-proof/schema-migration-report.json | kind: migration-report | required-for: pilot-live
|
|
162
|
+
|
|
163
|
+
### Prompt
|
|
164
|
+
|
|
165
|
+
```text
|
|
166
|
+
Add explicit schema versioning to all derived-state schemas and artifact class labels to all persisted artifacts.
|
|
167
|
+
|
|
168
|
+
Schema versioning rules:
|
|
169
|
+
1. Forward compatibility: readers tolerate unknown fields.
|
|
170
|
+
2. Version-gated migration: materializer runs migration function when version advances.
|
|
171
|
+
3. Every schema file declares schemaVersion: N.
|
|
172
|
+
|
|
173
|
+
Every persisted artifact includes _meta:
|
|
174
|
+
{
|
|
175
|
+
"_meta": {
|
|
176
|
+
"artifactClass": "canonical-event" | "canonical-snapshot" | "derived-cache" | "human-projection",
|
|
177
|
+
"schemaVersion": N,
|
|
178
|
+
"generatedAt": ISO8601,
|
|
179
|
+
"source": "description of canonical input"
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
Artifact class definitions:
|
|
184
|
+
- canonical-event: append-only, never rewritten (control-plane JSONL, coordination JSONL)
|
|
185
|
+
- canonical-snapshot: written once per event, immutable, attempt-scoped paths
|
|
186
|
+
- derived-cache: materialized from canonical sources, can be deleted and rebuilt
|
|
187
|
+
- human-projection: convenience output, never read by the system
|
|
188
|
+
|
|
189
|
+
Schemas requiring versioning (add migration functions):
|
|
190
|
+
- Agent result envelope (v2)
|
|
191
|
+
- Gate snapshot (v2)
|
|
192
|
+
- Task graph (v1)
|
|
193
|
+
- Integration summary (v2)
|
|
194
|
+
- Retry plan (v2)
|
|
195
|
+
- Proof registry (v2)
|
|
196
|
+
- Relaunch plan (v2)
|
|
197
|
+
- Run state (v3)
|
|
198
|
+
- Trace bundle (v3)
|
|
199
|
+
- Control-plane event (v2)
|
|
200
|
+
- Coordination record (v2)
|
|
201
|
+
- Contradiction (v1)
|
|
202
|
+
- Fact (v1)
|
|
203
|
+
- Wave manifest (v2)
|
|
204
|
+
- Dashboard (v2)
|
|
205
|
+
- Assignment snapshot (v1)
|
|
206
|
+
- Dependency snapshot (v1)
|
|
207
|
+
- Ledger (v1)
|
|
208
|
+
- Docs queue (v1)
|
|
209
|
+
- Security summary (v1)
|
|
210
|
+
|
|
211
|
+
Required context before coding:
|
|
212
|
+
- Read docs/reference/repository-guidance.md.
|
|
213
|
+
- Read docs/research/agent-context-sources.md.
|
|
214
|
+
- Read docs/plans/end-state-architecture.md (sections: Schema Versioning, Artifact Hierarchy).
|
|
215
|
+
- Read scripts/wave-orchestrator/artifact-schemas.mjs.
|
|
216
|
+
- Read scripts/wave-orchestrator/dashboard-state.mjs.
|
|
217
|
+
|
|
218
|
+
File ownership (only touch these paths):
|
|
219
|
+
- scripts/wave-orchestrator/schema-versioning.mjs
|
|
220
|
+
- scripts/wave-orchestrator/artifact-schemas.mjs
|
|
221
|
+
- test/wave-orchestrator/schema-versioning.test.ts
|
|
222
|
+
- .tmp/wave-5-state-proof/
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Agent A2: Human Input Workflow Subsystem
|
|
226
|
+
|
|
227
|
+
### Executor
|
|
228
|
+
|
|
229
|
+
- profile: implement-fast
|
|
230
|
+
- model: gpt-5-codex
|
|
231
|
+
- codex.add_dirs: scripts,test
|
|
232
|
+
- fallbacks: claude, opencode
|
|
233
|
+
|
|
234
|
+
### Context7
|
|
235
|
+
|
|
236
|
+
- bundle: node-typescript
|
|
237
|
+
- query: "Workflow state machines, SLA tracking, timeout policies in event-sourced systems"
|
|
238
|
+
|
|
239
|
+
### Components
|
|
240
|
+
|
|
241
|
+
- state-artifacts-and-feedback
|
|
242
|
+
|
|
243
|
+
### Exit contract
|
|
244
|
+
|
|
245
|
+
- completion: contract
|
|
246
|
+
- durability: none
|
|
247
|
+
- proof: unit
|
|
248
|
+
- doc-impact: none
|
|
249
|
+
|
|
250
|
+
### Deliverables
|
|
251
|
+
|
|
252
|
+
- scripts/wave-orchestrator/human-input-workflow.mjs
|
|
253
|
+
- test/wave-orchestrator/human-input-workflow.test.ts
|
|
254
|
+
|
|
255
|
+
### Proof artifacts
|
|
256
|
+
|
|
257
|
+
- path: .tmp/wave-5-state-proof/human-input-sla-log.json | kind: workflow-log | required-for: pilot-live
|
|
258
|
+
|
|
259
|
+
### Prompt
|
|
260
|
+
|
|
261
|
+
```text
|
|
262
|
+
Implement the human input workflow subsystem.
|
|
263
|
+
|
|
264
|
+
Key design rule: human-input workflow semantics (SLA, reroute, escalation, timeout, closure blocking) live in:
|
|
265
|
+
- control-plane events
|
|
266
|
+
- reducer state
|
|
267
|
+
- this workflow module
|
|
268
|
+
|
|
269
|
+
The session supervisor only observes, collects, and submits responses. It does NOT own SLA or escalation logic.
|
|
270
|
+
|
|
271
|
+
Human input entity (extended from existing):
|
|
272
|
+
{
|
|
273
|
+
requestId, waveNumber, lane,
|
|
274
|
+
kind: "clarification" | "escalation" | "approval" | "decision",
|
|
275
|
+
status: "pending" | "assigned" | "answered" | "escalated" | "resolved" | "timed_out" | "rerouted",
|
|
276
|
+
requestedBy, requestedAt,
|
|
277
|
+
assignedTo: string | null,
|
|
278
|
+
assignedAt: ISO8601 | null,
|
|
279
|
+
answeredAt: ISO8601 | null,
|
|
280
|
+
resolvedAt: ISO8601 | null,
|
|
281
|
+
timeoutPolicy: {
|
|
282
|
+
ackDeadlineMs, resolveDeadlineMs, escalateAfterMs
|
|
283
|
+
},
|
|
284
|
+
reroutePolicy: {
|
|
285
|
+
maxReroutes, rerouteHistory: [{ from, to, reason, at }]
|
|
286
|
+
},
|
|
287
|
+
linkedRequests: [requestId],
|
|
288
|
+
closureCondition: string | null,
|
|
289
|
+
slaMetrics: {
|
|
290
|
+
timeToAck, timeToResolve, wasEscalated, wasRerouted, wasTimedOut
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
Implementation:
|
|
295
|
+
1. Add human-input workflow logic to human-input-workflow.mjs.
|
|
296
|
+
2. Workflow state transitions go to control-plane events.
|
|
297
|
+
3. The reducer materializes human input state from events.
|
|
298
|
+
4. The closure engine treats unresolved human inputs as hard blockers.
|
|
299
|
+
5. The retry engine can plan around timed-out requests by escalating or rerouting.
|
|
300
|
+
6. SLA metrics are computed by the reducer, not by the supervisor.
|
|
301
|
+
7. Integrate with existing clarification-triage.mjs for backward compatibility.
|
|
302
|
+
|
|
303
|
+
Required context before coding:
|
|
304
|
+
- Read docs/reference/repository-guidance.md.
|
|
305
|
+
- Read docs/research/agent-context-sources.md.
|
|
306
|
+
- Read docs/plans/end-state-architecture.md (section: Human Input Workflow).
|
|
307
|
+
- Read scripts/wave-orchestrator/clarification-triage.mjs.
|
|
308
|
+
- Read scripts/wave-orchestrator/feedback.mjs.
|
|
309
|
+
- Read scripts/wave-orchestrator/launcher-supervisor.mjs (human feedback monitoring to keep but not expand).
|
|
310
|
+
|
|
311
|
+
File ownership (only touch these paths):
|
|
312
|
+
- scripts/wave-orchestrator/human-input-workflow.mjs
|
|
313
|
+
- scripts/wave-orchestrator/clarification-triage.mjs
|
|
314
|
+
- test/wave-orchestrator/human-input-workflow.test.ts
|
|
315
|
+
- .tmp/wave-5-state-proof/
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
## Agent A3: Projection Writer
|
|
319
|
+
|
|
320
|
+
### Executor
|
|
321
|
+
|
|
322
|
+
- profile: implement-fast
|
|
323
|
+
- model: gpt-5-codex
|
|
324
|
+
- codex.add_dirs: scripts,test
|
|
325
|
+
- fallbacks: claude, opencode
|
|
326
|
+
|
|
327
|
+
### Context7
|
|
328
|
+
|
|
329
|
+
- bundle: node-typescript
|
|
330
|
+
|
|
331
|
+
### Components
|
|
332
|
+
|
|
333
|
+
- state-artifacts-and-feedback
|
|
334
|
+
|
|
335
|
+
### Exit contract
|
|
336
|
+
|
|
337
|
+
- completion: contract
|
|
338
|
+
- durability: none
|
|
339
|
+
- proof: unit
|
|
340
|
+
- doc-impact: none
|
|
341
|
+
|
|
342
|
+
### Deliverables
|
|
343
|
+
|
|
344
|
+
- scripts/wave-orchestrator/projection-writer.mjs
|
|
345
|
+
- test/wave-orchestrator/projection-writer.test.ts
|
|
346
|
+
|
|
347
|
+
### Proof artifacts
|
|
348
|
+
|
|
349
|
+
- path: .tmp/wave-5-state-proof/projection-artifact-manifest.json | kind: artifact-manifest | required-for: pilot-live
|
|
350
|
+
|
|
351
|
+
### Prompt
|
|
352
|
+
|
|
353
|
+
```text
|
|
354
|
+
Implement the projection writer — the single module responsible for all non-canonical file writes.
|
|
355
|
+
|
|
356
|
+
The projection writer takes derived state from the materializer, gate verdicts from the gate engine, and wave state from the reducer, and writes:
|
|
357
|
+
- dashboards (global + per-wave) — artifactClass: human-projection
|
|
358
|
+
- markdown board projections — artifactClass: human-projection
|
|
359
|
+
- coordination board projection — artifactClass: human-projection
|
|
360
|
+
- trace bundles — artifactClass: canonical-snapshot
|
|
361
|
+
- quality metrics — artifactClass: derived-cache
|
|
362
|
+
- human-facing status summaries — artifactClass: human-projection
|
|
363
|
+
- wave manifest — artifactClass: human-projection
|
|
364
|
+
|
|
365
|
+
Rules:
|
|
366
|
+
1. Never reads its own outputs.
|
|
367
|
+
2. Always writes atomically (writeJsonAtomic / writeTextAtomic).
|
|
368
|
+
3. Labels every artifact with _meta including artifactClass and schemaVersion.
|
|
369
|
+
4. Consolidates dashboard writes currently scattered across launcher.mjs and dashboard-state.mjs.
|
|
370
|
+
|
|
371
|
+
Required context before coding:
|
|
372
|
+
- Read docs/reference/repository-guidance.md.
|
|
373
|
+
- Read docs/research/agent-context-sources.md.
|
|
374
|
+
- Read docs/plans/end-state-architecture.md (sections: Layer 3, Artifact Hierarchy).
|
|
375
|
+
- Read scripts/wave-orchestrator/dashboard-state.mjs (current dashboard writes to consolidate).
|
|
376
|
+
- Read scripts/wave-orchestrator/traces.mjs (trace bundle writes).
|
|
377
|
+
|
|
378
|
+
File ownership (only touch these paths):
|
|
379
|
+
- scripts/wave-orchestrator/projection-writer.mjs
|
|
380
|
+
- test/wave-orchestrator/projection-writer.test.ts
|
|
381
|
+
- .tmp/wave-5-state-proof/
|
|
382
|
+
```
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
# Wave 6 - Proof Families, Workflow Backend, and Architecture Completion
|
|
2
|
+
|
|
3
|
+
**Commit message**: `Arch: add proof families, workflow backend boundary, and complete architecture refactor`
|
|
4
|
+
|
|
5
|
+
## Component promotions
|
|
6
|
+
|
|
7
|
+
- wave-parser-and-launcher: pilot-live
|
|
8
|
+
- closure-sweep-and-role-gates: pilot-live
|
|
9
|
+
- executor-abstraction-and-prompt-transport: pilot-live
|
|
10
|
+
|
|
11
|
+
## Context7 defaults
|
|
12
|
+
|
|
13
|
+
- bundle: node-typescript
|
|
14
|
+
- query: "Workflow backend abstraction, deployment verification, proof family validation in Node.js"
|
|
15
|
+
|
|
16
|
+
## Agent A0: cont-QA
|
|
17
|
+
|
|
18
|
+
### Role prompts
|
|
19
|
+
|
|
20
|
+
- docs/agents/wave-cont-qa-role.md
|
|
21
|
+
|
|
22
|
+
### Executor
|
|
23
|
+
|
|
24
|
+
- id: codex
|
|
25
|
+
- model: gpt-5-codex
|
|
26
|
+
- codex.profile_name: review
|
|
27
|
+
- codex.search: true
|
|
28
|
+
- codex.json: true
|
|
29
|
+
|
|
30
|
+
### Context7
|
|
31
|
+
|
|
32
|
+
- bundle: none
|
|
33
|
+
|
|
34
|
+
### Prompt
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
Primary goal:
|
|
38
|
+
- Verify that the full end-state architecture is landed, internally consistent, and tested.
|
|
39
|
+
|
|
40
|
+
Required context before coding:
|
|
41
|
+
- Read docs/plans/end-state-architecture.md (all sections).
|
|
42
|
+
- Read docs/reference/repository-guidance.md.
|
|
43
|
+
|
|
44
|
+
Specific expectations:
|
|
45
|
+
- confirm proof families (code_proof, integration_proof, deploy_proof) are independently evaluated
|
|
46
|
+
- confirm the workflow backend boundary abstracts event persistence, state queries, timer management, and human input behind a clean interface
|
|
47
|
+
- confirm the local-file backend is the only implementation and passes all tests
|
|
48
|
+
- confirm the full end-state module architecture is realized:
|
|
49
|
+
Layer 1: canonical authority set (control-plane, coordination-store, wave-files)
|
|
50
|
+
Layer 2: phase engines (implementation, derived-state, gate, closure, retry, reducer)
|
|
51
|
+
Layer 3: session supervisor + projection writer
|
|
52
|
+
Layer 4: thin launcher orchestrator
|
|
53
|
+
- confirm every design principle from the architecture doc is implemented
|
|
54
|
+
- confirm all 10 feedback corrections are addressed
|
|
55
|
+
- do not PASS if any phase engine still reads from derived caches or projections
|
|
56
|
+
|
|
57
|
+
File ownership (only touch these paths):
|
|
58
|
+
- docs/plans/waves/reviews/wave-6-cont-qa.md
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Agent A8: Integration Steward
|
|
62
|
+
|
|
63
|
+
### Role prompts
|
|
64
|
+
|
|
65
|
+
- docs/agents/wave-integration-role.md
|
|
66
|
+
|
|
67
|
+
### Executor
|
|
68
|
+
|
|
69
|
+
- id: claude
|
|
70
|
+
- model: claude-sonnet-4-6
|
|
71
|
+
|
|
72
|
+
### Context7
|
|
73
|
+
|
|
74
|
+
- bundle: none
|
|
75
|
+
|
|
76
|
+
### Capabilities
|
|
77
|
+
|
|
78
|
+
- integration
|
|
79
|
+
- docs-shared-plan
|
|
80
|
+
- contradiction-recovery
|
|
81
|
+
|
|
82
|
+
### Prompt
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
Final integration synthesis for the architecture refactor.
|
|
86
|
+
|
|
87
|
+
Required context before coding:
|
|
88
|
+
- Read docs/plans/end-state-architecture.md.
|
|
89
|
+
- Read docs/reference/repository-guidance.md.
|
|
90
|
+
- Read docs/research/agent-context-sources.md.
|
|
91
|
+
|
|
92
|
+
Verify end-to-end:
|
|
93
|
+
- a wave can run through the full pipeline: parse → reduce → plan → select → materialize → launch → wait → evaluate → close
|
|
94
|
+
- retry correctly uses task graph and two-phase proof for targeted reruns
|
|
95
|
+
- contradiction detection, repair, and resolution work end-to-end
|
|
96
|
+
- human input workflow blocks closure and supports escalation/reroute
|
|
97
|
+
- replay tests pass using stored events from waves 0-5
|
|
98
|
+
- the workflow backend boundary is clean enough that swapping the implementation would not require changes to phase engines
|
|
99
|
+
|
|
100
|
+
File ownership (only touch these paths):
|
|
101
|
+
- .tmp/main-wave-launcher/integration/wave-6.md
|
|
102
|
+
- .tmp/main-wave-launcher/integration/wave-6.json
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Agent A9: Documentation Steward
|
|
106
|
+
|
|
107
|
+
### Role prompts
|
|
108
|
+
|
|
109
|
+
- docs/agents/wave-documentation-role.md
|
|
110
|
+
|
|
111
|
+
### Executor
|
|
112
|
+
|
|
113
|
+
- id: opencode
|
|
114
|
+
- opencode.files: docs/plans/end-state-architecture.md,docs/plans/current-state.md
|
|
115
|
+
|
|
116
|
+
### Context7
|
|
117
|
+
|
|
118
|
+
- bundle: none
|
|
119
|
+
|
|
120
|
+
### Prompt
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
Final documentation update reflecting the completed architecture refactor.
|
|
124
|
+
|
|
125
|
+
Required context before coding:
|
|
126
|
+
- Read docs/reference/repository-guidance.md.
|
|
127
|
+
- Read docs/research/agent-context-sources.md.
|
|
128
|
+
|
|
129
|
+
Update all shared plan docs to reflect the final landed state.
|
|
130
|
+
Mark the end-state architecture doc as landed (not aspirational).
|
|
131
|
+
Update the component cutover matrix with all promotions.
|
|
132
|
+
|
|
133
|
+
File ownership (only touch these paths):
|
|
134
|
+
- docs/plans/current-state.md
|
|
135
|
+
- docs/plans/master-plan.md
|
|
136
|
+
- docs/plans/migration.md
|
|
137
|
+
- docs/plans/wave-orchestrator.md
|
|
138
|
+
- docs/plans/end-state-architecture.md
|
|
139
|
+
- docs/plans/component-cutover-matrix.md
|
|
140
|
+
- docs/plans/component-cutover-matrix.json
|
|
141
|
+
- docs/reference/proof-metrics.md
|
|
142
|
+
- docs/reference/wave-control.md
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Agent A1: Proof Family Split
|
|
146
|
+
|
|
147
|
+
### Executor
|
|
148
|
+
|
|
149
|
+
- profile: implement-fast
|
|
150
|
+
- model: gpt-5-codex
|
|
151
|
+
- codex.add_dirs: scripts,test
|
|
152
|
+
- fallbacks: claude, opencode
|
|
153
|
+
|
|
154
|
+
### Context7
|
|
155
|
+
|
|
156
|
+
- bundle: node-typescript
|
|
157
|
+
- query: "Proof validation, deployment health checks, test runner integration"
|
|
158
|
+
|
|
159
|
+
### Components
|
|
160
|
+
|
|
161
|
+
- closure-sweep-and-role-gates
|
|
162
|
+
|
|
163
|
+
### Exit contract
|
|
164
|
+
|
|
165
|
+
- completion: contract
|
|
166
|
+
- durability: none
|
|
167
|
+
- proof: unit
|
|
168
|
+
- doc-impact: owned
|
|
169
|
+
|
|
170
|
+
### Deliverables
|
|
171
|
+
|
|
172
|
+
- scripts/wave-orchestrator/proof-families.mjs
|
|
173
|
+
- test/wave-orchestrator/proof-families.test.ts
|
|
174
|
+
|
|
175
|
+
### Proof artifacts
|
|
176
|
+
|
|
177
|
+
- path: .tmp/wave-6-proof/proof-family-report.json | kind: proof-family-report | required-for: pilot-live
|
|
178
|
+
|
|
179
|
+
### Prompt
|
|
180
|
+
|
|
181
|
+
```text
|
|
182
|
+
Implement the three proof families: code_proof, integration_proof, deploy_proof.
|
|
183
|
+
|
|
184
|
+
code_proof — validates agent's owned deliverables:
|
|
185
|
+
- tests pass (unit/integration/live per contract)
|
|
186
|
+
- build succeeds
|
|
187
|
+
- diff clean outside owned paths
|
|
188
|
+
- deliverables exist and non-empty
|
|
189
|
+
- proof artifacts present and SHA256-valid
|
|
190
|
+
- component promotions meet target maturity
|
|
191
|
+
|
|
192
|
+
integration_proof — validates cross-cutting contracts:
|
|
193
|
+
- interface contracts consistent between components
|
|
194
|
+
- dependency resolution clean
|
|
195
|
+
- no open integration conflicts
|
|
196
|
+
- no open contradictions on shared state
|
|
197
|
+
- cross-lane dependencies resolved
|
|
198
|
+
- integration summary: zero unresolved blockers
|
|
199
|
+
|
|
200
|
+
deploy_proof — validates runtime behavior (opt-in):
|
|
201
|
+
- rollout artifact exists (if declared)
|
|
202
|
+
- runtime health check passes (if declared)
|
|
203
|
+
- post-deploy evidence collected (if declared)
|
|
204
|
+
- no deployment-blocking regressions
|
|
205
|
+
- deploy-kind specific validation (Railway, Docker, k8s, etc.)
|
|
206
|
+
|
|
207
|
+
The gate engine evaluates each family independently. A wave can be:
|
|
208
|
+
code_proof: satisfied, integration_proof: satisfied, deploy_proof: not_applicable
|
|
209
|
+
|
|
210
|
+
Implementation:
|
|
211
|
+
1. Define proof family schema in proof-families.mjs.
|
|
212
|
+
2. Update gate engine to evaluate each family.
|
|
213
|
+
3. Update proof registry to tag bundles with proof family.
|
|
214
|
+
4. Update result envelope role-specific payloads for deploy role.
|
|
215
|
+
5. Write tests covering each family independently.
|
|
216
|
+
|
|
217
|
+
Required context before coding:
|
|
218
|
+
- Read docs/reference/repository-guidance.md.
|
|
219
|
+
- Read docs/research/agent-context-sources.md.
|
|
220
|
+
- Read docs/plans/end-state-architecture.md (section: Proof Families).
|
|
221
|
+
- Read scripts/wave-orchestrator/proof-registry.mjs.
|
|
222
|
+
- Read scripts/wave-orchestrator/launcher-gates.mjs.
|
|
223
|
+
|
|
224
|
+
File ownership (only touch these paths):
|
|
225
|
+
- scripts/wave-orchestrator/proof-families.mjs
|
|
226
|
+
- scripts/wave-orchestrator/proof-registry.mjs
|
|
227
|
+
- scripts/wave-orchestrator/launcher-gates.mjs
|
|
228
|
+
- test/wave-orchestrator/proof-families.test.ts
|
|
229
|
+
- .tmp/wave-6-proof/
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Agent A2: Workflow Backend Boundary
|
|
233
|
+
|
|
234
|
+
### Executor
|
|
235
|
+
|
|
236
|
+
- profile: implement-fast
|
|
237
|
+
- model: gpt-5-codex
|
|
238
|
+
- codex.add_dirs: scripts,test
|
|
239
|
+
- fallbacks: claude, opencode
|
|
240
|
+
|
|
241
|
+
### Context7
|
|
242
|
+
|
|
243
|
+
- bundle: node-typescript
|
|
244
|
+
- query: "Workflow engine abstraction, repository pattern, dependency injection in Node.js"
|
|
245
|
+
|
|
246
|
+
### Components
|
|
247
|
+
|
|
248
|
+
- wave-parser-and-launcher
|
|
249
|
+
- executor-abstraction-and-prompt-transport
|
|
250
|
+
|
|
251
|
+
### Exit contract
|
|
252
|
+
|
|
253
|
+
- completion: contract
|
|
254
|
+
- durability: none
|
|
255
|
+
- proof: unit
|
|
256
|
+
- doc-impact: none
|
|
257
|
+
|
|
258
|
+
### Deliverables
|
|
259
|
+
|
|
260
|
+
- scripts/wave-orchestrator/workflow-backend.mjs
|
|
261
|
+
- scripts/wave-orchestrator/workflow-backend-local.mjs
|
|
262
|
+
- test/wave-orchestrator/workflow-backend.test.ts
|
|
263
|
+
|
|
264
|
+
### Proof artifacts
|
|
265
|
+
|
|
266
|
+
- path: .tmp/wave-6-proof/workflow-backend-trace.json | kind: backend-trace | required-for: pilot-live
|
|
267
|
+
|
|
268
|
+
### Prompt
|
|
269
|
+
|
|
270
|
+
```text
|
|
271
|
+
Introduce the workflow backend abstraction boundary.
|
|
272
|
+
|
|
273
|
+
The workflow backend interface:
|
|
274
|
+
WorkflowBackend {
|
|
275
|
+
// Event persistence
|
|
276
|
+
appendEvent(event) → void
|
|
277
|
+
readEvents(filter) → [Event]
|
|
278
|
+
|
|
279
|
+
// State queries (backed by reducer)
|
|
280
|
+
getWaveState(lane, wave) → WaveState
|
|
281
|
+
getTaskState(taskId) → TaskState
|
|
282
|
+
getOpenBlockers(lane, wave) → [Blocker]
|
|
283
|
+
getClosureEligibility(lane, wave) → ClosureState
|
|
284
|
+
|
|
285
|
+
// Timer management
|
|
286
|
+
scheduleTimer(id, dueAt, payload) → void
|
|
287
|
+
cancelTimer(id) → void
|
|
288
|
+
getExpiredTimers() → [Timer]
|
|
289
|
+
|
|
290
|
+
// Human input
|
|
291
|
+
createHumanInput(request) → requestId
|
|
292
|
+
resolveHumanInput(requestId, response) → void
|
|
293
|
+
getOpenHumanInputs(filter) → [HumanInput]
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
Local-file backend implementation:
|
|
297
|
+
- appendEvent → JSONL append to control-plane log
|
|
298
|
+
- readEvents → parse JSONL with filter
|
|
299
|
+
- getWaveState → call wave-state-reducer.reduce()
|
|
300
|
+
- Timer management → file-based tracking under .tmp/<lane>-wave-launcher/timers/
|
|
301
|
+
- Human input → existing feedback queue + human-input-workflow.mjs
|
|
302
|
+
|
|
303
|
+
Design rules:
|
|
304
|
+
1. Phase engines interact with state ONLY through the backend interface.
|
|
305
|
+
2. The local-file backend is the only implementation for now.
|
|
306
|
+
3. The interface is clean enough that a Temporal-backed or service-backed backend could replace it without rewriting phase engines.
|
|
307
|
+
4. The backend does NOT own business logic — it persists events and answers queries.
|
|
308
|
+
|
|
309
|
+
Required context before coding:
|
|
310
|
+
- Read docs/reference/repository-guidance.md.
|
|
311
|
+
- Read docs/research/agent-context-sources.md.
|
|
312
|
+
- Read docs/plans/end-state-architecture.md (section: Workflow Backend Boundary).
|
|
313
|
+
- Read scripts/wave-orchestrator/control-plane.mjs (current event persistence).
|
|
314
|
+
- Read scripts/wave-orchestrator/wave-state-reducer.mjs (state queries).
|
|
315
|
+
|
|
316
|
+
File ownership (only touch these paths):
|
|
317
|
+
- scripts/wave-orchestrator/workflow-backend.mjs
|
|
318
|
+
- scripts/wave-orchestrator/workflow-backend-local.mjs
|
|
319
|
+
- test/wave-orchestrator/workflow-backend.test.ts
|
|
320
|
+
- .tmp/wave-6-proof/
|
|
321
|
+
```
|