up-cc 0.4.1 → 0.4.3

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.3",
4
4
  "description": "Simplified spec-driven development for Claude Code, Gemini and OpenCode.",
5
5
  "bin": {
6
6
  "up-cc": "bin/install.js"
@@ -220,13 +220,37 @@ Iniciando mapeamento do codebase...
220
220
 
221
221
  ## Estagio 2: ARQUITETURA (Autonomo)
222
222
 
223
- ### 2.1 Inicializar Projeto
223
+ ### 2.0 GATE OBRIGATORIO — Inicializar .plano/
224
+
225
+ **ESTE PASSO E OBRIGATORIO E NAO PODE SER PULADO.**
226
+ **EXECUTAR ESTES COMANDOS LITERALMENTE — NAO APENAS LER.**
224
227
 
225
228
  ```bash
226
- mkdir -p .plano .plano/captures
229
+ # GATE 1: Criar .plano/ se nao existe
230
+ mkdir -p .plano .plano/captures .plano/fases .plano/issues-carryover
231
+
232
+ # GATE 2: Verificar que foi criado
233
+ ls -d .plano/ || { echo "ERRO CRITICO: .plano/ nao foi criado"; exit 1; }
234
+
235
+ # GATE 3: Registrar inicio do builder
236
+ echo "builder_started: $(date -u +%Y-%m-%dT%H:%M:%SZ)" > .plano/LOCK.md
237
+ echo "mode: ${MODE}" >> .plano/LOCK.md
238
+ echo "stage: architecture" >> .plano/LOCK.md
239
+ echo "status: running" >> .plano/LOCK.md
240
+
241
+ # GATE 4: Init git se necessario
227
242
  git init 2>/dev/null
228
243
  ```
229
244
 
245
+ **VERIFICACAO — EXECUTAR OBRIGATORIAMENTE:**
246
+ ```bash
247
+ [ -d ".plano" ] && echo "GATE OK: .plano/ existe" || echo "GATE FALHOU: .plano/ nao existe — PARAR"
248
+ ```
249
+
250
+ **Se GATE FALHOU:** NAO continuar. Algo esta errado com permissoes ou disco. Informar usuario.
251
+
252
+ ### 2.1 Inicializar Projeto (Continuacao)
253
+
230
254
  **Iniciar Dashboard automaticamente:**
231
255
  ```bash
232
256
  node "$HOME/.claude/up/dashboard/server.js" 4040 "$(pwd)/.plano" &
@@ -708,6 +732,28 @@ node "$HOME/.claude/up/bin/up-tools.cjs" commit "docs: adicionar persistência d
708
732
 
709
733
  ## Estagio 3: BUILD (Autonomo — Loop de Fases)
710
734
 
735
+ ### GATE OBRIGATORIO — Verificar Artefatos do Estagio 2
736
+
737
+ **ANTES de iniciar o build, verificar que a arquitetura produziu os artefatos obrigatorios.**
738
+ **EXECUTAR ESTES COMANDOS LITERALMENTE.**
739
+
740
+ ```bash
741
+ echo "=== GATE: Verificando artefatos do Estagio 2 ==="
742
+ [ -f ".plano/PROJECT.md" ] && echo "OK: PROJECT.md" || echo "FALTANDO: PROJECT.md"
743
+ [ -f ".plano/ROADMAP.md" ] && echo "OK: ROADMAP.md" || echo "FALTANDO: ROADMAP.md"
744
+ [ -f ".plano/REQUIREMENTS.md" ] && echo "OK: REQUIREMENTS.md" || echo "FALTANDO: REQUIREMENTS.md"
745
+ [ -f ".plano/BRIEFING.md" ] && echo "OK: BRIEFING.md" || echo "FALTANDO: BRIEFING.md"
746
+ [ -f ".plano/SYSTEM-DESIGN.md" ] && echo "OK: SYSTEM-DESIGN.md" || echo "FALTANDO: SYSTEM-DESIGN.md"
747
+ ```
748
+
749
+ **Se QUALQUER arquivo FALTANDO:**
750
+ - NAO continuar para o build
751
+ - Identificar qual agente falhou (Product Analyst? System Designer? Architect?)
752
+ - Re-executar o agente que falhou
753
+ - Repetir gate ate todos existirem
754
+
755
+ **Se todos OK:** Continuar para 3.0.
756
+
711
757
  ### 3.0 Carregar Roadmap e Inicializar Lock
712
758
 
713
759
  ```bash
@@ -1046,6 +1092,67 @@ Fase {X}: E2E — {passed}/{total} testes passaram [{bugs} bugs, {fixed} corrigi
1046
1092
  **Se nao tem UI:** Pular silenciosamente.
1047
1093
  **Se dev server falha:** Registrar e pular E2E (nao bloqueia).
1048
1094
 
1095
+ #### 3.1.5.1 Loop DCRV — Detectar, Classificar, Resolver, Verificar (Por Fase)
1096
+
1097
+ **Apos o E2E da fase**, rodar o workflow DCRV completo.
1098
+
1099
+ **Referencia:** `@~/.claude/up/workflows/dcrv.md`
1100
+
1101
+ Executar com parametros:
1102
+ ```
1103
+ SCOPE=phase
1104
+ PHASE_DIR={phase_dir}
1105
+ PHASE_NUMBER={phase_number}
1106
+ PORT={porta do dev server}
1107
+ MAX_CYCLES=3
1108
+ MAX_ISSUES_PER_CYCLE=15
1109
+ AUTO_FIX=true
1110
+ REGRESSION=false (smoke test e separado no passo 3.1.5.2)
1111
+ ```
1112
+
1113
+ O workflow DCRV cuida de:
1114
+ 1. Detectar modo (UI, API, ambos, nenhum)
1115
+ 2. Rodar detectores na ordem (Visual → API → Exhaustive)
1116
+ 3. Consolidar issue board
1117
+ 4. Dispatcher diagnostica e roteia para especialistas
1118
+ 5. Especialistas corrigem com commits atomicos
1119
+ 6. Re-verificacao das issues corrigidas
1120
+ 7. Loop ate resolver ou max ciclos
1121
+
1122
+ Issues pendentes sao salvas em `.plano/issues-carryover/` para o Quality Gate (Estagio 4).
1123
+
1124
+ ```
1125
+ Fase {X}: DCRV — {resolved}/{total} issues resolvidas [{pending} pendentes → Quality Gate]
1126
+ ```
1127
+
1128
+ #### 3.1.5.2 Smoke Test de Regressao (A partir da Fase 3)
1129
+
1130
+ **A partir da terceira fase**, fazer smoke test rapido das paginas de fases ANTERIORES.
1131
+ Objetivo: detectar regressoes causadas por mudancas em componentes compartilhados.
1132
+
1133
+ **NAO e exaustivo** — apenas:
1134
+ 1. Navegar cada rota de fases anteriores
1135
+ 2. Verificar que renderiza (nao tela branca, nao 404)
1136
+ 3. Screenshot rapido
1137
+ 4. Checar console por erros novos
1138
+
1139
+ ```
1140
+ Para cada fase anterior com UI:
1141
+ Para cada rota da fase:
1142
+ browser_navigate(url)
1143
+ browser_console_messages(level: "error")
1144
+ Se erro novo detectado → registrar como regressao
1145
+ ```
1146
+
1147
+ Se regressao encontrada:
1148
+ - Severidade: HIGH (algo que funcionava quebrou)
1149
+ - Corrigir imediatamente (nao carregar para Quality Gate)
1150
+ - Commit: `fix(fase-{X}): regressao em [pagina] causada por fase {Y}`
1151
+
1152
+ ```
1153
+ Smoke test regressao: {N} rotas anteriores | {OK} ok | {REGRESS} regressoes [{FIXED} corrigidas]
1154
+ ```
1155
+
1049
1156
  #### 3.1.6 Marcar Fase Completa
1050
1157
 
1051
1158
  ```bash
@@ -1118,16 +1225,22 @@ Voltar para 3.1.1 com a proxima fase. Sem /clear — continuar no mesmo contexto
1118
1225
  Executado APOS todas as fases do build completarem.
1119
1226
  Ciclo de avaliacao → correcao → re-avaliacao ate atingir score >= 9.0/10.
1120
1227
 
1121
- **Score Composto (6 dimensoes):**
1228
+ **Score Composto (9 dimensoes):**
1122
1229
 
1123
1230
  | Dimensao | Peso | Como mede |
1124
1231
  |----------|------|-----------|
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) |
1232
+ | Funcionalidade | 15% | Requisitos atendidos / total (REQUIREMENTS.md) |
1233
+ | Blind Validation | 15% | Score do BLIND-VALIDATION.md |
1234
+ | Visual Quality | 12% | Score do up-visual-critic (VISUAL-REPORT.md) |
1235
+ | Exhaustive | 10% | Pass rate do up-exhaustive-tester (EXHAUSTIVE-REPORT.md) |
1236
+ | API Robustez | 8% | Pass rate do up-api-tester (API-REPORT.md) |
1237
+ | E2E | 10% | Testes passando / total (Playwright) |
1238
+ | UX | 10% | Score do UX tester (6 sub-dimensoes) |
1239
+ | Responsividade | 10% | Score do mobile-first |
1240
+ | Codigo | 10% | Score do code reviewer + melhorias |
1241
+
1242
+ **Nota:** Se projeto nao tem UI, redistribuir pesos de Visual/Exhaustive/UX/Responsividade para API/Funcionalidade/Codigo.
1243
+ **Nota:** Se projeto nao tem API, redistribuir peso de API para outros.
1131
1244
 
1132
1245
  **Limites de seguranca:**
1133
1246
  - Max 5 ciclos de refinamento
@@ -1445,24 +1558,35 @@ Blind Validation: {score}% | {passed} PASS | {failed} FAIL | {partial} PARTIAL
1445
1558
  Agregar scores de todos os avaliadores:
1446
1559
 
1447
1560
  ```
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
1561
+ Funcionalidade (15%): requisitos [x] / total no REQUIREMENTS.md → 0-10
1562
+ Blind Valid. (15%): score do BLIND-VALIDATION.md → 0-10
1563
+ Visual (12%): score do VISUAL-REPORT.md → 0-10
1564
+ Exhaustive (10%): pass rate do EXHAUSTIVE-REPORT.md → 0-10
1565
+ API (8%): pass rate do API-REPORT.md → 0-10
1566
+ E2E (10%): testes passaram / total no E2E mais recente → 0-10
1451
1567
  UX (10%): score do UX-REPORT.md → 0-10
1452
1568
  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
1569
+ Codigo (10%): score do CODE-REVIEW + melhorias → 0-10
1455
1570
 
1456
1571
  **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)
1572
+ 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
1573
 
1459
1574
  **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)
