Mapa anatΓ΄mico do Builder (atual orchestrator/) preparando o refactor para nomenclatura Harry/Harrison no EstΓ‘gio 4. Documenta: fluxo de execuΓ§Γ£o, hierarquia de agents, sistema cascade, APIs/schemas, e mapeamento atual β†’ futuro.

🎯 Visão geral em 30 segundos

O Builder hoje Γ© um orchestrator que recebe um README de projeto, decompΓ΅e em tasks, cascata modelos LLM por task_type, valida output e escreve arquivos com defesa em camadas. Tudo em orchestrator/ (TypeScript via tsx).

No EstΓ‘gio 4 (prΓ³ximo), Builder vira Harrison (chief of staff), com crew nomeada estilo Peaky Blinders.

πŸ—οΈ Fluxo do orchestrator (estado atual)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  ENTRADA                                                          β”‚
β”‚  ─────────                                                        β”‚
β”‚  β€’ README.md do projeto (ex: luiz-llm)                           β”‚
β”‚  β€’ Stack definida (Next.js + Fastify + Supabase + Prisma)        β”‚
β”‚  β€’ CLI flags (--resume, --max-tasks, BUILDER_USE_SPAWN=1)        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  index.ts β€” LOOP PRINCIPAL                                        β”‚
β”‚  ────────────────────────                                         β”‚
β”‚  1. Carrega state.json (.builder/)                               β”‚
β”‚  2. Renderiza painel ASCII (epic/task/progress)                  β”‚
β”‚  3. Para cada task pending: chama task-engine.runTask()          β”‚
β”‚  4. Atualiza state.json apΓ³s cada task                           β”‚
β”‚  5. Exit: 0 se done>0, 1 se falha total (Bug 36)                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  task-engine.ts β€” runTask()                                       β”‚
β”‚  ──────────────────────────                                       β”‚
β”‚  0. detectInstability() (Bug 42) β€” pause panel se 'critical'    β”‚
β”‚  1. context-builder monta contexto (3k tokens)                   β”‚
β”‚  2. SPEC + PLAN: cascade chama LLM (gera spec.md + plan.md)     β”‚
β”‚  3. output_files expandido (Bug 19 fix: 4 β†’ N arquivos)         β”‚
β”‚  4. EXECUTE: cascade chama LLM (gera cΓ³digo)                    β”‚
β”‚  5. STEWARDSHIP: validateStructure() β€” checa qualidade          β”‚
β”‚     ↓ se issues:                                                  β”‚
β”‚     6. RETRY com modelo escalado (3 tentativas)                  β”‚
β”‚         ↓ se ainda falha:                                        β”‚
β”‚         7. needs_review ou blocked                               β”‚
β”‚  8. file-writer.ts grava arquivos (Bug 28: defesa 3 camadas)    β”‚
β”‚  9. Marca task completed                                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  SAÍDA                                                            β”‚
β”‚  ───────                                                          β”‚
β”‚  β€’ Arquivos em apps/api/, apps/web/, packages/                   β”‚
β”‚  β€’ docs/specs/{TASK_ID}-spec.md                                  β”‚
β”‚  β€’ docs/plans/{TASK_ID}-plan.md                                  β”‚
β”‚  β€’ state.json atualizado                                          β”‚
β”‚  β€’ quota-status.json (Bug 42)                                    β”‚
β”‚  β€’ build-*.log                                                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ‘₯ Hierarquia de Agents (estado atual β†’ visΓ£o Harry)

Hoje β€” AGENT_RULES em orchestrator/agents/index.ts

Agents sΓ£o prompts especializados (nΓ£o classes). Cada um define regras para o LLM agir como aquele especialista. Existem 6+ agents ativos:

Agent atual FunΓ§Γ£o Cascade preferida β†’ Codinome Harry
frontend Componentes React + shadcn/ui gemini-flash β†’ gpt5-mini β†’ gpt5-cli β†’ sonnet Nova
backend Fastify routes + services gpt5-cli β†’ sonnet β†’ gpt5-mini β†’ opus Forge
security OWASP, RBAC, RLS, audit log opus β†’ gpt5-thinking β†’ sonnet β†’ gpt5-cli Sentinel
testing Vitest unit + Playwright e2e gemini-flash β†’ gpt5-mini β†’ gpt5-cli β†’ sonnet Echo
storyboard Atomic Design, Storybook, design tokens (compartilha frontend) Nova (especializaΓ§Γ£o)
deploy Docker, GitHub Actions, CI/CD gpt5-cli β†’ sonnet β†’ gpt5-mini β†’ opus Switch

