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.
- package/package.json +9 -9
- package/{agents → up/agents}/up-architecture-supervisor.md +1 -1
- package/{agents → up/agents}/up-audit-supervisor.md +1 -1
- package/{agents → up/agents}/up-backend-specialist.md +13 -3
- package/{agents → up/agents}/up-chief-architect.md +1 -1
- package/{agents → up/agents}/up-chief-engineer.md +1 -1
- package/{agents → up/agents}/up-chief-operations.md +2 -2
- package/{agents → up/agents}/up-chief-product.md +1 -1
- package/{agents → up/agents}/up-chief-quality.md +1 -1
- package/{agents → up/agents}/up-code-reviewer.md +2 -2
- package/{agents → up/agents}/up-database-specialist.md +13 -3
- package/{agents → up/agents}/up-execution-supervisor.md +4 -4
- package/{agents → up/agents}/up-executor.md +107 -9
- package/{agents → up/agents}/up-frontend-specialist.md +13 -3
- package/{agents → up/agents}/up-operations-supervisor.md +1 -1
- package/{agents → up/agents}/up-planejador.md +17 -1
- package/{agents → up/agents}/up-planning-supervisor.md +3 -3
- package/{agents → up/agents}/up-product-supervisor.md +1 -1
- package/{agents → up/agents}/up-project-ceo.md +2 -2
- package/{agents → up/agents}/up-quality-supervisor.md +1 -1
- package/{agents → up/agents}/up-system-designer.md +2 -2
- package/{agents → up/agents}/up-verification-supervisor.md +1 -1
- package/{agents → up/agents}/up-visual-critic.md +1 -1
- package/{bin → up/bin}/lib/core.cjs +132 -0
- package/{bin → up/bin}/up-tools.cjs +1341 -3
- package/up/commands/adicionar-fase.md +47 -0
- package/up/commands/configurar.md +219 -0
- package/{commands → up/commands}/depurar.md +1 -1
- package/{commands → up/commands}/planejar-fase.md +4 -2
- package/up/templates/config.json +8 -0
- package/up/workflows/build.md +650 -0
- package/{workflows → up/workflows}/builder.md +766 -35
- package/{workflows → up/workflows}/executar-plano.md +69 -0
- package/{workflows → up/workflows}/governance.md +3 -3
- package/{workflows → up/workflows}/plan.md +214 -29
- package/{workflows → up/workflows}/planejar-fase.md +63 -5
- package/commands/adicionar-fase.md +0 -33
- package/commands/configurar.md +0 -106
- package/templates/config.json +0 -6
- package/workflows/build.md +0 -431
- /package/{agents → up/agents}/up-analista-codigo.md +0 -0
- /package/{agents → up/agents}/up-api-tester.md +0 -0
- /package/{agents → up/agents}/up-arquiteto.md +0 -0
- /package/{agents → up/agents}/up-auditor-modernidade.md +0 -0
- /package/{agents → up/agents}/up-auditor-performance.md +0 -0
- /package/{agents → up/agents}/up-auditor-ux.md +0 -0
- /package/{agents → up/agents}/up-blind-validator.md +0 -0
- /package/{agents → up/agents}/up-clone-crawler.md +0 -0
- /package/{agents → up/agents}/up-clone-design-extractor.md +0 -0
- /package/{agents → up/agents}/up-clone-feature-mapper.md +0 -0
- /package/{agents → up/agents}/up-clone-prd-writer.md +0 -0
- /package/{agents → up/agents}/up-clone-verifier.md +0 -0
- /package/{agents → up/agents}/up-consolidador-ideias.md +0 -0
- /package/{agents → up/agents}/up-delivery-auditor.md +0 -0
- /package/{agents → up/agents}/up-depurador.md +0 -0
- /package/{agents → up/agents}/up-devops-agent.md +0 -0
- /package/{agents → up/agents}/up-exhaustive-tester.md +0 -0
- /package/{agents → up/agents}/up-mapeador-codigo.md +0 -0
- /package/{agents → up/agents}/up-pesquisador-mercado.md +0 -0
- /package/{agents → up/agents}/up-pesquisador-projeto.md +0 -0
- /package/{agents → up/agents}/up-planning-auditor.md +0 -0
- /package/{agents → up/agents}/up-product-analyst.md +0 -0
- /package/{agents → up/agents}/up-qa-agent.md +0 -0
- /package/{agents → up/agents}/up-requirements-validator.md +0 -0
- /package/{agents → up/agents}/up-roteirista.md +0 -0
- /package/{agents → up/agents}/up-security-reviewer.md +0 -0
- /package/{agents → up/agents}/up-sintetizador-melhorias.md +0 -0
- /package/{agents → up/agents}/up-sintetizador.md +0 -0
- /package/{agents → up/agents}/up-technical-writer.md +0 -0
- /package/{agents → up/agents}/up-verificador.md +0 -0
- /package/{bin → up/bin}/install.js +0 -0
- /package/{bin → up/bin}/up-instrument.cjs +0 -0
- /package/{commands → up/commands}/adicionar-testes.md +0 -0
- /package/{commands → up/commands}/ajuda.md +0 -0
- /package/{commands → up/commands}/atualizar.md +0 -0
- /package/{commands → up/commands}/build.md +0 -0
- /package/{commands → up/commands}/clone-builder.md +0 -0
- /package/{commands → up/commands}/custos.md +0 -0
- /package/{commands → up/commands}/dashboard.md +0 -0
- /package/{commands → up/commands}/discutir-fase.md +0 -0
- /package/{commands → up/commands}/executar-fase.md +0 -0
- /package/{commands → up/commands}/ideias.md +0 -0
- /package/{commands → up/commands}/iniciar.md +0 -0
- /package/{commands → up/commands}/mapear-codigo.md +0 -0
- /package/{commands → up/commands}/melhorias.md +0 -0
- /package/{commands → up/commands}/mobile-first.md +0 -0
- /package/{commands → up/commands}/modo-builder.md +0 -0
- /package/{commands → up/commands}/novo-projeto.md +0 -0
- /package/{commands → up/commands}/onboard.md +0 -0
- /package/{commands → up/commands}/pausar.md +0 -0
- /package/{commands → up/commands}/plan.md +0 -0
- /package/{commands → up/commands}/progresso.md +0 -0
- /package/{commands → up/commands}/rapido.md +0 -0
- /package/{commands → up/commands}/remover-fase.md +0 -0
- /package/{commands → up/commands}/resetar.md +0 -0
- /package/{commands → up/commands}/retomar.md +0 -0
- /package/{commands → up/commands}/saude.md +0 -0
- /package/{commands → up/commands}/testar.md +0 -0
- /package/{commands → up/commands}/ux-tester.md +0 -0
- /package/{commands → up/commands}/verificar-trabalho.md +0 -0
- /package/{hooks → up/hooks}/up-context-monitor.js +0 -0
- /package/{hooks → up/hooks}/up-statusline.js +0 -0
- /package/{references → up/references}/audit-modernidade.md +0 -0
- /package/{references → up/references}/audit-performance.md +0 -0
- /package/{references → up/references}/audit-ux.md +0 -0
- /package/{references → up/references}/blueprints/audit.md +0 -0
- /package/{references → up/references}/blueprints/booking.md +0 -0
- /package/{references → up/references}/blueprints/community.md +0 -0
- /package/{references → up/references}/blueprints/crm.md +0 -0
- /package/{references → up/references}/blueprints/dashboard.md +0 -0
- /package/{references → up/references}/blueprints/data-management.md +0 -0
- /package/{references → up/references}/blueprints/ecommerce.md +0 -0
- /package/{references → up/references}/blueprints/marketplace.md +0 -0
- /package/{references → up/references}/blueprints/notifications.md +0 -0
- /package/{references → up/references}/blueprints/saas-users.md +0 -0
- /package/{references → up/references}/blueprints/settings.md +0 -0
- /package/{references → up/references}/checkpoints.md +0 -0
- /package/{references → up/references}/engineering-principles-compressed.md +0 -0
- /package/{references → up/references}/engineering-principles.md +0 -0
- /package/{references → up/references}/git-integration.md +0 -0
- /package/{references → up/references}/governance-rules-compressed.md +0 -0
- /package/{references → up/references}/governance-rules.md +0 -0
- /package/{references → up/references}/production-requirements-compressed.md +0 -0
- /package/{references → up/references}/production-requirements.md +0 -0
- /package/{references → up/references}/questioning.md +0 -0
- /package/{references → up/references}/rework-limits-compressed.md +0 -0
- /package/{references → up/references}/rework-limits.md +0 -0
- /package/{references → up/references}/severity-levels.md +0 -0
- /package/{references → up/references}/state-persistence.md +0 -0
- /package/{references → up/references}/ui-brand.md +0 -0
- /package/{templates → up/templates}/audit-plan.md +0 -0
- /package/{templates → up/templates}/audit-report.md +0 -0
- /package/{templates → up/templates}/builder-defaults.md +0 -0
- /package/{templates → up/templates}/checklist.md +0 -0
- /package/{templates → up/templates}/continue-here.md +0 -0
- /package/{templates → up/templates}/delivery.md +0 -0
- /package/{templates → up/templates}/design-tokens.md +0 -0
- /package/{templates → up/templates}/owner-profile.md +0 -0
- /package/{templates → up/templates}/owner.md +0 -0
- /package/{templates → up/templates}/pending.md +0 -0
- /package/{templates → up/templates}/plan-ready.md +0 -0
- /package/{templates → up/templates}/project.md +0 -0
- /package/{templates → up/templates}/report.md +0 -0
- /package/{templates → up/templates}/requirements.md +0 -0
- /package/{templates → up/templates}/roadmap.md +0 -0
- /package/{templates → up/templates}/state.md +0 -0
- /package/{templates → up/templates}/suggestion.md +0 -0
- /package/{templates → up/templates}/summary.md +0 -0
- /package/{workflows → up/workflows}/adicionar-fase.md +0 -0
- /package/{workflows → up/workflows}/builder-e2e.md +0 -0
- /package/{workflows → up/workflows}/ceo-intake.md +0 -0
- /package/{workflows → up/workflows}/ceo-updates.md +0 -0
- /package/{workflows → up/workflows}/clone-builder.md +0 -0
- /package/{workflows → up/workflows}/dcrv.md +0 -0
- /package/{workflows → up/workflows}/discutir-fase.md +0 -0
- /package/{workflows → up/workflows}/executar-fase.md +0 -0
- /package/{workflows → up/workflows}/ideias.md +0 -0
- /package/{workflows → up/workflows}/iniciar.md +0 -0
- /package/{workflows → up/workflows}/mapear-codigo.md +0 -0
- /package/{workflows → up/workflows}/melhorias.md +0 -0
- /package/{workflows → up/workflows}/mobile-first.md +0 -0
- /package/{workflows → up/workflows}/novo-projeto.md +0 -0
- /package/{workflows → up/workflows}/onboarding.md +0 -0
- /package/{workflows → up/workflows}/pausar.md +0 -0
- /package/{workflows → up/workflows}/progresso.md +0 -0
- /package/{workflows → up/workflows}/rapido.md +0 -0
- /package/{workflows → up/workflows}/remover-fase.md +0 -0
- /package/{workflows → up/workflows}/resetar.md +0 -0
- /package/{workflows → up/workflows}/retomar.md +0 -0
- /package/{workflows → up/workflows}/ux-tester.md +0 -0
- /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.
|
|
59
|
+
## Modelos (v0.9.0+)
|
|
60
60
|
|
|
61
|
-
**
|
|
61
|
+
**Model routing configuravel via `config.json`.** Dois eixos:
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
66
|
+
### Como funciona
|
|
68
67
|
|
|
69
|
-
**
|
|
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
|
-
|
|
130
|
+
# Se MODEL != "default", passar model=
|
|
131
|
+
Task(subagent_type="up-executor", model="{MODEL if MODEL != 'default' else omit}", prompt="...")
|
|
74
132
|
```
|
|
75
|
-
|
|
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
|
-
|
|
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
|
-
####
|
|
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
|
-
|
|
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
|
|
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
|
|
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` |
|
|
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
|
-
####
|
|
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
|
|
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>
|