1.8 KiB
Recently resolved (2026-08-18): OPS59 — o pre-push local não roda mais e2e: ele roda uma vez, no CI (PR e main — gateia merge e deploy). O espelho scripts/gate-ci.mjs cortou o bloco e2e da cascata (playwright install, build .next-e2e, test:e2e) e o preflight de DB passou a depender só de test/build; o readout do classificador mantém e2e=<mode> e imprime o que o CI rodará ("e2e runs in CI, not in this gate — OPS59"), com o check unmapped duplicado removido (ci-scope.mjs já o imprime no stderr). package.json, .husky/pre-push, git-push.mjs e os workflows .forgejo/* intocados (CI verificado, não alterado: ci-pr.yml e2e → checks; ci.yml e2e → checks → deploy). tests/unit/ciSkipInvariants.unit.spec.ts tirou gate-ci.mjs da lista de arquivos que devem conter .next-e2e (o gate local não builda mais e2e; run-e2e-affected.mjs/playwright.config.ts seguem cobertos — e2e local opcional intacto). Docs sincronizadas: AGENTS.md (checklist local item 3 — test:e2e/test:all saem da obrigatória; "e2e = CI, local opcional pnpm test:e2e:affected"), .agents/rules/engineering-standards.mdc e agent-pr-workflow.mdc (gate descrito como "espelho do ci-pr.yml sem e2e"). Verificado por grep: AGENT-OPS.md e skills (work-issue, agent-work-issue, worktree-next-issue, local-database) não citavam e2e no pre-push — sem mudança. Anti-goals respeitados: sem flag de "pular e2e" (bypass continua só via --no-verify documentado), política "Dono do PR, dono do CI" inalterada. Sem migration/access/Consent/UI. Verificação: pnpm gate:ci local (cascata nova full — lint/format/typecheck/knip/cycles/unit/int/build em teqo_test; e2e vira print), unit 2286+ verdes; o e2e desta PR roda full no CI por HIGH_RISK (gate-ci.mjs).