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.
- package/framework/agents/discover/brownfield-wu.md +1 -1
- package/framework/agents/plan/tasks.md +2 -2
- package/framework/config.yaml +2 -2
- package/framework/constitution.md +21 -22
- package/framework/context/governance.md +10 -10
- package/framework/context/quality.md +6 -6
- package/framework/context/root.md +1 -1
- package/framework/data/entity-registry.yaml +1 -1
- package/framework/domains/constitution.yaml +1 -1
- package/framework/domains/workflows/brownfield-fullstack.yaml +5 -3
- package/framework/domains/workflows/brownfield-service.yaml +2 -3
- package/framework/domains/workflows/brownfield-ui.yaml +2 -3
- package/framework/domains/workflows/greenfield-fullstack.yaml +5 -3
- package/framework/domains/workflows/quick-flow.yaml +7 -6
- package/framework/domains/workflows/standard-flow.yaml +4 -5
- package/framework/frameworks/quality-dimensions.yaml +3 -3
- package/framework/hooks/git-push-authority.js +8 -4
- package/framework/manifest.json +49 -49
- package/framework/manifest.sig +1 -1
- package/framework/orchestrator/chati.md +29 -20
- package/framework/schemas/session.schema.json +5 -5
- package/framework/workflows/brownfield-fullstack.yaml +17 -123
- package/framework/workflows/brownfield-service.yaml +15 -109
- package/framework/workflows/brownfield-ui.yaml +15 -115
- package/framework/workflows/greenfield-fullstack.yaml +17 -130
- package/framework/workflows/quick-flow.yaml +20 -111
- package/framework/workflows/standard-flow.yaml +14 -158
- package/package.json +1 -1
- package/src/config/claude-settings-generator.js +4 -3
- package/src/config/context-file-generator.js +10 -1
- package/src/config/framework-adapter.js +10 -2
- package/src/context/layers/l1-global.js +2 -0
- package/src/installer/core.js +94 -13
- package/src/installer/templates.js +5 -4
- package/src/installer/validator.js +8 -2
- package/src/intelligence/registry-manager.js +11 -4
- package/src/orchestrator/cli.js +158 -42
- package/src/orchestrator/pipeline-manager.js +2 -0
- package/src/orchestrator/runtime-installation-v2.js +38 -0
- package/src/orchestrator/session-manager.js +1 -1
- package/src/terminal/handoff-parser.js +23 -4
- package/src/terminal/prompt-builder.js +15 -1
- package/src/terminal/provider-preflight.js +78 -0
- package/src/terminal/run-agent.js +66 -23
- package/src/terminal/spawner.js +5 -1
- package/src/utils/schema-validator.js +5 -2
- package/src/wizard/index.js +1 -0
package/framework/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"createdAt": "2026-08-
|
|
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": "
|
|
21
|
-
"size":
|
|
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": "
|
|
56
|
-
"size":
|
|
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": "
|
|
100
|
+
"hash": "35917976892c5b3a929837f0193e6b08115c84134af233aba0c79f201688d193",
|
|
101
101
|
"size": 2671,
|
|
102
102
|
"type": "yaml"
|
|
103
103
|
},
|
|
104
104
|
"constitution.md": {
|
|
105
|
-
"hash": "
|
|
106
|
-
"size":
|
|
105
|
+
"hash": "5b617a789e63a198828398fb673dc8ae4d9ba28728ebcabb2eaa83dc21ab1402",
|
|
106
|
+
"size": 66739,
|
|
107
107
|
"type": "md"
|
|
108
108
|
},
|
|
109
109
|
"context/governance.md": {
|
|
110
|
-
"hash": "
|
|
111
|
-
"size":
|
|
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": "
|
|
121
|
-
"size":
|
|
120
|
+
"hash": "d6cb70d274425b4385a63bd67c217038de9c12992d973b16000b370442905022",
|
|
121
|
+
"size": 2247,
|
|
122
122
|
"type": "md"
|
|
123
123
|
},
|
|
124
124
|
"context/root.md": {
|
|
125
|
-
"hash": "
|
|
125
|
+
"hash": "97f4f47c0ecb2499482401ee859512b30d9c39b53b85261c046145d4b8eeb0ae",
|
|
126
126
|
"size": 1218,
|
|
127
127
|
"type": "md"
|
|
128
128
|
},
|
|
129
129
|
"data/entity-registry.yaml": {
|
|
130
|
-
"hash": "
|
|
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": "
|
|
216
|
-
"size":
|
|
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": "
|
|
231
|
-
"size":
|
|
230
|
+
"hash": "bf4f10e0ffd41dea07f3115e8e5c47f5e9fbb1fd857c2afa778072356fae61f0",
|
|
231
|
+
"size": 742,
|
|
232
232
|
"type": "yaml"
|
|
233
233
|
},
|
|
234
234
|
"domains/workflows/brownfield-service.yaml": {
|
|
235
|
-
"hash": "
|
|
236
|
-
"size":
|
|
235
|
+
"hash": "b3edb0b8158cdcd08c519be5a52fe201e6934e32464dd06e6089b809908980f8",
|
|
236
|
+
"size": 417,
|
|
237
237
|
"type": "yaml"
|
|
238
238
|
},
|
|
239
239
|
"domains/workflows/brownfield-ui.yaml": {
|
|
240
|
-
"hash": "
|
|
241
|
-
"size":
|
|
240
|
+
"hash": "0aa5ed4f052c0cc60cd6c43cda433fb657eea09e30d6c57f815b2c41b16e480d",
|
|
241
|
+
"size": 411,
|
|
242
242
|
"type": "yaml"
|
|
243
243
|
},
|
|
244
244
|
"domains/workflows/greenfield-fullstack.yaml": {
|
|
245
|
-
"hash": "
|
|
246
|
-
"size":
|
|
245
|
+
"hash": "bf7b9179f973bd0bf8b119137c86ed3c61ce58c89aa03c3dffebd663366b328c",
|
|
246
|
+
"size": 811,
|
|
247
247
|
"type": "yaml"
|
|
248
248
|
},
|
|
249
249
|
"domains/workflows/quick-flow.yaml": {
|
|
250
|
-
"hash": "
|
|
251
|
-
"size":
|
|
250
|
+
"hash": "990eaf008e4b02a9d8c17eaab497309d9a4c34a0983eba7012e7d334a7b46e50",
|
|
251
|
+
"size": 802,
|
|
252
252
|
"type": "yaml"
|
|
253
253
|
},
|
|
254
254
|
"domains/workflows/standard-flow.yaml": {
|
|
255
|
-
"hash": "
|
|
256
|
-
"size":
|
|
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": "
|
|
286
|
-
"size":
|
|
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": "
|
|
306
|
-
"size":
|
|
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": "
|
|
476
|
-
"size":
|
|
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": "
|
|
861
|
-
"size":
|
|
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": "
|
|
1326
|
-
"size":
|
|
1325
|
+
"hash": "19e042bc1f94282e8f21e2767cacde075bfb82df7f65239eea60f022c6976437",
|
|
1326
|
+
"size": 1780,
|
|
1327
1327
|
"type": "yaml"
|
|
1328
1328
|
},
|
|
1329
1329
|
"workflows/brownfield-service.yaml": {
|
|
1330
|
-
"hash": "
|
|
1331
|
-
"size":
|
|
1330
|
+
"hash": "ad4872a81676ce6d9241547e5e044e7dd8cc1d934f98e595b151792f16e3146a",
|
|
1331
|
+
"size": 1243,
|
|
1332
1332
|
"type": "yaml"
|
|
1333
1333
|
},
|
|
1334
1334
|
"workflows/brownfield-ui.yaml": {
|
|
1335
|
-
"hash": "
|
|
1336
|
-
"size":
|
|
1335
|
+
"hash": "e08767603486f3c97cb40815008eeac30698eec3a49573e1d8f5bf56e0310adb",
|
|
1336
|
+
"size": 1289,
|
|
1337
1337
|
"type": "yaml"
|
|
1338
1338
|
},
|
|
1339
1339
|
"workflows/greenfield-fullstack.yaml": {
|
|
1340
|
-
"hash": "
|
|
1341
|
-
"size":
|
|
1340
|
+
"hash": "2784adcb8ee79c6100e7e8d8e44af696b57f5f76fb6b475a24fd9012d2e8f2b5",
|
|
1341
|
+
"size": 1788,
|
|
1342
1342
|
"type": "yaml"
|
|
1343
1343
|
},
|
|
1344
1344
|
"workflows/quick-flow.yaml": {
|
|
1345
|
-
"hash": "
|
|
1346
|
-
"size":
|
|
1345
|
+
"hash": "c47fa28ebeb2fdcf3abdd9ebcb6700fc42d09d10b5ce27cf78d4f0efe20d2df8",
|
|
1346
|
+
"size": 1474,
|
|
1347
1347
|
"type": "yaml"
|
|
1348
1348
|
},
|
|
1349
1349
|
"workflows/standard-flow.yaml": {
|
|
1350
|
-
"hash": "
|
|
1351
|
-
"size":
|
|
1350
|
+
"hash": "04351ab5e305117a582b322f681101bf315b73b9cba031489d65d291c1c02329",
|
|
1351
|
+
"size": 1426,
|
|
1352
1352
|
"type": "yaml"
|
|
1353
1353
|
}
|
|
1354
1354
|
},
|
|
1355
|
-
"version": "4.5.
|
|
1355
|
+
"version": "4.5.12"
|
|
1356
1356
|
}
|
package/framework/manifest.sig
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
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
|
-
→
|
|
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
|
|
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):**
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
870
|
-
→
|
|
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
|
-
|
|
917
|
+
RAIL execution/review:
|
|
910
918
|
ALLOW write to: everything
|
|
911
919
|
ALLOW read: everything
|
|
912
920
|
|
|
913
|
-
|
|
914
|
-
ALLOW
|
|
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
|
|
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` →
|
|
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 (
|
|
948
|
+
- Execute mode transitions (discovery → planning → RAIL → Release 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
|
|
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
|
|
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
|
|
962
|
-
- Deploy or configure infrastructure → route to
|
|
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
|
|
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: "
|
|
4
|
+
version: "2.0.0"
|
|
8
5
|
type: brownfield
|
|
9
6
|
project_types: [feature-addition, refactoring, modernization, enhancement]
|
|
10
|
-
|
|
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
|
-
|
|
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:
|
|
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:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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 }
|