up-cc 0.4.1 → 0.4.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "up-cc",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Simplified spec-driven development for Claude Code, Gemini and OpenCode.",
5
5
  "bin": {
6
6
  "up-cc": "bin/install.js"
@@ -1046,6 +1046,67 @@ Fase {X}: E2E — {passed}/{total} testes passaram [{bugs} bugs, {fixed} corrigi
1046
1046
  **Se nao tem UI:** Pular silenciosamente.
1047
1047
  **Se dev server falha:** Registrar e pular E2E (nao bloqueia).
1048
1048
 
1049
+ #### 3.1.5.1 Loop DCRV — Detectar, Classificar, Resolver, Verificar (Por Fase)
1050
+
1051
+ **Apos o E2E da fase**, rodar o workflow DCRV completo.
1052
+
1053
+ **Referencia:** `@~/.claude/up/workflows/dcrv.md`
1054
+
1055
+ Executar com parametros:
1056
+ ```
1057
+ SCOPE=phase
1058
+ PHASE_DIR={phase_dir}
1059
+ PHASE_NUMBER={phase_number}
1060
+ PORT={porta do dev server}
1061
+ MAX_CYCLES=3
1062
+ MAX_ISSUES_PER_CYCLE=15
1063
+ AUTO_FIX=true
1064
+ REGRESSION=false (smoke test e separado no passo 3.1.5.2)
1065
+ ```
1066
+
1067
+ O workflow DCRV cuida de:
1068
+ 1. Detectar modo (UI, API, ambos, nenhum)
1069
+ 2. Rodar detectores na ordem (Visual → API → Exhaustive)
1070
+ 3. Consolidar issue board
1071
+ 4. Dispatcher diagnostica e roteia para especialistas
1072
+ 5. Especialistas corrigem com commits atomicos
1073
+ 6. Re-verificacao das issues corrigidas
1074
+ 7. Loop ate resolver ou max ciclos
1075
+
1076
+ Issues pendentes sao salvas em `.plano/issues-carryover/` para o Quality Gate (Estagio 4).
1077
+
1078
+ ```
1079
+ Fase {X}: DCRV — {resolved}/{total} issues resolvidas [{pending} pendentes → Quality Gate]
1080
+ ```
1081
+
1082
+ #### 3.1.5.2 Smoke Test de Regressao (A partir da Fase 3)
1083
+
1084
+ **A partir da terceira fase**, fazer smoke test rapido das paginas de fases ANTERIORES.
1085
+ Objetivo: detectar regressoes causadas por mudancas em componentes compartilhados.
1086
+
1087
+ **NAO e exaustivo** — apenas:
1088
+ 1. Navegar cada rota de fases anteriores
1089
+ 2. Verificar que renderiza (nao tela branca, nao 404)
1090
+ 3. Screenshot rapido
1091
+ 4. Checar console por erros novos
1092
+
1093
+ ```
1094
+ Para cada fase anterior com UI:
1095
+ Para cada rota da fase:
1096
+ browser_navigate(url)
1097
+ browser_console_messages(level: "error")
1098
+ Se erro novo detectado → registrar como regressao
1099
+ ```
1100
+
1101
+ Se regressao encontrada:
1102
+ - Severidade: HIGH (algo que funcionava quebrou)
1103
+ - Corrigir imediatamente (nao carregar para Quality Gate)
1104
+ - Commit: `fix(fase-{X}): regressao em [pagina] causada por fase {Y}`
1105
+
1106
+ ```
1107
+ Smoke test regressao: {N} rotas anteriores | {OK} ok | {REGRESS} regressoes [{FIXED} corrigidas]
1108
+ ```
1109
+
1049
1110
  #### 3.1.6 Marcar Fase Completa
1050
1111
 
1051
1112
  ```bash
@@ -1118,16 +1179,22 @@ Voltar para 3.1.1 com a proxima fase. Sem /clear — continuar no mesmo contexto
1118
1179
  Executado APOS todas as fases do build completarem.
1119
1180
  Ciclo de avaliacao → correcao → re-avaliacao ate atingir score >= 9.0/10.
1120
1181
 
1121
- **Score Composto (6 dimensoes):**
1182
+ **Score Composto (9 dimensoes):**
1122
1183
 
1123
1184
  | Dimensao | Peso | Como mede |
1124
1185
  |----------|------|-----------|
1125
- | Funcionalidade | 25% | Requisitos atendidos / total (REQUIREMENTS.md) |
1126
- | E2E | 20% | Testes passando / total (Playwright) |
1127
- | UX | 15% | Score do UX tester (6 sub-dimensoes) |
1128
- | Responsividade | 15% | Score do mobile-first |
1129
- | Codigo | 15% | Score do melhorias (UX+perf+modernidade) |
1130
- | Completude | 10% | Paginas sem erro / total (smoke test) |
1186
+ | Funcionalidade | 15% | Requisitos atendidos / total (REQUIREMENTS.md) |
1187
+ | Blind Validation | 15% | Score do BLIND-VALIDATION.md |
1188
+ | Visual Quality | 12% | Score do up-visual-critic (VISUAL-REPORT.md) |
1189
+ | Exhaustive | 10% | Pass rate do up-exhaustive-tester (EXHAUSTIVE-REPORT.md) |
1190
+ | API Robustez | 8% | Pass rate do up-api-tester (API-REPORT.md) |
1191
+ | E2E | 10% | Testes passando / total (Playwright) |
1192
+ | UX | 10% | Score do UX tester (6 sub-dimensoes) |
1193
+ | Responsividade | 10% | Score do mobile-first |
1194
+ | Codigo | 10% | Score do code reviewer + melhorias |
1195
+
1196
+ **Nota:** Se projeto nao tem UI, redistribuir pesos de Visual/Exhaustive/UX/Responsividade para API/Funcionalidade/Codigo.
1197
+ **Nota:** Se projeto nao tem API, redistribuir peso de API para outros.
1131
1198
 
1132
1199
  **Limites de seguranca:**
1133
1200
  - Max 5 ciclos de refinamento
@@ -1445,24 +1512,35 @@ Blind Validation: {score}% | {passed} PASS | {failed} FAIL | {partial} PARTIAL
1445
1512
  Agregar scores de todos os avaliadores:
1446
1513
 
1447
1514
  ```
1448
- Funcionalidade (20%): requisitos [x] / total no REQUIREMENTS.md → 0-10
1449
- Blind Valid. (20%): score do BLIND-VALIDATION.md → 0-10
1450
- E2E (15%): testes passaram / total no E2E mais recente → 0-10
1515
+ Funcionalidade (15%): requisitos [x] / total no REQUIREMENTS.md → 0-10
1516
+ Blind Valid. (15%): score do BLIND-VALIDATION.md → 0-10
1517
+ Visual (12%): score do VISUAL-REPORT.md → 0-10
1518
+ Exhaustive (10%): pass rate do EXHAUSTIVE-REPORT.md → 0-10
1519
+ API (8%): pass rate do API-REPORT.md → 0-10
1520
+ E2E (10%): testes passaram / total no E2E mais recente → 0-10
1451
1521
  UX (10%): score do UX-REPORT.md → 0-10
1452
1522
  Responsividade (10%): score do MOBILE-REPORT.md → 0-10
1453
- Codigo (15%): (10 - problemas_criticos) do RELATORIO.md melhorias → 0-10
1454
- Completude (10%): rotas sem erro / total no smoke test → 0-10
1523
+ Codigo (10%): score do CODE-REVIEW + melhorias → 0-10
1455
1524
 
1456
1525
  **Modo normal:**
1457
- Score = (func × 0.20) + (blind × 0.20) + (e2e × 0.15) + (ux × 0.10) + (resp × 0.10) + (cod × 0.15) + (comp × 0.10)
1526
+ Score = (func × 0.15) + (blind × 0.15) + (visual × 0.12) + (exhaustive × 0.10) + (api × 0.08) + (e2e × 0.10) + (ux × 0.10) + (resp × 0.10) + (cod × 0.10)
1458
1527
 
1459
1528
  **Modo clone (builder_type: "clone"):**
1460
- Score = (func × 0.15) + (fidelidade × 0.20) + (blind × 0.15) + (e2e × 0.10) + (ux × 0.10) + (resp × 0.10) + (cod × 0.10) + (comp × 0.10)
1529
+ Score = (func × 0.10) + (fidelidade × 0.15) + (blind × 0.10) + (visual × 0.15) + (exhaustive × 0.10) + (api × 0.05) + (e2e × 0.10) + (ux × 0.05) + (resp × 0.10) + (cod × 0.10)
1461
1530
 
1462
1531
  A dimensao "Fidelidade" usa o up-clone-verifier: compara features (funcional) + visual contra original.
1463
1532
  ```
1464
1533
 
1465
- **Se algum avaliador nao rodou** (ex: sem UI, sem E2E): redistribuir peso proporcionalmente entre os que rodaram.
1534
+ **Se algum avaliador nao rodou** (ex: sem UI, sem E2E, sem API): redistribuir peso proporcionalmente entre os que rodaram.
1535
+
1536
+ **Issues Carryover das Fases:**
1537
+
1538
+ Antes de iniciar o Quality Gate, carregar issues pendentes do loop DCRV por fase:
1539
+ ```bash
1540
+ ls .plano/issues-carryover/*.json 2>/dev/null
1541
+ ```
1542
+ Estas issues ja foram detectadas e tentadas — se ainda existem, sao as mais dificeis.
1543
+ Incluir no board de issues do Quality Gate com flag `carryover: true`.
1466
1544
 
1467
1545
  ```
1468
1546
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -1471,12 +1549,15 @@ A dimensao "Fidelidade" usa o up-clone-verifier: compara features (funcional) +
1471
1549
 
1472
1550
  | Dimensao | Score | Peso | Contribuicao |
1473
1551
  |----------|-------|------|-------------|
1474
- | Funcionalidade | [N]/10 | 25% | [X] |
1475
- | E2E | [N]/10 | 20% | [X] |
1476
- | UX | [N]/10 | 15% | [X] |
1477
- | Responsividade | [N]/10 | 15% | [X] |
1478
- | Codigo | [N]/10 | 15% | [X] |
1479
- | Completude | [N]/10 | 10% | [X] |
1552
+ | Funcionalidade | [N]/10 | 15% | [X] |
1553
+ | Blind Validation | [N]/10 | 15% | [X] |
1554
+ | Visual Quality | [N]/10 | 12% | [X] |
1555
+ | Exhaustive | [N]/10 | 10% | [X] |
1556
+ | API Robustez | [N]/10 | 8% | [X] |
1557
+ | E2E | [N]/10 | 10% | [X] |
1558
+ | UX | [N]/10 | 10% | [X] |
1559
+ | Responsividade | [N]/10 | 10% | [X] |
1560
+ | Codigo | [N]/10 | 10% | [X] |
1480
1561
  | **TOTAL** | **[SCORE]/10** | | |
1481
1562
  ```
1482
1563
 
@@ -1497,13 +1578,28 @@ Identificar top gaps (dimensoes com menor score):
1497
1578
  - Extrair issues nao corrigidas / requisitos pendentes
1498
1579
  - Priorizar por impacto no score
1499
1580
 
1500
- **Implementar correcoes:**
1581
+ **Rodar 3 detectores no projeto INTEIRO (nao apenas por fase):**
1582
+
1583
+ Ordem: Visual Critic → API Tester → Exhaustive Tester
1584
+
1585
+ Cada detector roda em TODAS as paginas/rotas, detectando:
1586
+ - Issues novas (nao encontradas no DCRV por fase)
1587
+ - Regressoes cross-fase (inconsistencia entre paginas de fases diferentes)
1588
+ - Issues carryover (pendentes das fases) — re-verificar se ainda existem
1589
+
1590
+ **Implementar correcoes via Dispatcher (mesmo protocolo do DCRV por fase):**
1591
+ - Issues visuais (VIS-*): diagnosticar → up-frontend-specialist
1592
+ - Issues de interacao (INT-*): diagnosticar → up-frontend-specialist ou up-backend-specialist
1593
+ - Issues de API (API-*): diagnosticar → up-backend-specialist ou up-database-specialist
1501
1594
  - Issues de codigo: planejar mini-fase → executar → commit
1502
1595
  - Issues de UX: aplicar fixes (mesmo processo do UX tester)
1503
1596
  - Issues de responsividade: aplicar fixes (mesmo processo do mobile-first)
1504
1597
  - Requisitos pendentes: planejar mini-fase → executar
1505
1598
  - Issues de E2E: corrigir bugs (max 5 tentativas)
1506
1599
 
1600
+ **Cap de issues por ciclo: max 20** (mais generoso que o DCRV por fase).
1601
+ Prioridade: critical > high > medium. Low nunca entra.
1602
+
1507
1603
  Apos implementar:
1508
1604
 
1509
1605
  ```
@@ -2218,6 +2314,9 @@ Com 1M de contexto, a maioria dos projetos cabe sem /clear. Mas monitore:
2218
2314
  - [ ] Estagio 3: Todas as fases verificadas
2219
2315
  - [ ] Estagio 3: Fases com UI testadas via Playwright (E2E-RESULTS.md)
2220
2316
  - [ ] Estagio 3: Bugs E2E corrigidos (quando possivel)
2317
+ - [ ] Estagio 3: DCRV por fase executado (Visual Critic + Exhaustive Tester + API Tester)
2318
+ - [ ] Estagio 3: Issues DCRV corrigidas via dispatcher (max 3 ciclos por fase)
2319
+ - [ ] Estagio 3: Smoke test de regressao em fases anteriores (a partir da fase 3)
2221
2320
  - [ ] Estagio 3: Reassessment apos cada fase (roadmap re-avaliado)
2222
2321
  - [ ] Estagio 3: Commits atomicos por tarefa
2223
2322
  - [ ] Estagio 3: LOCK.md atualizado a cada transicao de estado
@@ -2229,7 +2328,11 @@ Com 1M de contexto, a maioria dos projetos cabe sem /clear. Mas monitore:
2229
2328
  - [ ] Estagio 4: UX-REPORT.md gerado com scores e screenshots
2230
2329
  - [ ] Estagio 4: Mobile First executado (responsividade verificada em 3 viewports)
2231
2330
  - [ ] Estagio 4: MOBILE-REPORT.md gerado com score e screenshots comparativos
2232
- - [ ] Estagio 4: Score composto calculado (6 dimensoes)
2331
+ - [ ] Estagio 4: Visual Critic global executado (VISUAL-REPORT.md)
2332
+ - [ ] Estagio 4: Exhaustive Tester global executado (EXHAUSTIVE-REPORT.md)
2333
+ - [ ] Estagio 4: API Tester global executado (API-REPORT.md)
2334
+ - [ ] Estagio 4: Issues carryover das fases processadas
2335
+ - [ ] Estagio 4: Score composto calculado (9 dimensoes)
2233
2336
  - [ ] Estagio 4: Quality gate loop executado (ate score >= 9.0 ou max 5 ciclos)
2234
2337
  - [ ] Estagio 4: DevOps artifacts gerados (Dockerfile, CI/CD, .env.example, seed)
2235
2338
  - [ ] Estagio 4: Documentacao gerada (README, CHANGELOG, API docs)
@@ -0,0 +1,421 @@
1
+ <purpose>
2
+ Workflow DCRV (Detectar → Classificar → Resolver → Verificar) — loop de qualidade reutilizavel.
3
+
4
+ Roda 3 detectores (Visual Critic, Exhaustive Tester, API Tester), consolida issues, despacha para especialistas corrigirem, e re-verifica. Loop ate resolver ou atingir max ciclos.
5
+
6
+ **Modos de uso:**
7
+ - **Por fase (builder):** Testa apenas paginas/rotas da fase recem-executada
8
+ - **Global (quality gate):** Testa TODAS as paginas/rotas do projeto
9
+ - **Standalone:** Chamado por /up:executar-fase, /up:rapido, /up:ux-tester, /up:verificar-trabalho
10
+ - **Light (1 ciclo):** Roda detectores + reporta, sem loop de correcao
11
+
12
+ **Parametros esperados no prompt:**
13
+ - `$SCOPE`: "phase" | "global" | "light"
14
+ - `$PHASE_DIR`: diretorio da fase (se scope=phase)
15
+ - `$PHASE_NUMBER`: numero da fase (se scope=phase)
16
+ - `$ROUTES`: lista de rotas a testar (se vazio, descobre automaticamente)
17
+ - `$PORT`: porta do dev server (default: 3000)
18
+ - `$MAX_CYCLES`: max ciclos de correcao (default: 3 para phase, 5 para global, 1 para light)
19
+ - `$MAX_ISSUES_PER_CYCLE`: max issues para corrigir por ciclo (default: 15 para phase, 20 para global)
20
+ - `$AUTO_FIX`: true | false (se false, apenas reporta sem corrigir)
21
+ </purpose>
22
+
23
+ <process>
24
+
25
+ ## Passo 0: Setup
26
+
27
+ ### 0.1 Detectar o que testar
28
+
29
+ ```bash
30
+ # Dev server rodando?
31
+ curl -s http://localhost:${PORT:-3000} > /dev/null 2>&1
32
+ if [ $? -ne 0 ]; then
33
+ echo "DEV_SERVER_DOWN"
34
+ fi
35
+ ```
36
+
37
+ Se dev server nao esta rodando: subir automaticamente.
38
+ ```bash
39
+ if [ -f package.json ]; then
40
+ npm run dev > /tmp/up-dcrv-server.log 2>&1 &
41
+ DCRV_DEV_PID=$!
42
+ for i in $(seq 1 30); do
43
+ curl -s http://localhost:${PORT:-3000} > /dev/null 2>&1 && break
44
+ sleep 1
45
+ done
46
+ fi
47
+ ```
48
+
49
+ ### 0.2 Descobrir rotas (se $ROUTES vazio)
50
+
51
+ **Se scope=phase:** Ler SUMMARY da fase para extrair rotas criadas/modificadas.
52
+ ```bash
53
+ cat "$PHASE_DIR"/*-SUMMARY.md 2>/dev/null
54
+ ```
55
+
56
+ **Se scope=global ou standalone:** Descobrir todas as rotas.
57
+ ```bash
58
+ find app -name "page.tsx" -o -name "page.ts" 2>/dev/null | head -30
59
+ find pages -name "*.tsx" -o -name "*.ts" 2>/dev/null | grep -v "_app\|_document\|api/" | head -30
60
+ ```
61
+
62
+ **Descobrir rotas API:**
63
+ ```bash
64
+ find app -path "*/api/*" -name "route.ts" 2>/dev/null
65
+ find pages/api -name "*.ts" -o -name "*.js" 2>/dev/null
66
+ grep -rn "app\.\(get\|post\|put\|patch\|delete\)" src/ --include="*.ts" --include="*.js" 2>/dev/null | head -20
67
+ ```
68
+
69
+ ### 0.3 Classificar projeto
70
+
71
+ ```
72
+ HAS_UI = rotas de pagina encontradas?
73
+ HAS_API = rotas de API encontradas?
74
+ ```
75
+
76
+ | Projeto | Detectores |
77
+ |---------|-----------|
78
+ | UI + API | Visual Critic → API Tester → Exhaustive Tester (todos) |
79
+ | UI only | Visual Critic → Exhaustive Tester (pular API) |
80
+ | API only | API Tester com profundidade extra (pular visual + exhaustive) |
81
+ | Infra/schema | Pular DCRV (nada para testar via browser/curl) |
82
+
83
+ ### 0.4 Carregar referencia visual
84
+
85
+ ```bash
86
+ cat .plano/DESIGN-TOKENS.md 2>/dev/null
87
+ ```
88
+
89
+ Se nao existe: visual critic vai inferir do codebase (e registrar ausencia como issue leve).
90
+
91
+ ### 0.5 Definir output dir
92
+
93
+ ```bash
94
+ if [ "$SCOPE" = "phase" ]; then
95
+ DCRV_DIR="$PHASE_DIR/dcrv"
96
+ elif [ "$SCOPE" = "global" ]; then
97
+ DCRV_DIR=".plano/dcrv"
98
+ else
99
+ DCRV_DIR=".plano/dcrv"
100
+ fi
101
+ mkdir -p "$DCRV_DIR"
102
+ ```
103
+
104
+ ## Passo 1: Detectar (Rodar Detectores)
105
+
106
+ ```
107
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
108
+ DCRV > DETECTANDO — CICLO {CYCLE}/{MAX_CYCLES}
109
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110
+ ```
111
+
112
+ **Ordem obrigatoria: Visual → API → Exhaustive**
113
+ (Visual so observa, API usa curl, Exhaustive clica em tudo — minimiza interferencia)
114
+
115
+ ### 1.1 Visual Critic (se HAS_UI)
116
+
117
+ ```python
118
+ Agent(
119
+ subagent_type="up-visual-critic",
120
+ prompt="""
121
+ Avaliar qualidade visual.
122
+
123
+ <files_to_read>
124
+ - .plano/DESIGN-TOKENS.md (referencia visual, se existe)
125
+ </files_to_read>
126
+
127
+ Paginas a testar: {$ROUTES_UI}
128
+ Dev server: http://localhost:{$PORT}
129
+
130
+ Salvar relatorio em: {$DCRV_DIR}/VISUAL-REPORT.md
131
+ Salvar issues em: {$DCRV_DIR}/VISUAL-ISSUES.json
132
+ """
133
+ )
134
+ ```
135
+
136
+ ### 1.2 API Tester (se HAS_API)
137
+
138
+ ```python
139
+ Agent(
140
+ subagent_type="up-api-tester",
141
+ prompt="""
142
+ Testar robustez das rotas API.
143
+
144
+ Rotas a testar: {$ROUTES_API}
145
+ Dev server: http://localhost:{$PORT}
146
+
147
+ Salvar relatorio em: {$DCRV_DIR}/API-REPORT.md
148
+ Salvar issues em: {$DCRV_DIR}/API-ISSUES.json
149
+ """
150
+ )
151
+ ```
152
+
153
+ ### 1.3 Exhaustive Tester (se HAS_UI)
154
+
155
+ ```python
156
+ Agent(
157
+ subagent_type="up-exhaustive-tester",
158
+ prompt="""
159
+ Testar CADA elemento interativo.
160
+
161
+ Paginas a testar: {$ROUTES_UI}
162
+ Dev server: http://localhost:{$PORT}
163
+ Sem limite de elementos — testar TODOS.
164
+
165
+ Salvar relatorio em: {$DCRV_DIR}/EXHAUSTIVE-REPORT.md
166
+ Salvar issues em: {$DCRV_DIR}/EXHAUSTIVE-ISSUES.json
167
+ """
168
+ )
169
+ ```
170
+
171
+ ## Passo 2: Classificar (Consolidar Issue Board)
172
+
173
+ Ler os JSONs de issues dos detectores que rodaram.
174
+
175
+ ### 2.1 Deduplicar
176
+
177
+ Se visual e exhaustive reportaram o mesmo elemento/pagina: manter a issue mais detalhada.
178
+ Criterio: mesmo `page` + mesmo `element` (por texto ou ref) = duplicata.
179
+
180
+ ### 2.2 Classificar por severidade
181
+
182
+ | Severidade | Criterio |
183
+ |-----------|----------|
184
+ | critical | Tela branca, crash, auth bypass, perda de dados, app inacessivel |
185
+ | high | Funcionalidade principal quebrada, 500 em input basico, botao principal sem efeito |
186
+ | medium | Inconsistencia visual, validacao faltando, feedback ausente |
187
+ | low | Cosmetico, melhoria de polish, mensagem generica |
188
+
189
+ ### 2.3 Priorizar para correcao
190
+
191
+ Cap por ciclo: $MAX_ISSUES_PER_CYCLE (default: 15 phase, 20 global)
192
+ Prioridade: critical (todas) > high (ate cap) > medium (se sobrar) > low (NUNCA no loop)
193
+
194
+ ### 2.4 Gerar ISSUE-BOARD.md
195
+
196
+ ```markdown
197
+ ---
198
+ cycle: {CYCLE}
199
+ timestamp: {now}
200
+ total: {N}
201
+ critical: {N}
202
+ high: {N}
203
+ medium: {N}
204
+ low: {N}
205
+ to_fix: {N}
206
+ deferred: {N}
207
+ ---
208
+
209
+ # DCRV Issue Board — Ciclo {CYCLE}
210
+
211
+ ## Issues para Correcao (max {MAX_ISSUES_PER_CYCLE})
212
+
213
+ | ID | Sev | Tipo | Pagina/Rota | Titulo | Detector |
214
+ |----|-----|------|-------------|--------|----------|
215
+ | VIS-001 | high | visual | /dashboard | Cards com padding inconsistente | visual-critic |
216
+ | INT-003 | high | interaction | /dashboard | Botao Exportar sem efeito | exhaustive |
217
+ | API-007 | critical | api | POST /api/users | Aceita amount negativo | api-tester |
218
+
219
+ ## Issues Deferidas (low)
220
+
221
+ | ID | Sev | Tipo | Pagina/Rota | Titulo |
222
+ |----|-----|------|-------------|--------|
223
+ | VIS-012 | low | visual | /settings | Poderia ter mais breathing room |
224
+ ```
225
+
226
+ Escrever em `{$DCRV_DIR}/ISSUE-BOARD.md`.
227
+
228
+ **Se $AUTO_FIX = false:** Parar aqui. Retornar relatorio sem corrigir.
229
+
230
+ **Se zero issues para correcao:** Pular para Passo 5 (score perfeito).
231
+
232
+ ## Passo 3: Resolver (Dispatcher + Especialistas)
233
+
234
+ ```
235
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
236
+ DCRV > CORRIGINDO — {N} issues — CICLO {CYCLE}
237
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
238
+ ```
239
+
240
+ ### 3.1 Diagnosticar e Rotear
241
+
242
+ Para cada issue a corrigir, o orquestrador FAZ diagnostico rapido:
243
+
244
+ **Issues visuais (VIS-*):**
245
+ ```bash
246
+ # Encontrar componente da pagina
247
+ grep -rn "[rota_ou_componente]" src/ --include="*.tsx" --include="*.ts" | head -5
248
+ ```
249
+ → Rotear para `up-frontend-specialist`
250
+
251
+ **Issues de interacao (INT-*):**
252
+ ```bash
253
+ # Verificar se handler existe
254
+ grep -rn "onClick\|onSubmit\|onChange" [arquivo_do_componente] | head -10
255
+ ```
256
+ - Handler existe e chama API? → Verificar se API funciona
257
+ - API falha: `up-backend-specialist`
258
+ - API OK, handler bugado: `up-frontend-specialist`
259
+ - Handler nao existe: `up-frontend-specialist`
260
+ - Handler vazio (`() => {}`): `up-frontend-specialist`
261
+
262
+ **Issues de API (API-*):**
263
+ - Validacao faltando: `up-backend-specialist`
264
+ - Schema/dados errados: `up-database-specialist`
265
+ - Auth bypass: `up-backend-specialist`
266
+ - 500 crash: `up-backend-specialist`
267
+
268
+ ### 3.2 Spawnar Especialistas
269
+
270
+ Agrupar issues por especialista para eficiencia (1 spawn com multiplas issues em vez de 1 spawn por issue):
271
+
272
+ ```python
273
+ Agent(
274
+ subagent_type="up-frontend-specialist",
275
+ prompt="""
276
+ Corrigir as seguintes issues de qualidade:
277
+
278
+ 1. {VIS-001}: {titulo} — {descricao} — Fix: {suggested_fix}
279
+ Arquivo: {path} | Screenshot: {evidence}
280
+
281
+ 2. {INT-003}: {titulo} — {descricao} — Fix: {suggested_fix}
282
+ Arquivo: {path}
283
+
284
+ Para cada issue:
285
+ - Corrigir o problema
286
+ - Commitar: fix({scope}): {issue_id} — {titulo}
287
+
288
+ NAO criar SUMMARY.md. Apenas corrigir e commitar.
289
+ """
290
+ )
291
+ ```
292
+
293
+ ### 3.3 Reportar progresso
294
+
295
+ ```
296
+ DCRV Ciclo {CYCLE}: {resolved}/{to_fix} issues resolvidas
297
+ ✓ VIS-001: Cards com padding → unificado para 16px
298
+ ✓ INT-003: Botao Exportar → handler conectado a API
299
+ ✗ API-007: Amount negativo → 2 tentativas, nao corrigido
300
+ ```
301
+
302
+ ## Passo 4: Verificar (Re-rodar Detectores)
303
+
304
+ Re-rodar APENAS os detectores relevantes, APENAS nas issues que foram corrigidas:
305
+
306
+ - Issues VIS-* corrigidas → re-rodar visual critic na pagina afetada
307
+ - Issues INT-* corrigidas → re-rodar exhaustive tester na pagina afetada
308
+ - Issues API-* corrigidas → re-rodar api tester na rota afetada
309
+
310
+ **Criterio de saida:**
311
+ - Todas issues critical/high corrigidas → FIM (sucesso)
312
+ - $MAX_CYCLES atingido → FIM (log pendentes)
313
+ - Issues nao diminuiram entre ciclos → FIM (stagnation)
314
+
315
+ **Se mais ciclos:** Voltar para Passo 1 com issues pendentes.
316
+
317
+ **Se FIM:** Continuar para Passo 5.
318
+
319
+ ## Passo 5: Gerar Relatorio Final
320
+
321
+ Escrever `{$DCRV_DIR}/DCRV-REPORT.md`:
322
+
323
+ ```markdown
324
+ ---
325
+ scope: {phase | global | light}
326
+ completed: {timestamp}
327
+ cycles: {N}
328
+ total_issues: {N}
329
+ resolved: {N}
330
+ pending: {N}
331
+ deferred_low: {N}
332
+ visual_score: {N}/10
333
+ exhaustive_pass_rate: {N}%
334
+ api_pass_rate: {N}%
335
+ ---
336
+
337
+ # DCRV Report
338
+
339
+ **Scope:** {scope}
340
+ **Ciclos:** {cycles_run}/{max_cycles}
341
+ **Issues:** {resolved} resolvidas | {pending} pendentes | {deferred} deferidas
342
+
343
+ ## Resumo por Detector
344
+
345
+ | Detector | Issues | Resolvidas | Pendentes | Score |
346
+ |----------|--------|-----------|-----------|-------|
347
+ | Visual Critic | {N} | {N} | {N} | {N}/10 |
348
+ | Exhaustive Tester | {N} | {N} | {N} | {N}% pass |
349
+ | API Tester | {N} | {N} | {N} | {N}% pass |
350
+
351
+ ## Issues Resolvidas
352
+
353
+ | ID | Titulo | Especialista | Commit |
354
+ |----|--------|-------------|--------|
355
+ | VIS-001 | Cards padding | frontend | abc123 |
356
+
357
+ ## Issues Pendentes
358
+
359
+ | ID | Sev | Titulo | Motivo |
360
+ |----|-----|--------|--------|
361
+ | API-007 | critical | Amount negativo | 2 tentativas, nao corrigido |
362
+
363
+ ## Issues Deferidas (Low)
364
+
365
+ [Lista para referencia futura]
366
+ ```
367
+
368
+ ## Passo 6: Retornar
369
+
370
+ ```markdown
371
+ ## DCRV COMPLETE
372
+
373
+ **Scope:** {scope}
374
+ **Ciclos:** {cycles}/{max}
375
+ **Issues:** {resolved}/{total} resolvidas | {pending} pendentes
376
+ **Scores:**
377
+ - Visual: {N}/10
378
+ - Interacao: {N}% pass rate
379
+ - API: {N}% pass rate
380
+
381
+ Relatorio: {$DCRV_DIR}/DCRV-REPORT.md
382
+ Issues pendentes: {$DCRV_DIR}/ISSUE-BOARD.md
383
+ ```
384
+
385
+ Se scope=phase e tem issues pendentes:
386
+ ```bash
387
+ # Salvar para carryover ao Quality Gate
388
+ mkdir -p .plano/issues-carryover
389
+ cp "$DCRV_DIR/ISSUE-BOARD.md" ".plano/issues-carryover/phase-${PHASE_NUMBER}.md"
390
+ ```
391
+
392
+ </process>
393
+
394
+ <smoke_regression>
395
+ ## Smoke Test de Regressao (Opcional — ativado por $REGRESSION=true)
396
+
397
+ Rodar ANTES dos detectores. Navega paginas de fases anteriores para detectar regressoes.
398
+
399
+ ```
400
+ Para cada fase anterior com UI (< fase atual):
401
+ Para cada rota da fase:
402
+ browser_navigate(url)
403
+ browser_console_messages(level: "error")
404
+ browser_take_screenshot(filename: "{$DCRV_DIR}/regression/fase-{N}-{rota}.png")
405
+ Se erro novo: registrar como regressao (severidade HIGH)
406
+ ```
407
+
408
+ Regressoes entram no issue board com prioridade maxima (corrigir antes de issues novas).
409
+ </smoke_regression>
410
+
411
+ <success_criteria>
412
+ - [ ] Projeto classificado (UI, API, ambos, nenhum)
413
+ - [ ] Detectores relevantes executados na ordem correta
414
+ - [ ] Issues deduplicadas e classificadas por severidade
415
+ - [ ] ISSUE-BOARD.md gerado
416
+ - [ ] Dispatcher diagnosticou e roteou corretamente (se auto_fix)
417
+ - [ ] Especialistas corrigiram issues com commits atomicos (se auto_fix)
418
+ - [ ] Re-verificacao executada nas issues corrigidas (se auto_fix)
419
+ - [ ] DCRV-REPORT.md gerado com metricas
420
+ - [ ] Issues pendentes salvas para carryover (se scope=phase)
421
+ </success_criteria>
@@ -199,11 +199,66 @@ grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
199
199
 
200
200
  | Status | Acao |
201
201
  |--------|------|
202
- | `passed` | -> update_roadmap |
203
- | `human_needed` | **Se $BUILDER_MODE:** Considerar PASSED, registrar para revisao final no DELIVERY.md. **Se modo normal:** Apresentar itens para teste humano, obter aprovacao. |
202
+ | `passed` | -> deep_quality_check |
203
+ | `human_needed` | **Se $BUILDER_MODE:** Considerar PASSED, registrar para revisao final no DELIVERY.md. **Se modo normal:** Apresentar itens para teste humano, obter aprovacao. Depois -> deep_quality_check |
204
204
  | `gaps_found` | Apresentar resumo de lacunas, oferecer `/up:planejar-fase {fase} --gaps` |
205
205
  </step>
206
206
 
207
+ <step name="deep_quality_check">
208
+ **Verificacao profunda via DCRV (Detectar → Classificar → Resolver → Verificar)**
209
+
210
+ **Se $BUILDER_MODE = true:**
211
+ Rodar DCRV automaticamente (o builder controla isso via builder.md). Pular para update_roadmap.
212
+
213
+ **Se modo normal (interativo):**
214
+
215
+ Detectar se fase tem UI ou API:
216
+ ```bash
217
+ # Checar se fase criou/modificou UI
218
+ UI_FILES=$(grep -l "page.tsx\|component\|\.css\|\.tsx" "$PHASE_DIR"/*-SUMMARY.md 2>/dev/null | wc -l)
219
+ # Checar se fase criou/modificou API
220
+ API_FILES=$(grep -l "route.ts\|api/\|endpoint\|handler" "$PHASE_DIR"/*-SUMMARY.md 2>/dev/null | wc -l)
221
+ ```
222
+
223
+ Se fase tem UI ou API:
224
+
225
+ ```
226
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
227
+ UP > VERIFICACAO PROFUNDA DISPONIVEL
228
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
229
+
230
+ A fase passou na verificacao de codigo. Quer rodar verificacao profunda?
231
+
232
+ Isso testa:
233
+ - Visual: alinhamento, consistencia, design tokens
234
+ - Interacao: clica em CADA botao/link/elemento
235
+ - API: testa cada endpoint com payloads validos e invalidos
236
+
237
+ Opcoes:
238
+ 1. Rodar verificacao profunda (recomendado)
239
+ 2. Rodar apenas relatorio (sem corrigir)
240
+ 3. Pular e continuar
241
+ ```
242
+
243
+ **Se usuario escolhe 1:**
244
+ Executar workflow DCRV com scope=phase, auto_fix=true:
245
+ ```
246
+ Referencia: @~/.claude/up/workflows/dcrv.md
247
+ SCOPE=phase, PHASE_DIR={phase_dir}, PHASE_NUMBER={phase_number}, MAX_CYCLES=3, AUTO_FIX=true
248
+ ```
249
+
250
+ **Se usuario escolhe 2:**
251
+ Executar workflow DCRV com scope=light, auto_fix=false:
252
+ ```
253
+ SCOPE=light, AUTO_FIX=false
254
+ ```
255
+
256
+ **Se usuario escolhe 3:**
257
+ Pular silenciosamente.
258
+
259
+ Apos DCRV (se rodou): -> update_roadmap
260
+ </step>
261
+
207
262
  <step name="update_roadmap">
208
263
  **Marcar fase completa e atualizar todos arquivos de rastreamento:**
209
264
 
@@ -81,7 +81,7 @@ Task(
81
81
  - Criar UM UNICO plano com 1-3 tarefas focadas
82
82
  - Tarefas rapidas devem ser atomicas e autocontidas
83
83
  - Sem fase de pesquisa
84
- - Alvo ~30% uso de contexto (simples, focado)
84
+ - Alvo ~10% uso de contexto (simples, focado)
85
85
  </constraints>
86
86
 
87
87
  <output>
@@ -131,6 +131,34 @@ Apos executor retornar:
131
131
 
132
132
  ---
133
133
 
134
+ **Passo 5.5: DCRV Light (se criou UI ou API)**
135
+
136
+ Detectar se tarefa criou/modificou UI ou API:
137
+ ```bash
138
+ # Checar SUMMARY por arquivos de UI/API
139
+ UI_MATCH=$(grep -c "page.tsx\|component\|\.css\|\.tsx" "${QUICK_DIR}/${next_num}-SUMMARY.md" 2>/dev/null)
140
+ API_MATCH=$(grep -c "route.ts\|api/\|endpoint\|handler" "${QUICK_DIR}/${next_num}-SUMMARY.md" 2>/dev/null)
141
+ ```
142
+
143
+ **Se UI_MATCH > 0 ou API_MATCH > 0:**
144
+
145
+ Rodar DCRV light (1 ciclo, apenas relatorio + correcao rapida):
146
+
147
+ ```
148
+ Referencia: @~/.claude/up/workflows/dcrv.md
149
+ SCOPE=light, MAX_CYCLES=1, MAX_ISSUES_PER_CYCLE=10, AUTO_FIX=true
150
+ DCRV_DIR=${QUICK_DIR}/dcrv
151
+ ```
152
+
153
+ Reportar resultado brevemente:
154
+ ```
155
+ DCRV Light: {resolved}/{total} issues corrigidas
156
+ ```
157
+
158
+ **Se nenhum match:** Pular silenciosamente (tarefa nao tem UI/API).
159
+
160
+ ---
161
+
134
162
  **Passo 6: Atualizar STATE.md**
135
163
 
136
164
  **6a. Verificar se secao "Tarefas Rapidas Completadas" existe:**
@@ -306,9 +306,35 @@ improvements: [N]
306
306
  | Foco invisivel | [N] | [lista] |
307
307
  ```
308
308
 
309
+ ## Passo 3.5: DCRV — Detectores Automaticos
310
+
311
+ Apos o relatorio UX (que avalia experiencia e percepcao), rodar detectores automaticos que pegam issues objetivas que o UX tester pode nao ver.
312
+
313
+ **Referencia:** `@~/.claude/up/workflows/dcrv.md`
314
+
315
+ Rodar com:
316
+ ```
317
+ SCOPE=global (testar tudo)
318
+ AUTO_FIX=false (apenas detectar — implementacao sera no Passo 4)
319
+ MAX_CYCLES=1 (apenas 1 ciclo de deteccao)
320
+ PORT={porta do dev server ja rodando}
321
+ ```
322
+
323
+ Apos DCRV retornar:
324
+ 1. Ler DCRV-REPORT.md
325
+ 2. Mesclar issues do DCRV com issues do UX Review:
326
+ - Issues VIS-* do visual critic → adicionar na dimensao "Consistencia" do UX-REPORT
327
+ - Issues INT-* do exhaustive tester → adicionar na dimensao "Feedback" do UX-REPORT
328
+ - Issues API-* do api tester → adicionar como secao "Robustez API" do UX-REPORT
329
+ 3. Deduplicar: se UX review e DCRV encontraram o mesmo problema, manter a versao mais detalhada
330
+ 4. Atualizar scores do UX-REPORT com base nas issues adicionais
331
+
332
+ Isso garante que o relatorio UX e COMPLETO — experiencia (do UX tester) + objetividade (dos detectores).
333
+
309
334
  ## Passo 4: Implementar Melhorias
310
335
 
311
336
  **NAO perguntar ao usuario.** Implementar TODAS as melhorias que sao seguras de aplicar.
337
+ Isso inclui tanto issues do UX Review quanto issues do DCRV mescladas no passo anterior.
312
338
 
313
339
  ### 4.1 Classificar Issues por Implementabilidade
314
340
 
@@ -65,6 +65,53 @@ ls "$phase_dir"/*-SUMMARY.md 2>/dev/null
65
65
  Ler cada SUMMARY.md para extrair entregaveis testaveis.
66
66
  </step>
67
67
 
68
+ <step name="auto_detect_issues">
69
+ **Pre-validacao automatica antes do teste humano**
70
+
71
+ Antes de pedir ao usuario para testar, rodar detectores automaticos para corrigir issues obvias.
72
+ O humano testa um sistema ja pre-validado — nao perde tempo com botoes quebrados ou erros de console.
73
+
74
+ Detectar se fase tem UI ou API:
75
+ ```bash
76
+ UI_FILES=$(find app pages src -name "page.tsx" -o -name "*.component.tsx" 2>/dev/null | head -1)
77
+ API_FILES=$(find app/api pages/api -name "route.ts" -o -name "*.ts" 2>/dev/null | head -1)
78
+ ```
79
+
80
+ **Se tem UI ou API:**
81
+
82
+ ```
83
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
84
+ UP > PRE-VALIDACAO AUTOMATICA
85
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
86
+
87
+ Rodando detectores automaticos antes do teste manual...
88
+ ```
89
+
90
+ Rodar DCRV light:
91
+ ```
92
+ Referencia: @~/.claude/up/workflows/dcrv.md
93
+ SCOPE=phase, PHASE_DIR={phase_dir}, PHASE_NUMBER={phase_number}
94
+ MAX_CYCLES=1, AUTO_FIX=true
95
+ ```
96
+
97
+ Reportar resultado:
98
+ ```
99
+ Pre-validacao: {resolved}/{total} issues automaticas corrigidas
100
+ Pronto para teste manual.
101
+ ```
102
+
103
+ **Se DCRV encontrou issues criticas nao corrigidas:**
104
+ Avisar o usuario antes de iniciar UAT:
105
+ ```
106
+ Aviso: {N} issues criticas detectadas e NAO corrigidas automaticamente.
107
+ O teste manual pode encontrar esses problemas. Considere rodar /up:planejar-fase {fase} --gaps primeiro.
108
+
109
+ Continuar com teste manual mesmo assim? (sim/nao)
110
+ ```
111
+
112
+ **Se nao tem UI/API:** Pular silenciosamente.
113
+ </step>
114
+
68
115
  <step name="extract_tests">
69
116
  **Extrair entregaveis testaveis do SUMMARY.md:**
70
117