OPS70 — Guard de CI: importMap do Payload deve falhar o gate se divergir do config com envs S3 #87
Labels
No labels
blocked
done
in-prod
in-progress
kind:chore
prio:P1
prio:P2
ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
Reference: fsolla/teqo#87
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plano: —
Contexto
OPS69 (P0, 2026-08-19) foi causado por uma divergência dev/prod do
importMapdo Payload: o plugins3Storageé condicional (ativas só com as envsS3_*, que existem em produção), entãopnpm generate:importmaprodado sem as envs gera um importMap sem oS3ClientUploadHandler— admin em branco em prod. O fix foi regenerar o importMap com envs dummy e commitar (+2 linhas), mas nada no gate impede que a mesma classe de bug volte:ci.yml/ci-pr.ymlnão rodamgenerate:importmapnem checam o arquivo commitado;tests/e2e/admin.e2e.spec.ts) roda semS3_*(.env.testsem as envs) — a divergência dev/prod exata;Objetivo
Um guard que falhe o gate (PR e main) quando o
importMapcommitado divergir do que o config gera com as envs de produção ativadas.Direção sugerida (reavaliar na execução)
scripts/check-importmap.mjs): rodapayload generate:importmapcom as 4S3_*dummy inline (mecânica validada no OPS69 —loadEnvConfigdo@next/envnão sobrescreve envs do processo;iterateConfignão toca DB), gera para um caminho temporário (ou backup do arquivo atual) e compara com o commitado → exit 1 se divergir.ci.yml(eci-pr.yml?) antes da suite —pnpm check:importmap(ex.:pnpm check:importmapscript no package.json).S3_BUCKET=teqo-media S3_ENDPOINT=http://localhost:3900 S3_ACCESS_KEY_ID=test S3_SECRET_ACCESS_KEY=test.Aceite
pnpm check:importmappassa com o arquivo atual (pós-OPS69) e falha se alguém regenerar sem as envs.scripts/lib/) seguindo o padrão dos outros (scripts/lib/cli.mjsetc.).Fora de escopo
s3Storagecondicional em si (plugin sempre ativo) — decisão de produto/OPS52, não entra aqui.Reforço via OPS73 (#114): o S9 (
8d2352c0) foi a 2ª ocorrência da mesma classe — realizougenerate:importmapsem as envsS3_*e removeu o handler do importMap, reintroduzindo em produção o errogetFromImportMap: PayloadComponent not found(admin em branco de 2026-08-19 até o deploy do OPS73 em 2026-08-20). A proteção só existe em doc (AGENTS.md). Sugestão de reavaliação de prioridade: P1 (o guard teria falhado ambos os PRs S9/OPS73 e evitado a interrupção do CMS).Tracker migrado para o GitHub — continue em #gh772 (github.com/fsolla/teqo/issues/772). Esta Issue Forgejo está fechada.