chati-dev 4.5.10 → 4.5.12

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 (47) hide show
  1. package/framework/agents/discover/brownfield-wu.md +1 -1
  2. package/framework/agents/plan/tasks.md +2 -2
  3. package/framework/config.yaml +2 -2
  4. package/framework/constitution.md +21 -22
  5. package/framework/context/governance.md +10 -10
  6. package/framework/context/quality.md +6 -6
  7. package/framework/context/root.md +1 -1
  8. package/framework/data/entity-registry.yaml +1 -1
  9. package/framework/domains/constitution.yaml +1 -1
  10. package/framework/domains/workflows/brownfield-fullstack.yaml +5 -3
  11. package/framework/domains/workflows/brownfield-service.yaml +2 -3
  12. package/framework/domains/workflows/brownfield-ui.yaml +2 -3
  13. package/framework/domains/workflows/greenfield-fullstack.yaml +5 -3
  14. package/framework/domains/workflows/quick-flow.yaml +7 -6
  15. package/framework/domains/workflows/standard-flow.yaml +4 -5
  16. package/framework/frameworks/quality-dimensions.yaml +3 -3
  17. package/framework/hooks/git-push-authority.js +8 -4
  18. package/framework/manifest.json +49 -49
  19. package/framework/manifest.sig +1 -1
  20. package/framework/orchestrator/chati.md +29 -20
  21. package/framework/schemas/session.schema.json +5 -5
  22. package/framework/workflows/brownfield-fullstack.yaml +17 -123
  23. package/framework/workflows/brownfield-service.yaml +15 -109
  24. package/framework/workflows/brownfield-ui.yaml +15 -115
  25. package/framework/workflows/greenfield-fullstack.yaml +17 -130
  26. package/framework/workflows/quick-flow.yaml +20 -111
  27. package/framework/workflows/standard-flow.yaml +14 -158
  28. package/package.json +1 -1
  29. package/src/config/claude-settings-generator.js +4 -3
  30. package/src/config/context-file-generator.js +10 -1
  31. package/src/config/framework-adapter.js +10 -2
  32. package/src/context/layers/l1-global.js +2 -0
  33. package/src/installer/core.js +94 -13
  34. package/src/installer/templates.js +5 -4
  35. package/src/installer/validator.js +8 -2
  36. package/src/intelligence/registry-manager.js +11 -4
  37. package/src/orchestrator/cli.js +158 -42
  38. package/src/orchestrator/pipeline-manager.js +2 -0
  39. package/src/orchestrator/runtime-installation-v2.js +38 -0
  40. package/src/orchestrator/session-manager.js +1 -1
  41. package/src/terminal/handoff-parser.js +23 -4
  42. package/src/terminal/prompt-builder.js +15 -1
  43. package/src/terminal/provider-preflight.js +78 -0
  44. package/src/terminal/run-agent.js +66 -23
  45. package/src/terminal/spawner.js +5 -1
  46. package/src/utils/schema-validator.js +5 -2
  47. package/src/wizard/index.js +1 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "createdAt": "2026-08-27T13:25:29.560Z",