VisΓ£o futura (EstΓ‘gio 4) β€” Crew Harry completa

                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚    🎩 HARRISON              β”‚
                  β”‚    Chief of Staff (boss)    β”‚
                  β”‚    Coordena, decide, fala   β”‚
                  β”‚    com Bruno                β”‚
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚
      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
      β”‚              β”‚           β”‚           β”‚              β”‚
      β–Ό              β–Ό           β–Ό           β–Ό              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ATLAS   β”‚    β”‚ FORGE   β”‚  β”‚  NOVA   β”‚ β”‚ LEDGER  β”‚  β”‚SENTINEL β”‚
β”‚Architectβ”‚    β”‚Backend  β”‚  β”‚Frontend β”‚ β”‚Database β”‚  β”‚Security β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
      β”‚              β”‚           β”‚           β”‚              β”‚
      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚
            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚            β”‚       β”‚       β”‚            β”‚
            β–Ό            β–Ό       β–Ό       β–Ό            β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚  ECHO  β”‚  β”‚ GRAVES β”‚ β”‚ QUILL  β”‚ β”‚ SWITCH β”‚ β”‚  ???   β”‚
       β”‚ QA/    β”‚  β”‚Auditor β”‚ β”‚ Docs   β”‚ β”‚ Deploy β”‚ β”‚Future  β”‚
       β”‚Testing β”‚  β”‚  novo  β”‚ β”‚        β”‚ β”‚ DevOps β”‚ β”‚Specialistβ”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Mapeamento detalhado

Codinome Especialidade Substitui agent atual Nasce novo?
Harrison Chief of staff, coordena crew, fala com Bruno (orchestrator core) renomeaΓ§Γ£o
Atlas Arquitetura, ADRs, decisΓ΅es tΓ©cnicas architect renomeaΓ§Γ£o
Forge Backend services, APIs, business logic backend renomeaΓ§Γ£o
Nova Frontend, componentes, design system frontend β€’ storyboard renomeaΓ§Γ£o + merge
Ledger Database schemas, migrations, queries database_schema renomeaΓ§Γ£o
Sentinel Security audit, OWASP, RBAC, RLS security renomeaΓ§Γ£o
Echo QA, unit/integration/e2e tests testing renomeaΓ§Γ£o
Graves Auditor de cΓ³digo gerado, code review final (nΓ£o existe hoje) NOVO
Quill DocumentaΓ§Γ£o tΓ©cnica, READMEs, ADRs (parte de architect) extraΓ§Γ£o
Switch DevOps, deploy, CI/CD, infra deploy renomeaΓ§Γ£o

⚑ Sistema Cascade β€” como Harrison decide o modelo

Cascade v3.2 atual (orchestrator/llm-router.ts)

PrincΓ­pio: cost-first com 4 nΓ­veis garantidos por rota. Sobe na cascade quando modelo anterior falha (rate limit, erro, ou stewardship reject).

Categorias de criticidade

ALTA CRITICIDADE (12 rotas)
β”œβ”€ task-generator, architect, spec-writer, planner
β”œβ”€ security, auth, code_review, bug_fix
└─ frontend_setup, backend_setup, database_schema, devops
   Cascade atual (Bug 51, 17/04): opus-cli / gpt5-thinking-cli / gpt5-cli / sonnet-cli
   (gemini-pro REMOVIDO β€” 50 RPD free = inviΓ‘vel)

MÉDIA CRITICIDADE (9 rotas)
β”œβ”€ frontend_page, frontend_component
β”œβ”€ backend_api, backend_service
β”œβ”€ database_query, testing_integration
└─ testing_e2e, refactor, documentation
   Cascade atual (Bug 51, 17/04): gemini-flash-cli β†’ gpt5-mini-cli β†’ gpt5-cli β†’ sonnet-cli

BAIXA CRITICIDADE (5 rotas)
β”œβ”€ ui_microchange, testing_unit
β”œβ”€ dependency_update, config_tweak
└─ comment_fix
   Cascade atual: gemini-flash-cli β†’ groq-llama-70b β†’ gpt5-mini-cli β†’ sonnet-cli

Modelos disponΓ­veis (12 ativos)