Render — P5 no ar, o resto da trilha na fila

O que foi para produção em 2026-10-15 (commit cc69555), com que gates, e o que continua fora. Verde = no ar. Âmbar = espera decisão sua. Cinza = fora.

47
endpoints REST no ar (P5)
18/18
gates verdes, 0 falhas
987
testes passando (58 suítes)
87,6%
cobertura do backend (piso 87)
1200
conexões do Postgres próprio
1 de 2
serviços do Render no ar
verde: no arâmbar: espera decisão suacinza: fora desta entrega

Trilha: 15 pacotes, 6 fechados

P0…P4 · fase A núcleo, banco, contratos, identidade e domínio — já na main desde 3c2aaed P5 · rotas REST 47 endpoints, zod e serializers — merge 1b63972, publicado em cc69555 P6 · tools MCP 59 tools + gateway /mcp — ~5.000 linhas para portar P7 · portão de upgrade render_approvals + sincronia de projetos P8…P11 · frontend casca, motor, editor e 112 telas — ~250 arquivos P12…P14 · shot, testes e corte serviço de captura, suíte migrada e migração dos dados Frontend 502: render-v0.mp.serendiped.com não tem o que servir. O serviço render-frontend-ws está criado e configurado, mas o repo não tem frontend/Dockerfile em NENHUMA ref — o deploy falha com "Dockerfile not found" e o container nem chega a existir. Quem destrava é o P8 (casca do frontend). Conta, duas pendências suas: (1) o CONTA_PROVISIONING_SECRET_RENDER só entra no processo do conta-backend-ws na próxima RECRIAÇÃO do container — services_restart não aplica env nova; (2) o resync do estado (empresa, membros) para o Render precisa ser disparado à mão em Conta → Aplicativos → Render → Reenviar estado, senão o Render fica sem espelho. Segurança: a senha do role do banco do Render vazou em output de tool na sessão anterior e foi girada no mesmo dia, sem downtime (nova senha gerada dentro da sandbox, ALTER_ROLE por SQL via stdin, arquivos 0600 regravados). O valor vazado está morto; a única pendência é de processo — o LB guarda os payloads de tool e a rotação de credencial do painel continua como boa prática.

Cada pacote entra por merge --no-ff no integ/render-fase-a, com gates com log. P0..P4 foram entregues na sessão anterior (fase A, commit 3c2aaed); P5 foi fechado e publicado agora; P6..P14 continuam na fila do desenho. Os números das ondas que faltam são o tamanho medido no AgentPack de onde o código sai.

Vereditos

P5 em produção — commit cc69555

Deploy t5OiAPuh_PI271BNnyEiR no render-backend-ws, commit cc695553e717 da main, container 657f8d4b2572. Prova ao vivo: /health 200 com banco ok (latência 1 ms), /api/render/schemas 200 público (o contrato JSON Schema do Render), e as 47 rotas respondendo 401 — existe e exige credencial, o deny-by-default de sempre. O render-frontend-ws continua sem container.

Gates 18/18 — o log está em .sbcache/wf-render-build/P5/logs/

prisma-validate, prisma-format-check, typecheck, lint-ratchet (129 avisos no teto, 0 erros), cycles, knip (0 erros), docs-check, env-example-check, test-db-migrate, test-db-drift, test-pedacos (58 suítes, 987 testes, 5 pulados), cobertura-pedacos (5 pedaços juntados), coverage-floor (8/8 diretórios), test-env-ci, build, gitleaks-git e gitleaks-dir. Os dois gates que reprovavam foram corrigidos, não contornados.

Os dois gates que reprovavam

knip: o ramo do P5 tinha nascido 7 commits antes da main e não levava os 2.162 linhas de teste do P4 — cinco arquivos de domínio ficavam sem uso aparente. Com os testes de volta, o knip fecha sem ninguém inventar entrada. coverage-floor: a medida era de uma árvore incompleta (82,69%). Com os testes do P4: src 87,63% e src/services 86,58%, e os pisos subiram para os medidos, como a regra da casa manda ("subiu a cobertura, suba o piso no mesmo PR").