2
+ "createdAt": "2026-08-27T15:44:26.707Z",
3
3
  "files": {
4
4
  "agents/build/dev.md": {
5
5
  "hash": "13c2b3855c1f815154a2f4020b99fd8ee71e701b41783f5f26696222720a1466",
@@ -17,8 +17,8 @@
17
17
  "type": "md"
18
18
  },
19
19
  "agents/discover/brownfield-wu.md": {
20
- "hash": "b89e20408bdb0c672d6799507b0f9679c76df7f87f183f27b325070174ac490f",
21
- "size": 18120,
20
+ "hash": "fed8f14838b00e867bc932a3c4c212e38d7dc7c8f2e4443eb3242d19e6e3a286",
21
+ "size": 18172,
22
22
  "type": "md"
23
23
  },
24
24
  "agents/discover/greenfield-wu.md": {
@@ -52,8 +52,8 @@
52
52
  "type": "md"
53
53
  },
54
54
  "agents/plan/tasks.md": {
55
- "hash": "d6440ac7e7ecc9a24d89f39b1786e3cb218565a16b12ecba888e8899abe57b48",
56
- "size": 28257,
55
+ "hash": "a42a321ca2834c20364edb663619d340ac29317b236820135f07013cae9a4a82",
56
+ "size": 27960,
57
57
  "type": "md"
58
58
  },
59
59
  "agents/plan/ux-brand-architect.md": {
@@ -97,18 +97,18 @@
97
97
  "type": "md"
98
98
  },
99
99
  "config.yaml": {
100
- "hash": "8a10ab3b6db7806591d7168f6aee6332f417c612671177310d3ce6aefb2f51de",
100
+ "hash": "35917976892c5b3a929837f0193e6b08115c84134af233aba0c79f201688d193",
101
101
  "size": 2671,
102
102
  "type": "yaml"
103
103
  },
104
104
  "constitution.md": {
105
- "hash": "8de0cc0151d38099ff91a3de763bd5766cffde0253acfe6f3179d992d2887079",
106
- "size": 67409,
105
+ "hash": "5b617a789e63a198828398fb673dc8ae4d9ba28728ebcabb2eaa83dc21ab1402",
106
+ "size": 66739,
107
107
  "type": "md"
108
108
  },
109
109
  "context/governance.md": {
110
- "hash": "bc39df23d48c2cbb005c8e062dfda53442a91f94ccc33f068e26f98d06fe412b",
111
- "size": 6200,
110
+ "hash": "88b3a3463fc14a26459f3202bf939dc954392642e4ac20830429dffd0f209f1f",
111
+ "size": 6225,
112
112
  "type": "md"
113
113
  },
114
114
  "context/protocols.md": {
@@ -117,17 +117,17 @@
117
117
  "type": "md"
118
118
  },
119
119
  "context/quality.md": {
120
- "hash": "43c417d43e47ab724aa559a5edfa476f555ff8a204fb116e9c2d7ceedb47f927",
121
- "size": 1997,
120
+ "hash": "d6cb70d274425b4385a63bd67c217038de9c12992d973b16000b370442905022",
121
+ "size": 2247,
122
122
  "type": "md"
123
123
  },
124
124
  "context/root.md": {
125
- "hash": "6bd0257d5c92c10733782ac68c0d1438571b68e2b162243c9494b0a912f6fe73",
125
+ "hash": "97f4f47c0ecb2499482401ee859512b30d9c39b53b85261c046145d4b8eeb0ae",
126
126
  "size": 1218,
127
127
  "type": "md"
128
128
  },
129
129
  "data/entity-registry.yaml": {
130
- "hash": "e56261884e29b046f3c4b5f4d0a22b4fa27bceba17d669d0606ea0a25d3c8237",
130
+ "hash": "61a4cf5f7ad94b925182040befa609dc0ed8e0598f22118891337f225081667b",
131
131
  "size": 34606,
132
132
  "type": "yaml"
133
133
  },
@@ -212,8 +212,8 @@
212
212
  "type": "yaml"
213
213
  },
214
214
  "domains/constitution.yaml": {
215
- "hash": "497b41ae7c45402ac43081c2081639fa2ac86619bd83d86452343fe6d68f39ed",
216
- "size": 7037,
215
+ "hash": "9f609909b33b2fdd7514b4e4ce8b57c72b5618604376ef79dd1d79e4969dbb04",
216
+ "size": 7061,
217
217
  "type": "yaml"
218
218
  },
219
219
  "domains/global.yaml": {
@@ -227,33 +227,33 @@
227
227
  "type": "yaml"
228
228
  },
229
229
  "domains/workflows/brownfield-fullstack.yaml": {
230
- "hash": "823e9533354ac6f38512f774fd32262c71eca164d3b476fa300c1eee8f37d77f",
231
- "size": 625,
230
+ "hash": "bf4f10e0ffd41dea07f3115e8e5c47f5e9fbb1fd857c2afa778072356fae61f0",
231
+ "size": 742,
232
232
  "type": "yaml"
233
233
  },
234
234
  "domains/workflows/brownfield-service.yaml": {
235
- "hash": "10510a573828173a984de9e1dd05d84784aab309e99ccf66589760b2cadce116",
236
- "size": 437,
235
+ "hash": "b3edb0b8158cdcd08c519be5a52fe201e6934e32464dd06e6089b809908980f8",
236
+ "size": 417,
237
237
  "type": "yaml"
238
238
  },
