You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Todos os testes + security scans rodam LOCAL, ANTES do push/PR. O ponto é NÃO depender do round-trip do GitHub (esperar minutos, falhar remoto, refazer). O tier local (Zizmor + Bandit + Semgrep + os 1653) foi montado exatamente pra isso. Esses gates NUNCA podem ser removidos.
Problema (evidência 03/jul)
.git/hooks/ só tem pre-commit (framework leve) — NÃO existe pre-push que rode o check-all.sh.
A regra check-all-gate.mdc (alwaysApply: true, 'check-all before commit/PR') e never-weaken-security-gates.mdc existem — mas o enforcement era disciplina de agente OU um hook não-versionado em .git/hooks/ (untracked → some no silêncio, sem trilha, não compartilha entre clones T14/L14).
AC — tornar o gate MECÂNICO, VERSIONADO e INVIOLÁVEL
Commitar .githooks/pre-push (versionado, no repo) que roda ./scripts/check-all.sh --enforced (pre-commit + 1653 pytest + Bandit + Zizmor + Semgrep). Falhou → push abortado. Espelho .githooks/pre-push.ps1 se precisar no Windows do Cursor.
core.hooksPath=.githooks — setar num passo de setup idempotente (scripts/install-hooks.sh/.ps1) + documentar em AGENTS.md/CONTRIBUTING como passo obrigatório por clone. OU pre-commit default_install_hook_types: [pre-commit, pre-push] + stage pre-push rodando o gate.
TAMPER-EVIDENT (o 'nunca removível'): teste em tests/ (que roda no CI required Test (Python)) que ASSERTA que .githooks/pre-push existe, é executável, e invoca check-all. Se alguém deletar/enfraquecer o hook versionado → o CI required FALHA → PR não merge. O gate protege a si mesmo.
DOUTRINA: codificar em never-weaken-security-gates.mdc + AGENTS.md que remover/bypassar o pre-push local é PROIBIDO; mudança exige trailer Gate-Change-Approved-By: <operador> (paridade com o gate PII/ADR-0071). Bypass (--no-verify) só com aprovação explícita do operador, logada.
Fora de escopo
NÃO enfraquecer nada 'pra ficar rápido'. O gate local é o ponto — velocidade vem de rodar local (sem round-trip remoto), não de pular teste.
Prioridade P0: é integridade de gate de segurança. Operador tratou como top.
MANDATO DO OPERADOR (não-negociável)
Todos os testes + security scans rodam LOCAL, ANTES do push/PR. O ponto é NÃO depender do round-trip do GitHub (esperar minutos, falhar remoto, refazer). O tier local (Zizmor + Bandit + Semgrep + os 1653) foi montado exatamente pra isso. Esses gates NUNCA podem ser removidos.
Problema (evidência 03/jul)
.git/hooks/só tempre-commit(framework leve) — NÃO existepre-pushque rode ocheck-all.sh.2 passed in 2.39s) — não os 1653 + security.check-all-gate.mdc(alwaysApply: true, 'check-all before commit/PR') enever-weaken-security-gates.mdcexistem — mas o enforcement era disciplina de agente OU um hook não-versionado em.git/hooks/(untracked → some no silêncio, sem trilha, não compartilha entre clones T14/L14).AC — tornar o gate MECÂNICO, VERSIONADO e INVIOLÁVEL
.githooks/pre-push(versionado, no repo) que roda./scripts/check-all.sh --enforced(pre-commit + 1653 pytest + Bandit + Zizmor + Semgrep). Falhou → push abortado. Espelho.githooks/pre-push.ps1se precisar no Windows do Cursor.core.hooksPath=.githooks— setar num passo de setup idempotente (scripts/install-hooks.sh/.ps1) + documentar em AGENTS.md/CONTRIBUTING como passo obrigatório por clone. OU pre-commitdefault_install_hook_types: [pre-commit, pre-push]+ stagepre-pushrodando o gate.tests/(que roda no CI requiredTest (Python)) que ASSERTA que.githooks/pre-pushexiste, é executável, e invocacheck-all. Se alguém deletar/enfraquecer o hook versionado → o CI required FALHA → PR não merge. O gate protege a si mesmo.never-weaken-security-gates.mdc+ AGENTS.md que remover/bypassar o pre-push local é PROIBIDO; mudança exige trailerGate-Change-Approved-By: <operador>(paridade com o gate PII/ADR-0071). Bypass (--no-verify) só com aprovação explícita do operador, logada.Fora de escopo
Prioridade P0: é integridade de gate de segurança. Operador tratou como top.