up-cc 0.14.0 → 0.16.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.
Files changed (171) hide show
  1. package/package.json +9 -9
  2. package/{agents → up/agents}/up-architecture-supervisor.md +1 -1
  3. package/{agents → up/agents}/up-audit-supervisor.md +1 -1
  4. package/{agents → up/agents}/up-backend-specialist.md +13 -3
  5. package/{agents → up/agents}/up-chief-architect.md +1 -1
  6. package/{agents → up/agents}/up-chief-engineer.md +1 -1
  7. package/{agents → up/agents}/up-chief-operations.md +2 -2
  8. package/{agents → up/agents}/up-chief-product.md +1 -1
  9. package/{agents → up/agents}/up-chief-quality.md +1 -1
  10. package/{agents → up/agents}/up-code-reviewer.md +2 -2
  11. package/{agents → up/agents}/up-database-specialist.md +13 -3
  12. package/{agents → up/agents}/up-execution-supervisor.md +4 -4
  13. package/{agents → up/agents}/up-executor.md +107 -9
  14. package/{agents → up/agents}/up-frontend-specialist.md +13 -3
  15. package/{agents → up/agents}/up-operations-supervisor.md +1 -1
  16. package/{agents → up/agents}/up-planejador.md +17 -1
  17. package/{agents → up/agents}/up-planning-supervisor.md +3 -3
  18. package/{agents → up/agents}/up-product-supervisor.md +1 -1
  19. package/{agents → up/agents}/up-project-ceo.md +2 -2
  20. package/{agents → up/agents}/up-quality-supervisor.md +1 -1
  21. package/{agents → up/agents}/up-system-designer.md +2 -2
  22. package/{agents → up/agents}/up-verification-supervisor.md +1 -1
  23. package/{agents → up/agents}/up-visual-critic.md +1 -1
  24. package/{bin → up/bin}/lib/core.cjs +132 -0
  25. package/{bin → up/bin}/up-tools.cjs +1341 -3
  26. package/up/commands/adicionar-fase.md +47 -0
  27. package/up/commands/configurar.md +219 -0
  28. package/{commands → up/commands}/depurar.md +1 -1
  29. package/{commands → up/commands}/planejar-fase.md +4 -2
  30. package/up/templates/config.json +8 -0
  31. package/up/workflows/build.md +650 -0
  32. package/{workflows → up/workflows}/builder.md +766 -35
  33. package/{workflows → up/workflows}/executar-plano.md +69 -0
  34. package/{workflows → up/workflows}/governance.md +3 -3
  35. package/{workflows → up/workflows}/plan.md +214 -29
  36. package/{workflows → up/workflows}/planejar-fase.md +63 -5
  37. package/commands/adicionar-fase.md +0 -33
  38. package/commands/configurar.md +0 -106
  39. package/templates/config.json +0 -6
  40. package/workflows/build.md +0 -431
  41. /package/{agents → up/agents}/up-analista-codigo.md +0 -0
  42. /package/{agents → up/agents}/up-api-tester.md +0 -0
  43. /package/{agents → up/agents}/up-arquiteto.md +0 -0
  44. /package/{agents → up/agents}/up-auditor-modernidade.md +0 -0
  45. /package/{agents → up/agents}/up-auditor-performance.md +0 -0
  46. /package/{agents → up/agents}/up-auditor-ux.md +0 -0
  47. /package/{agents → up/agents}/up-blind-validator.md +0 -0
  48. /package/{agents → up/agents}/up-clone-crawler.md +0 -0
  49. /package/{agents → up/agents}/up-clone-design-extractor.md +0 -0
  50. /package/{agents → up/agents}/up-clone-feature-mapper.md +0 -0
  51. /package/{agents → up/agents}/up-clone-prd-writer.md +0 -0
  52. /package/{agents → up/agents}/up-clone-verifier.md +0 -0
  53. /package/{agents → up/agents}/up-consolidador-ideias.md +0 -0
  54. /package/{agents → up/agents}/up-delivery-auditor.md +0 -0
  55. /package/{agents → up/agents}/up-depurador.md +0 -0
  56. /package/{agents → up/agents}/up-devops-agent.md +0 -0
  57. /package/{agents → up/agents}/up-exhaustive-tester.md +0 -0
  58. /package/{agents → up/agents}/up-mapeador-codigo.md +0 -0
  59. /package/{agents → up/agents}/up-pesquisador-mercado.md +0 -0
  60. /package/{agents → up/agents}/up-pesquisador-projeto.md +0 -0
  61. /package/{agents → up/agents}/up-planning-auditor.md +0 -0
  62. /package/{agents → up/agents}/up-product-analyst.md +0 -0
  63. /package/{agents → up/agents}/up-qa-agent.md +0 -0
  64. /package/{agents → up/agents}/up-requirements-validator.md +0 -0
  65. /package/{agents → up/agents}/up-roteirista.md +0 -0
  66. /package/{agents → up/agents}/up-security-reviewer.md +0 -0
  67. /package/{agents → up/agents}/up-sintetizador-melhorias.md +0 -0
  68. /package/{agents → up/agents}/up-sintetizador.md +0 -0
  69. /package/{agents → up/agents}/up-technical-writer.md +0 -0
  70. /package/{agents → up/agents}/up-verificador.md +0 -0
  71. /package/{bin → up/bin}/install.js +0 -0
  72. /package/{bin → up/bin}/up-instrument.cjs +0 -0
  73. /package/{commands → up/commands}/adicionar-testes.md +0 -0
  74. /package/{commands → up/commands}/ajuda.md +0 -0
  75. /package/{commands → up/commands}/atualizar.md +0 -0
  76. /package/{commands → up/commands}/build.md +0 -0
  77. /package/{commands → up/commands}/clone-builder.md +0 -0
  78. /package/{commands → up/commands}/custos.md +0 -0
  79. /package/{commands → up/commands}/dashboard.md +0 -0
  80. /package/{commands → up/commands}/discutir-fase.md +0 -0
  81. /package/{commands → up/commands}/executar-fase.md +0 -0
  82. /package/{commands → up/commands}/ideias.md +0 -0
  83. /package/{commands → up/commands}/iniciar.md +0 -0
  84. /package/{commands → up/commands}/mapear-codigo.md +0 -0
  85. /package/{commands → up/commands}/melhorias.md +0 -0
  86. /package/{commands → up/commands}/mobile-first.md +0 -0
  87. /package/{commands → up/commands}/modo-builder.md +0 -0
  88. /package/{commands → up/commands}/novo-projeto.md +0 -0
  89. /package/{commands → up/commands}/onboard.md +0 -0
  90. /package/{commands → up/commands}/pausar.md +0 -0
  91. /package/{commands → up/commands}/plan.md +0 -0
  92. /package/{commands → up/commands}/progresso.md +0 -0
  93. /package/{commands → up/commands}/rapido.md +0 -0
  94. /package/{commands → up/commands}/remover-fase.md +0 -0
  95. /package/{commands → up/commands}/resetar.md +0 -0
  96. /package/{commands → up/commands}/retomar.md +0 -0
  97. /package/{commands → up/commands}/saude.md +0 -0
  98. /package/{commands → up/commands}/testar.md +0 -0
  99. /package/{commands → up/commands}/ux-tester.md +0 -0
  100. /package/{commands → up/commands}/verificar-trabalho.md +0 -0
  101. /package/{hooks → up/hooks}/up-context-monitor.js +0 -0
  102. /package/{hooks → up/hooks}/up-statusline.js +0 -0
  103. /package/{references → up/references}/audit-modernidade.md +0 -0
  104. /package/{references → up/references}/audit-performance.md +0 -0
  105. /package/{references → up/references}/audit-ux.md +0 -0
  106. /package/{references → up/references}/blueprints/audit.md +0 -0
  107. /package/{references → up/references}/blueprints/booking.md +0 -0
  108. /package/{references → up/references}/blueprints/community.md +0 -0
  109. /package/{references → up/references}/blueprints/crm.md +0 -0
  110. /package/{references → up/references}/blueprints/dashboard.md +0 -0
  111. /package/{references → up/references}/blueprints/data-management.md +0 -0
  112. /package/{references → up/references}/blueprints/ecommerce.md +0 -0
  113. /package/{references → up/references}/blueprints/marketplace.md +0 -0
  114. /package/{references → up/references}/blueprints/notifications.md +0 -0
  115. /package/{references → up/references}/blueprints/saas-users.md +0 -0
  116. /package/{references → up/references}/blueprints/settings.md +0 -0
  117. /package/{references → up/references}/checkpoints.md +0 -0
  118. /package/{references → up/references}/engineering-principles-compressed.md +0 -0
  119. /package/{references → up/references}/engineering-principles.md +0 -0
  120. /package/{references → up/references}/git-integration.md +0 -0
  121. /package/{references → up/references}/governance-rules-compressed.md +0 -0
  122. /package/{references → up/references}/governance-rules.md +0 -0
  123. /package/{references → up/references}/production-requirements-compressed.md +0 -0
  124. /package/{references → up/references}/production-requirements.md +0 -0
  125. /package/{references → up/references}/questioning.md +0 -0
  126. /package/{references → up/references}/rework-limits-compressed.md +0 -0
  127. /package/{references → up/references}/rework-limits.md +0 -0
  128. /package/{references → up/references}/severity-levels.md +0 -0
  129. /package/{references → up/references}/state-persistence.md +0 -0
  130. /package/{references → up/references}/ui-brand.md +0 -0
  131. /package/{templates → up/templates}/audit-plan.md +0 -0
  132. /package/{templates → up/templates}/audit-report.md +0 -0
  133. /package/{templates → up/templates}/builder-defaults.md +0 -0
  134. /package/{templates → up/templates}/checklist.md +0 -0
  135. /package/{templates → up/templates}/continue-here.md +0 -0
  136. /package/{templates → up/templates}/delivery.md +0 -0
  137. /package/{templates → up/templates}/design-tokens.md +0 -0
  138. /package/{templates → up/templates}/owner-profile.md +0 -0
  139. /package/{templates → up/templates}/owner.md +0 -0
  140. /package/{templates → up/templates}/pending.md +0 -0
  141. /package/{templates → up/templates}/plan-ready.md +0 -0
  142. /package/{templates → up/templates}/project.md +0 -0
  143. /package/{templates → up/templates}/report.md +0 -0
  144. /package/{templates → up/templates}/requirements.md +0 -0
  145. /package/{templates → up/templates}/roadmap.md +0 -0
  146. /package/{templates → up/templates}/state.md +0 -0
  147. /package/{templates → up/templates}/suggestion.md +0 -0
  148. /package/{templates → up/templates}/summary.md +0 -0
  149. /package/{workflows → up/workflows}/adicionar-fase.md +0 -0
  150. /package/{workflows → up/workflows}/builder-e2e.md +0 -0
  151. /package/{workflows → up/workflows}/ceo-intake.md +0 -0
  152. /package/{workflows → up/workflows}/ceo-updates.md +0 -0
  153. /package/{workflows → up/workflows}/clone-builder.md +0 -0
  154. /package/{workflows → up/workflows}/dcrv.md +0 -0
  155. /package/{workflows → up/workflows}/discutir-fase.md +0 -0
  156. /package/{workflows → up/workflows}/executar-fase.md +0 -0
  157. /package/{workflows → up/workflows}/ideias.md +0 -0
  158. /package/{workflows → up/workflows}/iniciar.md +0 -0
  159. /package/{workflows → up/workflows}/mapear-codigo.md +0 -0
  160. /package/{workflows → up/workflows}/melhorias.md +0 -0
  161. /package/{workflows → up/workflows}/mobile-first.md +0 -0
  162. /package/{workflows → up/workflows}/novo-projeto.md +0 -0
  163. /package/{workflows → up/workflows}/onboarding.md +0 -0
  164. /package/{workflows → up/workflows}/pausar.md +0 -0
  165. /package/{workflows → up/workflows}/progresso.md +0 -0
  166. /package/{workflows → up/workflows}/rapido.md +0 -0
  167. /package/{workflows → up/workflows}/remover-fase.md +0 -0
  168. /package/{workflows → up/workflows}/resetar.md +0 -0
  169. /package/{workflows → up/workflows}/retomar.md +0 -0
  170. /package/{workflows → up/workflows}/ux-tester.md +0 -0
  171. /package/{workflows → up/workflows}/verificar-trabalho.md +0 -0