239
239
  "domains/workflows/brownfield-ui.yaml": {
240
- "hash": "900e19680cc39f368418c57636d613332499803a06a06d1010c537eadce18955",
241
- "size": 431,
240
+ "hash": "0aa5ed4f052c0cc60cd6c43cda433fb657eea09e30d6c57f815b2c41b16e480d",
241
+ "size": 411,
242
242
  "type": "yaml"
243
243
  },
244
244
  "domains/workflows/greenfield-fullstack.yaml": {
245
- "hash": "20dc8aed7141fbb56b3e2cdcdb86e06857cfb89e424f997695382d1e70776a0e",
246
- "size": 688,
245
+ "hash": "bf7b9179f973bd0bf8b119137c86ed3c61ce58c89aa03c3dffebd663366b328c",
246
+ "size": 811,
247
247
  "type": "yaml"
248
248
  },
249
249
  "domains/workflows/quick-flow.yaml": {
250
- "hash": "fcc65dadfb4559f7cece4759495306b4c1be44adf331163314c946bb7ea49587",
251
- "size": 779,
250
+ "hash": "990eaf008e4b02a9d8c17eaab497309d9a4c34a0983eba7012e7d334a7b46e50",
251
+ "size": 802,
252
252
  "type": "yaml"
253
253
  },
254
254
  "domains/workflows/standard-flow.yaml": {
255
- "hash": "e8b21aee685f7cc06f8be9e8e3b05e82e8632b2171b46b7811e5d11646c69b10",
256
- "size": 1226,
255
+ "hash": "550186b773792428358acdf9ba3679d0643c26a354127709ea940fffdc6aff71",
256
+ "size": 1209,
257
257
  "type": "yaml"
258
258
  },
259
259
  "executors/json-validate.js": {
@@ -282,8 +282,8 @@
282
282
  "type": "yaml"
283
283
  },
284
284
  "frameworks/quality-dimensions.yaml": {
285
- "hash": "6d042a08812d9ffaa3844462fdcaf95d898397d8e5d8cd4c6fe254e3a9bb5e27",
286
- "size": 2016,
285
+ "hash": "5f95dbd59628ba24ae365f2db2b7169044481996616199b963644fed24d51810",
286
+ "size": 1993,
287
287
  "type": "yaml"
288
288
  },
289
289
  "hooks/advance-trigger.js": {
@@ -302,8 +302,8 @@
302
302
  "type": "js"
303
303
  },
304
304
  "hooks/git-push-authority.js": {
305
- "hash": "5f4301a95a9b2ff252dbe2df0debccbbccdf6de7eb1ccec9c1a6015bf2353f6e",
306
- "size": 4243,
305
+ "hash": "cb296129155464438b7f3f8834eb9d62674c34c0ef12ccba8769cd2938da97d8",
306
+ "size": 4666,
307
307
  "type": "js"
308
308
  },
309
309
  "hooks/license-guard.js": {
@@ -472,8 +472,8 @@
472
472
  "type": "md"
473
473
  },
474
474
  "orchestrator/chati.md": {
475
- "hash": "8d55e3e354e7e7cf4d28ca3aba5372df0580ca3b191e2e14696363867eba567a",
476
- "size": 45355,
475
+ "hash": "fbba2ec83ded49329dc33f674accb391cc290cd1687048967a49fc70fb62f3af",
476
+ "size": 46016,
477
477
  "type": "md"
478
478
  },
479
479
  "package.json": {
@@ -857,8 +857,8 @@
857
857
  "type": "json"
858
858
  },
859
859
  "schemas/session.schema.json": {
860
- "hash": "57b0aa1b097b2253664a548cad42652ed3ec759feab6d0c1098062e88048cf1e",
861
- "size": 19069,
860
+ "hash": "4745c6f9aa52f73e3353985e99aaa33f629cf73910b60fce7daaac4a075faf8f",
861
+ "size": 19191,
862
862
  "type": "json"
863
863
  },
864
864
  "schemas/task.schema.json": {
@@ -1322,35 +1322,35 @@
1322
1322
  "type": "yaml"
1323
1323
  },
1324
1324
  "workflows/brownfield-fullstack.yaml": {
1325
- "hash": "5496b91fd49e4cefd07f15b89fc2e7a9974fcc0559be5a5a4ce22c4c9b4ce52d",
1326
- "size": 4495,
1325
+ "hash": "19e042bc1f94282e8f21e2767cacde075bfb82df7f65239eea60f022c6976437",
1326
+ "size": 1780,
1327
1327
  "type": "yaml"
1328
1328
  },
