@acrasie/dev-flow 0.0.0-stage → 1.0.1

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 (58) hide show
  1. package/.codex-plugin/plugin.json +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +181 -2
  4. package/dist/codex-dev-flow.mjs +3 -0
  5. package/dist/dev-flow.mjs +241 -0
  6. package/docs/adr/0001-hybrid-portable-workflow.md +23 -0
  7. package/docs/adr/0002-share-an-invalidable-context-capsule.md +55 -0
  8. package/docs/adr/0004-scale-assurance-lanes-by-applicable-risk.md +36 -0
  9. package/docs/adr/0006-make-intake-adaptive-user-authoritative-and-token-efficient.md +76 -0
  10. package/docs/adr/0007-collect-opt-in-local-benchmark-feedback.md +82 -0
  11. package/docs/adr/0008-automate-maintainer-releases-with-an-interactive-bun-workflow.md +121 -0
  12. package/docs/adr/0009-separate-intake-decisions-from-shape-discovery.md +200 -0
  13. package/docs/adr/0010-choose-quick-or-plan-after-discovery.md +161 -0
  14. package/docs/adr/0011-separate-fast-local-and-authoritative-ci-quality-gates.md +49 -0
  15. package/docs/adr/0012-use-bun-test-and-require-node-24.md +41 -0
  16. package/docs/adr/0013-layer-source-distribution-and-runtime-tests.md +42 -0
  17. package/docs/adr/0014-ratchet-source-coverage-with-bun.md +51 -0
  18. package/docs/adr/0015-split-fast-and-type-aware-linting.md +41 -0
  19. package/docs/adr/0016-use-husky-with-a-tested-bun-staged-file-adapter.md +45 -0
  20. package/docs/adr/0017-format-conservatively-with-oxfmt.md +45 -0
  21. package/docs/adr/0018-use-a-high-signal-oxlint-policy.md +53 -0
  22. package/docs/adr/0019-gate-deterministic-size-and-observe-timing.md +44 -0
  23. package/docs/adr/0020-support-linux-and-macos-with-targeted-ci.md +41 -0
  24. package/docs/adr/0021-randomize-tests-without-retries.md +35 -0
  25. package/docs/adr/0022-use-one-root-bun-workspace.md +41 -0
  26. package/docs/adr/0024-make-gate-a-minimal-plan-approval.md +74 -0
  27. package/docs/adr/0025-end-the-lifecycle-after-assure.md +55 -0
  28. package/docs/adr/0026-keep-intake-product-stable-and-interview-shape-by-dependency.md +151 -0
  29. package/docs/adr/0027-add-agentic-project-init-and-versioned-engineering-profiles.md +147 -0
  30. package/docs/adr/0028-make-public-documentation-user-first-and-current.md +65 -0
  31. package/docs/adr/0029-make-build-a-native-execution-boundary.md +51 -0
  32. package/docs/adr/0030-unify-product-domain-and-technical-design-interviews.md +240 -0
  33. package/docs/adr/0031-make-assure-the-success-boundary.md +205 -0
  34. package/docs/artifacts.md +47 -0
  35. package/docs/baselines/2026-07-18-p0-lifecycle.json +142 -0
  36. package/docs/design.md +101 -0
  37. package/docs/getting-started.md +204 -0
  38. package/docs/glossary/dev-flow.md +527 -0
  39. package/docs/lifecycle-contract.md +189 -0
  40. package/docs/lifecycle-contract.projection.json +931 -0
  41. package/docs/metrics-protocol.md +113 -0
  42. package/docs/project-profile-contract.md +157 -0
  43. package/docs/runbooks/maintainer-release.md +291 -0
  44. package/docs/target-intake-shape-contract.md +416 -0
  45. package/package.json +68 -4
  46. package/schemas/config.schema.json +104 -0
  47. package/schemas/policy.schema.json +17 -0
  48. package/schemas/project-init-state.schema.json +159 -0
  49. package/schemas/project-profile-local.schema.json +53 -0
  50. package/schemas/project-profile.schema.json +285 -0
  51. package/schemas/state.schema.json +826 -0
  52. package/skills/debug-root-cause/SKILL.md +16 -0
  53. package/skills/design-decisions/SKILL.md +24 -0
  54. package/skills/dev-flow/SKILL.md +306 -0
  55. package/skills/dev-flow/agents/openai.yaml +6 -0
  56. package/skills/discover-change/SKILL.md +31 -0
  57. package/skills/plan-change/SKILL.md +29 -0
  58. package/skills/review-change/SKILL.md +21 -0