Espera você — a Conta

Dois movimentos fora do painel, já descritos no runbook: recriar/deployar o conta-backend-ws para o CONTA_PROVISIONING_SECRET_RENDER entrar no processo (um restart não aplica env), e disparar o resync do estado da empresa para o Render. Sem o resync, o Render nasce sem espelho de empresa/membros e o login por SSO não tem para onde provisionar.

Frontend — fora desta entrega

Não é falha de operação: frontend/ tem 3 arquivos gerados e mais nada. Não há package.json nem Dockerfile em nenhuma branch (main, integ, pkg/p0..p5, nem nos 7 worktrees). O P8 traz a casca (Vite + React + @nomad/ui + TopBar + nginx) e é o que destrava o deploy do render-frontend-ws; P9…P11 trazem o motor, o editor e as 112 telas. Até lá o domínio responde 502 com TLS válido.

P6…P14 — fora desta entrega

Onze pacotes do desenho seguem intocados: tools MCP (59 tools, ~5.000 linhas), portão de upgrade, frontend inteiro, serviço de captura, migração da suíte e o script de corte de dados. O código de origem está no sandbox (AgentPack) e o desenho detalha o que sai de lá e o que não sai. Cada onda tem revisão adversarial, gates com log e merge --no-ff no integ/render-fase-a — o mesmo processo do P5.

Detalhe

O que foi para a main nesta tarefa

CommitO que éTamanho
1b63972Integra pkg/p5 (rotas REST do Render) no integ/render-fase-a27 arquivos, +3.816 / −98
cc69555Integra a fase A do Render (P0..P5) na main — o que foi publicadomerge --no-ff
442eac5fix(test): handler de mentira sem async (fecha a catraca em 129)1 arquivo
1d032cdfix(backend): o merge duplicou 3 funções do auth — fica a do P5−54 linhas
9fea358chore(backend): piso de cobertura sobe para o medido8 pisos
8e11b00Merge main em pkg/p5 (traz os testes do P4 que o ramo não tinha)3 conflitos resolvidos à mão
a8401d6docs(runbook): o que a subida de 2026-10-14 mostrou que o roteiro errava+125 / −17

Gates do P5 — o que cada um mede

GateResultadoNúmero
typecheck + buildpassoutsc limpo, dist/server.js gerado
lint:ratchetpassou129 avisos no teto (não subiu), 0 erros
knippassou0 erros; 223 exports e 99 tipos sem uso só como aviso
cycles + prisma + docs + envpassousem ciclo, schema válido, .env.example em dia
testes (pedaços)passou58 suítes · 987 testes · 5 pulados · 0 falhas
cobertura + pisopassousrc 87,63% · services 86,58% · routes 92,53% · 8/8 diretórios
gitleaks (git + árvore)passounenhum segredo na árvore nem nos commits

O que ficou de fora — e o que destrava

OndaTamanho medidoO que destrava
P6 · tools MCP~5.000 linhas + 11 suítesPortar tools/render e mcp/ do AgentPack e trocar o stub do /mcp (hoje responde 403 MCP_NOT_AVAILABLE para chave restrita)
P7 · portão de upgrade2 services + 1 CLITabela render_approvals no lugar da leitura de task_decisions
P8 · casca do frontend~35 arquivosÉ o que faz o render-frontend-ws compilar e o domínio deixar de responder 502
P9…P11 · motor, editor e telas~200 arquivosO editor de telas que a regra "config nova tem tela" pede
P12 · serviço de captura4 arquivos + credencialshot/ com token próprio, depois do frontend
P13 · suíte migrada~95 arquivos de testeÉ o que faz a cobertura voltar aos pisos do AgentPack (90/93)
P14 · corte de dados1 script + 2 runbooksMigração do AgentPack com --dry-run obrigatório

Próximo