1329
1329
  "workflows/brownfield-service.yaml": {
1330
- "hash": "57cb79885434fa6e885b3393327915b39f631dda9a8e4f389b0459449bc2060d",
1331
- "size": 3785,
1330
+ "hash": "ad4872a81676ce6d9241547e5e044e7dd8cc1d934f98e595b151792f16e3146a",
1331
+ "size": 1243,
1332
1332
  "type": "yaml"
1333
1333
  },
1334
1334
  "workflows/brownfield-ui.yaml": {
1335
- "hash": "8e757ae5f12931b0bd4f3f5399af1ba7af5893da83596331fab322083514cc96",
1336
- "size": 4144,
1335
+ "hash": "e08767603486f3c97cb40815008eeac30698eec3a49573e1d8f5bf56e0310adb",
1336
+ "size": 1289,
1337
1337
  "type": "yaml"
1338
1338
  },
1339
1339
  "workflows/greenfield-fullstack.yaml": {
1340
- "hash": "952e3eb5cdd133a753c40661d3f68eddf7d1bf23ea324626ed2260a3e88b49e2",
1341
- "size": 4949,
1340
+ "hash": "2784adcb8ee79c6100e7e8d8e44af696b57f5f76fb6b475a24fd9012d2e8f2b5",
1341
+ "size": 1788,
1342
1342
  "type": "yaml"
1343
1343
  },
1344
1344
  "workflows/quick-flow.yaml": {
1345
- "hash": "40c129b14b6d7d87d543653c25b4d37037a4f69c9abea1a97673d24f699da5f4",
1346
- "size": 4617,
1345
+ "hash": "c47fa28ebeb2fdcf3abdd9ebcb6700fc42d09d10b5ce27cf78d4f0efe20d2df8",
1346
+ "size": 1474,
1347
1347
  "type": "yaml"
1348
1348
  },
1349
1349
  "workflows/standard-flow.yaml": {
1350
- "hash": "136325ee0871063bbbdbd84a2017a90d7c418a5e153cfd080e7208baac5224f8",
1351
- "size": 5667,
1350
+ "hash": "04351ab5e305117a582b322f681101bf315b73b9cba031489d65d291c1c02329",
1351
+ "size": 1426,
1352
1352
  "type": "yaml"
1353
1353
  }
1354
1354
  },
1355
- "version": "4.5.10"
1355
+ "version": "4.5.12"
1356
1356
  }
@@ -1 +1 @@
1
- IEfPaGbjqj36vXbd2ODiFxMhP6C9zd7GCMIkHitsiRCQ4nht3ymf69h9kXqnyGqMgrpiiFKs1Kn3/K0UzxJqAw==
1
+ qw0VeF2Ymm1U0meAoVLpTkcRUKiPWmv1LhJvOo6GdZYWc81BUGLHW1uMWcI84SkVRsI4skriATd7rAi2h13kAQ==
@@ -65,7 +65,12 @@ When the user invokes `/chati`, execute this sequence:
65
65
 
66
66
  /chati providers:
67
67
  → Run: node .chati.dev/orchestrator/chati-router.js providers
68
- Display provider table and agent model assignments
68
+ For v2, display three distinct blocks from JSON:
69
+ 1. `planning_agent_models`, discovery and planning routing only
70
+ 2. `rail_execution_pool`, eligible provider and model capabilities for task execution and review
71
+ 3. `release_lane`, explicit authorization policy
72
+ → Never describe `dev`, `qa-implementation`, `qa-visual`, or `devops` as v2 pipeline agents
73
+ → Never infer that a provider with no planning agent assignment is unavailable to RAIL
69
74
  → Stay locked
70
75
 
71
76
  /chati resume:
@@ -75,7 +80,7 @@ When the user invokes `/chati`, execute this sequence:
75
80
  → Display:
76
81
  /chati Start or resume session
77
82
  /chati status Show project dashboard
78
- /chati providers List providers and agent models
83
+ /chati providers Show planning routing and the RAIL execution pool
79
84
  /chati exit Save and exit session
80
85
  /chati help Show this help
81
86
  → Stay locked
@@ -319,7 +324,7 @@ returned `next` state. Do not treat it as an error.
319
324
 
