@intentius/chant 0.124.17 → 0.124.19

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 (154) hide show
  1. package/dist/__golden__/wave-loop/fan-out-applied.json +511 -0
  2. package/dist/__golden__/wave-loop/fan-out-apply-fails.json +406 -0
  3. package/dist/__golden__/wave-loop/fan-out-gated.json +707 -0
  4. package/dist/__golden__/wave-loop/fan-out-no-members.json +898 -0
  5. package/dist/__golden__/wave-loop/fan-out-only.json +514 -0
  6. package/dist/__golden__/wave-loop/fan-out-plan-fails.json +359 -0
  7. package/dist/__golden__/wave-loop/fan-out-same-root.json +311 -0
  8. package/dist/__golden__/wave-loop/op-by-apply-after-fails.json +401 -0
  9. package/dist/__golden__/wave-loop/op-by-apply-hold.json +756 -0
  10. package/dist/__golden__/wave-loop/op-by-apply-ignored.json +340 -0
  11. package/dist/__golden__/wave-loop/op-by-apply-pass.json +400 -0
  12. package/dist/__golden__/wave-loop/op-by-apply-skip.json +404 -0
  13. package/dist/__golden__/wave-loop/op-cost-member-clash.json +62 -0
  14. package/dist/__golden__/wave-loop/op-cost-member.json +191 -0
  15. package/dist/__golden__/wave-loop/op-denied-source.json +407 -0
  16. package/dist/__golden__/wave-loop/op-denied.json +399 -0
  17. package/dist/__golden__/wave-loop/op-discover-rest-short.json +92 -0
  18. package/dist/__golden__/wave-loop/op-discover-rest-stops.json +340 -0
  19. package/dist/__golden__/wave-loop/op-discover-rest.json +659 -0
  20. package/dist/__golden__/wave-loop/op-discover-wide.json +290 -0
  21. package/dist/__golden__/wave-loop/op-held-on-again.json +176 -0
  22. package/dist/__golden__/wave-loop/op-held-on-before-apply.json +689 -0
  23. package/dist/__golden__/wave-loop/op-held-on.json +1455 -0
  24. package/dist/__golden__/wave-loop/op-hooks-apply-fails.json +673 -0
  25. package/dist/__golden__/wave-loop/op-hooks-fail-after-apply.json +737 -0
  26. package/dist/__golden__/wave-loop/op-hooks-fail-before-apply.json +450 -0
  27. package/dist/__golden__/wave-loop/op-hooks-fail-before-plan.json +97 -0
  28. package/dist/__golden__/wave-loop/op-hooks-held.json +1059 -0
  29. package/dist/__golden__/wave-loop/op-hooks-hold-before-apply.json +693 -0
  30. package/dist/__golden__/wave-loop/op-hooks-pass.json +735 -0
  31. package/dist/__golden__/wave-loop/op-hooks-refused-at-base.json +148 -0
  32. package/dist/__golden__/wave-loop/op-hooks-share.json +1225 -0
  33. package/dist/__golden__/wave-loop/op-outcome-held.json +202 -0
  34. package/dist/__golden__/wave-loop/op-outcome-replan-approved.json +286 -0
  35. package/dist/__golden__/wave-loop/op-outcome-replan-forever.json +823 -0
  36. package/dist/__golden__/wave-loop/op-outcome-replan.json +259 -0
  37. package/dist/__golden__/wave-loop/op-outcome-stood-down.json +196 -0
  38. package/dist/__golden__/wave-loop/op-outcome-unreadable.json +193 -0
  39. package/dist/__golden__/wave-loop/op-overridden.json +508 -0
  40. package/dist/__golden__/wave-loop/op-per-run.json +518 -0
  41. package/dist/__golden__/wave-loop/op-point.json +495 -0
  42. package/dist/__golden__/wave-loop/op-pr-review.json +397 -0
  43. package/dist/__golden__/wave-loop/op-sealed.json +125 -0
  44. package/dist/__golden__/wave-loop/op-spend-change-only.json +168 -0
  45. package/dist/__golden__/wave-loop/op-spend.json +328 -0
  46. package/dist/__golden__/wave-loop/op-wave-commands.json +1808 -0
  47. package/dist/__golden__/wave-loop/op-wide-refused.json +291 -0
  48. package/dist/__golden__/wave-loop/op-wide-waiting.json +231 -0
  49. package/dist/__golden__/wave-loop/op-wide.json +440 -0
  50. package/dist/cli/commands/import.d.ts +2 -0
  51. package/dist/cli/commands/import.d.ts.map +1 -1
  52. package/dist/cli/commands/import.js +6 -2
  53. package/dist/cli/handlers/graph.js +24 -1
  54. package/dist/cli/handlers/misc.d.ts.map +1 -1
  55. package/dist/cli/handlers/misc.js +2 -1
  56. package/dist/cli/parse-args.d.ts.map +1 -1
  57. package/dist/cli/parse-args.js +4 -0
  58. package/dist/cli/registry.d.ts +2 -0
  59. package/dist/cli/registry.d.ts.map +1 -1
  60. package/dist/components/fan-out-run.d.ts +4 -3
  61. package/dist/components/fan-out-run.d.ts.map +1 -1
  62. package/dist/components/fan-out-run.js +138 -123
  63. package/dist/graph-detail.d.ts.map +1 -1
  64. package/dist/graph-detail.js +9 -3
  65. package/dist/graph-dot.d.ts.map +1 -1
  66. package/dist/graph-dot.js +36 -2
  67. package/dist/graph-ir.d.ts +98 -3
  68. package/dist/graph-ir.d.ts.map +1 -1
  69. package/dist/graph-ir.js +71 -0
  70. package/dist/graph-lens.js +12 -1
  71. package/dist/graph-mermaid.d.ts +5 -1
  72. package/dist/graph-mermaid.d.ts.map +1 -1
  73. package/dist/graph-mermaid.js +46 -2
  74. package/dist/lexicon.d.ts +22 -1
  75. package/dist/lexicon.d.ts.map +1 -1
  76. package/dist/op/op-waves-run.d.ts +7 -1
  77. package/dist/op/op-waves-run.d.ts.map +1 -1
  78. package/dist/op/op-waves-run.js +129 -72
  79. package/dist/wave-engine.d.ts +74 -5
  80. package/dist/wave-engine.d.ts.map +1 -1
  81. package/dist/wave-engine.js +47 -5
  82. package/dist/wave-runtime.mjs +215 -215
  83. package/package.json +1 -1
  84. package/src/__golden__/wave-loop/fan-out-applied.json +511 -0
  85. package/src/__golden__/wave-loop/fan-out-apply-fails.json +406 -0
  86. package/src/__golden__/wave-loop/fan-out-gated.json +707 -0
  87. package/src/__golden__/wave-loop/fan-out-no-members.json +898 -0
  88. package/src/__golden__/wave-loop/fan-out-only.json +514 -0
  89. package/src/__golden__/wave-loop/fan-out-plan-fails.json +359 -0
  90. package/src/__golden__/wave-loop/fan-out-same-root.json +311 -0
  91. package/src/__golden__/wave-loop/op-by-apply-after-fails.json +401 -0
  92. package/src/__golden__/wave-loop/op-by-apply-hold.json +756 -0
  93. package/src/__golden__/wave-loop/op-by-apply-ignored.json +340 -0
  94. package/src/__golden__/wave-loop/op-by-apply-pass.json +400 -0
  95. package/src/__golden__/wave-loop/op-by-apply-skip.json +404 -0
  96. package/src/__golden__/wave-loop/op-cost-member-clash.json +62 -0
  97. package/src/__golden__/wave-loop/op-cost-member.json +191 -0
  98. package/src/__golden__/wave-loop/op-denied-source.json +407 -0
  99. package/src/__golden__/wave-loop/op-denied.json +399 -0
  100. package/src/__golden__/wave-loop/op-discover-rest-short.json +92 -0
  101. package/src/__golden__/wave-loop/op-discover-rest-stops.json +340 -0
  102. package/src/__golden__/wave-loop/op-discover-rest.json +659 -0
  103. package/src/__golden__/wave-loop/op-discover-wide.json +290 -0
  104. package/src/__golden__/wave-loop/op-held-on-again.json +176 -0
  105. package/src/__golden__/wave-loop/op-held-on-before-apply.json +689 -0
  106. package/src/__golden__/wave-loop/op-held-on.json +1455 -0
  107. package/src/__golden__/wave-loop/op-hooks-apply-fails.json +673 -0
  108. package/src/__golden__/wave-loop/op-hooks-fail-after-apply.json +737 -0
  109. package/src/__golden__/wave-loop/op-hooks-fail-before-apply.json +450 -0
  110. package/src/__golden__/wave-loop/op-hooks-fail-before-plan.json +97 -0
  111. package/src/__golden__/wave-loop/op-hooks-held.json +1059 -0
  112. package/src/__golden__/wave-loop/op-hooks-hold-before-apply.json +693 -0
  113. package/src/__golden__/wave-loop/op-hooks-pass.json +735 -0
  114. package/src/__golden__/wave-loop/op-hooks-refused-at-base.json +148 -0
  115. package/src/__golden__/wave-loop/op-hooks-share.json +1225 -0
  116. package/src/__golden__/wave-loop/op-outcome-held.json +202 -0
  117. package/src/__golden__/wave-loop/op-outcome-replan-approved.json +286 -0
  118. package/src/__golden__/wave-loop/op-outcome-replan-forever.json +823 -0
  119. package/src/__golden__/wave-loop/op-outcome-replan.json +259 -0
  120. package/src/__golden__/wave-loop/op-outcome-stood-down.json +196 -0
  121. package/src/__golden__/wave-loop/op-outcome-unreadable.json +193 -0
  122. package/src/__golden__/wave-loop/op-overridden.json +508 -0
  123. package/src/__golden__/wave-loop/op-per-run.json +518 -0
  124. package/src/__golden__/wave-loop/op-point.json +495 -0
  125. package/src/__golden__/wave-loop/op-pr-review.json +397 -0
  126. package/src/__golden__/wave-loop/op-sealed.json +125 -0
  127. package/src/__golden__/wave-loop/op-spend-change-only.json +168 -0
  128. package/src/__golden__/wave-loop/op-spend.json +328 -0
  129. package/src/__golden__/wave-loop/op-wave-commands.json +1808 -0
  130. package/src/__golden__/wave-loop/op-wide-refused.json +291 -0
  131. package/src/__golden__/wave-loop/op-wide-waiting.json +231 -0
  132. package/src/__golden__/wave-loop/op-wide.json +440 -0
  133. package/src/cli/commands/import-live.test.ts +24 -0
  134. package/src/cli/commands/import.ts +8 -2
  135. package/src/cli/handlers/graph.test.ts +23 -0
  136. package/src/cli/handlers/graph.ts +22 -1
  137. package/src/cli/handlers/misc.ts +2 -1
  138. package/src/cli/main.test.ts +5 -0
  139. package/src/cli/parse-args.ts +3 -0
  140. package/src/cli/registry.ts +2 -0
  141. package/src/codegen/publish-order.test.ts +118 -4
  142. package/src/components/fan-out-run.ts +156 -128
  143. package/src/graph-ci-edges.test.ts +97 -0
  144. package/src/graph-detail.ts +9 -3
  145. package/src/graph-dot.ts +34 -2
  146. package/src/graph-ir.ts +156 -3
  147. package/src/graph-lens.ts +10 -1
  148. package/src/graph-mermaid.ts +44 -2
  149. package/src/lexicon.ts +23 -1
  150. package/src/meta/peer-deps.test.ts +39 -0
  151. package/src/op/op-waves-run.ts +184 -68
  152. package/src/wave-engine.test.ts +38 -1
  153. package/src/wave-engine.ts +101 -5
  154. package/src/wave-loop-golden.test.ts +627 -0