1575
+ 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
1576
 
1462
1577
  A dimensao "Fidelidade" usa o up-clone-verifier: compara features (funcional) + visual contra original.
1463
1578
  ```
1464
1579
 
1465
- **Se algum avaliador nao rodou** (ex: sem UI, sem E2E): redistribuir peso proporcionalmente entre os que rodaram.
1580
+ **Se algum avaliador nao rodou** (ex: sem UI, sem E2E, sem API): redistribuir peso proporcionalmente entre os que rodaram.
1581
+
1582
+ **Issues Carryover das Fases:**
1583
+
1584
+ Antes de iniciar o Quality Gate, carregar issues pendentes do loop DCRV por fase:
1585
+ ```bash
1586
+ ls .plano/issues-carryover/*.json 2>/dev/null
1587
+ ```
1588
+ Estas issues ja foram detectadas e tentadas — se ainda existem, sao as mais dificeis.
1589
+ Incluir no board de issues do Quality Gate com flag `carryover: true`.
1466
1590
 
1467
1591
  ```
1468
1592
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -1471,12 +1595,15 @@ A dimensao "Fidelidade" usa o up-clone-verifier: compara features (funcional) +
1471
1595
 
1472
1596
  | Dimensao | Score | Peso | Contribuicao |
1473
1597
  |----------|-------|------|-------------|
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] |
1598
+ | Funcionalidade | [N]/10 | 15% | [X] |
1599
+ | Blind Validation | [N]/10 | 15% | [X] |
1600
+ | Visual Quality | [N]/10 | 12% | [X] |
1601
+ | Exhaustive | [N]/10 | 10% | [X] |
1602
+ | API Robustez | [N]/10 | 8% | [X] |
1603
+ | E2E | [N]/10 | 10% | [X] |
1604
+ | UX | [N]/10 | 10% | [X] |
1605
+ | Responsividade | [N]/10 | 10% | [X] |
1606
+ | Codigo | [N]/10 | 10% | [X] |
1480
1607
  | **TOTAL** | **[SCORE]/10** | | |
1481
1608
  ```
1482
1609
 
@@ -1497,13 +1624,28 @@ Identificar top gaps (dimensoes com menor score):
1497
1624
  - Extrair issues nao corrigidas / requisitos pendentes
1498
1625
  - Priorizar por impacto no score
1499
1626
 
1500
- **Implementar correcoes:**
1627
+ **Rodar 3 detectores no projeto INTEIRO (nao apenas por fase):**
1628
+
1629
+ Ordem: Visual Critic → API Tester → Exhaustive Tester
1630
+
1631
+ Cada detector roda em TODAS as paginas/rotas, detectando:
1632
+ - Issues novas (nao encontradas no DCRV por fase)
1633
+ - Regressoes cross-fase (inconsistencia entre paginas de fases diferentes)
1634
+ - Issues carryover (pendentes das fases) — re-verificar se ainda existem
1635
+
1636
+ **Implementar correcoes via Dispatcher (mesmo protocolo do DCRV por fase):**
1637
+ - Issues visuais (VIS-*): diagnosticar → up-frontend-specialist
1638
+ - Issues de interacao (INT-*): diagnosticar → up-frontend-specialist ou up-backend-specialist
1639
+ - Issues de API (API-*): diagnosticar → up-backend-specialist ou up-database-specialist
1501
1640
  - Issues de codigo: planejar mini-fase → executar → commit
1502
1641
  - Issues de UX: aplicar fixes (mesmo processo do UX tester)
1503
1642
  - Issues de responsividade: aplicar fixes (mesmo processo do mobile-first)
1504
1643
  - Requisitos pendentes: planejar mini-fase → executar
1505
1644
  - Issues de E2E: corrigir bugs (max 5 tentativas)
1506
1645
 
1646
+ **Cap de issues por ciclo: max 20** (mais generoso que o DCRV por fase).
1647
+ Prioridade: critical > high > medium. Low nunca entra.
1648
+
1507
1649
  Apos implementar:
1508
1650
 
1509
1651
  ```
@@ -2218,6 +2360,9 @@ Com 1M de contexto, a maioria dos projetos cabe sem /clear. Mas monitore:
2218
2360
  - [ ] Estagio 3: Todas as fases verificadas
2219
2361
  - [ ] Estagio 3: Fases com UI testadas via Playwright (E2E-RESULTS.md)
2220
2362
  - [ ] Estagio 3: Bugs E2E corrigidos (quando possivel)
2363
+ - [ ] Estagio 3: DCRV por fase executado (Visual Critic + Exhaustive Tester + API Tester)
2364
+ - [ ] Estagio 3: Issues DCRV corrigidas via dispatcher (max 3 ciclos por fase)
2365
+ - [ ] Estagio 3: Smoke test de regressao em fases anteriores (a partir da fase 3)
2221
2366
  - [ ] Estagio 3: Reassessment apos cada fase (roadmap re-avaliado)
2222
2367
  - [ ] Estagio 3: Commits atomicos por tarefa
2223
2368
  - [ ] Estagio 3: LOCK.md atualizado a cada transicao de estado
@@ -2229,7 +2374,11 @@ Com 1M de contexto, a maioria dos projetos cabe sem /clear. Mas monitore:
2229
2374
  - [ ] Estagio 4: UX-REPORT.md gerado com scores e screenshots
2230
2375
  - [ ] Estagio 4: Mobile First executado (responsividade verificada em 3 viewports)
2231
2376
  - [ ] Estagio 4: MOBILE-REPORT.md gerado com score e screenshots comparativos
2232
- - [ ] Estagio 4: Score composto calculado (6 dimensoes)
2377
+ - [ ] Estagio 4: Visual Critic global executado (VISUAL-REPORT.md)
2378
+ - [ ] Estagio 4: Exhaustive Tester global executado (EXHAUSTIVE-REPORT.md)
2379
+ - [ ] Estagio 4: API Tester global executado (API-REPORT.md)
2380
+ - [ ] Estagio 4: Issues carryover das fases processadas
2381
+ - [ ] Estagio 4: Score composto calculado (9 dimensoes)
2233
2382
  - [ ] Estagio 4: Quality gate loop executado (ate score >= 9.0 ou max 5 ciclos)
2234
2383
  - [ ] Estagio 4: DevOps artifacts gerados (Dockerfile, CI/CD, .env.example, seed)
2235
2384
  - [ ] 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