320
325
  Planning phase agents (detail, architect, ux) run simultaneously.
321
326
 
322
- **NOTE (Article XXI):** When `features.agent_teams: true` in config.yaml, the orchestrator MUST attempt `spawn_team` FIRST for Planning Team (detail, architect, ux, qa-planning) and Build Team (dev, qa-implementation). Only fall back to `spawn_parallel` if team spawning is unavailable or fails. The CLI `orchestrate next` command handles this automatically - when teams are enabled, it returns `spawn_team` instead of `spawn_parallel`.
327
+ **NOTE (Article XXI):** For v2, when `features.agent_teams: true` in config.yaml, the orchestrator MUST attempt `spawn_team` first for the Planning Team (detail, architect, ux, qa-planning). Only fall back to `spawn_parallel` if team spawning is unavailable or fails. After Tasks, RAIL owns execution and review. A Build Team is never formed in v2.
323
328
 
324
329
  1. Display naturally what is happening using user-facing language. Examples (pick one that fits the phase): "Working on the planning phase now." / "Reviewing the architecture and UX in parallel." NEVER say "spawning parallel group", "spawn_parallel", or list internal agent names like "detail, architect, ux".
325
330
  2. If `parallel_spawn_commands` is non-empty, execute every member's `command`
@@ -363,7 +368,7 @@ Parse the JSON response. Extract these values - you will need them in Step 2:
363
368
 
364
369
  If `fallback_required: true` → fall back silently to the "Action: Parallel Spawn" section. Do NOT display error messages.
365
370
 
366
- Display naturally what is happening. For Planning Team: "Working on the planning - designing the requirements, architecture, and user experience together." For Build Team: "Building this with continuous quality review." NEVER expose internal agent names.
371
+ Display naturally what is happening: "Working on the planning, designing the requirements, architecture, and user experience together." Never expose internal agent names.
367
372
 
368
373
  ### MANDATORY Step 2: Spawn Teammates via Agent Tool
369
374
 
@@ -421,6 +426,7 @@ Agent tool call 4:
421
426
  Write your handoff to artifacts/handoffs/qa-planning-handoff.md when done.]
422
427
  ```
423
428
 
429
+ <!-- CHATI_LEGACY_BUILD_START -->
424
430
  **Legacy compatibility only, installations without `.chati/v2/installation.json`: For Build Team** (BUILD phase) - Wave-Based Pipeline:
425
431
 
426
432
  For a v2 installation this section MUST NOT run. The `tasks` handoff returns
@@ -593,6 +599,8 @@ Before dissolving the team, verify both handoffs exist:
593
599
  STOP and return.]
594
600
  2. `artifacts/handoffs/qa-implementation-handoff.md` - should exist from Final QA Wave
595
601
 
602
+ <!-- CHATI_LEGACY_BUILD_END -->
603
+
596
604
  ### Step 3: Collect Results
597
605
 
598
606
  When all Agent tool calls return:
@@ -700,9 +708,9 @@ The user is returning to an active session.
700
708
 
701
709
  ---
702
710
 
703
- ## Action: User Preview
711
+ ## Action: User Preview (legacy runtime only)
704
712
 
705
- QA-Implementation passed. User must approve before deploy.
713
+ This action is invalid when `.chati/v2/installation.json` exists. V2 preview evidence and external authorization belong to the RAIL Release Lane.
706
714
 
707
715
  1. Present QA results to user
708
716
  2. Options:
@@ -718,7 +726,7 @@ QA-Implementation passed. User must approve before deploy.
718
726
 
719
727
  ## Action: Complete
720
728
 
721
- Pipeline finished. Present final project summary. Run `orchestrate exit`.
729
+ The RAIL Release Lane has completed or the legacy pipeline has finished. Present the final project summary. Run `orchestrate exit`.
722
730
  Congratulate the user.
723
731
 
724
732
  ---
@@ -862,12 +870,12 @@ interactive (default):
862
870
  → Agent-driven guided mode. Agent leads, user validates.
863
871
  → All 8 universal protocols apply.
864
872
 
865
- autonomous (Ralph Wiggum mode):
873
+ autonomous:
866
874
  → Requires: most recent QA gate score >= 95% (Article XVII prerequisite).
867
875
  → If quality gate not met, inform user and suggest guided mode instead.
868
876
  → Agent executes without asking unless blocker encountered.
869
- → Primarily for Dev agent during BUILD phase.
870
- QA gates always run regardless of mode.
877
+ → Primarily for dependency-ready RAIL tasks.
878
+ Independent review and rework gates always run regardless of mode.
871
879
  → Activated by user request or orchestrator suggestion post-Brief.
872
880
  ```
