6.8 KiB
Admin do Payload segue em branco em produção — deploy do fix OPS69 + verificação pós-deploy
Status: rascunho Atualizado em: 2026-08-19 Issue: #114 Priority: P1 Model: composer-2.5 Impeccable: A — sem mudança de UI (deploy do que já está em main) Rascunho UI: N/A Appetite: ~0,5 dia — deploy + verificação funcional; um outcome verificável Responsável: —
Intenção
O time editorial e de campanha está sem CMS: /admin em produção (jorgesolla1313.com.br) abre em branco (tela preta) — a página carrega, o shell hidrata, mas o formulário de login nunca renderiza. O bug raiz já foi diagnosticado e corrigido em main pelo OPS69 (Issue #77, fechada): o importMap commitado ficou sem a entrada @payloadcms/storage-s3/client#S3ClientUploadHandler e o admin não monta as views quando o plugin s3Storage está ativo (envs S3_* de produção). O fix está em main desde 7162c65e (2026-08-19).
Mas produção nunca recebeu o fix. O container roda um build de 2026-08-18 21:49 (e6bd1d26), anterior ao merge: o deploy automático antigo morreu (#85 OPS70 — runs agendados skipped) e o caminho novo (dispatch manual do deploy.yml no GitHub Actions) depende do runner self-hosted no homeserver, que ainda não está instalado (#113 OPS71-INFRA). A verificação pós-deploy do OPS69 (aceite do próprio plano) nunca rodou.
Verificado ao vivo em 2026-08-19: /admin de produção renderiza o shell vazio — 0 inputs, 0 botões, body sem texto — mesmo sintoma do diagnóstico OPS69. main no GitHub hoje (f5862c9b) contém o fix.
Persona e fluxo
- Persona / contexto: editor de conteúdo do mandato/campanha (staff que alimenta notícias e campanhas pelo Painel de Controle), bloqueado há ~1 dia.
- Job principal: abrir o admin, logar e voltar a editar publicações — sem depender de infra nova.
- Fluxo desejado: abre
jorgesolla1313.com.br/admin→ formulário de login aparece (não mais tela preta) → credenciais → dashboard com as coleções → consegue abrir uma coleção. - Anti-goals de produto: não rediagnosticar o bug (OPS69 já fechou o diagnóstico com evidência); não reabrir a Issue #77; não entregar nenhuma mudança de código nova — só publicar o que já está aprovado em main.
Objetivo e aceite
/adminem produção renderiza o formulário de login para quem tem credencial (tela preta some).- O container de produção roda uma revisão que contém o fix do importMap (
7162c65eou posterior — HEAD atualf5862c9b). - O log do container de produção não re-emite
getFromImportMap: PayloadComponent not found in importMappara o handler do storage. - Um editor loga e abre uma coleção sem editar nada (smoke mínimo de leitura).
- Guardrail: nada de schema/migration/Consent/UI nesta entrega — é o deploy do que já está em
main.
Dados (intenção)
- Vou apresentar dados? Não — a verificação é funcional (render do login + log do container), nenhum número novo.
Direção no codebase (hipótese)
- Áreas prováveis:
scripts/deploy-homeserver.sh(o script de deploy — fonte da verdade do fluxo, roda no homeserver),.github/workflows/deploy.yml(dispatch manualverify→deploy), runbookdocs/ops/teqo-1313-deploy.md,src/app/(payload)/admin/importMap.js(o fix já commitado — conferir a revision do container, não o arquivo). - Precedente a olhar: OPS69 (
docs/plans/ops69-admin-branco-importmap-s3*.md, #77) — aceite de verificação pós-deploy pendente; OPS71 (cutover do deploy) e #113 (runner); OPS66 (ordem migrate→build já resolvida no script). - Risco de acoplamento: o deploy de
mainleva junto outras mudanças já aprovadas (ex.: S7, cards da home) — esperado e desejado (deploy do HEAD); o smoke do script cobre/,/campanha/login,/admin; rollback = restore do compose (runbook).
Dependências
- Nenhuma dura. #113 (runner self-hosted) é o habilitador do caminho A, não pré-requisito — o caminho B desbloqueia sem ele.
Fora de escopo
- Rediagnóstico do bug e guard de CI do importMap — #87 OPS70 já na fila (P2).
- Instalação do runner self-hosted do GitHub — #113 (Issue própria).
- Deploy contínuo automático — decisão OPS71 é deploy manual; #85 OPS70 (pipeline antigo) parece obsoleto pós-cutover — sugestão de fechamento à parte, não escopo daqui.
Rabbit holes de produto
- "A tela preta voltou → reabrir o diagnóstico." Se alguém só completar o desejo: regressar ao OPS69. Corte neste item: conferir a revision do container antes de qualquer diagnóstico — a evidência (build de 2026-08-18 sem o fix, main com o fix desde 2026-08-19) já explica o sintoma.
- "Já que vou mexer, instalo o runner/automatizo tudo." Corte: #113 (runner) e #87 (guard) são Issues separadas; este item entrega admin no ar.
Questões em aberto (produto)
- Caminho do deploy? Opções: A) dispatch manual do
deploy.ymlno GitHub Actions (verify full ~50 min → deploy no runner do homeserver — exige instalar o runner, #113, antes); B) executarscripts/deploy-homeserver.sh <sha>direto no homeserver (mesmo script idempotente que o runner rodaria; smoke + rollback documentados; não espera #113); C) instalar o runner primeiro e depois A. Recomendação: B agora — admin caído = CMS indisponível; o script é o mesmo e o runbook cobre smoke e rollback; depois, o primeiro dispatch via A valida o pipeline OPS71. (assumido — validar com produto) - Prioridade? Opções: P0 (mesma dor do incidente original) | P1 (o fix já existe em main; resta entrega + verificação). Recomendação: P1 — claimável já, sem precisar de re-P0 da fila. (assumido — validar com produto)
- Quem toca o homeserver? O agente não tem acesso ao homeserver nem ao GitHub para dispatch sem ação do operador. Opções: o executor prepara os comandos do runbook e o humano roda (2 passos, ~5 min) | o executor dispara via GitHub API (
GITHUB_TOKENdisponível) quando o runner estiver em pé (#113). Recomendação: humana para o caminho B imediato; o agente executa o restante (conferir SHA, verificar/adminno browser, checar log) e registra a evidência. (assumido — validar com produto)
Referências
- OPS69:
docs/plans/ops69-admin-branco-importmap-s3.md+-impl.md, Issue #77 (fechada — fix7162c65eem main) - Runbook de deploy:
docs/ops/teqo-1313-deploy.md(smoke, rollback, falhas conhecidas) - OPS71 cutover:
docs/plans/ops71-ci-github-actions-tracker-forgejo.md; runner: #113; guard de importMap: #87; pipeline antigo morto: #85 - Evidência (gate):
docs/plans/ops73-deploy-admin-prod-evidence.png—/adminde produção em 2026-08-19 (shell vazio, sem login)