@@ -56,23 +56,83 @@ Neste modo, TODOS os agentes devem:
56
56
  </core_principle>
57
57
 
58
58
  <model_handling>
59
- ## Modelos (v0.6.0+)
59
+ ## Modelos (v0.9.0+)
60
60
 
61
- **O runtime decide o modelo.** O UP nao especifica `model=opus/sonnet/haiku` em nenhum spawn de agente.
61
+ **Model routing configuravel via `config.json`.** Dois eixos:
62
62
 
63
- - Em Claude Code, os agentes usam o modelo default (Opus 4.6) ou o que o usuario configurou via `/model`.
64
- - Em OpenCode, cada agente usa o modelo configurado no `opencode.json`.
65
- - Em Gemini CLI, usa o modelo do runtime.
63
+ 1. **Por papel** (planning/execution/governance/review) preset estatico
64
+ 2. **Por complexidade da task** (simple/standard/complex) classifier dinamico (Wave 5+)
66
65
 
67
- Antes v0.5.x tinha routing por papel (planning=opus, execution=sonnet). Isso foi removido em v0.6.0 para simplicidade e portabilidade entre runtimes.
66
+ ### Como funciona
68
67
 
69
- **Planos sao sempre gerados em nivel detalhado (Sonnet-ready)** independente do modelo que vai executar. Assim funcionam em qualquer runtime.
68
+ **Default (per-role, comportamento v0.9):**
69
+ ```bash
70
+ MODEL=$(node "$HOME/.claude/up/bin/up-tools.cjs" config resolve-model {agent-name} --raw)
71
+ ```
72
+
73
+ **Wave 5+ (complexity routing):** quando spawn e contextual a um plano, use:
74
+ ```bash
75
+ MODEL=$(node "$HOME/.claude/up/bin/up-tools.cjs" resolve-model-for-plan "$PLAN" {agent-name} --raw)
76
+ ```
77
+ Isso le `config.modelos.routing` e decide:
78
+ - `per-role` (default) → usa preset estatico
79
+ - `complexity` → usa classifier do plano (haiku/sonnet/opus por score)
80
+ - `complexity-with-cap` → complexity, mas capa por preset (orcamento)
81
+
82
+ Se retorna `default`: nao passar `model=` (runtime decide).
83
+ Se retorna `opus|sonnet|haiku`: passar no spawn.
84
+
85
+ ### Presets disponiveis (per-role)
86
+
87
+ | Preset | Planning | Execution | Governance | Review |
88
+ |--------|----------|-----------|------------|--------|
89
+ | `runtime` | default | default | default | default |
90
+ | `opus-completo` | opus | opus | opus | opus |
91
+ | `hibrido` | opus | sonnet | opus | opus |
92
+ | `sonnet-completo` | sonnet | sonnet | sonnet | sonnet |
93
+ | `economico` | sonnet | sonnet | haiku | sonnet |
94
+ | `custom` | manual | manual | manual | manual |
95
+
96
+ ### Routing modes (complexity)
97
+
98
+ | Mode | Comportamento |
99
+ |------|---------------|
100
+ | `per-role` (default) | Preset estatico, nao olha o plano |
101
+ | `complexity` | Classifier do plano decide (score 0-2 haiku, 3-5 sonnet, 6+ opus) |
102
+ | `complexity-with-cap` | Classifier sugere, mas preset capa (ex: per-role=sonnet, complexity=opus → usa sonnet) |
103
+
104
+ ### Papeis dos agentes
105
+
106
+ - **Planning:** planejador, arquiteto, product-analyst, system-designer, pesquisador-projeto, sintetizador, mapeador-codigo, requirements-validator
107
+ - **Execution:** executor, frontend/backend/database-specialist, devops-agent, technical-writer
108
+ - **Governance:** todos supervisores, chiefs, CEO, delivery-auditor, planning-auditor
109
+ - **Review:** verificador, blind-validator, code-reviewer, security-reviewer, visual-critic, exhaustive-tester, api-tester, qa-agent, auditores, sintetizador-melhorias
110
+
111
+ ### Default
112
+
113
+ Sem `modelos` no config.json = `runtime` (nenhum override). Identico ao v0.6.0.
114
+
115
+ **Planos sao sempre gerados em nivel detalhado (Sonnet-ready)** independente do modelo que vai executar.
116
+
117
+ ### Ao spawnar qualquer agente
118
+
119
+ **Spawn sem plano (CEO, planejador, supervisores cross-fase):**
120
+ ```bash
121
+ MODEL=$(node "$HOME/.claude/up/bin/up-tools.cjs" config resolve-model up-executor --raw)
122
+ ```
123
+
124
+ **Spawn com plano (specialist, executor, verificador por fase) — Wave 5+:**
125
+ ```bash
126
+ MODEL=$(node "$HOME/.claude/up/bin/up-tools.cjs" resolve-model-for-plan "$PLAN" up-executor --raw)
127
+ ```
70
128
 
71
- **Ao spawnar qualquer agente:**
72
129
  ```python
73
- Task(subagent_type="up-executor", prompt="...")
130
+ # Se MODEL != "default", passar model=
131
+ Task(subagent_type="up-executor", model="{MODEL if MODEL != 'default' else omit}", prompt="...")
74
132
  ```
75
- Sem parametro `model`.
133
+
134
+ **IMPORTANTE:** Se model=default (ou nao configurado), NAO passar parametro model no spawn.
135
+ Isso mantem compatibilidade total com v0.6.0 e com runtimes que nao suportam model routing.
76
136
  </model_handling>