@@ -0,0 +1,931 @@
1
+ {
2
+ "macroPhases": [
3
+ "INTAKE",
4
+ "SHAPE",
5
+ "GATE",
6
+ "BUILD",
7
+ "ASSURE"
8
+ ],
9
+ "guards": [
10
+ "task_initialized",
11
+ "effective_constraints_valid",
12
+ "intake_complete",
13
+ "intake_reopened",
14
+ "routing_ready",
15
+ "workspace_ready",
16
+ "discovery_sufficient",
17
+ "profile_selected",
18
+ "contract_complete",
19
+ "approval_current",
20
+ "resume_metadata_valid",
21
+ "resume_reconciled",
22
+ "terminal_source_recorded",
23
+ "gate_decision_valid"
24
+ ],
25
+ "states": [
26
+ {
27
+ "status": "new",
28
+ "macroPhase": "INTAKE",
29
+ "stable": false,
30
+ "terminal": false,
31
+ "transitions": [
32
+ {
33
+ "target": "intaking",
34
+ "guards": [
35
+ "task_initialized",
36
+ "effective_constraints_valid"
37
+ ]
38
+ },
39
+ {
40
+ "target": "blocked",
41
+ "guards": [
42
+ "resume_metadata_valid"
43
+ ]
44
+ },
45
+ {
46
+ "target": "cancelled",
47
+ "guards": [
48
+ "terminal_source_recorded"
49
+ ]
50
+ },
51
+ {
52
+ "target": "failed",
53
+ "guards": [
54
+ "terminal_source_recorded"
55
+ ]
56
+ }
57
+ ],
58
+ "capsule": {
59
+ "consumes": [
60
+ "request",
61
+ "constraints",
62
+ "design.product-reopen"
63
+ ],
64
+ "produces": [
65
+ "design.product-baseline",
66
+ "design.glossary-deltas",
67
+ "design.domain-rules",
68
+ "design.question",
69
+ "risk",
70
+ "routing",
71
+ "workspace",
72
+ "freshness.config",
73
+ "freshness.policy"
74
+ ],
75
+ "invalidates": [
76
+ "intake.dependent-decisions",
77
+ "shape.dependency-closure",
78
+ "approvals"
79
+ ]
80
+ },
81
+ "events": [
82
+ "task.initialized",
83
+ "intake.checkpoint",
84
+ "advance.rejected",
85
+ "intake.reopened",
86
+ "design.question_recorded",
87
+ "design.answer_recorded",
88
+ "design.invalidated",
89
+ "routing.captured",
90
+ "state.transition"
91
+ ]
92
+ },
93
+ {
94
+ "status": "intaking",
95
+ "macroPhase": "INTAKE",
96
+ "stable": false,
97
+ "terminal": false,
98
+ "transitions": [
99
+ {
100
+ "target": "awaiting_intake_decision",
101
+ "guards": []
102
+ },
103
+ {
104
+ "target": "discovering",
105
+ "guards": [
106
+ "intake_complete",
107
+ "routing_ready",
108
+ "workspace_ready"
109
+ ]
110
+ },
111
+ {
112
+ "target": "blocked",
113
+ "guards": [
114
+ "resume_metadata_valid"
115
+ ]
116
+ },
117
+ {
118
+ "target": "cancelled",
119
+ "guards": [
120
+ "terminal_source_recorded"
121
+ ]
122
+ },
123
+ {
124
+ "target": "failed",
125
+ "guards": [
126
+ "terminal_source_recorded"
127
+ ]
128
+ }
129
+ ],
130
+ "capsule": {
131
+ "consumes": [
132
+ "request",
133
+ "constraints",
134
+ "design.product-reopen"
135
+ ],
136
+ "produces": [
137
+ "design.product-baseline",
138
+ "design.glossary-deltas",
139
+ "design.domain-rules",
140
+ "design.question",
141
+ "risk",
142
+ "routing",
143
+ "workspace",
144
+ "freshness.config",
145
+ "freshness.policy"
146
+ ],
147
+ "invalidates": [
148
+ "intake.dependent-decisions",
149
+ "shape.dependency-closure",
150
+ "approvals"
151
+ ]
152
+ },
153
+ "events": [
154
+ "task.initialized",
155
+ "intake.checkpoint",
156
+ "advance.rejected",
157
+ "intake.reopened",
158
+ "design.question_recorded",
159
+ "design.answer_recorded",
160
+ "design.invalidated",
161
+ "routing.captured",
162
+ "state.transition"
163
+ ]
164
+ },
165
+ {
166
+ "status": "discovering",
167
+ "macroPhase": "SHAPE",
168
+ "stable": false,
169
+ "terminal": false,
170
+ "transitions": [
171
+ {
172
+ "target": "awaiting_profile_choice",
173
+ "guards": [
174
+ "discovery_sufficient"
175
+ ]
176
+ },
177
+ {
178
+ "target": "awaiting_shape_decision",
179
+ "guards": []
180
+ },
181
+ {
182
+ "target": "awaiting_intake_decision",
183
+ "guards": []
184
+ },
185
+ {
186
+ "target": "intaking",
187
+ "guards": [
188
+ "intake_reopened"
189
+ ]
190
+ },
191
+ {
192
+ "target": "blocked",
193
+ "guards": [
194
+ "resume_metadata_valid"
195
+ ]
196
+ },
197
+ {
198
+ "target": "cancelled",
199
+ "guards": [
200
+ "terminal_source_recorded"
201
+ ]
202
+ },
203
+ {
204
+ "target": "failed",
205
+ "guards": [
206
+ "terminal_source_recorded"
207
+ ]
208
+ }
209
+ ],
210
+ "capsule": {
211
+ "consumes": [
212
+ "design.product-baseline",
213
+ "design.glossary-deltas",
214
+ "design.domain-rules",
215
+ "risk",
216
+ "constraints",
217
+ "routing",
218
+ "workspace",
219
+ "shape.state"
220
+ ],
221
+ "produces": [
222
+ "shape.targets",
223
+ "shape.evidence",
224
+ "shape.profile-choice",
225
+ "design.technical-decisions",
226
+ "design.question",
227
+ "shape.contract",
228
+ "shape.projection",
229
+ "freshness.sources"
230
+ ],
231
+ "invalidates": [
232
+ "shape.dependency-closure",
233
+ "approvals",
234
+ "build",
235
+ "assurance"
236
+ ]
237
+ },
238
+ "events": [
239
+ "discovery.target_recorded",
240
+ "discovery.evidence_recorded",
241
+ "discovery.completed",
242
+ "profile.choice_requested",
243
+ "profile.choice_recorded",
244
+ "design.question_recorded",
245
+ "design.answer_recorded",
246
+ "design.invalidated",
247
+ "contract.projected",
248
+ "projection.reconciliation_requested",
249
+ "evidence.invalidated",
250
+ "shape.checkpoint",
251
+ "state.transition"
252
+ ]
253
+ },
254
+ {
255
+ "status": "awaiting_shape_decision",
256
+ "macroPhase": "SHAPE",
257
+ "stable": false,
258
+ "terminal": false,
259
+ "transitions": [
260
+ {
261
+ "target": "discovering",
262
+ "guards": []
263
+ },
264
+ {
265
+ "target": "planning",
266
+ "guards": [
267
+ "discovery_sufficient",
268
+ "profile_selected"
269
+ ]
270
+ },
271
+ {
272
+ "target": "awaiting_intake_decision",
273
+ "guards": []
274
+ },
275
+ {
276
+ "target": "intaking",
277
+ "guards": [
278
+ "intake_reopened"
279
+ ]
280
+ },
281
+ {
282
+ "target": "blocked",
283
+ "guards": [
284
+ "resume_metadata_valid"
285
+ ]
286
+ },
287
+ {
288
+ "target": "cancelled",
289
+ "guards": [
290
+ "terminal_source_recorded"
291
+ ]
292
+ },
293
+ {
294
+ "target": "failed",
295
+ "guards": [
296
+ "terminal_source_recorded"
297
+ ]
298
+ }
299
+ ],
300
+ "capsule": {
301
+ "consumes": [
302
+ "design.product-baseline",
303
+ "design.glossary-deltas",
304
+ "design.domain-rules",
305
+ "risk",
306
+ "constraints",
307
+ "routing",
308
+ "workspace",
309
+ "shape.state"
310
+ ],
311
+ "produces": [
312
+ "shape.targets",
313
+ "shape.evidence",
314
+ "shape.profile-choice",
315
+ "design.technical-decisions",
316
+ "design.question",
317
+ "shape.contract",
318
+ "shape.projection",
319
+ "freshness.sources"
320
+ ],
321
+ "invalidates": [
322
+ "shape.dependency-closure",
323
+ "approvals",
324
+ "build",
325
+ "assurance"
326
+ ]
327
+ },
328
+ "events": [
329
+ "discovery.target_recorded",
330
+ "discovery.evidence_recorded",
331
+ "discovery.completed",
332
+ "profile.choice_requested",
333
+ "profile.choice_recorded",
334
+ "design.question_recorded",
335
+ "design.answer_recorded",
336
+ "design.invalidated",
337
+ "contract.projected",
338
+ "projection.reconciliation_requested",
339
+ "evidence.invalidated",
340
+ "shape.checkpoint",
341
+ "state.transition"
342
+ ]
343
+ },
344
+ {
345
+ "status": "awaiting_profile_choice",
346
+ "macroPhase": "SHAPE",
347
+ "stable": false,
348
+ "terminal": false,
349
+ "transitions": [
350
+ {
351
+ "target": "planning",
352
+ "guards": [
353
+ "profile_selected"
354
+ ]
355
+ },
356
+ {
357
+ "target": "discovering",
358
+ "guards": []
359
+ },
360
+ {
361
+ "target": "intaking",
362
+ "guards": [
363
+ "intake_reopened"
364
+ ]
365
+ },
366
+ {
367
+ "target": "blocked",
368
+ "guards": [
369
+ "resume_metadata_valid"
370
+ ]
371
+ },
372
+ {
373
+ "target": "cancelled",
374
+ "guards": [
375
+ "terminal_source_recorded"
376
+ ]
377
+ },
378
+ {
379
+ "target": "failed",
380
+ "guards": [
381
+ "terminal_source_recorded"
382
+ ]
383
+ }
384
+ ],
385
+ "capsule": {
386
+ "consumes": [
387
+ "design.product-baseline",
388
+ "design.glossary-deltas",
389
+ "design.domain-rules",
390
+ "risk",
391
+ "constraints",
392
+ "routing",
393
+ "workspace",
394
+ "shape.state"
395
+ ],
396
+ "produces": [
397
+ "shape.targets",
398
+ "shape.evidence",
399
+ "shape.profile-choice",
400
+ "design.technical-decisions",
401
+ "design.question",
402
+ "shape.contract",
403
+ "shape.projection",
404
+ "freshness.sources"
405
+ ],
406
+ "invalidates": [
407
+ "shape.dependency-closure",
408
+ "approvals",
409
+ "build",
410
+ "assurance"
411
+ ]
412
+ },
413
+ "events": [
414
+ "discovery.target_recorded",
415
+ "discovery.evidence_recorded",
416
+ "discovery.completed",
417
+ "profile.choice_requested",
418
+ "profile.choice_recorded",
419
+ "design.question_recorded",
420
+ "design.answer_recorded",
421
+ "design.invalidated",
422
+ "contract.projected",
423
+ "projection.reconciliation_requested",
424
+ "evidence.invalidated",
425
+ "shape.checkpoint",
426
+ "state.transition"
427
+ ]
428
+ },
429
+ {
430
+ "status": "planning",
431
+ "macroPhase": "SHAPE",
432
+ "stable": false,
433
+ "terminal": false,
434
+ "transitions": [
435
+ {
436
+ "target": "discovering",
437
+ "guards": []
438
+ },
439
+ {
440
+ "target": "awaiting_intake_decision",
441
+ "guards": []
442
+ },
443
+ {
444
+ "target": "awaiting_approval",
445
+ "guards": [
446
+ "discovery_sufficient",
447
+ "profile_selected",
448
+ "contract_complete"
449
+ ]
450
+ },
451
+ {
452
+ "target": "intaking",
453
+ "guards": [
454
+ "intake_reopened"
455
+ ]
456
+ },
457
+ {
458
+ "target": "blocked",
459
+ "guards": [
460
+ "resume_metadata_valid"
461
+ ]
462
+ },
463
+ {
464
+ "target": "cancelled",
465
+ "guards": [
466
+ "terminal_source_recorded"
467
+ ]
468
+ },
469
+ {
470
+ "target": "failed",
471
+ "guards": [
472
+ "terminal_source_recorded"
473
+ ]
474
+ }
475
+ ],
476
+ "capsule": {
477
+ "consumes": [
478
+ "design.product-baseline",
479
+ "design.glossary-deltas",
480
+ "design.domain-rules",
481
+ "risk",
482
+ "constraints",
483
+ "routing",
484
+ "workspace",
485
+ "shape.state"
486
+ ],
487
+ "produces": [
488
+ "shape.targets",
489
+ "shape.evidence",
490
+ "shape.profile-choice",
491
+ "design.technical-decisions",
492
+ "design.question",
493
+ "shape.contract",
494
+ "shape.projection",
495
+ "freshness.sources"
496
+ ],
497
+ "invalidates": [
498
+ "shape.dependency-closure",
499
+ "approvals",
500
+ "build",
501
+ "assurance"
502
+ ]
503
+ },
504
+ "events": [
505
+ "discovery.target_recorded",
506
+ "discovery.evidence_recorded",
507
+ "discovery.completed",
508
+ "profile.choice_requested",
509
+ "profile.choice_recorded",
510
+ "design.question_recorded",
511
+ "design.answer_recorded",
512
+ "design.invalidated",
513
+ "contract.projected",
514
+ "projection.reconciliation_requested",
515
+ "evidence.invalidated",
516
+ "shape.checkpoint",
517
+ "state.transition"
518
+ ]
519
+ },
520
+ {
521
+ "status": "awaiting_intake_decision",
522
+ "macroPhase": "INTAKE",
523
+ "stable": false,
524
+ "terminal": false,
525
+ "transitions": [
526
+ {
527
+ "target": "intaking",
528
+ "guards": [
529
+ "intake_reopened"
530
+ ]
531
+ },
532
+ {
533
+ "target": "discovering",
534
+ "guards": [
535
+ "intake_complete"
536
+ ]
537
+ },
538
+ {
539
+ "target": "planning",
540
+ "guards": [
541
+ "intake_complete",
542
+ "discovery_sufficient",
543
+ "profile_selected"
544
+ ]
545
+ },
546
+ {
547
+ "target": "blocked",
548
+ "guards": [
549
+ "resume_metadata_valid"
550
+ ]
551
+ },
552
+ {
553
+ "target": "cancelled",
554
+ "guards": [
555
+ "terminal_source_recorded"
556
+ ]
557
+ },
558
+ {
559
+ "target": "failed",
560
+ "guards": [
561
+ "terminal_source_recorded"
562
+ ]
563
+ }
564
+ ],
565
+ "capsule": {
566
+ "consumes": [
567
+ "request",
568
+ "constraints",
569
+ "design.product-reopen"
570
+ ],
571
+ "produces": [
572
+ "design.product-baseline",
573
+ "design.glossary-deltas",
574
+ "design.domain-rules",
575
+ "design.question",
576
+ "risk",
577
+ "routing",
578
+ "workspace",
579
+ "freshness.config",
580
+ "freshness.policy"
581
+ ],
582
+ "invalidates": [
583
+ "intake.dependent-decisions",
584
+ "shape.dependency-closure",
585
+ "approvals"
586
+ ]
587
+ },
588
+ "events": [
589
+ "task.initialized",
590
+ "intake.checkpoint",
591
+ "advance.rejected",
592
+ "intake.reopened",
593
+ "design.question_recorded",
594
+ "design.answer_recorded",
595
+ "design.invalidated",
596
+ "routing.captured",
597
+ "state.transition"
598
+ ]
599
+ },
600
+ {
601
+ "status": "awaiting_approval",
602
+ "macroPhase": "GATE",
603
+ "stable": false,
604
+ "terminal": false,
605
+ "transitions": [
606
+ {
607
+ "target": "planning",
608
+ "guards": [
609
+ "gate_decision_valid"
610
+ ]
611
+ },
612
+ {
613
+ "target": "executing",
614
+ "guards": [
615
+ "gate_decision_valid"
616
+ ]
617
+ },
618
+ {
619
+ "target": "cancelled",
620
+ "guards": [
621
+ "gate_decision_valid",
622
+ "terminal_source_recorded"
623
+ ]
624
+ },
625
+ {
626
+ "target": "intaking",
627
+ "guards": [
628
+ "intake_reopened"
629
+ ]
630
+ },
631
+ {
632
+ "target": "blocked",
633
+ "guards": [
634
+ "resume_metadata_valid"
635
+ ]
636
+ },
637
+ {
638
+ "target": "failed",
639
+ "guards": [
640
+ "terminal_source_recorded"
641
+ ]
642
+ }
643
+ ],
644
+ "capsule": {
645
+ "consumes": [
646
+ "shape.contract",
647
+ "shape.evidence",
648
+ "risk"
649
+ ],
650
+ "produces": [
651
+ "planApproval"
652
+ ],
653
+ "invalidates": [
654
+ "approvals"
655
+ ]
656
+ },
657
+ "events": [
658
+ "approval.requested",
659
+ "approval.recorded",
660
+ "approval.invalidated",
661
+ "state.transition"
662
+ ]
663
+ },
664
+ {
665
+ "status": "executing",
666
+ "macroPhase": "BUILD",
667
+ "stable": false,
668
+ "terminal": false,
669
+ "transitions": [
670
+ {
671
+ "target": "assuring",
672
+ "guards": []
673
+ },
674
+ {
675
+ "target": "planning",
676
+ "guards": []
677
+ },
678
+ {
679
+ "target": "intaking",
680
+ "guards": [
681
+ "intake_reopened"
682
+ ]
683
+ },
684
+ {
685
+ "target": "blocked",
686
+ "guards": [
687
+ "resume_metadata_valid"
688
+ ]
689
+ },
690
+ {
691
+ "target": "cancelled",
692
+ "guards": [
693
+ "terminal_source_recorded"
694
+ ]
695
+ },
696
+ {
697
+ "target": "failed",
698
+ "guards": [
699
+ "terminal_source_recorded"
700
+ ]
701
+ }
702
+ ],
703
+ "capsule": {
704
+ "consumes": [
705
+ "shape.contract",
706
+ "approvals",
707
+ "workspace"
708
+ ],
709
+ "produces": [],
710
+ "invalidates": [
711
+ "assurance"
712
+ ]
713
+ },
714
+ "events": [
715
+ "state.transition"
716
+ ]
717
+ },
718
+ {
719
+ "status": "assuring",
720
+ "macroPhase": "ASSURE",
721
+ "stable": false,
722
+ "terminal": false,
723
+ "transitions": [
724
+ {
725
+ "target": "planning",
726
+ "guards": []
727
+ },
728
+ {
729
+ "target": "intaking",
730
+ "guards": [
731
+ "intake_reopened"
732
+ ]
733
+ },
734
+ {
735
+ "target": "blocked",
736
+ "guards": [
737
+ "resume_metadata_valid"
738
+ ]
739
+ },
740
+ {
741
+ "target": "cancelled",
742
+ "guards": [
743
+ "terminal_source_recorded"
744
+ ]
745
+ },
746
+ {
747
+ "target": "failed",
748
+ "guards": [
749
+ "terminal_source_recorded"
750
+ ]
751
+ }
752
+ ],
753
+ "capsule": {
754
+ "consumes": [
755
+ "shape.contract",
756
+ "workspace",
757
+ "issues.active",
758
+ "freshness"
759
+ ],
760
+ "produces": [
761
+ "assurance",
762
+ "issues.active",
763
+ "freshness.commands"
764
+ ],
765
+ "invalidates": [
766
+ "assurance.findings",
767
+ "assurance.evidence",
768
+ "approvals"
769
+ ]
770
+ },
771
+ "events": [
772
+ "issue.recorded",
773
+ "correction.recorded",
774
+ "assurance.issue_resolved",
775
+ "assurance.evidence_recorded",
776
+ "assurance.evidence_invalidated",
777
+ "assurance.human_observation_requested",
778
+ "assure.completed",
779
+ "state.transition"
780
+ ]
781
+ },
782
+ {
783
+ "status": "blocked",
784
+ "macroPhase": "resumeTo",
785
+ "stable": true,
786
+ "terminal": false,
787
+ "transitions": [
788
+ {
789
+ "target": "intaking",
790
+ "guards": [
791
+ "resume_metadata_valid",
792
+ "resume_reconciled",
793
+ "task_initialized",
794
+ "effective_constraints_valid"
795
+ ]
796
+ },
797
+ {
798
+ "target": "discovering",
799
+ "guards": [
800
+ "resume_metadata_valid",
801
+ "resume_reconciled",
802
+ "intake_complete",
803
+ "routing_ready",
804
+ "workspace_ready"
805
+ ]
806
+ },
807
+ {
808
+ "target": "awaiting_shape_decision",
809
+ "guards": [
810
+ "resume_metadata_valid",
811
+ "resume_reconciled"
812
+ ]
813
+ },
814
+ {
815
+ "target": "awaiting_profile_choice",
816
+ "guards": [
817
+ "resume_metadata_valid",
818
+ "resume_reconciled",
819
+ "discovery_sufficient"
820
+ ]
821
+ },
822
+ {
823
+ "target": "planning",
824
+ "guards": [
825
+ "resume_metadata_valid",
826
+ "resume_reconciled",
827
+ "discovery_sufficient",
828
+ "profile_selected"
829
+ ]
830
+ },
831
+ {
832
+ "target": "awaiting_intake_decision",
833
+ "guards": [
834
+ "resume_metadata_valid",
835
+ "resume_reconciled"
836
+ ]
837
+ },
838
+ {
839
+ "target": "awaiting_approval",
840
+ "guards": [
841
+ "resume_metadata_valid",
842
+ "resume_reconciled",
843
+ "contract_complete"
844
+ ]
845
+ },
846
+ {
847
+ "target": "executing",
848
+ "guards": [
849
+ "resume_metadata_valid",
850
+ "resume_reconciled",
851
+ "approval_current"
852
+ ]
853
+ },
854
+ {
855
+ "target": "assuring",
856
+ "guards": [
857
+ "resume_metadata_valid",
858
+ "resume_reconciled"
859
+ ]
860
+ },
861
+ {
862
+ "target": "cancelled",
863
+ "guards": [
864
+ "terminal_source_recorded"
865
+ ]
866
+ },
867
+ {
868
+ "target": "failed",
869
+ "guards": [
870
+ "terminal_source_recorded"
871
+ ]
872
+ }
873
+ ],
874
+ "capsule": {
875
+ "consumes": [
876
+ "resume.metadata",
877
+ "freshness"
878
+ ],
879
+ "produces": [
880
+ "resume.reconciliation"
881
+ ],
882
+ "invalidates": []
883
+ },
884
+ "events": [
885
+ "task.resumed",
886
+ "state.transition"
887
+ ]
888
+ },
889
+ {
890
+ "status": "cancelled",
891
+ "macroPhase": "terminalSource",
892
+ "stable": true,
893
+ "terminal": true,
894
+ "transitions": [],
895
+ "capsule": {
896
+ "consumes": [
897
+ "terminal.source",
898
+ "freshness"
899
+ ],
900
+ "produces": [
901
+ "terminal.summary"
902
+ ],
903
+ "invalidates": []
904
+ },
905
+ "events": [
906
+ "task.cancelled"
907
+ ]
908
+ },
909
+ {
910
+ "status": "failed",
911
+ "macroPhase": "terminalSource",
912
+ "stable": true,
913
+ "terminal": true,
914
+ "transitions": [],
915
+ "capsule": {
916
+ "consumes": [
917
+ "terminal.source",
918
+ "issues.active",
919
+ "freshness"
920
+ ],
921
+ "produces": [
922
+ "terminal.summary"
923
+ ],
924
+ "invalidates": []
925
+ },
926
+ "events": [
927
+ "task.failed"
928
+ ]
929
+ }
930
+ ]
931
+ }