873
881
 
@@ -906,12 +914,13 @@ discover/plan phase:
906
914
  BLOCK write to: everything else
907
915
  ALLOW read: everything
908
916
 
909
- build/validate phase:
917
+ RAIL execution/review:
910
918
  ALLOW write to: everything
911
919
  ALLOW read: everything
912
920
 
913
- deploy phase:
914
- ALLOW everything + infra operations
921
+ Release Lane:
922
+ ALLOW evidence preparation
923
+ REQUIRE explicit human authorization before external action
915
924
  ```
916
925
 
917
926
  ### Backward Transitions
@@ -923,10 +932,10 @@ If QA finds spec or architecture issues:
923
932
 
924
933
  ### Root Layer Routing (Article XXII)
925
934
 
926
- When QA-Implementation classifies a fault via the Fault Vector Protocol:
935
+ When the independent RAIL reviewer classifies a fault:
927
936
  - `INTENT` → escalate to user via deviation protocol (requirement is flawed)
928
937
  - `SPEC` → backward transition to Architect, UX, or Tasks agent
929
- - `CODE` → Dev agent silent correction loop (existing behavior)
938
+ - `CODE` → bounded RAIL rework using the task's sealed execution binding
930
939
  - `DEFER` → add to session backlog, do not block approval
931
940
 
932
941
  ---
@@ -936,13 +945,13 @@ When QA-Implementation classifies a fault via the Fault Vector Protocol:
936
945
  ### EXCLUSIVE (only orchestrator)
937
946
  - Route messages to agents
938
947
  - Activate/deactivate agents
939
- - Execute mode transitions (planningbuildvalidatedeploy)
948
+ - Execute mode transitions (discoveryplanningRAILRelease Lane)
940
949
  - Manage session lock (activate/deactivate)
941
950
  - Handle deviations and re-routing
942
951
  - Manage backlog items
943
952
  - Spawn parallel terminals
944
953
  - Decide execution mode (interactive vs autonomous)
945
- - Form and dissolve Agent Teams (Team Lead role, Article XXI)
954
+ - Form and dissolve the Planning Team (Team Lead role, Article XXI)
946
955
  - Monitor shared task list and mailbox during team execution
947
956
  - Detect and respond to echo events within teams (Article XXII)
948
957
  - Route corrections to correct layer via Root Layer Routing (Article XXII)
@@ -955,11 +964,11 @@ When QA-Implementation classifies a fault via the Fault Vector Protocol:
955
964
  - Generate session digests
956
965
 
957
966
  ### BLOCKED (never do this - redirect instead)
958
- - Write code or implementation files → route to dev
967
+ - Write code or implementation files outside RAIL → route through the sealed RAIL task
959
968
  - Write specification documents → route to detail
960
969
  - Make architectural decisions → route to architect
961
- - Write tests → route to dev
962
- - Deploy or configure infrastructure → route to devops
970
+ - Write tests outside RAIL → route through the sealed RAIL task
971
+ - Deploy or configure infrastructure directly → route to the Release Lane authorization gate
963
972
  - Modify constitution or config files
964
973
 
965
974
  ---
@@ -20,7 +20,7 @@
20
20
  "description": "Normalized active_model recorded when /chati-update last completed. Article XXIV: when active_model differs from this, the orchestrator advises a harness re-audit. The advisory is driven entirely by this comparison; there is no separate flag."
21
21
  },
22
22
  "mode": {
23
- "enum": ["discover", "plan", "build", "validate", "deploy", "completed"],
23
+ "enum": ["discover", "plan", "rail", "release", "build", "validate", "deploy", "completed"],
24
24
  "default": "discover",
25
25
  "description": "Flat pipeline macro-phase (mirrors project.state). Read by prism-engine and mode-governance hooks."
26
26
  },
@@ -67,13 +67,13 @@
67
67
  "properties": {
68
68
  "name": { "type": "string", "description": "Project name" },
69
69
  "type": { "enum": ["greenfield", "brownfield"], "description": "Project type" },
70
- "state": { "enum": ["discover", "plan", "build", "validate", "deploy", "completed"], "description": "Current pipeline macro-phase" }
70
+ "state": { "enum": ["discover", "plan", "rail", "release", "build", "validate", "deploy", "completed"], "description": "Current pipeline macro-phase" }
71
71
  }
72
72
  },
73
73
  "execution_mode": {
74
74
  "enum": ["interactive", "autonomous"],
75
75
  "default": "interactive",
76
- "description": "interactive = agent-driven guided mode; autonomous = Ralph Wiggum mode (Dev agent)"
76
+ "description": "interactive requires user checkpoints; autonomous advances eligible gates while preserving RAIL review and release authorization"
77
77
  },
78
78
  "providers_enabled": {
79
79
  "type": "array",
@@ -235,8 +235,8 @@
235
235
  "required": ["timestamp", "from", "to", "trigger"],
236
236
  "properties": {
237
237
  "timestamp": { "type": "string", "format": "date-time" },
238
- "from": { "enum": ["discover", "plan", "build", "validate", "deploy", "completed"] },
239
- "to": { "enum": ["discover", "plan", "build", "validate", "deploy", "completed"] },
238
+ "from": { "enum": ["discover", "plan", "rail", "release", "build", "validate", "deploy", "completed"] },
239
+ "to": { "enum": ["discover", "plan", "rail", "release", "build", "validate", "deploy", "completed"] },
240
240
  "trigger": { "type": "string", "description": "What caused the transition (agent completion, override, backward)" },
241
241
  "type": { "enum": ["automatic", "backward", "override"], "description": "Transition classification" },
242
242
  "skipped_agents": {
@@ -1,139 +1,33 @@
1
- # Brownfield Fullstack Workflow
2
- # Handles: feature addition, refactoring, modernization
3
-
4
1
  workflow:
5
2
  id: brownfield-fullstack
6
3
  name: Brownfield Fullstack Development
7
- version: "1.0.0"
4
+ version: "2.0.0"
8
5
  type: brownfield
9
6
  project_types: [feature-addition, refactoring, modernization, enhancement]
10
- description: >
11
- Development pipeline for existing projects. Key difference from greenfield:
12
- Architect comes BEFORE Detail to understand existing constraints first.
13
- brownfield-wu ALWAYS runs Deep Discovery with 3 scout calls.
7
+ execution_authority: rail
14
8
 
15
9
  phases:
16
10
  - phase: 0
17
11
  name: Deep Discovery
18
12
  category: DISCOVER
19
13
  sequence:
20
- - agent: brownfield-wu
21
- action: full-discovery
22
- creates: [artifacts/0-WU/wu-full-report.md]
23
- notes: >
24
- Both axes (technical + operational). ALWAYS runs Deep Discovery
25
- with 3 scout calls: Architect, UX, QA in scout mode.
26
-
14
+ - { agent: brownfield-wu, action: deep-discovery, creates: [artifacts/0-WU/wu-operational-report.md] }
15
+ - { agent: brief, action: problem-extraction, creates: [artifacts/1-Brief/brief-report.md] }
27
16
  - phase: 1
28
- name: Problem Definition
29
- category: DISCOVER
30
- sequence:
31
- - agent: brief
32
- action: problem-extraction
33
- creates: [artifacts/1-Brief/brief-report.md]
34
- notes: "Informed by existing codebase context from WU"
35
-
36
- - phase: 2
37
- name: Architecture Assessment
38
- category: PLAN
39
- sequence:
40
- - agent: architect
41
- action: assess-architecture
42
- creates: [artifacts/3-Architecture/architecture.md]
43
- template: fullstack-architecture-tmpl.yaml
44
- notes: >
45
- Architect comes BEFORE Detail in brownfield.
46
- Assesses existing architecture, proposes changes.
47
-
48
- - phase: 3
49
- name: Product Specification
50
- category: PLAN
51
- sequence:
52
- - agent: detail
53
- action: create-prd
54
- creates: [artifacts/2-PRD/prd.md]
55
- template: brownfield-prd-tmpl.yaml
56
- notes: "PRD informed by architectural constraints"
57
- - agent: ux
58
- action: define-experience
59
- creates: [artifacts/4-UX/ux-specification.md]
60
- notes: "Includes Design System audit of existing code"
61
-
62
- - phase: 4
63
- name: Execution Planning
64
- category: PLAN
65
- sequence:
66
- - agent: phases
67
- action: create-roadmap
68
- creates: [artifacts/5-Phases/phases.md]
69
- - agent: tasks
70
- action: create-tasks
71
- creates: [artifacts/6-Tasks/tasks.md]
72
- template: task-tmpl.yaml
73
-
74
- - phase: 5
75
- name: Planning Quality Gate (Planning Team)
17
+ name: Planning
76
18
  category: PLAN
77
19
  sequence:
78
- - agent: qa-planning
79
- action: validate-traceability
80
- creates: [artifacts/7-QA-Planning/qa-planning-report.md]
81
- template: qa-gate-tmpl.yaml
82
- notes: >
83
- Runs inside Planning Team (Article XXI), not as a standalone step.
84
- Activates after Detail, Architect, and UX complete their tasks.
85
- Score synced to session.yaml by orchestrator on team dissolution.
86
-
87
- - phase: 6
88
- name: Implementation
89
- category: BUILD
90
- sequence:
91
- - agent: dev
92
- action: implement-tasks
93
- - agent: qa-implementation
94
- action: validate-code
95
- creates: [artifacts/9-QA-Implementation/qa-implementation-report.md]
96
-
97
- - phase: 7
98
- name: Deployment
99
- category: DEPLOY
100
- sequence:
101
- - agent: devops
102
- action: deploy
103
- creates: [artifacts/10-Deploy/deploy-report.md]
20
+ - { agent: architect, action: map-and-design, creates: [artifacts/3-Architecture/architecture.md] }
21
+ - { agent: detail, action: create-prd, creates: [artifacts/2-PRD/prd.md] }
22
+ - { agent: ux, action: define-experience, creates: [artifacts/4-UX/ux-specification.md] }
23
+ - { agent: phases, action: create-roadmap, creates: [artifacts/5-Phases/phases.md] }
24
+ - { agent: tasks, action: seal-task-graph, creates: [artifacts/6-Tasks/tasks.md] }
25
+ - { agent: qa-planning, action: validate-planning, creates: [artifacts/7-QA-Planning/qa-planning-report.md] }
26
+ - { phase: 2, name: RAIL Execution, category: RAIL, runtime: project-local-rail, contract: .chati/v2/rail/handoffs }
27
+ - { phase: 3, name: Release Lane, category: RELEASE, requires: [rail_complete, independent_review_approved, explicit_human_authorization] }
104
28
 
105
29
  transitions:
106
- discover_to_plan:
107
- trigger: "brief.status == completed"
108
- type: automatic
109
- action: "Update project.state = plan"
110
- plan_to_build:
111
- trigger: "qa-planning.score >= 95"
112
- type: automatic
113
- action: "Update project.state = build"
114
- build_to_validate:
115
- trigger: "dev.status == completed"
116
- type: automatic
117
- action: "Update project.state = validate"
118
- validate_to_preview:
119
- trigger: "qa-implementation.status == approved"
120
- type: automatic
121
- action: "Launch user preview (orchestrator-preview task)"
122
- notes: "User must approve preview before advancing to deploy"
123
- preview_to_deploy:
124
- trigger: "user_preview.decision in [approve_keep, approve_kill]"
125
- type: manual
126
- action: "Update project.state = deploy"
127
- notes: "User explicitly approves the preview"
128
- deploy_to_completed:
129
- trigger: "devops.status == completed"
130
- type: automatic
131
- action: "Update project.state = completed"
132
- backward_to_plan:
133
- trigger: "qa-implementation.issue_type in [spec, architecture]"
134
- type: backward
135
- action: "Update project.state = plan, route to responsible agent"
136
- backward_to_discover:
137
- trigger: "qa-implementation.issue_type in [requirements, scope]"
138
- type: backward
139
- action: "Update project.state = discover, route to brief or wu agent"
30
+ discover_to_plan: { trigger: "brief.status == completed", target: plan }
31
+ plan_to_rail: { trigger: "qa-planning.score >= 95 && tasks.handoff == sealed", target: rail }
32
+ rail_to_release: { trigger: "rail.all_tasks_approved == true", target: release }
33
+ release_to_completed: { trigger: "release.receipt.status == completed", target: completed }