up-cc 0.5.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/agents/up-architecture-supervisor.md +9 -5
- package/agents/up-arquiteto.md +45 -0
- package/agents/up-audit-supervisor.md +13 -3
- package/agents/up-backend-specialist.md +12 -5
- package/agents/up-code-reviewer.md +6 -2
- package/agents/up-database-specialist.md +12 -5
- package/agents/up-execution-supervisor.md +55 -8
- package/agents/up-executor.md +12 -5
- package/agents/up-frontend-specialist.md +12 -5
- package/agents/up-operations-supervisor.md +7 -3
- package/agents/up-planejador.md +6 -6
- package/agents/up-planning-auditor.md +284 -0
- package/agents/up-planning-supervisor.md +12 -7
- package/agents/up-product-supervisor.md +9 -4
- package/agents/up-quality-supervisor.md +11 -6
- package/agents/up-verification-supervisor.md +11 -6
- package/bin/up-instrument.cjs +333 -0
- package/commands/build.md +99 -0
- package/commands/custos.md +67 -0
- package/commands/plan.md +91 -0
- package/package.json +1 -1
- package/references/engineering-principles-compressed.md +26 -0
- package/references/governance-rules-compressed.md +31 -0
- package/references/production-requirements-compressed.md +23 -0
- package/references/rework-limits-compressed.md +22 -0
- package/templates/audit-plan.md +139 -0
- package/templates/builder-defaults.md +9 -20
- package/templates/plan-ready.md +137 -0
- package/workflows/build.md +431 -0
- package/workflows/builder.md +31 -59
- package/workflows/governance.md +26 -4
- package/workflows/plan.md +390 -0
- package/workflows/planejar-fase.md +27 -9
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Workflow `/up:build` — Execucao de projeto previamente planejado.
|
|
3
|
+
|
|
4
|
+
Requer `.plano/PLAN-READY.md` (gerado por `/up:plan`).
|
|
5
|
+
|
|
6
|
+
Conduz Estagios 3 (Build) + 4 (Quality Gate) + 4.5 (Delivery Audit) + 5 (Delivery).
|
|
7
|
+
|
|
8
|
+
Pode executar projeto planejado em outro runtime — confia no PLAN-READY.md.
|
|
9
|
+
</purpose>
|
|
10
|
+
|
|
11
|
+
<core_principle>
|
|
12
|
+
Este workflow assume que o projeto foi completamente planejado por `/up:plan`.
|
|
13
|
+
|
|
14
|
+
Diferenca do builder:
|
|
15
|
+
- Builder: planeja + executa em sequencia, no mesmo runtime
|
|
16
|
+
- Build: SO executa, le PLAN-READY.md gerado anteriormente (mesmo runtime ou outro)
|
|
17
|
+
|
|
18
|
+
**Sem model routing** — runtime decide o modelo.
|
|
19
|
+
|
|
20
|
+
**Re-plan local permitido (max 2):**
|
|
21
|
+
Se durante execucao o execution-supervisor detectar que um plano esta inviavel,
|
|
22
|
+
ele pode pedir REQUEST_REPLAN. O planejador local refaz o plano daquela fase.
|
|
23
|
+
NUNCA volta pro runtime que planejou originalmente.
|
|
24
|
+
</core_principle>
|
|
25
|
+
|
|
26
|
+
<process>
|
|
27
|
+
|
|
28
|
+
## Estagio 0: GATES OBRIGATORIOS
|
|
29
|
+
|
|
30
|
+
### 0.1 Owner Profile (LOCAL)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
if [ ! -f ~/.claude/up/owner-profile.md ]; then
|
|
34
|
+
echo "Owner profile nao existe NESTE runtime. Rodando /up:onboard..."
|
|
35
|
+
# Delegar pro workflow onboarding.md
|
|
36
|
+
fi
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**IMPORTANTE:** O profile e do RUNTIME ATUAL, nao do runtime que planejou. Cada runtime tem seu profile.
|
|
40
|
+
|
|
41
|
+
### 0.2 PLAN-READY.md Existe?
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
if [ ! -f .plano/PLAN-READY.md ]; then
|
|
45
|
+
echo "ERRO: Este projeto nao foi planejado."
|
|
46
|
+
echo ""
|
|
47
|
+
echo "Use /up:plan primeiro pra planejar o projeto."
|
|
48
|
+
echo "Ou /up:modo-builder pra planejar e executar de uma vez."
|
|
49
|
+
exit 1
|
|
50
|
+
fi
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 0.3 Crash Recovery
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
ls .plano/LOCK.md 2>/dev/null
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Se LOCK.md existe e `stage: build`: retomar.
|
|
60
|
+
|
|
61
|
+
## Estagio V: VALIDACAO LIGHT
|
|
62
|
+
|
|
63
|
+
**Confiar no PLAN-READY.md, mas spot-check estrutura.**
|
|
64
|
+
|
|
65
|
+
### V.1 Parsear PLAN-READY.md
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Extrair frontmatter
|
|
69
|
+
PLANNED_RUNTIME=$(grep "runtime:" .plano/PLAN-READY.md | head -1 | awk '{print $2}')
|
|
70
|
+
INTENDED_RUNTIME=$(grep -A1 "intended_execution:" .plano/PLAN-READY.md | tail -1 | awk '{print $2}')
|
|
71
|
+
TOTAL_PHASES=$(grep "total_phases:" .plano/PLAN-READY.md | awk '{print $2}')
|
|
72
|
+
CONFIDENCE=$(grep "planning_confidence:" .plano/PLAN-READY.md | awk '{print $2}')
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### V.2 Validacao de Compatibilidade
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
CURRENT_RUNTIME="claude-code" # detectar
|
|
79
|
+
[ -d ~/.config/opencode ] && CURRENT_RUNTIME="opencode"
|
|
80
|
+
[ -d ~/.gemini ] && CURRENT_RUNTIME="gemini-cli"
|
|
81
|
+
|
|
82
|
+
# Se intended_execution especifica um runtime e nao e o atual, alertar
|
|
83
|
+
if [ "$INTENDED_RUNTIME" != "same" ] && [ "$INTENDED_RUNTIME" != "any" ] && [ "$INTENDED_RUNTIME" != "$CURRENT_RUNTIME" ]; then
|
|
84
|
+
echo "AVISO: Plano gerado pra $INTENDED_RUNTIME, voce esta em $CURRENT_RUNTIME"
|
|
85
|
+
echo "Pode haver incompatibilidades. Continuar mesmo assim?"
|
|
86
|
+
# AskUserQuestion sim/nao
|
|
87
|
+
fi
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### V.3 Validar Artefatos Esperados
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
[ -f .plano/PROJECT.md ] || { echo "FALTANDO: PROJECT.md"; FAIL=1; }
|
|
94
|
+
[ -f .plano/ROADMAP.md ] || { echo "FALTANDO: ROADMAP.md"; FAIL=1; }
|
|
95
|
+
[ -f .plano/REQUIREMENTS.md ] || { echo "FALTANDO: REQUIREMENTS.md"; FAIL=1; }
|
|
96
|
+
[ -f .plano/SYSTEM-DESIGN.md ] || { echo "FALTANDO: SYSTEM-DESIGN.md"; FAIL=1; }
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### V.4 Validar Planos Listados
|
|
100
|
+
|
|
101
|
+
Pra cada plano listado em PLAN-READY.md, checar se arquivo existe:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Extrair lista de planos do PLAN-READY.md
|
|
105
|
+
PLANS=$(grep -oE "fases/[0-9]+-[a-z-]+/[0-9]+-[0-9]+-PLAN.md" .plano/PLAN-READY.md)
|
|
106
|
+
|
|
107
|
+
for plan in $PLANS; do
|
|
108
|
+
if [ ! -f ".plano/$plan" ]; then
|
|
109
|
+
echo "FALTANDO: $plan"
|
|
110
|
+
FAIL=1
|
|
111
|
+
fi
|
|
112
|
+
done
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### V.5 Decidir
|
|
116
|
+
|
|
117
|
+
**Se todos arquivos OK:** prosseguir.
|
|
118
|
+
|
|
119
|
+
**Se algo falta:**
|
|
120
|
+
- Alertar usuario
|
|
121
|
+
- Oferecer: "Posso planejar localmente?" (re-roda /up:plan)
|
|
122
|
+
- Ou abortar
|
|
123
|
+
|
|
124
|
+
## Estagio C: CEO CONFIRMA
|
|
125
|
+
|
|
126
|
+
Spawnar CEO local:
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
Agent(
|
|
130
|
+
subagent_type="up-project-ceo",
|
|
131
|
+
prompt="""
|
|
132
|
+
Confirmar execucao de projeto previamente planejado.
|
|
133
|
+
|
|
134
|
+
<files_to_read>
|
|
135
|
+
- ~/.claude/up/owner-profile.md (perfil LOCAL deste runtime)
|
|
136
|
+
- .plano/BRIEFING.md (briefing original)
|
|
137
|
+
- .plano/PLAN-READY.md (resumo do planejamento)
|
|
138
|
+
- .plano/AUDIT-PLAN.md (audit do planejamento)
|
|
139
|
+
- .plano/PENDING.md
|
|
140
|
+
</files_to_read>
|
|
141
|
+
|
|
142
|
+
Apresentar ao dono:
|
|
143
|
+
- "Detectei projeto planejado em {runtime} por {ceo_name_anterior}"
|
|
144
|
+
- Resumo: N fases, M planos
|
|
145
|
+
- Planning confidence: X/100
|
|
146
|
+
- Pendencias conhecidas
|
|
147
|
+
- "Iniciar execucao? (enter pra continuar)"
|
|
148
|
+
|
|
149
|
+
Se dono confirmar: prosseguir.
|
|
150
|
+
Se recusar: abortar.
|
|
151
|
+
"""
|
|
152
|
+
)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Estagio 3: BUILD (loop por fase)
|
|
156
|
+
|
|
157
|
+
**Mesmo processo do builder.md secao Estagio 3, mas SEM model routing.**
|
|
158
|
+
|
|
159
|
+
Para cada fase em ROADMAP.md (em ordem):
|
|
160
|
+
|
|
161
|
+
### 3.1 Carregar Plano da Fase
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
PHASE_DIR=$(ls -d .plano/fases/{phase_number}-* 2>/dev/null)
|
|
165
|
+
PLAN=$(ls "$PHASE_DIR"/*-PLAN.md | head -1)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 3.2 Detectar Tipo de Plano (Specialist Routing)
|
|
169
|
+
|
|
170
|
+
Ler o frontmatter do plano pra determinar qual specialist usar:
|
|
171
|
+
- Frontend tasks → up-frontend-specialist
|
|
172
|
+
- Backend tasks → up-backend-specialist
|
|
173
|
+
- Database tasks → up-database-specialist
|
|
174
|
+
- Misto → up-executor
|
|
175
|
+
|
|
176
|
+
### 3.3 Spawnar Specialist
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
Agent(
|
|
180
|
+
subagent_type="{up-specialist}",
|
|
181
|
+
prompt=f"""
|
|
182
|
+
Executar Plano da Fase {phase_number}.
|
|
183
|
+
|
|
184
|
+
<engineering_principles_compressed>
|
|
185
|
+
1. Implementacao real, nao simulacao (zero placeholder, zero stub)
|
|
186
|
+
2. Correto, nao rapido (sem `any`, validacao com lib, queries parametrizadas)
|
|
187
|
+
3. Conectado ponta a ponta (componente → API → DB com dados fluindo)
|
|
188
|
+
4. Consistencia (grep por pattern existente antes de inventar)
|
|
189
|
+
5. Dados reais desde o primeiro momento (sem hardcode)
|
|
190
|
+
6. Cada decisao tem custo futuro (escolher solucao escalavel)
|
|
191
|
+
|
|
192
|
+
Em duvida entre rapido e correto: sempre o correto.
|
|
193
|
+
Sob demanda: Read references/engineering-principles.md para exemplos.
|
|
194
|
+
</engineering_principles_compressed>
|
|
195
|
+
|
|
196
|
+
<production_requirements_compressed>
|
|
197
|
+
Categorias a respeitar (71 requisitos no total):
|
|
198
|
+
- UIST (UI States): loading/error/empty/success em TODA operacao async
|
|
199
|
+
- ERR (Error handling): boundaries, try/catch, sessao expirada, 404
|
|
200
|
+
- PERF: lazy loading, code split, debounce, pagination > 20 items, cache
|
|
201
|
+
- FORM: validacao inline, mensagens especificas, autofocus, mascaras
|
|
202
|
+
- RESP: 375px funcional, touch 44x44, hamburger mobile
|
|
203
|
+
- A11Y: alt, labels, focus visible, keyboard, contraste 4.5:1
|
|
204
|
+
- SEC: rotas protegidas, CSRF, XSS, rate limit, env vars, RLS
|
|
205
|
+
- POLISH: hover, transicoes 150-300ms, design tokens
|
|
206
|
+
|
|
207
|
+
Sob demanda: Read references/production-requirements.md para IDs especificos.
|
|
208
|
+
</production_requirements_compressed>
|
|
209
|
+
|
|
210
|
+
<files_to_read>
|
|
211
|
+
TIER 1 — Sempre:
|
|
212
|
+
- {PLAN}
|
|
213
|
+
- .plano/STATE.md
|
|
214
|
+
- ./CLAUDE.md (se existir)
|
|
215
|
+
|
|
216
|
+
TIER 2 — Se a slice da fase existe (v0.7.0+):
|
|
217
|
+
- .plano/fases/{phase_number}/PHASE.md (objetivo da fase)
|
|
218
|
+
- .plano/fases/{phase_number}/REQUIREMENTS-SLICE.md (REQs APENAS desta fase)
|
|
219
|
+
- .plano/DESIGN-TOKENS.md (se for frontend e existir)
|
|
220
|
+
|
|
221
|
+
TIER 3 — Sob demanda apenas:
|
|
222
|
+
- .plano/PROJECT.md (so se precisar visao geral)
|
|
223
|
+
- .plano/SYSTEM-DESIGN.md (so se decisao de arquitetura aparecer)
|
|
224
|
+
- .plano/REQUIREMENTS.md (so se a slice nao tiver info suficiente)
|
|
225
|
+
</files_to_read>
|
|
226
|
+
|
|
227
|
+
Implementar todas as tarefas. Commitar atomicamente.
|
|
228
|
+
Gerar SUMMARY.md.
|
|
229
|
+
"""
|
|
230
|
+
)
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### 3.4 Execution Supervisor Revisa
|
|
234
|
+
|
|
235
|
+
```python
|
|
236
|
+
Agent(
|
|
237
|
+
subagent_type="up-execution-supervisor",
|
|
238
|
+
prompt=f"""
|
|
239
|
+
Revisar execucao da Fase {phase_number}.
|
|
240
|
+
|
|
241
|
+
<governance_compressed>
|
|
242
|
+
DECISOES: APPROVE | REQUEST_CHANGES | REQUEST_REPLAN | ESCALATE
|
|
243
|
+
REWORK: max 3 ciclos antes de forcar approval com debito
|
|
244
|
+
NUNCA APROVAR: trabalho nao verificado, evidencia ambigua, claim sem backing,
|
|
245
|
+
stub/placeholder, falta de wiring
|
|
246
|
+
</governance_compressed>
|
|
247
|
+
|
|
248
|
+
<engineering_principles_compressed>
|
|
249
|
+
1. Implementacao real (zero placeholder)
|
|
250
|
+
2. Correto, nao rapido
|
|
251
|
+
3. Conectado ponta a ponta
|
|
252
|
+
4. Consistencia (seguir patterns existentes)
|
|
253
|
+
5. Dados reais
|
|
254
|
+
6. Custo futuro
|
|
255
|
+
</engineering_principles_compressed>
|
|
256
|
+
|
|
257
|
+
<files_to_read>
|
|
258
|
+
- {PLAN}
|
|
259
|
+
- {PHASE_DIR}/*-SUMMARY.md
|
|
260
|
+
- git diff (use Bash)
|
|
261
|
+
- .plano/fases/{phase_number}/REQUIREMENTS-SLICE.md (se existir)
|
|
262
|
+
|
|
263
|
+
Sob demanda apenas:
|
|
264
|
+
- $HOME/.claude/up/references/engineering-principles.md (exemplos)
|
|
265
|
+
- $HOME/.claude/up/references/governance-rules.md (hierarquia)
|
|
266
|
+
- $HOME/.claude/up/references/rework-limits.md (fluxos)
|
|
267
|
+
- $HOME/.claude/up/references/production-requirements.md (IDs especificos)
|
|
268
|
+
</files_to_read>
|
|
269
|
+
|
|
270
|
+
Decisao: APPROVE | REQUEST_CHANGES | REQUEST_REPLAN | ESCALATE
|
|
271
|
+
|
|
272
|
+
REQUEST_REPLAN: Se descobrir que o plano e fundamentalmente errado/inviavel.
|
|
273
|
+
Max 2 re-plans por projeto.
|
|
274
|
+
"""
|
|
275
|
+
)
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### 3.5 Processar Decisao do Supervisor
|
|
279
|
+
|
|
280
|
+
**Se APPROVE:** prosseguir.
|
|
281
|
+
|
|
282
|
+
**Se REQUEST_CHANGES:** re-spawn specialist com feedback (max 3 ciclos).
|
|
283
|
+
|
|
284
|
+
**Se REQUEST_REPLAN:**
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
REPLAN_COUNT=$(cat .plano/governance/replans.log 2>/dev/null | wc -l)
|
|
288
|
+
if [ "$REPLAN_COUNT" -ge 2 ]; then
|
|
289
|
+
echo "Max re-plans atingido. Escalando pro CEO."
|
|
290
|
+
# ESCALATE
|
|
291
|
+
else
|
|
292
|
+
# Re-planejar fase localmente
|
|
293
|
+
echo "REQUEST_REPLAN aprovado. Re-planejando fase {phase_number} localmente..."
|
|
294
|
+
|
|
295
|
+
# Spawnar planejador LOCAL
|
|
296
|
+
Agent(
|
|
297
|
+
subagent_type="up-planejador",
|
|
298
|
+
prompt=f"""
|
|
299
|
+
RE-PLAN da Fase {phase_number}.
|
|
300
|
+
|
|
301
|
+
Plano original: {PLAN}
|
|
302
|
+
Razao do re-plan: {execution_supervisor_reason}
|
|
303
|
+
|
|
304
|
+
Refaca o plano corrigindo o problema descoberto.
|
|
305
|
+
"""
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
# Salvar como -PLAN-v2.md
|
|
309
|
+
mv "$PLAN" "${PLAN%-PLAN.md}-PLAN-v1.md"
|
|
310
|
+
# novo plano vira PLAN principal
|
|
311
|
+
|
|
312
|
+
# Registrar
|
|
313
|
+
echo "$(date -u) | phase-{phase_number} | execution-supervisor | REPLAN | reason: {reason}" >> .plano/governance/replans.log
|
|
314
|
+
|
|
315
|
+
# Planning-supervisor revisa novo plano
|
|
316
|
+
Agent(subagent_type="up-planning-supervisor", ...)
|
|
317
|
+
|
|
318
|
+
# Voltar pro 3.3 (re-spawn specialist)
|
|
319
|
+
fi
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
**Se ESCALATE:** chief-engineer entra.
|
|
323
|
+
|
|
324
|
+
### 3.6 Verificacao
|
|
325
|
+
|
|
326
|
+
```python
|
|
327
|
+
Agent(subagent_type="up-verificador", ...)
|
|
328
|
+
Agent(subagent_type="up-verification-supervisor", ...)
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### 3.7 E2E + DCRV
|
|
332
|
+
|
|
333
|
+
Ver builder.md secao 3.1.5 (E2E) e 3.1.5.1 (DCRV).
|
|
334
|
+
|
|
335
|
+
### 3.8 Chief-engineer Aprova Fase
|
|
336
|
+
|
|
337
|
+
```python
|
|
338
|
+
Agent(
|
|
339
|
+
subagent_type="up-chief-engineer",
|
|
340
|
+
prompt="Revisar Fase {phase_number} consolidada."
|
|
341
|
+
)
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### 3.9 Marcar Completa e Avancar
|
|
345
|
+
|
|
346
|
+
## Estagio 4: QUALITY GATE GLOBAL
|
|
347
|
+
|
|
348
|
+
Mesmo processo do builder.md secao Estagio 4. Sem model routing.
|
|
349
|
+
|
|
350
|
+
## Estagio 4.5: DELIVERY AUDIT
|
|
351
|
+
|
|
352
|
+
```python
|
|
353
|
+
Agent(subagent_type="up-delivery-auditor", ...)
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
## Estagio 5: DELIVERY
|
|
357
|
+
|
|
358
|
+
Mesmo processo. CEO local apresenta resultado.
|
|
359
|
+
|
|
360
|
+
### 5.X Marcar Projeto Completo
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
# PLAN-READY.md → PROJECT-COMPLETE.md
|
|
364
|
+
mv .plano/PLAN-READY.md .plano/PROJECT-COMPLETE.md
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
Adicionar ao frontmatter:
|
|
368
|
+
```yaml
|
|
369
|
+
status: complete
|
|
370
|
+
completed_at: [timestamp]
|
|
371
|
+
completed_by:
|
|
372
|
+
runtime: [current]
|
|
373
|
+
ceo_name: [local]
|
|
374
|
+
final_confidence: [from audit]
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
</process>
|
|
378
|
+
|
|
379
|
+
<replans>
|
|
380
|
+
|
|
381
|
+
## Re-plans Locais (max 2)
|
|
382
|
+
|
|
383
|
+
Quando: execution-supervisor descobre que o plano original esta inviavel.
|
|
384
|
+
|
|
385
|
+
Como funciona:
|
|
386
|
+
|
|
387
|
+
```
|
|
388
|
+
Execution falha
|
|
389
|
+
↓
|
|
390
|
+
execution-supervisor analisa
|
|
391
|
+
↓
|
|
392
|
+
Decide: REQUEST_REPLAN
|
|
393
|
+
↓
|
|
394
|
+
Verifica replans.log < 2?
|
|
395
|
+
├─ Sim: prosseguir
|
|
396
|
+
└─ Nao: ESCALATE pro CEO
|
|
397
|
+
↓
|
|
398
|
+
Spawnar planejador LOCAL no runtime atual
|
|
399
|
+
↓
|
|
400
|
+
Refaz plano daquela fase
|
|
401
|
+
↓
|
|
402
|
+
Salva como PLAN-v2.md (preserva v1 pra historico)
|
|
403
|
+
↓
|
|
404
|
+
Planning-supervisor LOCAL revisa
|
|
405
|
+
↓
|
|
406
|
+
Se APPROVE: voltar pro executor com novo plano
|
|
407
|
+
Se REJECT: ESCALATE pro chief-engineer
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
Registro em `.plano/governance/replans.log`:
|
|
411
|
+
```
|
|
412
|
+
2026-04-11T15:30:00Z | phase-3 | execution-supervisor | REPLAN | cycle 1/2
|
|
413
|
+
reason: Library X discontinued, need to use Y instead
|
|
414
|
+
original_plan: 03-01-PLAN-v1.md
|
|
415
|
+
new_plan: 03-01-PLAN.md (was v2)
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
</replans>
|
|
419
|
+
|
|
420
|
+
<success_criteria>
|
|
421
|
+
- [ ] Owner profile LOCAL validado
|
|
422
|
+
- [ ] PLAN-READY.md existe e parseado
|
|
423
|
+
- [ ] Validacao light passou (artefatos + planos existem)
|
|
424
|
+
- [ ] CEO confirmou execucao
|
|
425
|
+
- [ ] Todas fases executadas com supervisao
|
|
426
|
+
- [ ] Re-plans registrados (se houve)
|
|
427
|
+
- [ ] Quality Gate global passou
|
|
428
|
+
- [ ] Delivery audit aprovou
|
|
429
|
+
- [ ] CEO apresentou resultado
|
|
430
|
+
- [ ] PLAN-READY.md → PROJECT-COMPLETE.md
|
|
431
|
+
</success_criteria>
|
package/workflows/builder.md
CHANGED
|
@@ -55,37 +55,25 @@ Neste modo, TODOS os agentes devem:
|
|
|
55
55
|
7. **Quality Gate:** Incluir clone-verifier como dimensao "Fidelidade" (20% do score).
|
|
56
56
|
</core_principle>
|
|
57
57
|
|
|
58
|
-
<
|
|
59
|
-
##
|
|
58
|
+
<model_handling>
|
|
59
|
+
## Modelos (v0.6.0+)
|
|
60
60
|
|
|
61
|
-
**
|
|
61
|
+
**O runtime decide o modelo.** O UP nao especifica `model=opus/sonnet/haiku` em nenhum spawn de agente.
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
| **Execution** | $MODEL_EXECUTION | up-executor, up-frontend-specialist, up-backend-specialist, up-database-specialist | sonnet |
|
|
67
|
-
| **Verification** | $MODEL_VERIFICATION | up-verificador, up-code-reviewer, up-blind-validator, up-requirements-validator | opus |
|
|
68
|
-
| **Detection** | $MODEL_DETECTION | up-visual-critic, up-exhaustive-tester, up-api-tester | sonnet |
|
|
69
|
-
| **Research** | $MODEL_RESEARCH | up-pesquisador-projeto, up-pesquisador-mercado, up-mapeador-codigo, up-sintetizador | sonnet |
|
|
70
|
-
| **Quality** | $MODEL_QUALITY | up-qa-agent, up-security-reviewer, up-auditor-ux, up-auditor-performance, up-auditor-modernidade, up-sintetizador-melhorias, up-consolidador-ideias, up-devops-agent, up-technical-writer | opus |
|
|
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.
|
|
71
66
|
|
|
72
|
-
|
|
73
|
-
```python
|
|
74
|
-
# ANTES (sem model routing):
|
|
75
|
-
Task(subagent_type="up-executor", prompt="...")
|
|
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.
|
|
76
68
|
|
|
77
|
-
|
|
78
|
-
Task(subagent_type="up-executor", model="$MODEL_EXECUTION", prompt="...")
|
|
69
|
+
**Planos sao sempre gerados em nivel detalhado (Sonnet-ready)** independente do modelo que vai executar. Assim funcionam em qualquer runtime.
|
|
79
70
|
|
|
80
|
-
|
|
81
|
-
|
|
71
|
+
**Ao spawnar qualquer agente:**
|
|
72
|
+
```python
|
|
73
|
+
Task(subagent_type="up-executor", prompt="...")
|
|
82
74
|
```
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
1. Identificar o papel do agente na tabela acima
|
|
86
|
-
2. Usar a variavel $MODEL_* correspondente como parametro model
|
|
87
|
-
3. Se a variavel nao foi definida (sem builder-defaults), usar o default da tabela
|
|
88
|
-
</model_routing>
|
|
75
|
+
Sem parametro `model`.
|
|
76
|
+
</model_handling>
|
|
89
77
|
|
|
90
78
|
<governance>
|
|
91
79
|
## Camada de Governanca (v0.5.0+)
|
|
@@ -207,23 +195,7 @@ DEFAULTS_PATH="$HOME/.claude/up/builder-defaults.md"
|
|
|
207
195
|
|
|
208
196
|
Ler `$DEFAULTS_PATH` se existir. Se nao existir, informar: "Sem builder-defaults.md. Usando inferencia inteligente para decisoes nao especificadas. Crie ~/.claude/up/builder-defaults.md para personalizar."
|
|
209
197
|
|
|
210
|
-
**
|
|
211
|
-
|
|
212
|
-
Se builder-defaults.md existe, procurar secao "## Modelos por Papel" e extrair mapeamento:
|
|
213
|
-
```
|
|
214
|
-
$MODEL_PLANNING = modelo para planning (default: opus)
|
|
215
|
-
$MODEL_EXECUTION = modelo para execution (default: sonnet)
|
|
216
|
-
$MODEL_VERIFICATION = modelo para verification (default: opus)
|
|
217
|
-
$MODEL_DETECTION = modelo para detection (default: sonnet)
|
|
218
|
-
$MODEL_RESEARCH = modelo para research (default: sonnet)
|
|
219
|
-
$MODEL_QUALITY = modelo para quality (default: opus)
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
Se secao nao existe: usar defaults acima (opus planeja, sonnet executa, opus verifica).
|
|
223
|
-
|
|
224
|
-
**IMPORTANTE — Sonnet-ready planning:**
|
|
225
|
-
Se `$MODEL_EXECUTION = sonnet`, setar flag `$SONNET_EXECUTION = true`.
|
|
226
|
-
Isso ativa nivel extra de detalhe nos planos (ver planejador Sonnet-ready mode).
|
|
198
|
+
**v0.6.0+: Sem extracao de modelos.** O runtime decide o modelo. Planos sao sempre Sonnet-ready (detalhe maximo).
|
|
227
199
|
|
|
228
200
|
**Detectar modo automaticamente:**
|
|
229
201
|
|
|
@@ -659,7 +631,7 @@ Escrever .plano/PRODUCT-ANALYSIS.md
|
|
|
659
631
|
Commit apos escrever.
|
|
660
632
|
Retornar: ## PRODUCT ANALYSIS COMPLETE
|
|
661
633
|
</output>
|
|
662
|
-
", subagent_type="up-product-analyst",
|
|
634
|
+
", subagent_type="up-product-analyst", description="Analisar produto e mercado")
|
|
663
635
|
```
|
|
664
636
|
|
|
665
637
|
Verificar retorno `## PRODUCT ANALYSIS COMPLETE`. Se falhou: registrar e continuar (System Designer usara blueprints como fallback).
|
|
@@ -708,7 +680,7 @@ Escrever .plano/SYSTEM-DESIGN.md
|
|
|
708
680
|
Commit apos escrever.
|
|
709
681
|
Retornar: ## SYSTEM DESIGN COMPLETE
|
|
710
682
|
</output>
|
|
711
|
-
", subagent_type="up-system-designer",
|
|
683
|
+
", subagent_type="up-system-designer", description="Projetar sistema completo")
|
|
712
684
|
```
|
|
713
685
|
|
|
714
686
|
```
|
|
@@ -771,7 +743,7 @@ Se brownfield:
|
|
|
771
743
|
- parallelization=true
|
|
772
744
|
- Commit todos arquivos ao final
|
|
773
745
|
</constraints>
|
|
774
|
-
", subagent_type="up-arquiteto",
|
|
746
|
+
", subagent_type="up-arquiteto", description="Estruturar projeto executavel")
|
|
775
747
|
```
|
|
776
748
|
|
|
777
749
|
### 2.7 Validar Requisitos (Quality Gate de Planejamento)
|
|
@@ -785,7 +757,7 @@ Validando requisitos (13 checks)...
|
|
|
785
757
|
```
|
|
786
758
|
Task(
|
|
787
759
|
subagent_type="up-requirements-validator",
|
|
788
|
-
|
|
760
|
+
,
|
|
789
761
|
prompt="
|
|
790
762
|
<objective>
|
|
791
763
|
Validar REQUIREMENTS.md com 13 checks automaticos.
|
|
@@ -977,7 +949,7 @@ Task(prompt="
|
|
|
977
949
|
<planning_context>
|
|
978
950
|
**Fase:** {phase_number}
|
|
979
951
|
**Modo:** builder (autonomo -- NAO use AskUserQuestion)
|
|
980
|
-
|
|
952
|
+
**Sonnet-ready:** sempre (default em v0.6.0+)
|
|
981
953
|
|
|
982
954
|
<files_to_read>
|
|
983
955
|
- .plano/STATE.md (Estado do Projeto)
|
|
@@ -1019,14 +991,14 @@ Se algo falhar, corrija antes de retornar.
|
|
|
1019
991
|
Escrever PLAN.md em: .plano/fases/{phase_dir}/
|
|
1020
992
|
Retornar: ## PLANNING COMPLETE com resumo dos planos
|
|
1021
993
|
</output>
|
|
1022
|
-
", subagent_type="up-planejador",
|
|
994
|
+
", subagent_type="up-planejador", description="Planejar Fase {phase_number}")
|
|
1023
995
|
```
|
|
1024
996
|
|
|
1025
997
|
Verificar retorno:
|
|
1026
998
|
- `## PLANNING COMPLETE` → prosseguir para quality gate do plano
|
|
1027
999
|
- `## PLANNING INCONCLUSIVE` → tentar novamente com mais contexto (max 2 tentativas)
|
|
1028
1000
|
|
|
1029
|
-
**Quality Gate do Plano (
|
|
1001
|
+
**Quality Gate do Plano (sempre):**
|
|
1030
1002
|
|
|
1031
1003
|
Antes de passar pro executor, verificar qualidade do plano rapidamente:
|
|
1032
1004
|
```bash
|
|
@@ -1043,7 +1015,7 @@ done
|
|
|
1043
1015
|
```
|
|
1044
1016
|
|
|
1045
1017
|
Se algum plano tem detail_score < 2 e a fase tem mais de 3 tarefas:
|
|
1046
|
-
- Re-spawnar planejador com instrucao extra: "Plano insuficientemente detalhado
|
|
1018
|
+
- Re-spawnar planejador com instrucao extra: "Plano insuficientemente detalhado. Reescrever com imports, tipos, schemas e endpoints explicitos. Ver self-check Sonnet-ready."
|
|
1047
1019
|
- Max 1 re-tentativa de enriquecimento
|
|
1048
1020
|
|
|
1049
1021
|
```
|
|
@@ -1091,7 +1063,7 @@ Para cada wave, spawnar agentes especializados em paralelo (se parallelization=t
|
|
|
1091
1063
|
```
|
|
1092
1064
|
Task(
|
|
1093
1065
|
subagent_type="{up-frontend-specialist | up-backend-specialist | up-database-specialist | up-executor}",
|
|
1094
|
-
|
|
1066
|
+
,
|
|
1095
1067
|
prompt="
|
|
1096
1068
|
<objective>
|
|
1097
1069
|
Executar plano {plan_number} da fase {phase_number}-{phase_name}.
|
|
@@ -1154,7 +1126,7 @@ Spawnar code reviewer:
|
|
|
1154
1126
|
```
|
|
1155
1127
|
Task(
|
|
1156
1128
|
subagent_type="up-code-reviewer",
|
|
1157
|
-
|
|
1129
|
+
,
|
|
1158
1130
|
prompt="
|
|
1159
1131
|
<objective>
|
|
1160
1132
|
Revisar codigo da fase {phase_number} contra production-requirements e padroes de qualidade.
|
|
@@ -1211,7 +1183,7 @@ Modo builder. NAO use AskUserQuestion.
|
|
|
1211
1183
|
</builder_mode>
|
|
1212
1184
|
",
|
|
1213
1185
|
subagent_type="up-verificador",
|
|
1214
|
-
|
|
1186
|
+
|
|
1215
1187
|
)
|
|
1216
1188
|
```
|
|
1217
1189
|
|
|
@@ -1707,7 +1679,7 @@ Relatorio em .plano/ideias/RELATORIO.md
|
|
|
1707
1679
|
```
|
|
1708
1680
|
Task(
|
|
1709
1681
|
subagent_type="up-blind-validator",
|
|
1710
|
-
|
|
1682
|
+
,
|
|
1711
1683
|
prompt="
|
|
1712
1684
|
<objective>
|
|
1713
1685
|
Validar requisitos SEM ler codigo. Apenas navegar o app via Playwright e curl.
|
|
@@ -1859,7 +1831,7 @@ Spawnar devops agent:
|
|
|
1859
1831
|
```
|
|
1860
1832
|
Task(
|
|
1861
1833
|
subagent_type="up-devops-agent",
|
|
1862
|
-
|
|
1834
|
+
,
|
|
1863
1835
|
prompt="
|
|
1864
1836
|
<objective>
|
|
1865
1837
|
Gerar artefatos de producao para o projeto: Dockerfile, docker-compose, CI/CD, .env.example, seed data, scripts.
|
|
@@ -1898,7 +1870,7 @@ Spawnar technical writer:
|
|
|
1898
1870
|
```
|
|
1899
1871
|
Task(
|
|
1900
1872
|
subagent_type="up-technical-writer",
|
|
1901
|
-
|
|
1873
|
+
,
|
|
1902
1874
|
prompt="
|
|
1903
1875
|
<objective>
|
|
1904
1876
|
Gerar documentacao completa: README.md, API docs, CHANGELOG.md, setup guide.
|
|
@@ -1940,7 +1912,7 @@ Spawnar security reviewer:
|
|
|
1940
1912
|
```
|
|
1941
1913
|
Task(
|
|
1942
1914
|
subagent_type="up-security-reviewer",
|
|
1943
|
-
|
|
1915
|
+
,
|
|
1944
1916
|
prompt="
|
|
1945
1917
|
<objective>
|
|
1946
1918
|
Auditar codigo para vulnerabilidades de seguranca (OWASP Top 10, auth, injection, data exposure).
|
|
@@ -1978,7 +1950,7 @@ Spawnar QA agent:
|
|
|
1978
1950
|
```
|
|
1979
1951
|
Task(
|
|
1980
1952
|
subagent_type="up-qa-agent",
|
|
1981
|
-
|
|
1953
|
+
,
|
|
1982
1954
|
prompt="
|
|
1983
1955
|
<objective>
|
|
1984
1956
|
Identificar gaps de cobertura de testes, escrever testes que faltam, executar todos.
|
|
@@ -2505,7 +2477,7 @@ Spawnar up-verificador (mesmo do full — verificacao real, nao shortcut):
|
|
|
2505
2477
|
```
|
|
2506
2478
|
Task(
|
|
2507
2479
|
subagent_type="up-verificador",
|
|
2508
|
-
|
|
2480
|
+
,
|
|
2509
2481
|
prompt="Verificar fase {phase_number}. Diretorio: {phase_dir}. Objetivo: {goal}."
|
|
2510
2482
|
)
|
|
2511
2483
|
```
|
package/workflows/governance.md
CHANGED
|
@@ -32,17 +32,39 @@ Spawnar o supervisor:
|
|
|
32
32
|
```python
|
|
33
33
|
Agent(
|
|
34
34
|
subagent_type="up-{supervisor_name}",
|
|
35
|
-
model="opus",
|
|
36
35
|
prompt="""
|
|
37
36
|
Revisar output de {operacional_name} para {context}.
|
|
38
37
|
|
|
38
|
+
<governance_compressed>
|
|
39
|
+
DECISOES:
|
|
40
|
+
- APPROVE — criterios atendidos, sem issues criticas, evidencia clara
|
|
41
|
+
- REQUEST_CHANGES — 1+ criterio falhou, feedback especifico e acionavel
|
|
42
|
+
- ESCALATE — fora do escopo, decisao arquitetural ou conflito → chief
|
|
43
|
+
|
|
44
|
+
REWORK LIMITS:
|
|
45
|
+
- Operacional ← Supervisor: max 3 ciclos, depois forca approval com debito tecnico
|
|
46
|
+
- Supervisor ← Chief: max 2 ciclos, depois escala pro CEO
|
|
47
|
+
|
|
48
|
+
NUNCA APROVAR SE:
|
|
49
|
+
- Trabalho nao foi de fato verificado ("parece ok")
|
|
50
|
+
- Evidencia faltando ou ambigua
|
|
51
|
+
- SUMMARY claim sem backing no codigo
|
|
52
|
+
- Stub/placeholder em vez de implementacao real
|
|
53
|
+
- Falta de wiring (componente criado mas nao conectado)
|
|
54
|
+
|
|
55
|
+
LOG OBRIGATORIO: .plano/governance/approvals.log
|
|
56
|
+
</governance_compressed>
|
|
57
|
+
|
|
39
58
|
<files_to_read>
|
|
40
|
-
- $HOME/.claude/up/references/governance-rules.md
|
|
41
|
-
- $HOME/.claude/up/references/rework-limits.md
|
|
42
59
|
- [arquivos do output do operacional]
|
|
43
|
-
- [arquivos de contexto]
|
|
60
|
+
- [arquivos de contexto da fase — preferir slices em .plano/fases/{N}/]
|
|
44
61
|
</files_to_read>
|
|
45
62
|
|
|
63
|
+
Versoes COMPLETAS (so se decisao precisa de detalhe):
|
|
64
|
+
- Read $HOME/.claude/up/references/governance-rules.md
|
|
65
|
+
- Read $HOME/.claude/up/references/rework-limits.md
|
|
66
|
+
- Read $HOME/.claude/up/references/engineering-principles.md
|
|
67
|
+
|
|
46
68
|
Avaliar contra criterios objetivos.
|
|
47
69
|
Retornar: APPROVE | REQUEST_CHANGES | ESCALATE
|
|
48
70
|
"""
|