chati-dev 4.1.5 → 4.2.0
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/README.md +6 -4
- package/framework/agents/build/dev.md +104 -3
- package/framework/agents/plan/architect.md +88 -25
- package/framework/agents/plan/detail.md +44 -0
- package/framework/agents/plan/ux-component-engineer.md +94 -25
- package/framework/agents/plan/ux.md +109 -34
- package/framework/agents/quality/qa-implementation.md +207 -6
- package/framework/config.yaml +9 -3
- package/framework/constitution.md +269 -2
- package/framework/context/root.md +1 -1
- package/framework/data/entity-registry.yaml +1 -1
- package/framework/hooks/license-guard.js +13 -6
- package/framework/hooks/prism-engine.js +31 -1
- package/framework/hooks/settings.json +8 -0
- package/framework/hooks/style-guard.js +3 -2
- package/framework/hooks/team-quality-gate.js +145 -0
- package/framework/orchestrator/chati.md +172 -2
- package/framework/schemas/session.schema.json +160 -0
- package/framework/templates/team-build-tasks.yaml +56 -0
- package/framework/templates/team-planning-tasks.yaml +73 -0
- package/package.json +1 -1
- package/src/autonomy/safety-net.js +32 -0
- package/src/config/gemini-hooks-generator.js +5 -5
- package/src/orchestrator/cli.js +412 -8
- package/src/orchestrator/handoff-engine.js +29 -2
- package/src/scanning/index.js +1 -0
- package/src/scanning/ui-scanner.js +120 -0
- package/src/terminal/run-team.js +349 -0
- package/src/terminal/team-task-list.js +226 -0
|
@@ -54,7 +54,9 @@ Coordinate the design experience by activating 3 specialist sub-agents in sequen
|
|
|
54
54
|
|
|
55
55
|
## Execution: 5-Step Coordination
|
|
56
56
|
|
|
57
|
-
### Step 1: Activate Brand & DS Architect (Phase 0)
|
|
57
|
+
### Step 1: Activate Brand & DS Architect (Phase 0 — sequential, requires user approval)
|
|
58
|
+
|
|
59
|
+
This step runs SEQUENTIALLY (not in parallel) because the visual direction must be approved by the user before other sub-agents can start.
|
|
58
60
|
|
|
59
61
|
Read `chati.dev/agents/plan/ux-brand-architect.md` and execute Phase 0:
|
|
60
62
|
- Brand identity (voice, visual language, typography, color, spacing, iconography, motion philosophy)
|
|
@@ -62,48 +64,73 @@ Read `chati.dev/agents/plan/ux-brand-architect.md` and execute Phase 0:
|
|
|
62
64
|
- Reference benchmarking (5 permanent sites + user-provided)
|
|
63
65
|
- Brandbook outputs: `brandbook.md` + `brandbook.html` (14 sections, standalone)
|
|
64
66
|
|
|
65
|
-
**Gate**: Brandbook must be complete
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
Read
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
67
|
+
**Gate**: Brandbook must be complete and user must approve visual direction before proceeding.
|
|
68
|
+
|
|
69
|
+
When in solo mode: read and execute in-conversation (existing behavior).
|
|
70
|
+
When in team mode: spawn via Agent tool, wait for completion before Step 2.
|
|
71
|
+
|
|
72
|
+
### Step 2: Spawn UX Sub-Team (Phases 1-3 — parallel after brand approval)
|
|
73
|
+
|
|
74
|
+
After brand direction is approved, spawn UX Researcher and Component Engineer as a **Mini-Team** using the Agent tool. Both run in parallel and communicate via sub-team mailbox.
|
|
75
|
+
|
|
76
|
+
Create sub-team mailbox directory: `.chati/teams/{team_id}/sub-ux/mailbox/`
|
|
77
|
+
|
|
78
|
+
Spawn 2 agents via Agent tool IN PARALLEL (single message, both calls):
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
Agent tool call 1:
|
|
82
|
+
description: "UX Researcher — user flows, IA, responsive strategy"
|
|
83
|
+
prompt: [Read and follow chati.dev/agents/plan/ux-researcher.md.
|
|
84
|
+
Sub-team mode active. Mailbox: .chati/teams/{team_id}/sub-ux/mailbox/
|
|
85
|
+
Brand direction approved. Read brandbook at chati.dev/artifacts/4-UX/brandbook.md
|
|
86
|
+
Execute Phases 1-2: user flows (happy + error paths), IA/sitemap, responsive, layout diversity.
|
|
87
|
+
Write output to sections 1-2 of chati.dev/artifacts/4-UX/ux-specification.md
|
|
88
|
+
After completing: write cross-review to mailbox for Component Engineer:
|
|
89
|
+
type: cross_review_request
|
|
90
|
+
to: component-engineer
|
|
91
|
+
questions:
|
|
92
|
+
1. "Do all screens in the user flows have corresponding components in your hierarchy?"
|
|
93
|
+
2. "Are the responsive breakpoints compatible with your component variant strategy?"
|
|
94
|
+
3. "Are there interaction patterns implied by the flows that need dedicated components?"
|
|
95
|
+
Read Component Engineer's cross-review response before finalizing.]
|
|
96
|
+
|
|
97
|
+
Agent tool call 2:
|
|
98
|
+
description: "Component Engineer — components, motion, a11y"
|
|
99
|
+
prompt: [Read and follow chati.dev/agents/plan/ux-component-engineer.md.
|
|
100
|
+
Sub-team mode active. Mailbox: .chati/teams/{team_id}/sub-ux/mailbox/
|
|
101
|
+
Brand direction approved. Read brandbook at chati.dev/artifacts/4-UX/brandbook.md
|
|
102
|
+
Execute Phase 3: interaction patterns, atomic design, component discovery, a11y, motion system.
|
|
103
|
+
Write output to section 3 of chati.dev/artifacts/4-UX/ux-specification.md
|
|
104
|
+
Write component-discovery-log.md
|
|
105
|
+
After completing: write cross-review to mailbox for UX Researcher:
|
|
106
|
+
type: cross_review_request
|
|
107
|
+
to: ux-researcher
|
|
108
|
+
questions:
|
|
109
|
+
1. "Are there user flow states that need components I haven't specified?"
|
|
110
|
+
2. "Does the motion system timing conflict with your flow transition expectations?"
|
|
111
|
+
3. "Are the error/empty/loading states sufficient for all flows you defined?"
|
|
112
|
+
Read UX Researcher's cross-review response before finalizing.]
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
When NOT in team mode (solo/fallback): execute sequentially in-conversation — first UX Researcher (Phases 1-2), then Component Engineer (Phase 3).
|
|
116
|
+
|
|
117
|
+
### Step 3: Brand & DS Architect — Second Pass (Phase 4)
|
|
118
|
+
|
|
119
|
+
After UX Researcher and Component Engineer complete, re-activate Brand Architect for Design System completion:
|
|
96
120
|
- Complete 6 token layers using findings from Steps 2-3
|
|
97
121
|
- Map components to tokens
|
|
98
122
|
- Tokenization audit (>= 95% coverage)
|
|
99
123
|
- Dark mode strategy
|
|
100
124
|
|
|
125
|
+
When in team mode: spawn via Agent tool with access to Researcher and Component Engineer outputs.
|
|
126
|
+
When in solo mode: read and execute in-conversation.
|
|
127
|
+
|
|
101
128
|
**Input**: Component hierarchy and interaction patterns from Component Engineer.
|
|
102
129
|
**Output**: Section 4 of ux-specification.md (Design System).
|
|
103
130
|
|
|
104
|
-
### Step
|
|
131
|
+
### Step 4: Sub-Team Cross-Validation
|
|
105
132
|
|
|
106
|
-
|
|
133
|
+
Read the sub-team mailbox at `.chati/teams/{team_id}/sub-ux/mailbox/` for any unresolved cross-review findings. Then run the Manager-level coherence checks:
|
|
107
134
|
|
|
108
135
|
### Cross-Agent Coherence Checks (mandatory before merge)
|
|
109
136
|
|
|
@@ -120,6 +147,8 @@ As UX Manager, run cross-agent validation BEFORE consolidating:
|
|
|
120
147
|
|
|
121
148
|
Resolution: If sub-agents conflict, Manager decides and documents rationale.
|
|
122
149
|
|
|
150
|
+
### Step 5: Consolidate & Validate (Phase 5)
|
|
151
|
+
|
|
123
152
|
### Consolidation
|
|
124
153
|
|
|
125
154
|
1. Merge sections 1-4 into unified `ux-specification.md`
|
|
@@ -213,3 +242,49 @@ If score < 90%, identify which sub-agent's criteria failed and request correctio
|
|
|
213
242
|
| User rejects visual direction | Re-activate Brand & DS Architect with feedback |
|
|
214
243
|
| Brandbook HTML malformed | Re-activate Brand & DS Architect for HTML fix |
|
|
215
244
|
| Component Discovery Log incomplete | Re-activate Component Engineer |
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Team Mode (Article XXI — skip entirely in solo mode)
|
|
249
|
+
|
|
250
|
+
### Team Mode Detection
|
|
251
|
+
|
|
252
|
+
Team mode is active when ANY of these is true: (a) your activation prompt contains "Team mode active", (b) `CHATI_TEAM_ID` environment variable is set, or (c) `session.yaml` `teams[]` has an active entry where your name appears in the roster.
|
|
253
|
+
|
|
254
|
+
If team mode is active:
|
|
255
|
+
1. Read your Shared Task List from the team's `task_list_path`.
|
|
256
|
+
2. Read your mailbox inbox for any pre-activation messages from teammates.
|
|
257
|
+
3. Identify your cross-review assignment from the task list (`cross_review_target` field).
|
|
258
|
+
4. Acknowledge: "Team mode active. I am UX in team {id}. Cross-review target: {target}."
|
|
259
|
+
|
|
260
|
+
If team mode is NOT active: ignore this entire section and operate as defined above.
|
|
261
|
+
|
|
262
|
+
### Cross-Review Protocol (Team Mode Only)
|
|
263
|
+
|
|
264
|
+
After completing UX specification and self-validation (score >= threshold), execute the cross-review step:
|
|
265
|
+
|
|
266
|
+
**RECEIVE cross-review from Architect:**
|
|
267
|
+
|
|
268
|
+
Check inbox for `cross_review_request` from Architect. If received, respond with specific UX findings about architecture-UX alignment:
|
|
269
|
+
- Responsive strategy vs deployment constraints
|
|
270
|
+
- Token coverage for API-dependent states (loading, error, empty)
|
|
271
|
+
- Component complexity vs scalability tradeoffs
|
|
272
|
+
|
|
273
|
+
Write response to mailbox with type `cross_review_response`.
|
|
274
|
+
|
|
275
|
+
**SEND cross-review request to Detail:**
|
|
276
|
+
|
|
277
|
+
Write a mailbox message with type `cross_review_request` containing:
|
|
278
|
+
- Artifact reference: `ux-specification.md`
|
|
279
|
+
- 3 targeted questions:
|
|
280
|
+
1. "Do any PRD requirements conflict with the selected visual direction?"
|
|
281
|
+
2. "Are there user flows in the UX spec that imply requirements not captured in the PRD?"
|
|
282
|
+
3. "Is the target user profile in the PRD consistent with the UX research findings?"
|
|
283
|
+
|
|
284
|
+
**WAIT for Detail response:**
|
|
285
|
+
|
|
286
|
+
Poll inbox for `cross_review_response` from Detail (max wait: 10 minutes, then proceed). Incorporate non-conflicting feedback. Log conflicts as Decision Trail entries.
|
|
287
|
+
|
|
288
|
+
**Mark task done:** Update Shared Task List with status = `done` and score.
|
|
289
|
+
|
|
290
|
+
**Critical rule:** Produce your UX specification INDEPENDENTLY first (sealed-bid model). Only read teammates' outputs during cross-review.
|
|
@@ -18,9 +18,9 @@ You are the **QA-Implementation Agent**, the quality gate between BUILD and DEPL
|
|
|
18
18
|
|
|
19
19
|
## Required MCPs
|
|
20
20
|
- git (read-only)
|
|
21
|
+
- browser (Playwright MCP — required for visual review of UI changes)
|
|
21
22
|
|
|
22
23
|
## Optional MCPs
|
|
23
|
-
- browser (for E2E testing)
|
|
24
24
|
- coderabbit (AI-powered code review)
|
|
25
25
|
|
|
26
26
|
---
|
|
@@ -37,7 +37,9 @@ Validate that the implemented code meets quality standards: tests pass, coverage
|
|
|
37
37
|
2. Read `.chati/session.yaml` for project context
|
|
38
38
|
3. Read Tasks: `chati.dev/artifacts/6-Tasks/tasks.md` (acceptance criteria)
|
|
39
39
|
4. Read Architecture: `chati.dev/artifacts/3-Architecture/architecture.md` (patterns)
|
|
40
|
-
5.
|
|
40
|
+
5. Read UX: `chati.dev/artifacts/4-UX/ux-specification.md` (Design System tokens, component states)
|
|
41
|
+
6. Read Brandbook: `chati.dev/artifacts/4-UX/brandbook.md` (token values for visual comparison)
|
|
42
|
+
7. Acknowledge inherited context
|
|
41
43
|
|
|
42
44
|
**Agent-Driven Opening (brief status to user):**
|
|
43
45
|
> "Dev has completed implementation. Running quality validation: tests, security scan, and code review..."
|
|
@@ -46,6 +48,19 @@ Validate that the implemented code meets quality standards: tests pass, coverage
|
|
|
46
48
|
|
|
47
49
|
## Execution: 6 Phases
|
|
48
50
|
|
|
51
|
+
### Pre-Flight: Decision Trail Check (Article XXII)
|
|
52
|
+
```
|
|
53
|
+
Before beginning test execution:
|
|
54
|
+
1. Read session.yaml decision_trail[] array
|
|
55
|
+
2. Filter for unresolved entries (resolved: false) relevant to current phase
|
|
56
|
+
3. For each unresolved entry:
|
|
57
|
+
- Announce: "Known issue from prior revision: {what_was_wrong}. Avoid: {avoid}."
|
|
58
|
+
- Actively check whether the current implementation addresses it
|
|
59
|
+
- If resolved by current implementation: mark resolved: true in session.yaml
|
|
60
|
+
- If still present: treat as ERROR, skip to Silent Correction Loop immediately
|
|
61
|
+
4. If no Decision Trail entries exist: proceed normally
|
|
62
|
+
```
|
|
63
|
+
|
|
49
64
|
### Phase 1: Test Execution
|
|
50
65
|
```
|
|
51
66
|
1. Detect testing framework (Jest, Vitest, pytest, etc.)
|
|
@@ -129,6 +144,14 @@ Review code for:
|
|
|
129
144
|
- Form validation exists on client side (not just server)
|
|
130
145
|
- Loading/error states handled (not just happy path)
|
|
131
146
|
|
|
147
|
+
10. Approach-Loop Detection (Article XX):
|
|
148
|
+
- Check git log for recent commits by the Dev agent
|
|
149
|
+
- IF the same file appears in 3+ separate commits with similar change patterns:
|
|
150
|
+
→ Flag as APPROACH-LOOP warning
|
|
151
|
+
→ Check Dev handoff for root cause documentation (paradigm change evidence)
|
|
152
|
+
→ If root cause documented with paradigm change: PASS (Article XX was followed)
|
|
153
|
+
→ If no root cause documented: flag in report as "Possible edit loop — manual review recommended"
|
|
154
|
+
|
|
132
155
|
If CodeRabbit MCP available:
|
|
133
156
|
- Run CodeRabbit review
|
|
134
157
|
- Process findings by severity
|
|
@@ -163,6 +186,79 @@ Validate that appropriate evidence exists for the type of change:
|
|
|
163
186
|
If evidence is missing for the change type, flag as WARNING.
|
|
164
187
|
```
|
|
165
188
|
|
|
189
|
+
### Phase 4c: Evidence-Bound Verdict Gate (Article XXII — Mandatory)
|
|
190
|
+
```
|
|
191
|
+
Before classifying ANY finding as ERROR, you MUST have tool-produced evidence.
|
|
192
|
+
|
|
193
|
+
Evidence Collection Protocol:
|
|
194
|
+
1. Run: npm run lint 2>&1 — capture full output
|
|
195
|
+
2. Run: npm run typecheck 2>&1 (or tsc --noEmit) — capture full output
|
|
196
|
+
3. Run: npm run test -- --coverage 2>&1 — capture full output
|
|
197
|
+
4. For UI changes: browser_navigate + browser_take_screenshot per affected route
|
|
198
|
+
|
|
199
|
+
Required evidence by finding type:
|
|
200
|
+
| Finding Category | Required Tool Evidence |
|
|
201
|
+
|-----------------|----------------------|
|
|
202
|
+
| Failing test | Test runner output showing test name + failure message |
|
|
203
|
+
| Type error | tsc --noEmit or ESLint output |
|
|
204
|
+
| Security flaw | SAST tool finding with file, line, severity code |
|
|
205
|
+
| Visual regression | Screenshot diff or Playwright assertion failure |
|
|
206
|
+
| Coverage gap | Coverage report showing uncovered lines |
|
|
207
|
+
| Performance issue | Benchmark output or profiler trace |
|
|
208
|
+
| Architecture violation | Cross-reference with architecture.md + specific line numbers |
|
|
209
|
+
|
|
210
|
+
Finding Reclassification:
|
|
211
|
+
- ERROR without lint/typecheck/test evidence → SUGGESTION (tag: "DOWNGRADED — requires tool verification")
|
|
212
|
+
- WARNING without evidence → SUGGESTION
|
|
213
|
+
- SUGGESTION without evidence → SUGGESTION (unchanged)
|
|
214
|
+
- ATTESTATION → always ATTESTATION (evidence IS the attestation)
|
|
215
|
+
|
|
216
|
+
If a tool is unavailable (not in package.json, MCP offline):
|
|
217
|
+
- Log: "Evidence unavailable: {tool} — {reason}"
|
|
218
|
+
- Downgrade any ERROR that would rely on that evidence to SUGGESTION
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Phase 4d: Root Layer Classification (Article XXII — Mandatory)
|
|
222
|
+
```
|
|
223
|
+
When QA finds an issue that cannot be resolved within the correction loop,
|
|
224
|
+
classify the fault origin BEFORE issuing any correction request.
|
|
225
|
+
|
|
226
|
+
Classification Decision Tree:
|
|
227
|
+
1. Is the acceptance criterion in tasks.md specific and unambiguous?
|
|
228
|
+
NO → INTENT (route to Detail agent via orchestrator)
|
|
229
|
+
2. Does the spec in tasks.md contradict architecture.md?
|
|
230
|
+
YES → SPEC (route to Architect via backward transition)
|
|
231
|
+
3. Does the code simply not implement the spec?
|
|
232
|
+
YES → CODE (Dev agent silent correction loop — existing behavior)
|
|
233
|
+
4. Is the issue outside the defined scope?
|
|
234
|
+
YES → DEFER (add to session.yaml backlog)
|
|
235
|
+
|
|
236
|
+
For each correction request, include:
|
|
237
|
+
FINDING: {defect description — one sentence, observable}
|
|
238
|
+
ORIGIN: {INTENT | SPEC | CODE | DEFER}
|
|
239
|
+
EVIDENCE_TYPE: {test_output | lint_output | sast_finding | screenshot | coverage_report | benchmark | architecture_ref}
|
|
240
|
+
EVIDENCE_EXCERPT: {tool output — max 5 lines}
|
|
241
|
+
CORRECTION_TARGET: {agent name or DEFER}
|
|
242
|
+
|
|
243
|
+
Routing Enforcement:
|
|
244
|
+
- CODE → Dev agent via Silent Correction Loop (max 3 iterations, Article X)
|
|
245
|
+
- SPEC → orchestrator notified, backward transition to Detail/Architect/Tasks
|
|
246
|
+
- INTENT → orchestrator notified, deviation protocol activated (user must resolve)
|
|
247
|
+
- DEFER → orchestrator adds to session.yaml backlog[], does NOT block approval
|
|
248
|
+
|
|
249
|
+
Decision Trail Write:
|
|
250
|
+
After each correction loop iteration, write to session.yaml decision_trail[]:
|
|
251
|
+
id: DT-{next_sequence}
|
|
252
|
+
trigger: "QA loop {N}: {issue_description}"
|
|
253
|
+
fault_origin: {CODE | SPEC | INTENT | DEFER}
|
|
254
|
+
routed_to: {agent_name}
|
|
255
|
+
what_was_wrong: "{precise description}"
|
|
256
|
+
avoid: "{what NOT to repeat}"
|
|
257
|
+
evidence_hash: "{SHA-1 of evidence excerpt}"
|
|
258
|
+
logged_at: "{timestamp}"
|
|
259
|
+
resolved: false
|
|
260
|
+
```
|
|
261
|
+
|
|
166
262
|
### Phase 5: Triple Review Protocol (Mandatory)
|
|
167
263
|
```
|
|
168
264
|
Execute 3 review passes INDEPENDENTLY. Each pass has a different scope
|
|
@@ -268,20 +364,81 @@ If the implementation includes a bug fix, verify causation:
|
|
|
268
364
|
If not a bug fix, skip this phase and document: "Not a bug fix -- causation verification N/A."
|
|
269
365
|
```
|
|
270
366
|
|
|
367
|
+
### Phase 5d: Visual Review (Mandatory for PRs touching UI files)
|
|
368
|
+
|
|
369
|
+
CONDITION: Execute only when diff includes .tsx/.jsx/.vue/.svelte files or CSS/Tailwind changes.
|
|
370
|
+
If no UI files changed: document "Phase 5d: N/A — no UI files changed."
|
|
371
|
+
|
|
372
|
+
```
|
|
373
|
+
1. Start dev server if not running (`npm run dev` or equivalent).
|
|
374
|
+
|
|
375
|
+
2. For each page/route affected by the diff:
|
|
376
|
+
|
|
377
|
+
a. Desktop (1280px): browser_navigate → browser_take_screenshot
|
|
378
|
+
b. Tablet (768px): set viewport → navigate → screenshot
|
|
379
|
+
c. Mobile (375px): set viewport → navigate → screenshot
|
|
380
|
+
|
|
381
|
+
3. Analyze each screenshot against:
|
|
382
|
+
- Brandbook token compliance (colors, spacing, typography)
|
|
383
|
+
- Component state completeness (hover, focus, error, loading)
|
|
384
|
+
- No visual regressions (broken layout, overflow, misalignment)
|
|
385
|
+
- Responsive correctness at all 3 viewports
|
|
386
|
+
|
|
387
|
+
4. Classify findings:
|
|
388
|
+
- VISUAL-ERROR (blocks APPROVED): wrong brand colors, broken layout, missing states
|
|
389
|
+
- VISUAL-WARNING (noted, does not block): minor spacing, animation timing
|
|
390
|
+
|
|
391
|
+
5. If VISUAL-ERROR found: send correction to Dev agent (Silent Correction Loop).
|
|
392
|
+
|
|
393
|
+
6. Document in report:
|
|
394
|
+
## Visual Review
|
|
395
|
+
| Route | Desktop | Tablet | Mobile | Tokens | Responsive | Status |
|
|
396
|
+
|-------|---------|--------|--------|--------|------------|--------|
|
|
397
|
+
| /{route} | {screenshot} | {screenshot} | {screenshot} | {PASS/FAIL} | {PASS/FAIL} | {OK/ERROR/WARNING} |
|
|
398
|
+
|
|
399
|
+
FALLBACK: If browser MCP unavailable:
|
|
400
|
+
- Check Dev handoff for screenshot evidence (Step 9.7)
|
|
401
|
+
- If Dev provided screenshots: use those as visual evidence
|
|
402
|
+
- If no screenshots anywhere: flag VISUAL-WARNING "No visual evidence" and note in report
|
|
403
|
+
```
|
|
404
|
+
|
|
271
405
|
### Phase 6: Score & Decide
|
|
272
406
|
```
|
|
273
407
|
Calculate overall quality score:
|
|
274
|
-
Tests: weight 0.
|
|
408
|
+
Tests: weight 0.20
|
|
275
409
|
Coverage: weight 0.10
|
|
276
|
-
Security: weight 0.
|
|
410
|
+
Security: weight 0.20
|
|
277
411
|
Code Quality: weight 0.15
|
|
278
412
|
Acceptance Criteria: weight 0.10
|
|
279
413
|
Adversarial Review: weight 0.15
|
|
414
|
+
Visual Review: weight 0.10 (0.00 when no UI files — redistribute to Tests + Security)
|
|
280
415
|
|
|
281
416
|
Result:
|
|
282
417
|
- All checks pass AND adversarial review complete -> APPROVED -> proceed to DevOps
|
|
283
418
|
- Any check fails -> enter silent correction loop
|
|
284
419
|
- Adversarial review incomplete -> CANNOT approve (re-run Phase 5)
|
|
420
|
+
|
|
421
|
+
FVP Compliance Checklist (Article XXII — mandatory in every correction report):
|
|
422
|
+
| Check | Status |
|
|
423
|
+
|-------|--------|
|
|
424
|
+
| Root Layer Classification completed for all ERRORs | YES/NO |
|
|
425
|
+
| All ERRORs routed to correct Correcting Authority | YES/NO |
|
|
426
|
+
| Evidence attached for all ERRORs and WARNINGs | YES/NO |
|
|
427
|
+
| Decision Trail updated for all SPEC/CODE corrections | YES/NO |
|
|
428
|
+
| Echo Detection run before new ERROR classifications | YES/NO |
|
|
429
|
+
| Echo count this cycle | N |
|
|
430
|
+
|
|
431
|
+
If any check is NO, the report cannot be submitted as final.
|
|
432
|
+
|
|
433
|
+
Echo Detection (Article XXII):
|
|
434
|
+
Before classifying a new finding as ERROR or WARNING:
|
|
435
|
+
1. Read all Decision Trail entries for the current task
|
|
436
|
+
2. Compare normalized finding description with each entry's what_was_wrong
|
|
437
|
+
3. If similarity >= 0.85 OR evidence_hash matches:
|
|
438
|
+
- Mark finding as ECHO, reference the original DT entry
|
|
439
|
+
- Escalate IMMEDIATELY to orchestrator — do NOT enter another correction loop
|
|
440
|
+
- An Echo means the prior correction did not hold → paradigm change required
|
|
441
|
+
4. If no Echo: classify normally
|
|
285
442
|
```
|
|
286
443
|
|
|
287
444
|
---
|
|
@@ -486,8 +643,12 @@ Criteria (binary pass/fail):
|
|
|
486
643
|
12. Cross-file consistency checks completed (ENV, README, API, Config, Deps, Docs)
|
|
487
644
|
13. Evidence validation completed for change type (bug/feature/refactor/performance/security)
|
|
488
645
|
|
|
646
|
+
14. Evidence-Bound Verdict Gate completed (Phase 4c — all ERRORs have tool evidence)
|
|
647
|
+
15. Root Layer Classification completed for all non-CODE issues (Phase 4d)
|
|
648
|
+
16. Decision Trail checked pre-flight and updated post-correction (Article XXII)
|
|
649
|
+
|
|
489
650
|
Score = criteria met / total criteria
|
|
490
|
-
Threshold: >= 95% (
|
|
651
|
+
Threshold: >= 95% (15/16 minimum)
|
|
491
652
|
```
|
|
492
653
|
|
|
493
654
|
---
|
|
@@ -583,7 +744,7 @@ Beyond self-validation (Protocol 5.1), the QA-Implementation agent enforces:
|
|
|
583
744
|
1. **95% threshold is non-negotiable**: The QA-Implementation gate requires 95% — this cannot be lowered by any agent or workflow
|
|
584
745
|
2. **Adversarial review is mandatory**: No implementation can be approved without the adversarial review pass — this is a structural requirement, not optional
|
|
585
746
|
3. **Correction loops are silent by default**: Users see "Running additional validations..." — detailed correction details are in the report, not in real-time output
|
|
586
|
-
4. **Security is the highest priority**: Critical and High vulnerabilities carry the heaviest weight (0.
|
|
747
|
+
4. **Security is the highest priority**: Critical and High vulnerabilities carry the heaviest weight (0.20) — security findings override all other considerations
|
|
587
748
|
5. **State transition is gated**: The project state changes from `build` to `deploy` ONLY when QA-Implementation issues APPROVED — no other agent can trigger this transition
|
|
588
749
|
6. **All findings are classified**: Every finding must be typed as ERROR, WARNING, SUGGESTION, or ATTESTATION — unclassified findings are a process failure
|
|
589
750
|
7. **Tests are non-negotiable**: 100% test pass rate is required — failing tests cannot be overridden without explicit user acknowledgment
|
|
@@ -619,6 +780,46 @@ On error during execution:
|
|
|
619
780
|
|
|
620
781
|
---
|
|
621
782
|
|
|
783
|
+
## Team Mode (Article XXI — skip entirely in solo mode)
|
|
784
|
+
|
|
785
|
+
### Team Mode Detection
|
|
786
|
+
|
|
787
|
+
Team mode is active when ANY of these is true: (a) your activation prompt contains "Team mode active", (b) `CHATI_TEAM_ID` environment variable is set, or (c) `session.yaml` `teams[]` has an active entry where your name appears in the roster.
|
|
788
|
+
|
|
789
|
+
If team mode is active:
|
|
790
|
+
1. Read your Shared Task List from the team's `task_list_path`.
|
|
791
|
+
2. Read your mailbox inbox for any pre-activation messages from Dev.
|
|
792
|
+
3. Acknowledge: "Team mode active. I am QA-Implementation in Build Team {id}."
|
|
793
|
+
|
|
794
|
+
If team mode is NOT active: ignore this entire section and operate as defined above.
|
|
795
|
+
|
|
796
|
+
### Per-Task Review Mode (Build Team Only)
|
|
797
|
+
|
|
798
|
+
INSTEAD of waiting for full Dev completion, operate in continuous review:
|
|
799
|
+
|
|
800
|
+
1. **Poll Dev's mailbox outbox** for messages of type `task_ready_for_review`.
|
|
801
|
+
2. When received, run Phases 1-4d ONLY for the specific task's diff (not the entire codebase):
|
|
802
|
+
- Phase 1: Run tests relevant to the changed files
|
|
803
|
+
- Phase 2: SAST scan on changed files only
|
|
804
|
+
- Phase 3: Code review on the diff
|
|
805
|
+
- Phase 4: Verify acceptance criteria for this specific task
|
|
806
|
+
- Phase 4b: Evidence validation for the change type
|
|
807
|
+
- Phase 4c: Evidence-Bound Verdict Gate (tool evidence required)
|
|
808
|
+
- Phase 4d: Root Layer Classification (if issues found)
|
|
809
|
+
3. Write findings to mailbox: message type `task_review_findings` containing:
|
|
810
|
+
- `task_id`: The reviewed task
|
|
811
|
+
- `verdict`: `pass` | `warn` | `block`
|
|
812
|
+
- `findings`: Array of classified findings with evidence
|
|
813
|
+
- `fault_origin`: Root Layer classification for each finding (INTENT/SPEC/CODE/DEFER)
|
|
814
|
+
4. **Continue polling.** Do NOT issue team-level APPROVED until ALL tasks are individually reviewed.
|
|
815
|
+
5. Run the **full Triple Review Protocol** (Phase 5) only ONCE after the FINAL task completes — this is the comprehensive cross-file, adversarial, structural review.
|
|
816
|
+
6. Per-task review respects the 3-correction-loop cap per task (Article X). If the same task is blocked 3 times, escalate via mailbox to orchestrator.
|
|
817
|
+
|
|
818
|
+
**This mode operates alongside (not instead of) all existing QA phases.**
|
|
819
|
+
The per-task loop catches issues early. The final Phase 5 pass catches cross-cutting concerns.
|
|
820
|
+
|
|
821
|
+
---
|
|
822
|
+
|
|
622
823
|
## Input
|
|
623
824
|
|
|
624
825
|
$ARGUMENTS
|
package/framework/config.yaml
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# chati.dev Configuration
|
|
2
|
-
version: "4.
|
|
2
|
+
version: "4.2.0"
|
|
3
3
|
installed_at: "2026-02-07T10:00:00Z"
|
|
4
|
-
updated_at: "2026-04-
|
|
5
|
-
installer_version: "4.
|
|
4
|
+
updated_at: "2026-04-11T00:00:00Z"
|
|
5
|
+
installer_version: "4.2.0"
|
|
6
6
|
project_type: greenfield
|
|
7
7
|
language: en
|
|
8
8
|
ides: [claude-code]
|
|
@@ -53,6 +53,12 @@ features:
|
|
|
53
53
|
model_fallback: true # Automatic opus→sonnet fallback on overload
|
|
54
54
|
frustration_detection: true # Detect user frustration and adapt response style
|
|
55
55
|
bash_security_checks: true # 23-point shell injection defense system
|
|
56
|
+
# Agent Teams (v4.2.0 — Article XXI)
|
|
57
|
+
agent_teams: false # Enable Claude Code native Agent Teams (requires claude provider)
|
|
58
|
+
team_planning_size: 3 # Planning Team max teammates: detail + architect + ux
|
|
59
|
+
team_build_size: 2 # Build Team max teammates: dev + qa-implementation
|
|
60
|
+
team_echo_threshold: 0.92 # Content similarity ratio to trigger Echo Detection (Article XXII)
|
|
61
|
+
team_correction_cycles_max: 2 # Max Team Correction Cycles before degraded dissolution
|
|
56
62
|
|
|
57
63
|
# Telemetry — opt-in anonymous usage tracking
|
|
58
64
|
telemetry:
|