77
137
 
78
138
  <governance>
@@ -92,6 +152,28 @@ OPERATIONAL AGENTS (36) — fazem o trabalho
92
152
 
93
153
  **Referencia obrigatoria:** `@~/.claude/up/workflows/governance.md`
94
154
 
155
+ **REGRA INVIOLAVEL — GOVERNANCA OBRIGATORIA COM GATES VERIFICAVEIS:**
156
+
157
+ A governanca NAO PODE ser pulada, otimizada, resumida ou ignorada.
158
+ Para IMPEDIR que o LLM otimize colapsando passos, cada etapa critica tem um **GATE** —
159
+ um check de arquivo executado via Bash que BLOQUEIA o avanço se a etapa anterior nao produziu evidencia.
160
+
161
+ **Mecanismo anti-colapso:**
162
+ 1. Cada supervisor DEVE escrever no `approvals.log` ANTES de retornar
163
+ 2. Cada GATE verifica que o `approvals.log` tem a entry esperada
164
+ 3. Se o gate falha → o builder NAO avanca → spawna o agente faltante
165
+ 4. O GATE E (final) verifica TODOS os 5 checks de uma vez
166
+
167
+ **Pipeline obrigatorio por fase no Estagio 3:**
168
+ ```
169
+ Planejador → Specialist → [GATE A] → EXECUTION-SUPERVISOR → [GATE B] → Code Reviewer → Verificador → [GATE C] → VERIFICATION-SUPERVISOR → [GATE D] → E2E + DCRV → CHIEF-ENGINEER → [GATE E] → Marcar completa
170
+ ```
171
+
172
+ Cada GATE e um `bash` check que le `.plano/governance/approvals.log`.
173
+ Se a entry esperada nao existe, o builder PARA e spawna o agente faltante.
174
+
175
+ **NUNCA combinar dois agentes em um spawn. NUNCA pular um GATE.**
176
+
95
177
  **Regras gerais:**
96
178
  1. Todo output de agente operacional passa por supervisor
97
179
  2. Toda area tem chief que consolida
@@ -223,7 +305,6 @@ Spawnar CEO com contexto:
223
305
  ```python
224
306
  Agent(
225
307
  subagent_type="up-project-ceo",
226
- model="opus",
227
308
  prompt=f"""
228
309
  Conduza intake para novo projeto UP.
229
310
 
@@ -664,7 +745,7 @@ Modo autonomo — NAO pergunte nada.
664
745
  - .plano/BRIEFING.md (Briefing e stack)
665
746
  - .plano/PRODUCT-ANALYSIS.md (Analise de produto — features, personas, modulos)
666
747
  - .plano/pesquisa/SUMMARY.md (Pesquisa, se existir)
667
- - $HOME/.claude/up/references/production-requirements.md (Requisitos universais)
748
+ - $HOME/.claude/up/references/production-requirements-compressed.md (Requisitos universais)
668
749
  - $HOME/.claude/up/references/blueprints/ (Blueprints — ler os relevantes ao dominio)
669
750
  {BROWNFIELD EXTRA:}
670
751
  - .plano/codebase/STACK.md (Stack existente)
@@ -882,7 +963,15 @@ echo "=== GATE: Verificando artefatos do Estagio 2 ==="
882
963
 
883
964
  **Se todos OK:** Continuar para 3.0.
884
965
 
885
- ### 3.0 Carregar Roadmap e Inicializar Lock
966
+ ### 3.0 Carregar Roadmap e Inicializar Lock + Governance
967
+
968
+ **Inicializar diretorio de governanca (OBRIGATORIO):**
969
+ ```bash
970
+ mkdir -p .plano/governance
971
+ touch .plano/governance/approvals.log
972
+ touch .plano/governance/technical-debt.log
973
+ echo "# Governance initialized at $(date -u +%Y-%m-%dT%H:%M:%SZ)" >> .plano/governance/approvals.log
974
+ ```
886
975
 
887
976
  ```bash
888
977
  ROADMAP=$(node "$HOME/.claude/up/bin/up-tools.cjs" roadmap analyze)
@@ -930,7 +1019,56 @@ sed -i "s/^phase: .*/phase: ${PHASE_NUMBER}/" .plano/LOCK.md
930
1019
  sed -i "s/^updated: .*/updated: $(date -u +%Y-%m-%dT%H:%M:%SZ)/" .plano/LOCK.md
931
1020
  ```
932
1021
 
933
- ### 3.1 Loop Principal
1022
+ ### 3.1 Loop Principal — SEPARACAO RIGIDA DE AGENTES
1023
+
1024
+ **REGRA ANTI-COLAPSO (ler com atencao):**
1025
+
1026
+ O LLM tende a otimizar colapsando passos — dar ao mesmo agente tarefas de planejar + executar,
1027
+ ou pular supervisores por parecer "overhead". Isso e PROIBIDO.
1028
+
1029
+ **Cada passo abaixo DEVE ser um Agent() ou Task() SEPARADO.**
1030
+ **NUNCA combinar dois passos em um unico spawn.**
1031
+ **NUNCA instruir um agente a fazer o trabalho de outro.**
1032
+
1033
+ Exemplo do que NAO fazer:
1034
+ ```
1035
+ # ERRADO — combina planejamento + execucao no mesmo agente
1036
+ Task(subagent_type="up-planejador", prompt="Planejar E executar a fase...")
1037
+
1038
+ # ERRADO — pula supervisor
1039
+ Task(subagent_type="up-executor", prompt="Executar e verificar...")
1040
+ ```
1041
+
1042
+ Exemplo correto:
1043
+ ```
1044
+ # CERTO — cada agente faz UMA coisa
1045
+ Task(subagent_type="up-planejador", prompt="Planejar fase...")
1046
+ # Depois:
1047
+ Task(subagent_type="up-executor", prompt="Executar plano...")
1048
+ # Depois:
1049
+ Agent(subagent_type="up-execution-supervisor", prompt="Revisar execucao...")
1050
+ ```
1051
+
1052
+ **Pipeline por fase — 9 passos sequenciais, NENHUM pode ser pulado:**
1053
+
1054
+ ```
1055
+ PASSO 1: up-planejador → gera PLAN.md
1056
+ PASSO 2: up-{specialist} → gera SUMMARY.md
1057
+ --- GATE A: verificar SUMMARY.md existe ---
1058
+ PASSO 3: up-execution-supervisor → gera EXEC-REVIEW em approvals.log
1059
+ --- GATE B: verificar approvals.log tem entry pra fase ---
1060
+ PASSO 4: up-code-reviewer → gera CODE-REVIEW.md
1061
+ PASSO 5: up-verificador → gera VERIFICATION.md
1062
+ --- GATE C: verificar VERIFICATION.md existe ---
1063
+ PASSO 6: up-verification-supervisor → gera entry em approvals.log
1064
+ --- GATE D: verificar approvals.log tem 2 entries pra fase ---
1065
+ PASSO 7: E2E + DCRV → gera E2E-RESULTS.md
1066
+ PASSO 8: up-chief-engineer → gera entry em approvals.log
1067
+ --- GATE E: verificar approvals.log tem 3 entries pra fase (exec-sup + verif-sup + chief) ---
1068
+ PASSO 9: Marcar completa
1069
+ ```
1070
+
1071
+ **GATES sao checks de arquivo executados via Bash. Se o gate falha, NAO avance.**
934
1072
 
935
1073
  Para cada fase no ROADMAP (da primeira a ultima):
936
1074
 
@@ -1060,16 +1198,69 @@ Para cada plano, ler o frontmatter e detectar o dominio:
1060
1198
 
1061
1199
  Para cada wave, spawnar agentes especializados em paralelo (se parallelization=true):
1062
1200
 
1201
+ **Wave 2 (v0.11+) — pre-inline context:**
1202
+ ANTES do spawn, montar o bloco de contexto via `up-tools.cjs context`.
1203
+ Isso injeta PLAN, STATE, config, governance comprimida e engineering
1204
+ principles direto no prompt. O agente NAO precisa fazer Read desses
1205
+ arquivos — economiza ~30k tokens por spawn.
1206
+
1207
+ ```bash
1208
+ PLAN_FILE="{phase_dir}/{plan_file}"
1209
+
1210
+ # Wave 5+ — decidir agent type ANTES (necessario pra manifest e routing)
1211
+ SPECIALIST_AGENT="up-executor" # ou frontend/backend/database baseado em type do plano
1212
+
1213
+ # Wave 6+ — manifest carrega so refs relevantes ao papel do agente
1214
+ CTX=$(node "$HOME/.claude/up/bin/up-tools.cjs" context \
1215
+ --plan "${PLAN_FILE}" \
1216
+ --state \
1217
+ --config \
1218
+ --manifest "${SPECIALIST_AGENT}" \
1219
+ --raw)
1220
+
1221
+ # Wave 5+ — complexity-aware model routing per plan
1222
+ MODEL=$(node "$HOME/.claude/up/bin/up-tools.cjs" resolve-model-for-plan \
1223
+ "${PLAN_FILE}" "${SPECIALIST_AGENT}" --raw)
1224
+ CLASSIFY=$(node "$HOME/.claude/up/bin/up-tools.cjs" classify-task "${PLAN_FILE}" --raw)
1225
+ COMPLEXITY=$(echo "$CLASSIFY" | grep -oE '"complexity"[^,]+' | grep -oE '"(simple|standard|complex)"' | tr -d '"')
1226
+ SCORE=$(echo "$CLASSIFY" | grep -oE '"score"\s*:\s*[0-9]+' | grep -oE '[0-9]+')
1227
+
1228
+ # Wave 6+ — Iron rule: validar plan ANTES de spawnar
1229
+ VALIDATE=$(node "$HOME/.claude/up/bin/up-tools.cjs" validate-plan "${PLAN_FILE}" --raw)
1230
+ VALIDATE_PASS=$(echo "$VALIDATE" | grep -oE '"pass"\s*:\s*(true|false)' | grep -oE '(true|false)')
1231
+ if [ "$VALIDATE_PASS" = "false" ]; then
1232
+ echo "IRON RULE FALHOU: Plan ${PLAN_FILE} nao passou validate-plan."
1233
+ echo "$VALIDATE" | grep -A 20 'suggestions'
1234
+ echo "Voltando pro planejador pra refazer."
1235
+ # Re-spawn planejador com VALIDATE como contexto. NAO seguir pro spawn de specialist.
1236
+ exit 1
1237
+ fi
1238
+
1239
+ # Log decisao (outcome marcado depois do retorno)
1240
+ node "$HOME/.claude/up/bin/up-tools.cjs" routing-log \
1241
+ --plan "${PLAN_FILE}" \
1242
+ --agent "${SPECIALIST_AGENT}" \
1243
+ --model "${MODEL}" \
1244
+ --complexity "${COMPLEXITY}" \
1245
+ --score "${SCORE}" \
1246
+ --outcome pending
1247
+ ```
1248
+
1249
+ Spawn:
1250
+
1063
1251
  ```