@@ -0,0 +1,707 @@
1
+ [
2
+ {
3
+ "label": "wave 1 waits",
4
+ "plan": {
5
+ "order": [
6
+ "net",
7
+ "a",
8
+ "b",
9
+ "app"
10
+ ],
11
+ "waves": [
12
+ [
13
+ "net"
14
+ ],
15
+ [
16
+ "a",
17
+ "b"
18
+ ],
19
+ [
20
+ "app"
21
+ ]
22
+ ],
23
+ "skipped": [],
24
+ "seeds": [],
25
+ "indeterminate": [],
26
+ "digest": "jcs1-sha256:4eb61d657aecab33201cedb6d604c6be9ca99eb91ac05897766e49a2350b1cb2"
27
+ },
28
+ "result": {
29
+ "plan": {
30
+ "order": [
31
+ "net",
32
+ "a",
33
+ "b",
34
+ "app"
35
+ ],
36
+ "waves": [
37
+ [
38
+ "net"
39
+ ],
40
+ [
41
+ "a",
42
+ "b"
43
+ ],
44
+ [
45
+ "app"
46
+ ]
47
+ ],
48
+ "skipped": [],
49
+ "seeds": [],
50
+ "indeterminate": [],
51
+ "digest": "jcs1-sha256:4eb61d657aecab33201cedb6d604c6be9ca99eb91ac05897766e49a2350b1cb2"
52
+ },
53
+ "status": "gated",
54
+ "results": [],
55
+ "completed": [],
56
+ "failed": [],
57
+ "blocked": [],
58
+ "componentOutputs": {},
59
+ "gate": {
60
+ "version": 1,
61
+ "kind": "pending",
62
+ "op": "fan-out",
63
+ "gate": "release-wave-1",
64
+ "timestamp": "2026-10-11T00:00:00.000Z",
65
+ "expiresAt": "2026-10-13T00:00:00.000Z",
66
+ "description": "wave 1 of 3: net",
67
+ "planDigest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf"
68
+ },
69
+ "waves": [
70
+ {
71
+ "wave": 1,
72
+ "op": "fan-out",
73
+ "gate": "release-wave-1",
74
+ "components": [
75
+ "net"
76
+ ],
77
+ "digest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf",
78
+ "members": [
79
+ {
80
+ "member": "net",
81
+ "planDigest": "sha256:7b22726f6f74223a226e6574227d000000000000000000000000000000000000"
82
+ }
83
+ ],
84
+ "status": "gated"
85
+ }
86
+ ]
87
+ },
88
+ "events": [
89
+ {
90
+ "type": "run-start",
91
+ "waves": [
92
+ [
93
+ "net"
94
+ ],
95
+ [
96
+ "a",
97
+ "b"
98
+ ],
99
+ [
100
+ "app"
101
+ ]
102
+ ]
103
+ },
104
+ {
105
+ "type": "run-done",
106
+ "status": "gated"
107
+ }
108
+ ],
109
+ "settled": [
110
+ {
111
+ "wave": 1,
112
+ "op": "fan-out",
113
+ "gate": "release-wave-1",
114
+ "components": [
115
+ "net"
116
+ ],
117
+ "digest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf",
118
+ "members": [
119
+ {
120
+ "member": "net",
121
+ "planDigest": "sha256:7b22726f6f74223a226e6574227d000000000000000000000000000000000000"
122
+ }
123
+ ],
124
+ "status": "gated"
125
+ }
126
+ ],
127
+ "components": [],
128
+ "applied": [],
129
+ "ledger": {
130
+ "appended": [
131
+ {
132
+ "version": 1,
133
+ "kind": "pending",
134
+ "op": "fan-out",
135
+ "gate": "release-wave-1",
136
+ "timestamp": "2026-10-11T00:00:00.000Z",
137
+ "expiresAt": "2026-10-13T00:00:00.000Z",
138
+ "description": "wave 1 of 3: net",
139
+ "planDigest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf"
140
+ }
141
+ ],
142
+ "resolved": [],
143
+ "applied": []
144
+ }
145
+ },
146
+ {
147
+ "label": "wave 1 approved, wave 2 waits",
148
+ "plan": {
149
+ "order": [
150
+ "net",
151
+ "a",
152
+ "b",
153
+ "app"
154
+ ],
155
+ "waves": [
156
+ [
157
+ "net"
158
+ ],
159
+ [
160
+ "a",
161
+ "b"
162
+ ],
163
+ [
164
+ "app"
165
+ ]
166
+ ],
167
+ "skipped": [],
168
+ "seeds": [],
169
+ "indeterminate": [],
170
+ "digest": "jcs1-sha256:4eb61d657aecab33201cedb6d604c6be9ca99eb91ac05897766e49a2350b1cb2"
171
+ },
172
+ "result": {
173
+ "plan": {
174
+ "order": [
175
+ "net",
176
+ "a",
177
+ "b",
178
+ "app"
179
+ ],
180
+ "waves": [
181
+ [
182
+ "net"
183
+ ],
184
+ [
185
+ "a",
186
+ "b"
187
+ ],
188
+ [
189
+ "app"
190
+ ]
191
+ ],
192
+ "skipped": [],
193
+ "seeds": [],
194
+ "indeterminate": [],
195
+ "digest": "jcs1-sha256:4eb61d657aecab33201cedb6d604c6be9ca99eb91ac05897766e49a2350b1cb2"
196
+ },
197
+ "status": "gated",
198
+ "results": [
199
+ {
200
+ "component": "net",
201
+ "ok": true,
202
+ "status": "ok",
203
+ "records": [
204
+ {
205
+ "component": "net",
206
+ "phase": "Apply",
207
+ "kind": "fake-root",
208
+ "status": "ok",
209
+ "durationMs": 0,
210
+ "output": {
211
+ "outputs": {
212
+ "id": "net-id"
213
+ }
214
+ }
215
+ }
216
+ ]
217
+ }
218
+ ],
219
+ "completed": [
220
+ "net"
221
+ ],
222
+ "failed": [],
223
+ "blocked": [],
224
+ "componentOutputs": {
225
+ "net": {
226
+ "id": "net-id"
227
+ }
228
+ },
229
+ "gate": {
230
+ "version": 1,
231
+ "kind": "pending",
232
+ "op": "fan-out",
233
+ "gate": "release-wave-2",
234
+ "timestamp": "2026-10-11T00:00:00.000Z",
235
+ "expiresAt": "2026-10-13T00:00:00.000Z",
236
+ "description": "wave 2 of 3: a, b",
237
+ "planDigest": "jcs1-sha256:f56bc903abaf2bb2f593fcb6f83b48322c7079deed286c1439d2a4e0310e2bdd"
238
+ },
239
+ "waves": [
240
+ {
241
+ "wave": 1,
242
+ "op": "fan-out",
243
+ "gate": "release-wave-1",
244
+ "components": [
245
+ "net"
246
+ ],
247
+ "digest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf",
248
+ "members": [
249
+ {
250
+ "member": "net",
251
+ "planDigest": "sha256:7b22726f6f74223a226e6574227d000000000000000000000000000000000000"
252
+ }
253
+ ],
254
+ "status": "applied",
255
+ "approvedBy": "ana"
256
+ },
257
+ {
258
+ "wave": 2,
259
+ "op": "fan-out",
260
+ "gate": "release-wave-2",
261
+ "components": [
262
+ "a",
263
+ "b"
264
+ ],
265
+ "digest": "jcs1-sha256:f56bc903abaf2bb2f593fcb6f83b48322c7079deed286c1439d2a4e0310e2bdd",
266
+ "members": [
267
+ {
268
+ "member": "a",
269
+ "planDigest": "sha256:7b22726f6f74223a2261227d0000000000000000000000000000000000000000"
270
+ },
271
+ {
272
+ "member": "b",
273
+ "planDigest": "sha256:7b22726f6f74223a2262227d0000000000000000000000000000000000000000"
274
+ }
275
+ ],
276
+ "status": "gated"
277
+ }
278
+ ]
279
+ },
280
+ "events": [
281
+ {
282
+ "type": "run-start",
283
+ "waves": [
284
+ [
285
+ "net"
286
+ ],
287
+ [
288
+ "a",
289
+ "b"
290
+ ],
291
+ [
292
+ "app"
293
+ ]
294
+ ]
295
+ },
296
+ {
297
+ "type": "wave-start",
298
+ "wave": 1,
299
+ "components": [
300
+ "net"
301
+ ]
302
+ },
303
+ {
304
+ "type": "component-start",
305
+ "wave": 1,
306
+ "component": "net"
307
+ },
308
+ {
309
+ "type": "phase-start",
310
+ "component": "net",
311
+ "phase": "Apply"
312
+ },
313
+ {
314
+ "type": "step",
315
+ "component": "net",
316
+ "phase": "Apply",
317
+ "step": "fake-root",
318
+ "status": "running"
319
+ },
320
+ {
321
+ "type": "step",
322
+ "component": "net",
323
+ "phase": "Apply",
324
+ "step": "fake-root",
325
+ "status": "ok"
326
+ },
327
+ {
328
+ "type": "phase-done",
329
+ "component": "net",
330
+ "phase": "Apply",
331
+ "status": "ok"
332
+ },
333
+ {
334
+ "type": "component-done",
335
+ "wave": 1,
336
+ "component": "net",
337
+ "status": "ok"
338
+ },
339
+ {
340
+ "type": "wave-done",
341
+ "wave": 1,
342
+ "status": "ok"
343
+ },
344
+ {
345
+ "type": "run-done",
346
+ "status": "gated"
347
+ }
348
+ ],
349
+ "settled": [
350
+ {
351
+ "wave": 1,
352
+ "op": "fan-out",
353
+ "gate": "release-wave-1",
354
+ "components": [
355
+ "net"
356
+ ],
357
+ "digest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf",
358
+ "members": [
359
+ {
360
+ "member": "net",
361
+ "planDigest": "sha256:7b22726f6f74223a226e6574227d000000000000000000000000000000000000"
362
+ }
363
+ ],
364
+ "status": "applied",
365
+ "approvedBy": "ana"
366
+ },
367
+ {
368
+ "wave": 2,
369
+ "op": "fan-out",
370
+ "gate": "release-wave-2",
371
+ "components": [
372
+ "a",
373
+ "b"
374
+ ],
375
+ "digest": "jcs1-sha256:f56bc903abaf2bb2f593fcb6f83b48322c7079deed286c1439d2a4e0310e2bdd",
376
+ "members": [
377
+ {
378
+ "member": "a",
379
+ "planDigest": "sha256:7b22726f6f74223a2261227d0000000000000000000000000000000000000000"
380
+ },
381
+ {
382
+ "member": "b",
383
+ "planDigest": "sha256:7b22726f6f74223a2262227d0000000000000000000000000000000000000000"
384
+ }
385
+ ],
386
+ "status": "gated"
387
+ }
388
+ ],
389
+ "components": [
390
+ {
391
+ "component": "net",
392
+ "outputs": {
393
+ "id": "net-id"
394
+ }
395
+ }
396
+ ],
397
+ "applied": [
398
+ "net"
399
+ ],
400
+ "ledger": {
401
+ "appended": [
402
+ {
403
+ "version": 1,
404
+ "kind": "pending",
405
+ "op": "fan-out",
406
+ "gate": "release-wave-2",
407
+ "timestamp": "2026-10-11T00:00:00.000Z",
408
+ "expiresAt": "2026-10-13T00:00:00.000Z",
409
+ "description": "wave 2 of 3: a, b",
410
+ "planDigest": "jcs1-sha256:f56bc903abaf2bb2f593fcb6f83b48322c7079deed286c1439d2a4e0310e2bdd"
411
+ }
412
+ ],
413
+ "resolved": [],
414
+ "applied": []
415
+ }
416
+ },
417
+ {
418
+ "label": "another digest approved",
419
+ "plan": {
420
+ "order": [
421
+ "net",
422
+ "a",
423
+ "b",
424
+ "app"
425
+ ],
426
+ "waves": [
427
+ [
428
+ "net"
429
+ ],
430
+ [
431
+ "a",
432
+ "b"
433
+ ],
434
+ [
435
+ "app"
436
+ ]
437
+ ],
438
+ "skipped": [],
439
+ "seeds": [],
440
+ "indeterminate": [],
441
+ "digest": "jcs1-sha256:4eb61d657aecab33201cedb6d604c6be9ca99eb91ac05897766e49a2350b1cb2"
442
+ },
443
+ "result": {
444
+ "plan": {
445
+ "order": [
446
+ "net",
447
+ "a",
448
+ "b",
449
+ "app"
450
+ ],
451
+ "waves": [
452
+ [
453
+ "net"
454
+ ],
455
+ [
456
+ "a",
457
+ "b"
458
+ ],
459
+ [
460
+ "app"
461
+ ]
462
+ ],
463
+ "skipped": [],
464
+ "seeds": [],
465
+ "indeterminate": [],
466
+ "digest": "jcs1-sha256:4eb61d657aecab33201cedb6d604c6be9ca99eb91ac05897766e49a2350b1cb2"
467
+ },
468
+ "status": "gated",
469
+ "results": [],
470
+ "completed": [],
471
+ "failed": [],
472
+ "blocked": [],
473
+ "componentOutputs": {},
474
+ "gate": {
475
+ "version": 1,
476
+ "kind": "pending",
477
+ "op": "fan-out",
478
+ "gate": "release-wave-1",
479
+ "timestamp": "2026-10-11T00:00:00.000Z",
480
+ "expiresAt": "2026-10-13T00:00:00.000Z",
481
+ "description": "wave 1 of 3: net",
482
+ "planDigest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf"
483
+ },
484
+ "waves": [
485
+ {
486
+ "wave": 1,
487
+ "op": "fan-out",
488
+ "gate": "release-wave-1",
489
+ "components": [
490
+ "net"
491
+ ],
492
+ "digest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf",
493
+ "members": [
494
+ {
495
+ "member": "net",
496
+ "planDigest": "sha256:7b22726f6f74223a226e6574227d000000000000000000000000000000000000"
497
+ }
498
+ ],
499
+ "status": "gated",
500
+ "approved": "sha256:9999999999999999999999999999999999999999999999999999999999999999"
501
+ }
502
+ ]
503
+ },
504
+ "events": [
505
+ {
506
+ "type": "run-start",
507
+ "waves": [
508
+ [
509
+ "net"
510
+ ],
511
+ [
512
+ "a",
513
+ "b"
514
+ ],
515
+ [
516
+ "app"
517
+ ]
518
+ ]
519
+ },
520
+ {
521
+ "type": "run-done",
522
+ "status": "gated"
523
+ }
524
+ ],
525
+ "settled": [
526
+ {
527
+ "wave": 1,
528
+ "op": "fan-out",
529
+ "gate": "release-wave-1",
530
+ "components": [
531
+ "net"
532
+ ],
533
+ "digest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf",
534
+ "members": [
535
+ {
536
+ "member": "net",
537
+ "planDigest": "sha256:7b22726f6f74223a226e6574227d000000000000000000000000000000000000"
538
+ }
539
+ ],
540
+ "status": "gated",
541
+ "approved": "sha256:9999999999999999999999999999999999999999999999999999999999999999"
542
+ }
543
+ ],
544
+ "components": [],
545
+ "applied": [],
546
+ "ledger": {
547
+ "appended": [
548
+ {
549
+ "version": 1,
550
+ "kind": "pending",
551
+ "op": "fan-out",
552
+ "gate": "release-wave-1",
553
+ "timestamp": "2026-10-11T00:00:00.000Z",
554
+ "expiresAt": "2026-10-13T00:00:00.000Z",
555
+ "description": "wave 1 of 3: net",
556
+ "planDigest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf"
557
+ }
558
+ ],
559
+ "resolved": [],
560
+ "applied": []
561
+ }
562
+ },
563
+ {
564
+ "label": "with a description and timeout",
565
+ "plan": {
566
+ "order": [
567
+ "net",
568
+ "a",
569
+ "b",
570
+ "app"
571
+ ],
572
+ "waves": [
573
+ [
574
+ "net"
575
+ ],
576
+ [
577
+ "a",
578
+ "b"
579
+ ],
580
+ [
581
+ "app"
582
+ ]
583
+ ],
584
+ "skipped": [],
585
+ "seeds": [],
586
+ "indeterminate": [],
587
+ "digest": "jcs1-sha256:4eb61d657aecab33201cedb6d604c6be9ca99eb91ac05897766e49a2350b1cb2"
588
+ },
589
+ "result": {
590
+ "plan": {
591
+ "order": [
592
+ "net",
593
+ "a",
594
+ "b",
595
+ "app"
596
+ ],
597
+ "waves": [
598
+ [
599
+ "net"
600
+ ],
601
+ [
602
+ "a",
603
+ "b"
604
+ ],
605
+ [
606
+ "app"
607
+ ]
608
+ ],
609
+ "skipped": [],
610
+ "seeds": [],
611
+ "indeterminate": [],
612
+ "digest": "jcs1-sha256:4eb61d657aecab33201cedb6d604c6be9ca99eb91ac05897766e49a2350b1cb2"
613
+ },
614
+ "status": "gated",
615
+ "results": [],
616
+ "completed": [],
617
+ "failed": [],
618
+ "blocked": [],
619
+ "componentOutputs": {},
620
+ "gate": {
621
+ "version": 1,
622
+ "kind": "pending",
623
+ "op": "fan-out",
624
+ "gate": "release-wave-1",
625
+ "timestamp": "2026-10-11T00:00:00.000Z",
626
+ "expiresAt": "2026-10-11T02:00:00.000Z",
627
+ "description": "the release",
628
+ "planDigest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf"
629
+ },
630
+ "waves": [
631
+ {
632
+ "wave": 1,
633
+ "op": "fan-out",
634
+ "gate": "release-wave-1",
635
+ "components": [
636
+ "net"
637
+ ],
638
+ "digest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf",
639
+ "members": [
640
+ {
641
+ "member": "net",
642
+ "planDigest": "sha256:7b22726f6f74223a226e6574227d000000000000000000000000000000000000"
643
+ }
644
+ ],
645
+ "status": "gated"
646
+ }
647
+ ]
648
+ },
649
+ "events": [
650
+ {
651
+ "type": "run-start",
652
+ "waves": [
653
+ [
654
+ "net"
655
+ ],
656
+ [
657
+ "a",
658
+ "b"
659
+ ],
660
+ [
661
+ "app"
662
+ ]
663
+ ]
664
+ },
665
+ {
666
+ "type": "run-done",
667
+ "status": "gated"
668
+ }
669
+ ],
670
+ "settled": [
671
+ {
672
+ "wave": 1,
673
+ "op": "fan-out",
674
+ "gate": "release-wave-1",
675
+ "components": [
676
+ "net"
677
+ ],
678
+ "digest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf",
679
+ "members": [
680
+ {
681
+ "member": "net",
682
+ "planDigest": "sha256:7b22726f6f74223a226e6574227d000000000000000000000000000000000000"
683
+ }
684
+ ],
685
+ "status": "gated"
686
+ }
687
+ ],
688
+ "components": [],
689
+ "applied": [],
690
+ "ledger": {
691
+ "appended": [
692
+ {
693
+ "version": 1,
694
+ "kind": "pending",
695
+ "op": "fan-out",
696
+ "gate": "release-wave-1",
697
+ "timestamp": "2026-10-11T00:00:00.000Z",
698
+ "expiresAt": "2026-10-11T02:00:00.000Z",
699
+ "description": "the release",
700
+ "planDigest": "jcs1-sha256:95bbd78ad48471cefeb1cb32a3f308abde40b2d299eac36ab86b0614f23bcccf"
701
+ }
702
+ ],
703
+ "resolved": [],
704
+ "applied": []
705
+ }
706
+ }
707
+ ]