chati-dev 4.5.27 → 4.5.29
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/bin/chati.js +151 -123
- package/framework/agents/build/dev.md +4 -4
- package/framework/agents/deploy/devops.md +3 -3
- package/framework/agents/discover/brief.md +18 -6
- package/framework/agents/discover/brownfield-wu.md +3 -3
- package/framework/agents/discover/greenfield-wu.md +4 -4
- package/framework/agents/plan/architect.md +2 -2
- package/framework/agents/plan/detail.md +4 -4
- package/framework/agents/plan/phases.md +3 -3
- package/framework/agents/plan/tasks.md +47 -19
- package/framework/agents/plan/ux-brand-architect.md +1 -1
- package/framework/agents/plan/ux.md +26 -2
- package/framework/agents/quality/qa-implementation.md +8 -8
- package/framework/agents/quality/qa-planning.md +58 -4
- package/framework/agents/quality/qa-visual.md +4 -4
- package/framework/config.yaml +2 -2
- package/framework/constitution.md +12 -1
- package/framework/context/governance.md +2 -1
- package/framework/context/root.md +3 -1
- package/framework/domains/constitution.yaml +1 -1
- package/framework/domains/global.yaml +1 -1
- package/framework/domains/workflows/standard-flow.yaml +7 -8
- package/framework/hooks/advance-trigger.js +3 -2
- package/framework/hooks/brief-validator.js +1 -1
- package/framework/hooks/post-dev.js +1 -1
- package/framework/hooks/team-quality-gate.js +9 -2
- package/framework/i18n/en.yaml +1 -0
- package/framework/i18n/es.yaml +1 -0
- package/framework/i18n/fr.yaml +1 -0
- package/framework/i18n/pt.yaml +1 -0
- package/framework/manifest.json +83 -83
- package/framework/manifest.sig +1 -1
- package/framework/orchestrator/chati-router.js +14 -6
- package/framework/orchestrator/chati.md +61 -23
- package/framework/rules/human-writing-style.md +7 -0
- package/framework/schemas/session.schema.json +25 -2
- package/framework/schemas/task.schema.json +26 -0
- package/framework/tasks/orchestrator-handoff.md +10 -10
- package/framework/tasks/orchestrator-resume.md +3 -3
- package/framework/workflows/brownfield-fullstack.yaml +6 -3
- package/framework/workflows/brownfield-service.yaml +5 -3
- package/framework/workflows/brownfield-ui.yaml +5 -3
- package/framework/workflows/greenfield-fullstack.yaml +6 -3
- package/framework/workflows/standard-flow.yaml +8 -3
- package/node_modules/@chati/core/native/browser-proof-wire.h +29 -0
- package/node_modules/@chati/core/native/darwin-browser-listener.c +36 -0
- package/node_modules/@chati/core/native/darwin-browser-listener.h +32 -0
- package/node_modules/@chati/core/native/darwin-browser-proof.h +86 -0
- package/node_modules/@chati/core/native/darwin-code-identity.h +35 -0
- package/node_modules/@chati/core/native/darwin-launch-messages.h +37 -0
- package/node_modules/@chati/core/native/darwin-launcher.c +312 -0
- package/node_modules/@chati/core/native/descriptor-fs.c +407 -0
- package/node_modules/@chati/core/native/execution-admission.h +59 -0
- package/node_modules/@chati/core/native/execution-gate.c +41 -0
- package/node_modules/@chati/core/native/linux-process.c +41 -0
- package/node_modules/@chati/core/native/prebuilds/darwin-arm64/darwin-launcher +0 -0
- package/node_modules/@chati/core/native/prebuilds/darwin-arm64/descriptor-fs.node +0 -0
- package/node_modules/@chati/core/native/prebuilds/darwin-arm64/execution-gate +0 -0
- package/node_modules/@chati/core/native/prebuilds/linux-x64/descriptor-fs.node +0 -0
- package/node_modules/@chati/core/native/prebuilds/linux-x64/execution-gate +0 -0
- package/node_modules/@chati/core/native/process-info-pipe.c +91 -0
- package/node_modules/@chati/core/package.json +2 -1
- package/node_modules/@chati/core/scripts/build-native.js +36 -0
- package/node_modules/@chati/core/src/darwin-browser-proof.js +87 -0
- package/node_modules/@chati/core/src/darwin-host-boot.js +58 -0
- package/node_modules/@chati/core/src/darwin-process.js +79 -0
- package/node_modules/@chati/core/src/darwin-supervisor-channels.js +82 -0
- package/node_modules/@chati/core/src/darwin-terminal-receipt.js +111 -0
- package/node_modules/@chati/core/src/descriptor-fs.js +222 -0
- package/node_modules/@chati/core/src/execution-gate.js +8 -0
- package/node_modules/@chati/core/src/host-boot-marker.js +45 -0
- package/node_modules/@chati/core/src/index.js +18 -0
- package/node_modules/@chati/core/src/linux-host-boot.js +218 -0
- package/node_modules/@chati/core/src/linux-process.js +133 -0
- package/node_modules/@chati/planning/src/browser-verification-plan.js +71 -0
- package/node_modules/@chati/planning/src/index.js +33 -0
- package/node_modules/@chati/planning/src/planning-material.js +64 -0
- package/node_modules/@chati/planning/src/verification-plan.js +57 -0
- package/node_modules/@chati/rail/package.json +1 -0
- package/node_modules/@chati/rail/src/execution-restoration.js +92 -0
- package/node_modules/@chati/rail/src/index.js +812 -167
- package/node_modules/@chati/rail/src/provider-processing.js +118 -0
- package/node_modules/@chati/rail/src/terminal-containment.js +23 -0
- package/node_modules/@chati/release-lane/src/index.js +40 -43
- package/node_modules/@chati/review-council/src/index.js +223 -0
- package/node_modules/@chati/tracking-clickup/src/index.js +67 -58
- package/package-artifact-manifest.json +1 -1
- package/package-artifact-manifest.sig +1 -1
- package/package.json +3 -2
- package/scripts/verify-real-harness-e2e.js +20 -8
- package/src/installer/core.js +147 -107
- package/src/installer/package-artifact.js +7 -0
- package/src/installer/preflight.js +13 -0
- package/src/installer/provider-overlay.js +1 -2
- package/src/installer/templates.js +58 -0
- package/src/installer-v2/catalog-client.js +31 -1
- package/src/installer-v2/clickup-connection-storage.js +92 -0
- package/src/installer-v2/clickup-mcp-client.js +155 -0
- package/src/installer-v2/clickup-oauth-loopback.js +96 -0
- package/src/installer-v2/clickup-oauth.js +233 -0
- package/src/installer-v2/index.js +141 -15
- package/src/installer-v2/installation-authority.js +98 -4
- package/src/installer-v2/provider-executable.js +137 -20
- package/src/installer-v2/wizard-installation.js +11 -0
- package/src/orchestrator/agent-selector.js +39 -1
- package/src/orchestrator/browser-artifact-store.js +131 -0
- package/src/orchestrator/cli.js +762 -205
- package/src/orchestrator/clickup-mcp-observer.js +226 -0
- package/src/orchestrator/clickup-runtime.js +45 -24
- package/src/orchestrator/council-gate-runtime.js +903 -0
- package/src/orchestrator/evidence-authority-enrollment.js +75 -0
- package/src/orchestrator/evidence-authority-request.js +46 -0
- package/src/orchestrator/handoff-engine.js +4 -11
- package/src/orchestrator/pipeline-manager.js +42 -4
- package/src/orchestrator/planning-contract-revision.js +711 -0
- package/src/orchestrator/planning-reconciliation.js +302 -0
- package/src/orchestrator/planning-runtime.js +476 -29
- package/src/orchestrator/rail-adjudication-evidence.js +15 -24
- package/src/orchestrator/rail-human-effort-authority.js +46 -0
- package/src/orchestrator/rail-human-effort.js +149 -0
- package/src/orchestrator/rail-runtime.js +291 -47
- package/src/orchestrator/rail-verification.js +278 -0
- package/src/orchestrator/review-runtime.js +37 -2
- package/src/orchestrator/runtime-installation-v2.js +143 -24
- package/src/orchestrator/session-manager.js +1457 -29
- package/src/tasks/handoff.js +57 -33
- package/src/terminal/adapters/claude-adapter.js +3 -0
- package/src/terminal/adapters/codex-adapter.js +13 -0
- package/src/terminal/adapters/grok-adapter.js +1 -0
- package/src/terminal/agent-attempt-budget.js +35 -0
- package/src/terminal/browser-endpoint-proxy.js +174 -0
- package/src/terminal/browser-observer-driver.js +94 -0
- package/src/terminal/browser-observer-supervisor.js +73 -0
- package/src/terminal/browser-observer.js +95 -0
- package/src/terminal/browser-process-facts.js +75 -0
- package/src/terminal/browser-runtime.js +131 -0
- package/src/terminal/darwin-authority-policy.js +213 -0
- package/src/terminal/darwin-browser-application.js +116 -0
- package/src/terminal/darwin-browser-observer.js +57 -0
- package/src/terminal/darwin-execution.js +185 -0
- package/src/terminal/executable-snapshot.js +202 -0
- package/src/terminal/handoff-parser.js +48 -2
- package/src/terminal/isolation.js +14 -13
- package/src/terminal/prompt-builder.js +176 -15
- package/src/terminal/provider-preflight.js +47 -27
- package/src/terminal/rail-execution-worktree.js +22 -6
- package/src/terminal/rail-process-observer.js +10 -0
- package/src/terminal/rail-prompts.js +21 -3
- package/src/terminal/rail-readonly-workspace.js +54 -5
- package/src/terminal/rail-worktree-checkpoint.js +315 -0
- package/src/terminal/rail-worktree-restoration.js +485 -0
- package/src/terminal/run-agent.js +164 -42
- package/src/terminal/run-council-gate.js +338 -0
- package/src/terminal/run-planning-reconciliation.js +49 -0
- package/src/terminal/run-rail-adjudication.js +29 -7
- package/src/terminal/run-rail-recovery.js +97 -0
- package/src/terminal/run-rail-review.js +36 -15
- package/src/terminal/run-rail-rework.js +26 -15
- package/src/terminal/run-rail-task.js +22 -9
- package/src/terminal/runtime-native-helper.js +85 -0
- package/src/terminal/spawner.js +899 -142
- package/src/terminal/verification-process-facts.js +49 -0
- package/src/upgrade/entrypoints.js +68 -0
- package/src/upgrade/generation.js +194 -0
- package/src/upgrade/maintenance.js +79 -0
- package/src/upgrade/paths.js +81 -0
- package/src/upgrade/upgrade.js +267 -0
- package/src/utils/execution-role.js +15 -0
- package/src/utils/handoff-paths.js +59 -0
- package/src/wizard/i18n.js +1 -0
- package/src/wizard/index.js +17 -5
- package/src/wizard/questions.js +24 -12
package/framework/i18n/es.yaml
CHANGED
|
@@ -23,6 +23,7 @@ installer:
|
|
|
23
23
|
llm_provider_label: "Proveedor de IA"
|
|
24
24
|
ide_selection_title: "Seleccione sus IDEs / CLIs (multiples permitidos):"
|
|
25
25
|
provider_selection_title: "Que proveedores de IA utilizara?"
|
|
26
|
+
council_providers_required: "Seleccione al menos dos proveedores distintos capaces de revisar para el consejo de calidad obligatorio."
|
|
26
27
|
editor_selection_title: "Que editores deben recibir los archivos de reglas? (opcional)"
|
|
27
28
|
provider_claude_hint: "CLI oficial de Anthropic"
|
|
28
29
|
provider_gemini_hint: "Agente de terminal de Google AI"
|
package/framework/i18n/fr.yaml
CHANGED
|
@@ -23,6 +23,7 @@ installer:
|
|
|
23
23
|
llm_provider_label: "Fournisseur IA"
|
|
24
24
|
ide_selection_title: "Selectionnez vos IDEs / CLIs (multiples autorises):"
|
|
25
25
|
provider_selection_title: "Quels fournisseurs IA utiliserez-vous?"
|
|
26
|
+
council_providers_required: "Sélectionnez au moins deux fournisseurs distincts capables de réviser pour le conseil qualité obligatoire."
|
|
26
27
|
editor_selection_title: "Quels editeurs doivent recevoir les fichiers de regles? (facultatif)"
|
|
27
28
|
provider_claude_hint: "CLI officielle d'Anthropic"
|
|
28
29
|
provider_gemini_hint: "Agent de terminal Google AI"
|
package/framework/i18n/pt.yaml
CHANGED
|
@@ -23,6 +23,7 @@ installer:
|
|
|
23
23
|
llm_provider_label: "Provedor de IA"
|
|
24
24
|
ide_selection_title: "Selecione suas IDEs / CLIs (multiplos permitidos):"
|
|
25
25
|
provider_selection_title: "Quais provedores de IA voce vai utilizar?"
|
|
26
|
+
council_providers_required: "Selecione pelo menos dois provedores distintos capazes de revisar para o conselho de qualidade obrigatório."
|
|
26
27
|
editor_selection_title: "Quais editores devem receber os arquivos de regras? (opcional)"
|
|
27
28
|
provider_claude_hint: "CLI oficial da Anthropic"
|
|
28
29
|
provider_gemini_hint: "Agente de terminal da Google AI"
|
package/framework/manifest.json
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
{
|
|
2
|
-
"createdAt": "2026-09-
|
|
2
|
+
"createdAt": "2026-09-11T10:51:50.561Z",
|
|
3
3
|
"files": {
|
|
4
4
|
"agents/build/dev.md": {
|
|
5
|
-
"hash": "
|
|
6
|
-
"size":
|
|
5
|
+
"hash": "c3d8d109ff81673148882417f15dc46360a3b9d4dbc4f0c6475d81923f6f74a4",
|
|
6
|
+
"size": 64920,
|
|
7
7
|
"type": "md"
|
|
8
8
|
},
|
|
9
9
|
"agents/deploy/devops.md": {
|
|
10
|
-
"hash": "
|
|
11
|
-
"size":
|
|
10
|
+
"hash": "9ac3a53e0fe69112901b156af7426cc1527fb07ddd4a61257d92277be33e1b7d",
|
|
11
|
+
"size": 17964,
|
|
12
12
|
"type": "md"
|
|
13
13
|
},
|
|
14
14
|
"agents/discover/brief.md": {
|
|
15
|
-
"hash": "
|
|
16
|
-
"size":
|
|
15
|
+
"hash": "46a3b5efb94883d1845b59b6588f0ea89a833f20048d7531688d10cae3b72bba",
|
|
16
|
+
"size": 27494,
|
|
17
17
|
"type": "md"
|
|
18
18
|
},
|
|
19
19
|
"agents/discover/brownfield-wu.md": {
|
|
20
|
-
"hash": "
|
|
21
|
-
"size":
|
|
20
|
+
"hash": "e7d066a3e599dd18bd9cbc140d9ad6e27b6aa612dabac3c9f50129e40750c77a",
|
|
21
|
+
"size": 18253,
|
|
22
22
|
"type": "md"
|
|
23
23
|
},
|
|
24
24
|
"agents/discover/greenfield-wu.md": {
|
|
25
|
-
"hash": "
|
|
26
|
-
"size":
|
|
25
|
+
"hash": "962ecbcc916e179c57da3d94dfadd253dd7d98ab83bc97e6cf47a8e57143dfc3",
|
|
26
|
+
"size": 17419,
|
|
27
27
|
"type": "md"
|
|
28
28
|
},
|
|
29
29
|
"agents/plan/architect-data-engineer.md": {
|
|
@@ -37,28 +37,28 @@
|
|
|
37
37
|
"type": "md"
|
|
38
38
|
},
|
|
39
39
|
"agents/plan/architect.md": {
|
|
40
|
-
"hash": "
|
|
41
|
-
"size":
|
|
40
|
+
"hash": "1f4521d3db4c0fd40ee5dee45c7ca6ee71ed5e79ace9a7e8f8bc41f38037ccd3",
|
|
41
|
+
"size": 13408,
|
|
42
42
|
"type": "md"
|
|
43
43
|
},
|
|
44
44
|
"agents/plan/detail.md": {
|
|
45
|
-
"hash": "
|
|
46
|
-
"size":
|
|
45
|
+
"hash": "74baaf967e0331ca3ef67e5465b17f6a26dd526371d9fcde0eda075926ba4a84",
|
|
46
|
+
"size": 19298,
|
|
47
47
|
"type": "md"
|
|
48
48
|
},
|
|
49
49
|
"agents/plan/phases.md": {
|
|
50
|
-
"hash": "
|
|
51
|
-
"size":
|
|
50
|
+
"hash": "3363b6349b7363c84d629c2ae487e295d4c1227b31694955077b4e8781a6ab9e",
|
|
51
|
+
"size": 15764,
|
|
52
52
|
"type": "md"
|
|
53
53
|
},
|
|
54
54
|
"agents/plan/tasks.md": {
|
|
55
|
-
"hash": "
|
|
56
|
-
"size":
|
|
55
|
+
"hash": "d94a9a420cb7dc2d3104f21ef1c1d962b78af95490870bf2a481ee18aebd1a18",
|
|
56
|
+
"size": 33566,
|
|
57
57
|
"type": "md"
|
|
58
58
|
},
|
|
59
59
|
"agents/plan/ux-brand-architect.md": {
|
|
60
|
-
"hash": "
|
|
61
|
-
"size":
|
|
60
|
+
"hash": "931adc62e8f6bf25d545a09980ada52dc62e5c0588b6593a59f6492721bad974",
|
|
61
|
+
"size": 28435,
|
|
62
62
|
"type": "md"
|
|
63
63
|
},
|
|
64
64
|
"agents/plan/ux-component-engineer.md": {
|
|
@@ -72,23 +72,23 @@
|
|
|
72
72
|
"type": "md"
|
|
73
73
|
},
|
|
74
74
|
"agents/plan/ux.md": {
|
|
75
|
-
"hash": "
|
|
76
|
-
"size":
|
|
75
|
+
"hash": "b04bce16466695c2a4e530924b118a64cf01684c37c50fab34f9287368b2ef67",
|
|
76
|
+
"size": 16959,
|
|
77
77
|
"type": "md"
|
|
78
78
|
},
|
|
79
79
|
"agents/quality/qa-implementation.md": {
|
|
80
|
-
"hash": "
|
|
81
|
-
"size":
|
|
80
|
+
"hash": "660f2c2c9acb5807ae6b007d3b1d20340136cb9985eb73b2f420d2ef7e2b1e1f",
|
|
81
|
+
"size": 40432,
|
|
82
82
|
"type": "md"
|
|
83
83
|
},
|
|
84
84
|
"agents/quality/qa-planning.md": {
|
|
85
|
-
"hash": "
|
|
86
|
-
"size":
|
|
85
|
+
"hash": "2b27fdea03947fae39a3b6044321db4959ae845679982a708d6b263a463c59ed",
|
|
86
|
+
"size": 29458,
|
|
87
87
|
"type": "md"
|
|
88
88
|
},
|
|
89
89
|
"agents/quality/qa-visual.md": {
|
|
90
|
-
"hash": "
|
|
91
|
-
"size":
|
|
90
|
+
"hash": "37b6b30b1a7032697cc4a9188d2b99c124183677c3719de50803de189bb3704b",
|
|
91
|
+
"size": 21732,
|
|
92
92
|
"type": "md"
|
|
93
93
|
},
|
|
94
94
|
"agents/shared/visualizer.md": {
|
|
@@ -97,18 +97,18 @@
|
|
|
97
97
|
"type": "md"
|
|
98
98
|
},
|
|
99
99
|
"config.yaml": {
|
|
100
|
-
"hash": "
|
|
100
|
+
"hash": "c701f0e54ba4b7083ec2277184cd6acca602d8dd5e6c45d65851425dce991b0b",
|
|
101
101
|
"size": 2638,
|
|
102
102
|
"type": "yaml"
|
|
103
103
|
},
|
|
104
104
|
"constitution.md": {
|
|
105
|
-
"hash": "
|
|
106
|
-
"size":
|
|
105
|
+
"hash": "beaf6e3c6162c6bf640b966d95904b53db5f529ad66d861ea794352ead23c5a8",
|
|
106
|
+
"size": 67106,
|
|
107
107
|
"type": "md"
|
|
108
108
|
},
|
|
109
109
|
"context/governance.md": {
|
|
110
|
-
"hash": "
|
|
111
|
-
"size":
|
|
110
|
+
"hash": "1fb78f4ee590898cb5088bf6401b0cb239a27131ae2064310b33b82be221ed9e",
|
|
111
|
+
"size": 6807,
|
|
112
112
|
"type": "md"
|
|
113
113
|
},
|
|
114
114
|
"context/protocols.md": {
|
|
@@ -122,8 +122,8 @@
|
|
|
122
122
|
"type": "md"
|
|
123
123
|
},
|
|
124
124
|
"context/root.md": {
|
|
125
|
-
"hash": "
|
|
126
|
-
"size":
|
|
125
|
+
"hash": "2554edf895d28742072a2294df290154cdde7907a26a26a3b0ac67c136a2c97a",
|
|
126
|
+
"size": 1840,
|
|
127
127
|
"type": "md"
|
|
128
128
|
},
|
|
129
129
|
"data/entity-registry.yaml": {
|
|
@@ -212,13 +212,13 @@
|
|
|
212
212
|
"type": "yaml"
|
|
213
213
|
},
|
|
214
214
|
"domains/constitution.yaml": {
|
|
215
|
-
"hash": "
|
|
216
|
-
"size":
|
|
215
|
+
"hash": "0704de1b3d035b4927842d4ea8adc9027abcde5e7d8883f58af5f2948087c607",
|
|
216
|
+
"size": 7225,
|
|
217
217
|
"type": "yaml"
|
|
218
218
|
},
|
|
219
219
|
"domains/global.yaml": {
|
|
220
|
-
"hash": "
|
|
221
|
-
"size":
|
|
220
|
+
"hash": "4353e0e438cf5646ec681777ad21788378254896286563afa7e69b23dc70a280",
|
|
221
|
+
"size": 3138,
|
|
222
222
|
"type": "yaml"
|
|
223
223
|
},
|
|
224
224
|
"domains/workflows/brownfield-discovery.yaml": {
|
|
@@ -252,8 +252,8 @@
|
|
|
252
252
|
"type": "yaml"
|
|
253
253
|
},
|
|
254
254
|
"domains/workflows/standard-flow.yaml": {
|
|
255
|
-
"hash": "
|
|
256
|
-
"size":
|
|
255
|
+
"hash": "3bfefccc49ae6954d87d04f669a9215987cbd197eafd073ed69ac9078b13e878",
|
|
256
|
+
"size": 1055,
|
|
257
257
|
"type": "yaml"
|
|
258
258
|
},
|
|
259
259
|
"executors/json-validate.js": {
|
|
@@ -287,13 +287,13 @@
|
|
|
287
287
|
"type": "yaml"
|
|
288
288
|
},
|
|
289
289
|
"hooks/advance-trigger.js": {
|
|
290
|
-
"hash": "
|
|
291
|
-
"size":
|
|
290
|
+
"hash": "04dc82d9afde699666cfc3b202ee269316f6940c7e2cc687010271140e54e2e3",
|
|
291
|
+
"size": 6680,
|
|
292
292
|
"type": "js"
|
|
293
293
|
},
|
|
294
294
|
"hooks/brief-validator.js": {
|
|
295
|
-
"hash": "
|
|
296
|
-
"size":
|
|
295
|
+
"hash": "3bb4b72ae3cdb79d55f0f66bf9eaff96be29912225cfe376d356f8b4a492b35c",
|
|
296
|
+
"size": 2810,
|
|
297
297
|
"type": "js"
|
|
298
298
|
},
|
|
299
299
|
"hooks/constitution-guard.js": {
|
|
@@ -327,8 +327,8 @@
|
|
|
327
327
|
"type": "json"
|
|
328
328
|
},
|
|
329
329
|
"hooks/post-dev.js": {
|
|
330
|
-
"hash": "
|
|
331
|
-
"size":
|
|
330
|
+
"hash": "c0f12b7d97def28dbe1eb2a5ab626520192e5550bfa316b6f2fb2131b41930dd",
|
|
331
|
+
"size": 7101,
|
|
332
332
|
"type": "js"
|
|
333
333
|
},
|
|
334
334
|
"hooks/prism-engine.js": {
|
|
@@ -377,8 +377,8 @@
|
|
|
377
377
|
"type": "js"
|
|
378
378
|
},
|
|
379
379
|
"hooks/team-quality-gate.js": {
|
|
380
|
-
"hash": "
|
|
381
|
-
"size":
|
|
380
|
+
"hash": "6ecf347effd2417daecbf7668bd6b55126b0b1399d8bac14f6950fb7bb8f1ab0",
|
|
381
|
+
"size": 7969,
|
|
382
382
|
"type": "js"
|
|
383
383
|
},
|
|
384
384
|
"hooks/undercover-guard.js": {
|
|
@@ -387,23 +387,23 @@
|
|
|
387
387
|
"type": "js"
|
|
388
388
|
},
|
|
389
389
|
"i18n/en.yaml": {
|
|
390
|
-
"hash": "
|
|
391
|
-
"size":
|
|
390
|
+
"hash": "db8cf18d8f59c65df0e7db7e70f371d6d0ded3ce094cd89599e794ed01ac916c",
|
|
391
|
+
"size": 8435,
|
|
392
392
|
"type": "yaml"
|
|
393
393
|
},
|
|
394
394
|
"i18n/es.yaml": {
|
|
395
|
-
"hash": "
|
|
396
|
-
"size":
|
|
395
|
+
"hash": "25db07a2fb95e307ad2864314f1adccd2a91c1c547898e865f65c76ab2a924fd",
|
|
396
|
+
"size": 9113,
|
|
397
397
|
"type": "yaml"
|
|
398
398
|
},
|
|
399
399
|
"i18n/fr.yaml": {
|
|
400
|
-
"hash": "
|
|
401
|
-
"size":
|
|
400
|
+
"hash": "71cfd3c4c3be9bf246463a046938c4d65ffab5ed91f5495f1b5aa3d11b6083fc",
|
|
401
|
+
"size": 9256,
|
|
402
402
|
"type": "yaml"
|
|
403
403
|
},
|
|
404
404
|
"i18n/pt.yaml": {
|
|
405
|
-
"hash": "
|
|
406
|
-
"size":
|
|
405
|
+
"hash": "e547eb72e371188cd53194b4c0dd8ff32bd4f473ef9383f68123bb5acd8165b0",
|
|
406
|
+
"size": 8972,
|
|
407
407
|
"type": "yaml"
|
|
408
408
|
},
|
|
409
409
|
"intelligence/confidence.yaml": {
|
|
@@ -472,8 +472,8 @@
|
|
|
472
472
|
"type": "yaml"
|
|
473
473
|
},
|
|
474
474
|
"orchestrator/chati-router.js": {
|
|
475
|
-
"hash": "
|
|
476
|
-
"size":
|
|
475
|
+
"hash": "ac16d006e481911ce481e9564afe26ecc84c254424f4d054edd6d1cf3c824072",
|
|
476
|
+
"size": 35175,
|
|
477
477
|
"type": "js"
|
|
478
478
|
},
|
|
479
479
|
"orchestrator/chati-update.md": {
|
|
@@ -482,8 +482,8 @@
|
|
|
482
482
|
"type": "md"
|
|
483
483
|
},
|
|
484
484
|
"orchestrator/chati.md": {
|
|
485
|
-
"hash": "
|
|
486
|
-
"size":
|
|
485
|
+
"hash": "1dbb3aaa0fdb849bf03e598d8783e1a90f0f8745886809ed350c0452e74164ff",
|
|
486
|
+
"size": 62477,
|
|
487
487
|
"type": "md"
|
|
488
488
|
},
|
|
489
489
|
"package.json": {
|
|
@@ -532,8 +532,8 @@
|
|
|
532
532
|
"type": "md"
|
|
533
533
|
},
|
|
534
534
|
"rules/human-writing-style.md": {
|
|
535
|
-
"hash": "
|
|
536
|
-
"size":
|
|
535
|
+
"hash": "c70bde64d7046d4784acdd490e4a03b2d25f6cca6ccbcfb968fd106cbc3f09cb",
|
|
536
|
+
"size": 3298,
|
|
537
537
|
"type": "md"
|
|
538
538
|
},
|
|
539
539
|
"scaffold/motion-premium-3d/app/(3d)/scroll-demo/page.tsx.template": {
|
|
@@ -867,13 +867,13 @@
|
|
|
867
867
|
"type": "json"
|
|
868
868
|
},
|
|
869
869
|
"schemas/session.schema.json": {
|
|
870
|
-
"hash": "
|
|
871
|
-
"size":
|
|
870
|
+
"hash": "bb33b77fa504f33c02d0c04c6d21f5b61134f60adc2ff8459cce627b847dbb3c",
|
|
871
|
+
"size": 21613,
|
|
872
872
|
"type": "json"
|
|
873
873
|
},
|
|
874
874
|
"schemas/task.schema.json": {
|
|
875
|
-
"hash": "
|
|
876
|
-
"size":
|
|
875
|
+
"hash": "ac01ffb0cfb7643bc414b865af1e4277ed46b62194b7076ecaf36d3a5b3cfe37",
|
|
876
|
+
"size": 4078,
|
|
877
877
|
"type": "json"
|
|
878
878
|
},
|
|
879
879
|
"scripts/reference-capture.js": {
|
|
@@ -1097,8 +1097,8 @@
|
|
|
1097
1097
|
"type": "md"
|
|
1098
1098
|
},
|
|
1099
1099
|
"tasks/orchestrator-handoff.md": {
|
|
1100
|
-
"hash": "
|
|
1101
|
-
"size":
|
|
1100
|
+
"hash": "f17f046bff47d4561b17fb54cfa82ef2dd6e2e79451c28f1853e41067b3e44ad",
|
|
1101
|
+
"size": 8525,
|
|
1102
1102
|
"type": "md"
|
|
1103
1103
|
},
|
|
1104
1104
|
"tasks/orchestrator-health.md": {
|
|
@@ -1117,8 +1117,8 @@
|
|
|
1117
1117
|
"type": "md"
|
|
1118
1118
|
},
|
|
1119
1119
|
"tasks/orchestrator-resume.md": {
|
|
1120
|
-
"hash": "
|
|
1121
|
-
"size":
|
|
1120
|
+
"hash": "feaa66253cfca5ca730ec848ada02a1defe897d0457c7dc3ca7db755b147c937",
|
|
1121
|
+
"size": 5995,
|
|
1122
1122
|
"type": "md"
|
|
1123
1123
|
},
|
|
1124
1124
|
"tasks/orchestrator-route.md": {
|
|
@@ -1332,23 +1332,23 @@
|
|
|
1332
1332
|
"type": "yaml"
|
|
1333
1333
|
},
|
|
1334
1334
|
"workflows/brownfield-fullstack.yaml": {
|
|
1335
|
-
"hash": "
|
|
1336
|
-
"size":
|
|
1335
|
+
"hash": "7282cfe19106667f76fe59e23e33b96ef71cf59d034cdfdeb9aca46c887f6671",
|
|
1336
|
+
"size": 2135,
|
|
1337
1337
|
"type": "yaml"
|
|
1338
1338
|
},
|
|
1339
1339
|
"workflows/brownfield-service.yaml": {
|
|
1340
|
-
"hash": "
|
|
1341
|
-
"size":
|
|
1340
|
+
"hash": "353bd8643a1d3687fdf9bb4f9ba084d92c2c9a312da360b7a911d7c347800bdf",
|
|
1341
|
+
"size": 1552,
|
|
1342
1342
|
"type": "yaml"
|
|
1343
1343
|
},
|
|
1344
1344
|
"workflows/brownfield-ui.yaml": {
|
|
1345
|
-
"hash": "
|
|
1346
|
-
"size":
|
|
1345
|
+
"hash": "da0205a8f21501848225c80f02ac83d226b5e0232abcb60f2aac3dce6c0fffcf",
|
|
1346
|
+
"size": 1598,
|
|
1347
1347
|
"type": "yaml"
|
|
1348
1348
|
},
|
|
1349
1349
|
"workflows/greenfield-fullstack.yaml": {
|
|
1350
|
-
"hash": "
|
|
1351
|
-
"size":
|
|
1350
|
+
"hash": "bf21849169d780e842699edddbf82237f4938d7a629258b19bb727091e1607d9",
|
|
1351
|
+
"size": 2143,
|
|
1352
1352
|
"type": "yaml"
|
|
1353
1353
|
},
|
|
1354
1354
|
"workflows/quick-flow.yaml": {
|
|
@@ -1357,10 +1357,10 @@
|
|
|
1357
1357
|
"type": "yaml"
|
|
1358
1358
|
},
|
|
1359
1359
|
"workflows/standard-flow.yaml": {
|
|
1360
|
-
"hash": "
|
|
1361
|
-
"size":
|
|
1360
|
+
"hash": "9ae08a7e05addd5f31b9fe14d9399f9547d38096eeadc9ea2d74a73747de0c96",
|
|
1361
|
+
"size": 2200,
|
|
1362
1362
|
"type": "yaml"
|
|
1363
1363
|
}
|
|
1364
1364
|
},
|
|
1365
|
-
"version": "4.5.
|
|
1365
|
+
"version": "4.5.29"
|
|
1366
1366
|
}
|
package/framework/manifest.sig
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
/
|
|
1
|
+
r4sO26MB40B3OgKHJeqWYTBKcG1tMi2gXWISO8khhYhYMkaalf63Ue/5EkhxRZ/uDz+SGqv2SXwRxFd4JTZYAA==
|
|
@@ -280,12 +280,13 @@ async function captureOrchestrate(mod, subCommand, args, projectDir) {
|
|
|
280
280
|
* Route `advance` command deterministically — same reliability as `next`.
|
|
281
281
|
* Called as: node chati-router.js advance --agent {name} --score {score}
|
|
282
282
|
*/
|
|
283
|
-
async function routeAdvance(
|
|
283
|
+
async function routeAdvance(argv) {
|
|
284
|
+
const { agent: agentName, score } = parseFlagArgs(argv);
|
|
284
285
|
const result = {
|
|
285
286
|
ok: true,
|
|
286
287
|
advanced: false,
|
|
287
288
|
agent: agentName,
|
|
288
|
-
score:
|
|
289
|
+
score: Number(score),
|
|
289
290
|
next: null,
|
|
290
291
|
team: null,
|
|
291
292
|
error: null,
|
|
@@ -301,11 +302,17 @@ async function routeAdvance(agentName, score) {
|
|
|
301
302
|
return result;
|
|
302
303
|
}
|
|
303
304
|
|
|
304
|
-
|
|
305
|
-
|
|
305
|
+
// Preserve the canonical command contract, including negative result
|
|
306
|
+
// status, correction target and legacy recovery identity. Rebuilding an
|
|
307
|
+
// allowlist here silently changed rejected results into completions.
|
|
308
|
+
const advanceResult = await captureOrchestrate(cliMod, 'advance', argv, PROJECT_DIR);
|
|
309
|
+
if (advanceResult.action === 'error' || advanceResult.ok === false) {
|
|
310
|
+
return { ...result, ...advanceResult, ok: false, advanced: false, next: null };
|
|
311
|
+
}
|
|
306
312
|
|
|
307
313
|
result.advanced = advanceResult.advanced || false;
|
|
308
314
|
result.already_advanced = advanceResult.already_advanced || false;
|
|
315
|
+
if (advanceResult.visual_applicability) result.visual_applicability = advanceResult.visual_applicability;
|
|
309
316
|
if (advanceResult.status_summary) result.status_summary = advanceResult.status_summary;
|
|
310
317
|
result.next = advanceResult.next || advanceResult;
|
|
311
318
|
|
|
@@ -345,7 +352,7 @@ async function routeAdvance(agentName, score) {
|
|
|
345
352
|
|
|
346
353
|
// All orchestrate subcommands the router can dispatch locally
|
|
347
354
|
const VALID_ORCHESTRATE_SUBS = new Set([
|
|
348
|
-
'next', 'advance', 'init', 'status', 'validate-handoff',
|
|
355
|
+
'next', 'advance', 'reject-result', 'revalidate-qa', 'reconcile-planning', 'revise-planning-contract', 'init', 'status', 'validate-handoff',
|
|
349
356
|
'deviation', 'exit', 'providers', 'detect-flow', 'backlog',
|
|
350
357
|
'qa-plan-score', 'qa-impl-score', 'qa-visual-score', 'scan',
|
|
351
358
|
'spawn-team', 'team-status', 'team-dissolve',
|
|
@@ -695,12 +702,13 @@ async function main() {
|
|
|
695
702
|
console.log(JSON.stringify({ ok: false, error: 'Missing --agent or --score' }));
|
|
696
703
|
return;
|
|
697
704
|
}
|
|
698
|
-
const advResult = await routeAdvance(
|
|
705
|
+
const advResult = await routeAdvance(ROUTER_ARGS.slice(1));
|
|
699
706
|
console.log(JSON.stringify(advResult));
|
|
700
707
|
return;
|
|
701
708
|
}
|
|
702
709
|
// Generic dispatch for init, status, detect-flow, etc.
|
|
703
710
|
const result = await dispatchOrchestrate(subCommand, ROUTER_ARGS.slice(1));
|
|
711
|
+
if (result?.action === 'error' || result?.ok === false) process.exitCode = 1;
|
|
704
712
|
console.log(JSON.stringify(result));
|
|
705
713
|
return;
|
|
706
714
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# /chati - Orchestrator v2
|
|
2
2
|
|
|
3
|
+
## Execution role boundary
|
|
4
|
+
|
|
5
|
+
This document assigns the user-facing coordinator role, not the role of a provider subprocess already delegated an agent/task by the parent runtime. A delegated worker uses the supplied canonical context, executes only its assignment and returns the required result envelope to the parent. It must not recursively activate the entry skill/router, dispatch pipeline agents, advance/recover session state or take over the coordinator role below. Missing information or an ambiguous delegated assignment goes back to the parent as a structured result. This distinction does not authenticate a process, grant permissions or waive any runtime gate.
|
|
6
|
+
|
|
3
7
|
You are the **Chati.dev Orchestrator**, the single entry point for the Chati.dev system. You route requests, manage sessions, handle deviations, track backlog, and guide users through the development pipeline. You **never** write code, specs, or artifacts - those belong to specialized agents.
|
|
4
8
|
|
|
5
9
|
---
|
|
@@ -253,16 +257,49 @@ is already running in another CLI and keep the canonical session unchanged.
|
|
|
253
257
|
|
|
254
258
|
## Action: Awaiting Agent Advance
|
|
255
259
|
|
|
256
|
-
The routed process
|
|
257
|
-
|
|
260
|
+
The routed process ended, but its result has not yet been settled by the router.
|
|
261
|
+
A zero process exit is not proof of successful agent work. Only an explicit
|
|
262
|
+
`result_status: complete` can proceed through canonical `advance`.
|
|
258
263
|
|
|
259
264
|
1. Do not dispatch the agent again and do not synthesize a replacement result.
|
|
260
|
-
2. If this CLI owns
|
|
265
|
+
2. If this CLI owns an explicitly complete process result, submit that exact
|
|
261
266
|
handoff and score through `orchestrate advance`.
|
|
262
267
|
3. If another CLI owns the result, present `status_summary` and wait for that
|
|
263
268
|
CLI to finish canonical advance. A different CLI may resume only through an
|
|
264
269
|
explicit recovery path that preserves the original execution evidence.
|
|
265
|
-
4.
|
|
270
|
+
4. `error`, `partial` and `unknown` never advance, regardless of score. New
|
|
271
|
+
failed runs preserve a pending question and its exact response for retry.
|
|
272
|
+
5. An old hold with `requires_recovery: true` has no trustworthy success marker.
|
|
273
|
+
Inspect the original result. To reject that ambiguous hold, use
|
|
274
|
+
`orchestrate advance --agent <agent> --status error --score <reported-score> --execution-finished-at <exact-value-from-next>`.
|
|
275
|
+
This is negative settlement, not approval: it returns `advanced: false` and
|
|
276
|
+
`retry_ready: true`, preserves artifacts and pipeline progress, and refuses
|
|
277
|
+
stale identities or a new explicitly complete hold. Do not reconstruct a
|
|
278
|
+
previously lost response or invent a replacement handoff.
|
|
279
|
+
6. For current unapproved Detail, Architect, UX or QA-Planning content that completed but
|
|
280
|
+
failed review, use the exact `content_rejection_command` returned by `next`,
|
|
281
|
+
replacing its reason placeholder with the evidence-based review reason.
|
|
282
|
+
`reject-result --agent <agent> --execution-claim-id <exact-id> --execution-finished-at <exact-time> --reason <reason>`
|
|
283
|
+
preserves the complete execution as a content rejection, not a process error.
|
|
284
|
+
It changes only that agent to pending rework, never resolves findings, changes
|
|
285
|
+
scope, advances gates, or spawns a worker. The reason is limited to 8192 UTF-8
|
|
286
|
+
bytes and is retained for the next validated execution, including failures
|
|
287
|
+
and user-input relays. Never put credentials in a review reason. Two content
|
|
288
|
+
rejections per agent are the maximum; on refusal, inspect the actual blocker,
|
|
289
|
+
do not manufacture another identity or alter the count. Other claims,
|
|
290
|
+
dependent work, approved agents and sealed RAIL must be settled first.
|
|
291
|
+
This is not rollback permission for Brief, WU or an approved phase.
|
|
292
|
+
7. If a signed Planning council requires new QA after both content rejections,
|
|
293
|
+
correct the upstream inputs while preserving the held QA report, then use
|
|
294
|
+
`revalidate-qa --agent qa-planning --execution-claim-id <exact-id> --execution-finished-at <exact-time> --council-gate-id <blocking-gate-id>`.
|
|
295
|
+
This separate, one-time authorization archives the historical verdict and
|
|
296
|
+
reserves one fresh QA execution with the installation-selected binding.
|
|
297
|
+
Execute its returned `spawn_command`; this is not an approval. Input digests
|
|
298
|
+
are checked at reservation, start, relay and completion. A cancelled process
|
|
299
|
+
uses ordinary `next` recovery without resetting the authorization budget.
|
|
300
|
+
After genuine QA, call `advance` for a fresh council. Further rejection must
|
|
301
|
+
be adjudicated, never retried by changing identities or counters.
|
|
302
|
+
8. Run `next` again after successful completion or negative settlement.
|
|
266
303
|
|
|
267
304
|
## Action: Pending Interaction In Flight
|
|
268
305
|
|
|
@@ -419,7 +456,7 @@ returned `next` state. Do not treat it as an error.
|
|
|
419
456
|
|
|
420
457
|
Planning phase agents (detail, architect, ux) run simultaneously.
|
|
421
458
|
|
|
422
|
-
**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.
|
|
459
|
+
**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. The automatic cross-provider council validates the accepted Brief, Planning Team output, and sealed Execution Design before the pipeline moves across each boundary. After Tasks and the execution-design council accept, RAIL owns execution and review. A Build Team is never formed in v2.
|
|
423
460
|
|
|
424
461
|
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".
|
|
425
462
|
2. If `parallel_spawn_commands` is non-empty, execute every member's `command`
|
|
@@ -476,9 +513,9 @@ Agent tool call 1:
|
|
|
476
513
|
Read shared task list at {task_list_path} - your task is TT-PLN-001.
|
|
477
514
|
Mailbox directory: {mailbox_path}
|
|
478
515
|
Cross-review target: architect (send cross_review_request after completing PRD).
|
|
479
|
-
Previous agent handoff: artifacts/handoffs/brief-handoff.md
|
|
516
|
+
Previous agent handoff: artifacts/handoffs/brief/brief-handoff.md
|
|
480
517
|
CRITICAL: Produce your PRD INDEPENDENTLY first (sealed-bid). Only read teammates' outputs during cross-review.
|
|
481
|
-
Write your handoff to artifacts/handoffs/detail-handoff.md when done.]
|
|
518
|
+
Write your handoff to artifacts/handoffs/detail/detail-handoff.md when done.]
|
|
482
519
|
|
|
483
520
|
Agent tool call 2:
|
|
484
521
|
description: "Architect agent - design architecture"
|
|
@@ -487,9 +524,9 @@ Agent tool call 2:
|
|
|
487
524
|
Read shared task list at {task_list_path} - your task is TT-PLN-002.
|
|
488
525
|
Mailbox directory: {mailbox_path}
|
|
489
526
|
Cross-review target: ux (send cross_review_request after completing architecture).
|
|
490
|
-
Previous agent handoff: artifacts/handoffs/brief-handoff.md
|
|
527
|
+
Previous agent handoff: artifacts/handoffs/brief/brief-handoff.md
|
|
491
528
|
CRITICAL: Produce your architecture INDEPENDENTLY first (sealed-bid).
|
|
492
|
-
Write your handoff to artifacts/handoffs/architect-handoff.md when done.]
|
|
529
|
+
Write your handoff to artifacts/handoffs/architect/architect-handoff.md when done.]
|
|
493
530
|
|
|
494
531
|
Agent tool call 3:
|
|
495
532
|
description: "UX agent - design UX specification"
|
|
@@ -498,9 +535,9 @@ Agent tool call 3:
|
|
|
498
535
|
Read shared task list at {task_list_path} - your task is TT-PLN-003.
|
|
499
536
|
Mailbox directory: {mailbox_path}
|
|
500
537
|
Cross-review target: detail (send cross_review_request after completing UX spec).
|
|
501
|
-
Previous agent handoff: artifacts/handoffs/brief-handoff.md
|
|
538
|
+
Previous agent handoff: artifacts/handoffs/brief/brief-handoff.md
|
|
502
539
|
CRITICAL: Produce your UX specification INDEPENDENTLY first (sealed-bid).
|
|
503
|
-
Write your handoff to artifacts/handoffs/ux-handoff.md when done.]
|
|
540
|
+
Write your handoff to artifacts/handoffs/ux/ux-handoff.md when done.]
|
|
504
541
|
|
|
505
542
|
Agent tool call 4:
|
|
506
543
|
description: "QA-Planning agent - validate planning artifacts"
|
|
@@ -515,7 +552,7 @@ Agent tool call 4:
|
|
|
515
552
|
If ERROR-level findings: send qa_review_finding via mailbox to ALL THREE team members (detail, architect, AND ux) - not just the responsible agent. The correction may affect cross-artifact consistency, so all agents must review the findings together, re-validate their own work against the corrections, and cross-review again before QA-Planning re-validates.
|
|
516
553
|
If all artifacts pass validation: approve with score >= 95%.
|
|
517
554
|
Write your report to artifacts/7-QA-Planning/qa-planning-report.md when done.
|
|
518
|
-
Write your handoff to artifacts/handoffs/qa-planning-handoff.md when done.]
|
|
555
|
+
Write your handoff to artifacts/handoffs/qa-planning/qa-planning-handoff.md when done.]
|
|
519
556
|
```
|
|
520
557
|
|
|
521
558
|
<!-- CHATI_LEGACY_BUILD_START -->
|
|
@@ -557,7 +594,7 @@ Agent tool call 2:
|
|
|
557
594
|
WAVE 0 - No completed tasks to review yet. Instead:
|
|
558
595
|
1. Run baseline lint + typecheck on the project
|
|
559
596
|
2. Set up any test infrastructure needed
|
|
560
|
-
3. Review artifacts/handoffs/qa-planning-handoff.md to prepare your review checklist
|
|
597
|
+
3. Review artifacts/handoffs/qa-planning/qa-planning-handoff.md to prepare your review checklist
|
|
561
598
|
4. Write a qa_baseline_ready JSON to the mailbox when done
|
|
562
599
|
STOP and return when baseline is complete.]
|
|
563
600
|
```
|
|
@@ -621,7 +658,7 @@ Agent tool call 1 - Dev:
|
|
|
621
658
|
CLEANUP WAVE: Read ALL task_review_findings in mailbox with verdict=warn.
|
|
622
659
|
Fix each warning. Write task_ready_for_review for each fixed task.
|
|
623
660
|
When ALL warns are addressed, write your handoff to
|
|
624
|
-
artifacts/handoffs/dev-handoff.md - this is MANDATORY.
|
|
661
|
+
artifacts/handoffs/dev/dev-handoff.md - this is MANDATORY.
|
|
625
662
|
STOP and return.]
|
|
626
663
|
|
|
627
664
|
Agent tool call 2 - QA:
|
|
@@ -648,10 +685,10 @@ Agent tool call:
|
|
|
648
685
|
Phase 2: Spawn the Visualizer sub-agent using its router-provided binding to analyze build screenshots and compare with references.
|
|
649
686
|
Phase 3-4: Verify animation libraries and brandbook compliance from report.json.
|
|
650
687
|
Scoring: Run qa-visual-score CLI for deterministic score.
|
|
651
|
-
Write your handoff to artifacts/handoffs/qa-visual-handoff.md when done.]
|
|
688
|
+
Write your handoff to artifacts/handoffs/qa-visual/qa-visual-handoff.md when done.]
|
|
652
689
|
|
|
653
690
|
When QA-Visual returns:
|
|
654
|
-
1. Read artifacts/handoffs/qa-visual-handoff.md
|
|
691
|
+
1. Read artifacts/handoffs/qa-visual/qa-visual-handoff.md
|
|
655
692
|
2. Check score and findings:
|
|
656
693
|
- If score < 90% OR any ERROR findings (Lenis missing, GSAP missing, em-dashes):
|
|
657
694
|
a. Spawn Dev to fix visual issues (provide the specific findings)
|
|
@@ -676,20 +713,20 @@ Agent tool call:
|
|
|
676
713
|
3. PRD requirement coverage vs artifacts/2-PRD/prd.md
|
|
677
714
|
4. Security scan
|
|
678
715
|
5. Performance review
|
|
679
|
-
Write your final handoff to artifacts/handoffs/qa-implementation-handoff.md
|
|
716
|
+
Write your final handoff to artifacts/handoffs/qa-implementation/qa-implementation-handoff.md
|
|
680
717
|
with overall score and any remaining findings.]
|
|
681
718
|
```
|
|
682
719
|
|
|
683
720
|
**Handoff Verification (after Final QA Wave):**
|
|
684
721
|
|
|
685
722
|
Before dissolving the team, verify both handoffs exist:
|
|
686
|
-
1. `artifacts/handoffs/dev-handoff.md` - if missing, spawn Dev one more time:
|
|
723
|
+
1. `artifacts/handoffs/dev/dev-handoff.md` - if missing, spawn Dev one more time:
|
|
687
724
|
Agent tool call:
|
|
688
725
|
description: "Dev agent - write handoff"
|
|
689
|
-
prompt: [Write your implementation handoff to artifacts/handoffs/dev-handoff.md.
|
|
726
|
+
prompt: [Write your implementation handoff to artifacts/handoffs/dev/dev-handoff.md.
|
|
690
727
|
Summarize: tasks completed, architecture decisions, known issues, tech stack.
|
|
691
728
|
STOP and return.]
|
|
692
|
-
2. `artifacts/handoffs/qa-implementation-handoff.md` - should exist from Final QA Wave
|
|
729
|
+
2. `artifacts/handoffs/qa-implementation/qa-implementation-handoff.md` - should exist from Final QA Wave
|
|
693
730
|
|
|
694
731
|
<!-- CHATI_LEGACY_BUILD_END -->
|
|
695
732
|
|
|
@@ -737,8 +774,9 @@ Team member {agent} appears stuck in a repetition loop (Article XXII Echo Detect
|
|
|
737
774
|
|
|
738
775
|
After Planning Team (detail + architect + ux + qa-planning) completes and user approves:
|
|
739
776
|
1. Dissolve Planning Team: `team-dissolve --team-id {planning-team-id}`
|
|
740
|
-
2.
|
|
741
|
-
3.
|
|
777
|
+
2. The automatic Planning Council validates the completed Planning Team on its frozen artifacts. Any accepted high or critical finding sends rework to the owning planning artifact. Low and medium findings remain recorded without blocking.
|
|
778
|
+
3. Continue pipeline through Phases, Tasks (these are NOT parallelizable and run sequentially as interactive or autonomous agents). QA-Planning already ran inside the Planning Team.
|
|
779
|
+
4. The automatic Execution Design Council validates phases, task graph, dependency design, routing profile and effort plan. Only an accepted content-addressed decision allows the v2 handoff to enter **Action: RAIL Execution**. Do not form a Build Team.
|
|
742
780
|
4. Only a pre-v2 installation may activate the legacy Build Team wave mode.
|
|
743
781
|
|
|
744
782
|
**Team cleanup order:** Dissolve current team BEFORE creating next team. Never two teams active simultaneously.
|
|
@@ -942,7 +980,7 @@ TEAMS (if active):
|
|
|
942
980
|
|
|
943
981
|
## Session Lock Protocol
|
|
944
982
|
|
|
945
|
-
Session lock is written by `orchestrate init` and removed by `orchestrate exit`. While active, ALL messages route through the orchestrator and the active agent. The user never "falls out" of the system.
|
|
983
|
+
Session lock is written by `orchestrate init` and removed by `orchestrate exit`. While active, ALL user messages in the user-facing coordinator route through the orchestrator and the active agent. These coordinator rules do not restart routing inside an already-delegated provider subprocess. The user never "falls out" of the system.
|
|
946
984
|
|
|
947
985
|
### Lock Rules
|
|
948
986
|
|