1064
1252
  Task(
1065
1253
  subagent_type="{up-frontend-specialist | up-backend-specialist | up-database-specialist | up-executor}",
1066
- ,
1067
- prompt="
1254
+ prompt=f"""
1068
1255
  <objective>
1069
1256
  Executar plano {plan_number} da fase {phase_number}-{phase_name}.
1070
1257
  Commitar cada tarefa atomicamente. Criar SUMMARY.md. Atualizar STATE.md e ROADMAP.md.
1071
1258
  </objective>
1072
1259
 
1260
+ <prompt_context>
1261
+ {CTX}
1262
+ </prompt_context>
1263
+
1073
1264
  <execution_context>
1074
1265
  @~/.claude/up/workflows/executar-plano.md
1075
1266
  @~/.claude/up/references/checkpoints.md
@@ -1082,15 +1273,15 @@ Task(
1082
1273
  3. Checkpoints tipo checkpoint:decision → tomar a decisao mais razoavel
1083
1274
  4. Checkpoints tipo checkpoint:human-action → se possivel automatizar, faca; se nao, registrar como pendente
1084
1275
  5. Deviation Rule 4 (architectural changes) → decidir autonomamente e registrar no SUMMARY
1085
- 6. CAPTURES: Se durante a execucao voce descobrir algo importante (padrao no codigo, problema potencial, oportunidade de melhoria, decisao arquitetural nao-obvia), registre em .plano/captures/ como arquivo markdown curto. Formato: `capture-{timestamp}-{slug}.md` com frontmatter: type (pattern|problem|opportunity|decision), severity (info|warning|critical), phase (numero). Corpo: 2-5 frases descrevendo o insight.
1276
+ 6. CAPTURES: Se durante a execucao voce descobrir algo importante (padrao no codigo, problema potencial, oportunidade de melhoria, decisao arquitetural nao-obvia), registre em .plano/captures/ como arquivo markdown curto. Formato: `capture-{{timestamp}}-{{slug}}.md` com frontmatter: type (pattern|problem|opportunity|decision), severity (info|warning|critical), phase (numero). Corpo: 2-5 frases descrevendo o insight.
1086
1277
  </builder_mode>
1087
1278
 
1088
1279
  <files_to_read>
1089
- Ler estes arquivos no inicio da execucao usando a ferramenta Read:
1090
- - {phase_dir}/{plan_file} (Plano)
1091
- - .plano/STATE.md (Estado)
1092
- - .plano/config.json (Config)
1280
+ O contexto principal ja esta no <prompt_context> acima. Ler do disco APENAS:
1093
1281
  - ./CLAUDE.md (Instrucoes do projeto, se existir)
1282
+ - Arquivos referenciados em <files> das tarefas (codigo a editar)
1283
+
1284
+ NAO refazer Read em PLAN, STATE.md, config.json — ja estao inline.
1094
1285
  </files_to_read>
1095
1286
 
1096
1287
  <success_criteria>
@@ -1100,7 +1291,7 @@ Task(
1100
1291
  - [ ] STATE.md atualizado
1101
1292
  - [ ] ROADMAP.md atualizado com progresso
1102
1293
  </success_criteria>
1103
- "
1294
+ """
1104
1295
  )
1105
1296
  ```
1106
1297
 
@@ -1109,11 +1300,239 @@ Task(
1109
1300
  - Verificar que commits existem via `git log --oneline --grep`
1110
1301
  - Se falha: tentar re-executar o plano falho (max 1 retry)
1111
1302
 
1303
+ **Wave 5+ — Patch routing outcome apos retorno do spawn:**
1304
+
1305
+ ```bash
1306
+ # Apos spawn retornar (success path)
1307
+ if [ -f "${PHASE_DIR}/$(basename ${PLAN_FILE} .md | sed 's/-PLAN/-SUMMARY/')" ]; then
1308
+ OUTCOME=success
1309
+ elif echo "$SPAWN_RETURN" | grep -q "^ABORTED:"; then
1310
+ OUTCOME=abort
1311
+ else
1312
+ OUTCOME=rework
1313
+ fi
1314
+
1315
+ REWORK_CYCLES=${REWORK_COUNT:-0}
1316
+
1317
+ node "$HOME/.claude/up/bin/up-tools.cjs" routing-log --update \
1318
+ --plan "${PLAN_FILE}" \
1319
+ --agent "${SPECIALIST_AGENT}" \
1320
+ --model "${MODEL}" \
1321
+ --complexity "${COMPLEXITY}" \
1322
+ --score "${SCORE}" \
1323
+ --outcome "${OUTCOME}" \
1324
+ --rework-cycles "${REWORK_CYCLES}"
1325
+ ```
1326
+
1327
+ Sem este step, routing-history.log fica com entries `pending` orfas e
1328
+ `analyze-routing` nao tem dados pra sugerir ajustes.
1329
+
1330
+ **Wave 3 (v0.12+) — handle ABORTED returns:**
1331
+
1332
+ Se a mensagem de retorno do specialist comeca com `ABORTED:`:
1333
+
1334
+ ```bash
1335
+ if echo "$SPAWN_RETURN" | grep -q "^ABORTED:"; then
1336
+ REASON=$(echo "$SPAWN_RETURN" | grep -oE "(timeout|stuck)" | head -1)
1337
+ echo "WAVE INTERROMPIDA: ${REASON} na fase ${PHASE_NUMBER}"
1338
+
1339
+ # Verificar se PARTIAL-SUMMARY existe
1340
+ if [ -f "${PHASE_DIR}/PARTIAL-SUMMARY.md" ]; then
1341
+ PARTIAL_TASKS=$(grep "last_completed_task:" "${PHASE_DIR}/PARTIAL-SUMMARY.md" | head -1)
1342
+
1343
+ # Decisao: 1 retry com escopo reduzido OU escalar pro chief
1344
+ ABORT_COUNT=$(grep -c "phase-${PHASE_NUMBER}.*ABORTED" .plano/governance/aborts.log 2>/dev/null)
1345
+
1346
+ if [ "$ABORT_COUNT" -lt 2 ]; then
1347
+ echo "Retry com escopo reduzido (1/2). Spawnando specialist novamente."
1348
+ # Re-spawn com flag UP_RETRY_AFTER_ABORT=1 — agente pula tarefas opcionais
1349
+ # (manter prompt principal, adicionar instrucao de retry)
1350
+ else
1351
+ echo "ABORTS limite (${ABORT_COUNT}). Escalando para chief-engineer."
1352
+ # Spawn chief-engineer com PARTIAL-SUMMARY como contexto
1353
+ fi
1354
+ fi
1355
+ fi
1356
+ ```
1357
+
1112
1358
  ```
1113
1359
  Wave {N}: {count} planos executados
1114
1360
  ```
1115
1361
 
1116
- #### 3.1.3 Reflect (Code Review)
1362
+ #### --- GATE A: Verificar que execucao produziu artefatos ---
1363
+
1364
+ **EXECUTAR OBRIGATORIAMENTE antes de continuar:**
1365
+
1366
+ ```bash
1367
+ echo "=== GATE A: Verificando artefatos da execucao (Fase ${PHASE_NUMBER}) ==="
1368
+ SUMMARY_COUNT=$(ls ${PHASE_DIR}/*-SUMMARY.md 2>/dev/null | wc -l)
1369
+ if [ "$SUMMARY_COUNT" -eq 0 ]; then
1370
+ echo "GATE A FALHOU: Nenhum SUMMARY.md encontrado em ${PHASE_DIR}"
1371
+ echo "A execucao NAO produziu artefatos. Re-executar."
1372
+ exit 1
1373
+ else
1374
+ echo "GATE A OK: ${SUMMARY_COUNT} SUMMARY(s) encontrados"
1375
+ fi
1376
+ ```
1377
+
1378
+ **Se GATE A falhou:** Re-executar o specialist (max 1 retry). NAO avançar para supervisor.
1379
+
1380
+ #### 3.1.2.1 GOVERNANCE OBRIGATORIA — Execution Supervisor Revisa (PASSO 3)
1381
+
1382
+ **ESTE PASSO E OBRIGATORIO E NAO PODE SER PULADO.**
1383
+ **Referencia:** `@~/.claude/up/workflows/governance.md`
1384
+
1385
+ Apos CADA wave de execucao completar, o execution-supervisor DEVE revisar o trabalho.
1386
+
1387
+ ```python
1388
+ Agent(
1389
+ subagent_type="up-execution-supervisor",
1390
+ prompt=f"""
1391
+ Revisar execucao da Fase {phase_number}.
1392
+
1393
+ <governance_compressed>
1394
+ DECISOES: APPROVE | REQUEST_CHANGES | REQUEST_REPLAN | ESCALATE
1395
+ REWORK: max 3 ciclos antes de forcar approval com debito
1396
+ NUNCA APROVAR: trabalho nao verificado, evidencia ambigua, claim sem backing,
1397
+ stub/placeholder, falta de wiring
1398
+ LOG OBRIGATORIO: .plano/governance/approvals.log
1399
+ </governance_compressed>
1400
+
1401
+ <engineering_principles_compressed>
1402
+ 1. Implementacao real (zero placeholder)
1403
+ 2. Correto, nao rapido
1404
+ 3. Conectado ponta a ponta
1405
+ 4. Consistencia (seguir patterns existentes)
1406
+ 5. Dados reais
1407
+ 6. Custo futuro
1408
+ </engineering_principles_compressed>
1409
+
1410
+ <files_to_read>
1411
+ - {PLAN}
1412
+ - {PHASE_DIR}/*-SUMMARY.md
1413
+ - git diff (use Bash)
1414
+ - .plano/fases/{phase_number}/REQUIREMENTS-SLICE.md (se existir)
1415
+
1416
+ Sob demanda apenas:
1417
+ - $HOME/.claude/up/references/engineering-principles-compressed.md (exemplos)
1418
+ - $HOME/.claude/up/references/governance-rules-compressed.md (hierarquia)
1419
+ - $HOME/.claude/up/references/rework-limits-compressed.md (fluxos)
1420
+ - $HOME/.claude/up/references/production-requirements-compressed.md (IDs especificos)
1421
+ </files_to_read>
1422
+
1423
+ Decisao: APPROVE | REQUEST_CHANGES | REQUEST_REPLAN | ESCALATE
1424
+
1425
+ REQUEST_REPLAN: Se descobrir que o plano e fundamentalmente errado/inviavel.
1426
+ Max 2 re-plans por projeto.
1427
+
1428
+ **OUTPUT OBRIGATORIO (fazer ANTES de retornar):**
1429
+ Escrever sua decisao no approvals.log:
1430
+ ```bash
1431
+ echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) | phase-{phase_number} | execution-supervisor | {DECISAO} | {motivo_resumido}" >> .plano/governance/approvals.log
1432
+ ```
1433
+ Sem este log, o GATE B vai bloquear o avanço do builder.
1434
+ """
1435
+ )
1436
+ ```
1437
+
1438
+ #### 3.1.2.2 Processar Decisao do Execution Supervisor
1439
+
1440
+ **Se APPROVE:** Verificar que approvals.log foi escrito (o supervisor deve ter feito). Prosseguir para 3.1.3.
1441
+
1442
+ **Se REQUEST_CHANGES:** Re-spawn specialist com feedback (max 3 ciclos).
1443
+
1444
+ ```python
1445
+ # Re-spawn do specialist com review como contexto
1446
+ Agent(
1447
+ subagent_type="{mesmo specialist da execucao}",
1448
+ prompt=f"""
1449
+ REWORK — Ciclo {{N}}/3
1450
+
1451
+ Seu output anterior foi revisado pelo execution-supervisor e precisa de mudancas.
1452
+
1453
+ Review: .plano/governance/{{review_file}}
1454
+
1455
+ Mudancas requeridas:
1456
+ {{lista_de_mudancas}}
1457
+
1458
+ Refaca seu trabalho atendendo os criterios.
1459
+ """
1460
+ )
1461
+ ```
1462
+
1463
+ Se apos 3 ciclos sem melhoria: FORCAR aprovacao com debito tecnico.
1464
+
1465
+ ```bash
1466
+ mkdir -p .plano/governance
1467
+ cat >> .plano/governance/technical-debt.log <<EOF
1468
+ $(date -u +%Y-%m-%dT%H:%M:%SZ) | phase-{phase_number} | execution-supervisor | FORCED_APPROVAL
1469
+ Reason: Max rework cycles (3) reached without improvement
1470
+ Remaining issues: [lista]
1471
+ EOF
1472
+ ```
1473
+
1474
+ **Se REQUEST_REPLAN:**
1475
+
1476
+ ```bash
1477
+ REPLAN_COUNT=$(cat .plano/governance/replans.log 2>/dev/null | wc -l)
1478
+ ```
1479
+
1480
+ Se `REPLAN_COUNT >= 2`: ESCALATE pro chief-engineer.
1481
+
1482
+ Se `REPLAN_COUNT < 2`:
1483
+ 1. Spawnar up-planejador LOCAL para refazer plano da fase
1484
+ 2. Salvar como PLAN-v2.md (preservar v1 para historico)
1485
+ 3. Spawnar up-planning-supervisor para revisar novo plano
1486
+ 4. Se APPROVE: voltar para 3.1.2 (re-executar com novo plano)
1487
+ 5. Se REJECT: ESCALATE pro chief-engineer
1488
+
1489
+ ```bash
1490
+ echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) | phase-${PHASE_NUMBER} | execution-supervisor | REPLAN | cycle $((REPLAN_COUNT+1))/2" >> .plano/governance/replans.log
1491
+ ```
1492
+
1493
+ **Se ESCALATE:** Spawnar chief-engineer para decidir.
1494
+
1495
+ ```python
1496
+ Agent(
1497
+ subagent_type="up-chief-engineer",
1498
+ prompt=f"""
1499
+ Escalacao recebida do execution-supervisor.
1500
+ Fase: {phase_number}
1501
+ Problema: {descricao_do_problema}
1502
+
1503
+ <files_to_read>
1504
+ - {PHASE_DIR}/*-SUMMARY.md
1505
+ - {PLAN}
1506
+ - .plano/governance/approvals.log
1507
+ </files_to_read>
1508
+
1509
+ Decidir: APPROVE | REQUEST_CHANGES | ESCALATE_CEO
1510
+ """
1511
+ )
1512
+ ```
1513
+
1514
+ Se chief-engineer retorna ESCALATE_CEO: spawnar CEO para alertar o dono.
1515
+
1516
+ #### --- GATE B: Verificar que execution-supervisor logou decisao ---
1517
+
1518
+ **EXECUTAR OBRIGATORIAMENTE antes de continuar:**
1519
+
1520
+ ```bash
1521
+ echo "=== GATE B: Verificando governance da execucao (Fase ${PHASE_NUMBER}) ==="
1522
+ EXEC_ENTRY=$(grep "phase-${PHASE_NUMBER}.*execution-supervisor" .plano/governance/approvals.log 2>/dev/null | tail -1)
1523
+ if [ -z "$EXEC_ENTRY" ]; then
1524
+ echo "GATE B FALHOU: execution-supervisor NAO logou decisao para fase ${PHASE_NUMBER}"
1525
+ echo "O execution-supervisor DEVE rodar antes de continuar."
1526
+ echo "NAO pular este passo. Spawnar up-execution-supervisor agora."
1527
+ exit 1
1528
+ else
1529
+ echo "GATE B OK: $EXEC_ENTRY"
1530
+ fi
1531
+ ```
1532
+
1533
+ **Se GATE B falhou:** Spawnar execution-supervisor. NAO avançar para code review.
1534
+
1535
+ #### 3.1.3 Reflect (Code Review) (PASSO 4)
1117
1536
 
1118
1537
  **O passo "Reflect" do ciclo RARV — revisa codigo ANTES da verificacao formal.**
1119
1538
 
@@ -1135,7 +1554,7 @@ Task(
1135
1554
 
1136
1555
  <files_to_read>
1137
1556
  - {phase_dir}/*-SUMMARY.md (O que foi implementado)
1138
- - $HOME/.claude/up/references/production-requirements.md (Checklist de producao)
1557
+ - $HOME/.claude/up/references/production-requirements-compressed.md (Checklist de producao)
1139
1558
  - ./CLAUDE.md (Convencoes do projeto, se existir)
1140
1559
  </files_to_read>
1141
1560
 
@@ -1164,29 +1583,149 @@ Reflect: score {N}/10 | {criticas} criticas | {importantes} importantes | {menor
1164
1583
 
1165
1584
  #### 3.1.4 Verificar Fase
1166
1585
 
1167
- Spawnar verificador autonomo:
1586
+ **Wave 4 (v0.13+) — Verification Ladder Determinística**
1587
+
1588
+ ANTES de spawnar o verificador-LLM, rodar checks deterministicos via
1589
+ `up-tools.cjs verify-static`. Isso roda lint, typecheck, test e audit
1590
+ do projeto. Se TUDO passa, a verificacao LLM pode ser pulada (criar
1591
+ VERIFICATION.md sintetico marcando "passed via static checks").
1592
+ Se algo falha, o output capturado vira contexto pro verificador-LLM —
1593
+ ele foca no que quebrou em vez de re-rodar tudo.
1594
+
1595
+ ```bash
1596
+ # Step 1: Roda checks deterministicos
1597
+ STATIC=$(node "$HOME/.claude/up/bin/up-tools.cjs" verify-static --raw)
1598
+ STATIC_OVERALL=$(echo "$STATIC" | grep -oE 'overall.{1,20}' | head -1 | grep -oE '"(pass|fail|skip)"' | tr -d '"')
1599
+
1600
+ if [ "$STATIC_OVERALL" = "pass" ]; then
1601
+ # Step 2a: Tudo passou — criar VERIFICATION.md sintetico, pular LLM
1602
+ cat > "${PHASE_DIR}/VERIFICATION.md" <<EOF
1603
+ ---
1604
+ status: passed
1605
+ verifier: static-only
1606
+ phase: ${PHASE_NUMBER}
1607
+ checks_passed: lint+typecheck+test+audit
1608
+ timestamp: $(date -u +%Y-%m-%dT%H:%M:%SZ)
1609
+ ---
1610
+
1611
+ # Verificacao da Fase ${PHASE_NUMBER}
1168
1612
 
1613
+ Aprovacao automatica via verificacao estatica deterministica.
1614
+
1615
+ Detalhes em \`.plano/runtime/verify-static-*.log\`.
1616
+ EOF
1617
+ echo "Verification: PASSED via static checks (LLM verifier skipped)"
1618
+ elif [ "$STATIC_OVERALL" = "skip" ]; then
1619
+ # Sem scripts disponiveis — fallback pra LLM verifier
1620
+ STATIC_CONTEXT="Static checks indisponiveis (sem lint/test scripts)."
1621
+ fi
1169
1622
  ```
1623
+
1624
+ **Step 2b — Se STATIC falhou OU foi pulado:** spawnar verificador-LLM com output dos checks como contexto.
1625
+
1626
+ ```python
1627
+ # Carregar logs de checks que falharam
1628
+ STATIC_LOGS=""
1629
+ for log in .plano/runtime/verify-static-*.log; do
1630
+ [ -f "$log" ] && STATIC_LOGS="${STATIC_LOGS}\n--- $(basename $log) ---\n$(cat $log)"
1631
+ done
1632
+
1170
1633
  Task(
1171
- prompt="Verificar atingimento do objetivo da fase {phase_number}.
1634
+ prompt=f"""Verificar atingimento do objetivo da fase {phase_number}.
1172
1635
  Diretorio da fase: {phase_dir}
1173
- Objetivo da fase: {goal do ROADMAP.md}
1636
+ Objetivo da fase: {goal}
1174
1637
  IDs de requisitos da fase: {phase_req_ids}
1175
1638
 
1639
+ <static_check_results overall="{STATIC_OVERALL}">
1640
+ {STATIC_LOGS}
1641
+ </static_check_results>
1642
+
1176
1643
  <builder_mode>
1177
1644
  Modo builder. NAO use AskUserQuestion.
1645
+ - FOCAR no que falhou nos static checks (nao reexecutar tudo)
1178
1646
  - Verificar must_haves contra codebase real
1179
1647
  - Cross-referenciar requisitos do frontmatter contra REQUIREMENTS.md
1180
- - Rodar testes automatizados se existirem
1648
+ - Rodar testes APENAS se nao constam dos static checks
1181
1649
  - Se human_needed: considerar como PASSED (sera verificado no final)
1182
1650
  - Criar VERIFICATION.md
1183
1651
  </builder_mode>
1184
- ",
1652
+ """,
1185
1653
  subagent_type="up-verificador",
1186
-
1187
1654
  )
1188
1655
  ```
1189
1656
 
1657
+ #### --- GATE C: Verificar que verificacao produziu artefatos ---
1658
+
1659
+ **EXECUTAR OBRIGATORIAMENTE antes de continuar:**
1660
+
1661
+ ```bash
1662
+ echo "=== GATE C: Verificando artefatos da verificacao (Fase ${PHASE_NUMBER}) ==="
1663
+ VERIF_COUNT=$(ls ${PHASE_DIR}/*-VERIFICATION.md 2>/dev/null | wc -l)
1664
+ if [ "$VERIF_COUNT" -eq 0 ]; then
1665
+ echo "GATE C FALHOU: Nenhum VERIFICATION.md encontrado em ${PHASE_DIR}"
1666
+ echo "O verificador NAO rodou. Spawnar up-verificador agora."
1667
+ exit 1
1668
+ else
1669
+ echo "GATE C OK: ${VERIF_COUNT} VERIFICATION(s) encontrados"
1670
+ fi
1671
+ ```
1672
+
1673
+ **Se GATE C falhou:** Spawnar verificador. NAO avançar para verification-supervisor.
1674
+
1675
+ #### 3.1.4.1 GOVERNANCE OBRIGATORIA — Verification Supervisor Revisa (PASSO 6)
1676
+
1677
+ **ESTE PASSO E OBRIGATORIO E NAO PODE SER PULADO.**
1678
+ **Referencia:** `@~/.claude/up/workflows/governance.md`
1679
+
1680
+ Apos o verificador retornar, o verification-supervisor DEVE revisar a verificacao.
1681
+
1682
+ ```python
1683
+ Agent(
1684
+ subagent_type="up-verification-supervisor",
1685
+ prompt=f"""
1686
+ Revisar verificacao da Fase {phase_number}.
1687
+
1688
+ <governance_compressed>
1689
+ DECISOES: APPROVE | REQUEST_CHANGES | ESCALATE
1690
+ REWORK: max 3 ciclos antes de forcar approval com debito
1691
+ NUNCA APROVAR SE:
1692
+ - Verificacao superficial ("parece ok")
1693
+ - VERIFICATION.md claim sem evidencia no codigo
1694
+ - must_haves nao testados de fato
1695
+ - Testes rodaram mas com falhas ignoradas
1696
+ LOG OBRIGATORIO: .plano/governance/approvals.log
1697
+ </governance_compressed>
1698
+
1699
+ <files_to_read>
1700
+ - {PHASE_DIR}/*-VERIFICATION.md
1701
+ - {PHASE_DIR}/*-SUMMARY.md
1702
+ - {PLAN}
1703
+ - .plano/REQUIREMENTS.md (requisitos da fase)
1704
+
1705
+ Sob demanda apenas:
1706
+ - $HOME/.claude/up/references/governance-rules-compressed.md
1707
+ - $HOME/.claude/up/references/rework-limits-compressed.md
1708
+ </files_to_read>
1709
+
1710
+ Validar que a verificacao foi rigorosa e que os claims tem backing.
1711
+ Decisao: APPROVE | REQUEST_CHANGES | ESCALATE
1712
+
1713
+ **OUTPUT OBRIGATORIO (fazer ANTES de retornar):**
1714
+ Escrever sua decisao no approvals.log:
1715
+ ```bash
1716
+ echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) | phase-{phase_number} | verification-supervisor | {DECISAO} | {motivo_resumido}" >> .plano/governance/approvals.log
1717
+ ```
1718
+ Sem este log, o GATE D vai bloquear o avanço do builder.
1719
+ """
1720
+ )
1721
+ ```
1722
+
1723
+ **Se APPROVE:** Verificar que approvals.log foi escrito. Prosseguir.
1724
+
1725
+ **Se REQUEST_CHANGES:** Re-spawn verificador com feedback (max 3 ciclos).
1726
+
1727
+ **Se ESCALATE:** Spawnar chief-engineer.
1728
+
1190
1729
  Ler status da verificacao:
1191
1730
 
1192
1731
  ```bash
@@ -1195,11 +1734,34 @@ grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
1195
1734
 
1196
1735
  | Status | Acao no Builder |
1197
1736
  |--------|----------------|
1198
- | `passed` | Marcar fase completa, avancar |
1737
+ | `passed` | Prosseguir para E2E |
1199
1738
  | `gaps_found` | Tentar corrigir (planejar gaps + executar, max 1 ciclo) |
1200
1739
  | `human_needed` | Registrar para revisao final, avancar |
1201
1740
 
1202
- #### 3.1.5 Teste E2E da Fase (Playwright)
1741
+ #### --- GATE D: Verificar que AMBOS supervisores logaram decisao ---
1742
+
1743
+ **EXECUTAR OBRIGATORIAMENTE antes de continuar:**
1744
+
1745
+ ```bash
1746
+ echo "=== GATE D: Verificando governance completa (Fase ${PHASE_NUMBER}) ==="
1747
+ EXEC_OK=$(grep -c "phase-${PHASE_NUMBER}.*execution-supervisor" .plano/governance/approvals.log 2>/dev/null)
1748
+ VERIF_OK=$(grep -c "phase-${PHASE_NUMBER}.*verification-supervisor" .plano/governance/approvals.log 2>/dev/null)
1749
+
1750
+ if [ "$EXEC_OK" -eq 0 ] || [ "$VERIF_OK" -eq 0 ]; then
1751
+ echo "GATE D FALHOU:"
1752
+ [ "$EXEC_OK" -eq 0 ] && echo " - execution-supervisor NAO logou decisao"
1753
+ [ "$VERIF_OK" -eq 0 ] && echo " - verification-supervisor NAO logou decisao"
1754
+ echo "AMBOS supervisores DEVEM ter logado antes de continuar para E2E."
1755
+ echo "Voltar e spawnar o supervisor faltante."
1756
+ exit 1
1757
+ else
1758
+ echo "GATE D OK: execution-supervisor (${EXEC_OK} entries) + verification-supervisor (${VERIF_OK} entries)"
1759
+ fi
1760
+ ```
1761
+
1762
+ **Se GATE D falhou:** Identificar qual supervisor faltou e spawnar. NAO avançar para E2E.
1763
+
1764
+ #### 3.1.5 Teste E2E da Fase (Playwright) (PASSO 7)
1203
1765
 
1204
1766
  **Executar APENAS se a fase tem UI/rotas** (pular para fases de infra, schema, config).
1205
1767
 
@@ -1305,7 +1867,118 @@ Se regressao encontrada:
1305
1867
  Smoke test regressao: {N} rotas anteriores | {OK} ok | {REGRESS} regressoes [{FIXED} corrigidas]
1306
1868
  ```
1307
1869
 
1308
- #### 3.1.6 Marcar Fase Completa
1870
+ #### 3.1.6 GOVERNANCE OBRIGATORIA — Chief-Engineer Aprova Fase
1871
+
1872
+ **ESTE PASSO E OBRIGATORIO E NAO PODE SER PULADO.**
1873
+ **Referencia:** `@~/.claude/up/workflows/governance.md`
1874
+
1875
+ Antes de marcar a fase como completa, o chief-engineer DEVE aprovar o trabalho consolidado da fase inteira.
1876
+
1877
+ ```python
1878
+ Agent(
1879
+ subagent_type="up-chief-engineer",
1880
+ prompt=f"""
1881
+ Revisar Fase {phase_number} consolidada.
1882
+
1883
+ <governance_compressed>
1884
+ DECISOES: APPROVE | REQUEST_CHANGES | ESCALATE_CEO
1885
+ REWORK (chief → supervisor): max 2 ciclos, depois escala pro CEO
1886
+
1887
+ VERIFICAR:
1888
+ 1. Coerencia entre plano, execucao e verificacao
1889
+ 2. Drift arquitetural (decisoes que divergem do SYSTEM-DESIGN.md)
1890
+ 3. Debito tecnico acumulado (forced approvals)
1891
+ 4. Qualidade geral da fase (code review score + verificacao)
1892
+ 5. Requisitos da fase atendidos vs REQUIREMENTS.md
1893
+ LOG OBRIGATORIO: .plano/governance/approvals.log
1894
+ </governance_compressed>
1895
+
1896
+ <files_to_read>
1897
+ - {PHASE_DIR}/*-PLAN.md (planos)
1898
+ - {PHASE_DIR}/*-SUMMARY.md (o que foi implementado)
1899
+ - {PHASE_DIR}/*-VERIFICATION.md (resultado da verificacao)
1900
+ - {PHASE_DIR}/CODE-REVIEW.md (se existir)
1901
+ - .plano/governance/approvals.log (decisoes de supervisores)
1902
+ - .plano/governance/technical-debt.log (se existir)
1903
+ - .plano/SYSTEM-DESIGN.md (arquitetura original)
1904
+ - .plano/REQUIREMENTS.md (requisitos)
1905
+
1906
+ Sob demanda apenas:
1907
+ - $HOME/.claude/up/references/governance-rules-compressed.md
1908
+ - $HOME/.claude/up/references/rework-limits-compressed.md
1909
+ </files_to_read>
1910
+
1911
+ Consolidar tudo e decidir: APPROVE | REQUEST_CHANGES | ESCALATE_CEO
1912
+
1913
+ **OUTPUT OBRIGATORIO (fazer ANTES de retornar):**
1914
+ Escrever sua decisao no approvals.log:
1915
+ ```bash
1916
+ echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) | phase-{phase_number} | chief-engineer | {DECISAO} | {motivo_resumido}" >> .plano/governance/approvals.log
1917
+ ```
1918
+ Sem este log, o GATE E vai bloquear o avanço do builder.
1919
+ """
1920
+ )
1921
+ ```
1922
+
1923
+ **Se APPROVE:** Verificar que approvals.log foi escrito. Prosseguir para GATE E.
1924
+
1925
+ **Se REQUEST_CHANGES:**
1926
+ - Chief identifica area problematica e supervisor responsavel
1927
+ - Re-spawn supervisor correspondente com feedback do chief (max 2 ciclos chief ← supervisor)
1928
+ - Supervisor coordena rework com operacional
1929
+ - Chief re-revisa e loga novamente em approvals.log
1930
+
1931
+ **Se ESCALATE_CEO:**
1932
+ - Spawnar CEO para alertar dono
1933
+ - CEO usa severidade: CRITICO (sempre interrompe) ou IMPORTANTE (registra)
1934
+
1935
+ #### --- GATE E: Verificar TODA governanca antes de marcar completa ---
1936
+
1937
+ **EXECUTAR OBRIGATORIAMENTE — este e o gate FINAL da fase:**
1938
+
1939
+ ```bash
1940
+ echo "=== GATE E: Verificacao FINAL de governanca (Fase ${PHASE_NUMBER}) ==="
1941
+ echo ""
1942
+
1943
+ # Verificar 3 entries obrigatorias no approvals.log
1944
+ EXEC_OK=$(grep -c "phase-${PHASE_NUMBER}.*execution-supervisor" .plano/governance/approvals.log 2>/dev/null)
1945
+ VERIF_OK=$(grep -c "phase-${PHASE_NUMBER}.*verification-supervisor" .plano/governance/approvals.log 2>/dev/null)
1946
+ CHIEF_OK=$(grep -c "phase-${PHASE_NUMBER}.*chief-engineer" .plano/governance/approvals.log 2>/dev/null)
1947
+
1948
+ # Verificar artefatos obrigatorios
1949
+ SUMMARY_OK=$(ls ${PHASE_DIR}/*-SUMMARY.md 2>/dev/null | wc -l)
1950
+ VERIF_FILE_OK=$(ls ${PHASE_DIR}/*-VERIFICATION.md 2>/dev/null | wc -l)
1951
+
1952
+ PASS=true
1953
+
1954
+ [ "$SUMMARY_OK" -eq 0 ] && echo "FALHA: Sem SUMMARY.md" && PASS=false
1955
+ [ "$VERIF_FILE_OK" -eq 0 ] && echo "FALHA: Sem VERIFICATION.md" && PASS=false
1956
+ [ "$EXEC_OK" -eq 0 ] && echo "FALHA: execution-supervisor NAO rodou" && PASS=false
1957
+ [ "$VERIF_OK" -eq 0 ] && echo "FALHA: verification-supervisor NAO rodou" && PASS=false
1958
+ [ "$CHIEF_OK" -eq 0 ] && echo "FALHA: chief-engineer NAO rodou" && PASS=false
1959
+
1960
+ if [ "$PASS" = false ]; then
1961
+ echo ""
1962
+ echo "GATE E FALHOU: Fase ${PHASE_NUMBER} NAO pode ser marcada como completa."
1963
+ echo "Voltar e executar os passos faltantes."
1964
+ echo ""
1965
+ echo "Checklist obrigatorio:"
1966
+ echo " [$([ $SUMMARY_OK -gt 0 ] && echo 'x' || echo ' ')] SUMMARY.md existe"
1967
+ echo " [$([ $EXEC_OK -gt 0 ] && echo 'x' || echo ' ')] execution-supervisor logou"
1968
+ echo " [$([ $VERIF_FILE_OK -gt 0 ] && echo 'x' || echo ' ')] VERIFICATION.md existe"
1969
+ echo " [$([ $VERIF_OK -gt 0 ] && echo 'x' || echo ' ')] verification-supervisor logou"
1970
+ echo " [$([ $CHIEF_OK -gt 0 ] && echo 'x' || echo ' ')] chief-engineer logou"
1971
+ exit 1
1972
+ else
1973
+ echo "GATE E OK: Todos 5 checks passaram. Fase pode ser marcada como completa."
1974
+ fi
1975
+ ```
1976
+
1977
+ **Se GATE E falhou:** PARAR. Ler o checklist e executar os passos faltantes. NAO marcar fase como completa sem todos os 5 checks.
1978
+
1979
+ #### 3.1.6.1 Marcar Fase Completa (PASSO 9)
1980
+
1981
+ **So atingir este passo apos GATE E passar (todos 5 checks OK).**
1309
1982
 
1310
1983
  ```bash
1311
1984
  COMPLETION=$(node "$HOME/.claude/up/bin/up-tools.cjs" phase complete "${PHASE_NUMBER}")
@@ -1993,7 +2666,6 @@ Antes do Delivery, o `up-delivery-auditor` valida que o processo inteiro foi com
1993
2666
  ```python
1994
2667
  Agent(
1995
2668
  subagent_type="up-delivery-auditor",
1996
- model="opus",
1997
2669
  prompt="""
1998
2670
  Auditar processo de entrega do projeto.
1999
2671
 
@@ -2227,7 +2899,6 @@ Delegar apresentacao final ao CEO:
2227
2899
  ```python
2228
2900
  Agent(
2229
2901
  subagent_type="up-project-ceo",
2230
- model="opus",
2231
2902
  prompt="""
2232
2903
  Apresentar resultado final do projeto ao dono.
2233
2904
 
@@ -2429,6 +3100,7 @@ Mesmo loop do full (3.1.1 → 3.1.5), mas:
2429
3100
  - **Sem reassessment** (poucas fases)
2430
3101
  - **Sem captures** (sessao curta)
2431
3102
  - **COM E2E Playwright** (se tem UI)
3103
+ - **Governanca LIGHT:** execution-supervisor roda (max 1 ciclo rework). Chief-engineer NAO roda. Verification-supervisor NAO roda.
2432
3104
 
2433
3105
  Para cada fase no ROADMAP:
2434
3106
 
@@ -2470,6 +3142,58 @@ Retornar: ## PLANNING COMPLETE
2470
3142
 
2471
3143
  Mesmo processo do full — spawnar up-executor por wave.
2472
3144
 
3145
+ **GATE LIGHT A — Verificar SUMMARY existe:**
3146
+ ```bash
3147
+ SUMMARY_COUNT=$(ls ${PHASE_DIR}/*-SUMMARY.md 2>/dev/null | wc -l)
3148
+ [ "$SUMMARY_COUNT" -eq 0 ] && echo "GATE FALHOU: Sem SUMMARY" && exit 1
3149
+ ```
3150
+
3151
+ #### L3.2.1 GOVERNANCE LIGHT — Execution Supervisor
3152
+
3153
+ **OBRIGATORIO mesmo no modo light.** Roda com max 1 ciclo de rework (vs 3 no full).
3154
+ **Este passo NAO pode ser colapsado com a execucao. DEVE ser um Agent() SEPARADO.**
3155
+
3156
+ ```bash
3157
+ mkdir -p .plano/governance
3158
+ ```
3159
+
3160
+ ```python
3161
+ Agent(
3162
+ subagent_type="up-execution-supervisor",
3163
+ prompt=f"""
3164
+ Revisar execucao da Fase {phase_number} (modo light — 1 ciclo max).
3165
+
3166
+ <governance_compressed>
3167
+ DECISOES: APPROVE | REQUEST_CHANGES
3168
+ REWORK: max 1 ciclo, depois forca approval com debito
3169
+ NUNCA APROVAR: stub/placeholder, falta de wiring, claim sem backing
3170
+ </governance_compressed>
3171
+
3172
+ <files_to_read>
3173
+ - {PHASE_DIR}/*-PLAN.md
3174
+ - {PHASE_DIR}/*-SUMMARY.md
3175
+ - git diff (use Bash)
3176
+ </files_to_read>
3177
+
3178
+ Decisao: APPROVE | REQUEST_CHANGES
3179
+
3180
+ **OUTPUT OBRIGATORIO (fazer ANTES de retornar):**
3181
+ ```bash
3182
+ echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) | phase-{phase_number} | execution-supervisor | {DECISAO} | {motivo}" >> .plano/governance/approvals.log
3183
+ ```
3184
+ """
3185
+ )
3186
+ ```
3187
+
3188
+ **GATE LIGHT B — Verificar supervisor logou:**
3189
+ ```bash
3190
+ EXEC_OK=$(grep -c "phase-${PHASE_NUMBER}.*execution-supervisor" .plano/governance/approvals.log 2>/dev/null)
3191
+ [ "$EXEC_OK" -eq 0 ] && echo "GATE FALHOU: execution-supervisor NAO rodou. Spawnar agora." && exit 1
3192
+ ```
3193
+
3194
+ **Se APPROVE:** Prosseguir.
3195
+ **Se REQUEST_CHANGES:** Re-spawn specialist (1 ciclo). Se ainda falha: forced approval com debito.
3196
+
2473
3197
  #### L3.3 Verificar Fase
2474
3198
 
2475
3199
  Spawnar up-verificador (mesmo do full — verificacao real, nao shortcut):
@@ -2581,9 +3305,11 @@ Quer mais? /up:modo-builder "proxima feature"
2581
3305
  **Light mode success criteria:**
2582
3306
  - [ ] .plano/ criado com PROJECT.md, ROADMAP.md, REQUIREMENTS.md
2583
3307
  - [ ] Todas fases executadas com commits atomicos
3308
+ - [ ] Execution-supervisor revisou CADA fase (GOVERNANCE OBRIGATORIA — 1 ciclo max)
2584
3309
  - [ ] Verificador rodou em cada fase (NAO quick check)
2585
3310
  - [ ] E2E Playwright rodou em fases com UI
2586
3311
  - [ ] DCRV light (1 ciclo) rodou em cada fase com UI/API
3312
+ - [ ] Governance logs em .plano/governance/approvals.log
2587
3313
  - [ ] Resumo final exibido com metricas
2588
3314
 
2589
3315
  </light_process>
@@ -2647,8 +3373,12 @@ Com 1M de contexto, a maioria dos projetos cabe sem /clear. Mas monitore:
2647
3373
  - [ ] Estagio 2: Requisitos completos (50-100 requisitos, 5 camadas)
2648
3374
  - [ ] Estagio 3: Todas as fases planejadas
2649
3375
  - [ ] Estagio 3: Todas as fases executadas (com specialist routing)
3376
+ - [ ] Estagio 3: Execution-supervisor revisou CADA fase (GOVERNANCE OBRIGATORIA)
2650
3377
  - [ ] Estagio 3: Reflect (code review) apos cada fase
2651
3378
  - [ ] Estagio 3: Todas as fases verificadas
3379
+ - [ ] Estagio 3: Verification-supervisor revisou CADA verificacao (GOVERNANCE OBRIGATORIA)
3380
+ - [ ] Estagio 3: Chief-engineer aprovou CADA fase consolidada (GOVERNANCE OBRIGATORIA)
3381
+ - [ ] Estagio 3: Governance logs em .plano/governance/approvals.log
2652
3382
  - [ ] Estagio 3: Fases com UI testadas via Playwright (E2E-RESULTS.md)
2653
3383
  - [ ] Estagio 3: Bugs E2E corrigidos (quando possivel)
2654
3384
  - [ ] Estagio 3: DCRV por fase executado (Visual Critic + Exhaustive Tester + API Tester)
@@ -2684,5 +3414,6 @@ Com 1M de contexto, a maioria dos projetos cabe sem /clear. Mas monitore:
2684
3414
  - [ ] Estagio 5: Resumo apresentado ao usuario
2685
3415
 
2686
3416
  **Minimo viavel:** Estagios 1-3 + Estagio 5. Estagios 4 (Polish) e E2E sao bonus.
3417
+ **INEGOCIAVEL:** Governanca no Estagio 3 (execution-supervisor + verification-supervisor + chief-engineer) NUNCA e bonus — e obrigatoria.
2687
3418
 
2688
3419
  </success_criteria>