Skip to content

chore(23): governança de repositório — sem push/merge autônomo + prot… - #14

Merged
fkazeredo merged 3 commits into
developfrom
feature/23-repo-governance
Jul 3, 2026
Merged

chore(23): governança de repositório — sem push/merge autônomo + prot…#14
fkazeredo merged 3 commits into
developfrom
feature/23-repo-governance

Conversation

@fkazeredo

Copy link
Copy Markdown
Owner

…eção de segredos (ADR-0023)

Endurece a governança para trabalho em equipe de longo prazo (pedido do dono).

Trava do agente (.claude/settings.json — corrige a ref pendente do CLAUDE.md L104):

  • allow: git push (feature branch) + gh pr create → abre PR para develop ao terminar/testar a fatia (fim normal da fatia);
  • ask: git tag (só a pedido explícito do dono);
  • deny: git merge, gh pr merge, gh release create/delete, force-push. main/develop mudam só via PR revisado (branch protection documentada — o dono aplica no GitHub).

Varredura de segredos (o repo não tinha nenhuma; CodeQL é só SAST):

  • .github/workflows/gitleaks.yml (job bloqueante, push/PR, histórico completo);
  • .pre-commit-config.yaml (hook gitleaks local, opcional);
  • .gitleaks.toml (allowlist ENUMERADA dos dev-defaults: dev12345, dev-*-secret, a chave dev base64 do AesGcmSecretCipher, acme/admin) — segredo real novo ainda falha (application.yml não é path-allowlisted).

Higiene de arquivos sensíveis:

  • .gitignore: .env.* (com !.env.example / !.env.prod.example) + .pem/.key/ .p12/.jks/.keystore/... + secrets/ + id_rsa;
  • .dockerignore (backend/frontend): .env/segredos/.git.

Governança de equipe: .github/CODEOWNERS, SECURITY.md (disclosure privado + política de segredos), CONTRIBUTING.md (fluxo PR + regra do agente), .github/PULL_REQUEST_TEMPLATE.md.

Propagação das regras nos docs de processo: CLAUDE.md (invariante 9 + Routing Map + nota das permissões), docs/RUN-PHASE.md (§Git reescrito — supersede a autonomia de push/merge), delivery.md (branch protection + linha gitleaks no CI), workflow.md, TUTORIAL.md, architecture/security.md, ADR-0015 (adendo: tag via release PR), README pt/en, PRODUCTION-CHECKLIST, docs/README (hub + contagens 23 ADRs/152 DLs), ROADMAP-STATUS (header + log). ADR-0023 + DL-0152.

Verificação local: JSON válido; .gitignore confere (exemplos rastreados, segredos ignorados); links dos .md resolvem; paths do CODEOWNERS existem. gitleaks/TOML/ YAML têm validação autoritativa no CI (não instalados localmente).

franklin.azeredo and others added 3 commits July 3, 2026 10:28
…eção de segredos (ADR-0023)

Endurece a governança para trabalho em equipe de longo prazo (pedido do dono).

Trava do agente (.claude/settings.json — corrige a ref pendente do CLAUDE.md L104):
- allow: git push (feature branch) + gh pr create → abre PR para develop ao
  terminar/testar a fatia (fim normal da fatia);
- ask: git tag (só a pedido explícito do dono);
- deny: git merge, gh pr merge, gh release create/delete, force-push.
main/develop mudam só via PR revisado (branch protection documentada — o dono
aplica no GitHub).

Varredura de segredos (o repo não tinha nenhuma; CodeQL é só SAST):
- .github/workflows/gitleaks.yml (job bloqueante, push/PR, histórico completo);
- .pre-commit-config.yaml (hook gitleaks local, opcional);
- .gitleaks.toml (allowlist ENUMERADA dos dev-defaults: dev12345, dev-*-secret,
  a chave dev base64 do AesGcmSecretCipher, acme/admin) — segredo real novo
  ainda falha (application.yml não é path-allowlisted).

Higiene de arquivos sensíveis:
- .gitignore: .env.* (com !.env.example / !.env.prod.example) + *.pem/*.key/
  *.p12/*.jks/*.keystore/... + secrets/ + id_rsa*;
- .dockerignore (backend/frontend): .env/segredos/.git.

Governança de equipe: .github/CODEOWNERS, SECURITY.md (disclosure privado +
política de segredos), CONTRIBUTING.md (fluxo PR + regra do agente),
.github/PULL_REQUEST_TEMPLATE.md.

Propagação das regras nos docs de processo: CLAUDE.md (invariante 9 + Routing
Map + nota das permissões), docs/RUN-PHASE.md (§Git reescrito — supersede a
autonomia de push/merge), delivery.md (branch protection + linha gitleaks no
CI), workflow.md, TUTORIAL.md, architecture/security.md, ADR-0015 (adendo: tag
via release PR), README pt/en, PRODUCTION-CHECKLIST, docs/README (hub +
contagens 23 ADRs/152 DLs), ROADMAP-STATUS (header + log). ADR-0023 + DL-0152.

Verificação local: JSON válido; .gitignore confere (exemplos rastreados, segredos
ignorados); links dos .md resolvem; paths do CODEOWNERS existem. gitleaks/TOML/
YAML têm validação autoritativa no CI (não instalados localmente).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
O check Gitleaks do PR #14 falhou por configuração da action (não por segredo
— o run do evento push passou limpo): a gitleaks-action@v2 lê o range de
commits do PR via API e exige o GITHUB_TOKEN. Adicionado o token padrão
(contents: read basta).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…de cada teste)

Falha do CI (verde no Windows local, vermelha no runner Linux do GitHub, desde a
Fase 20b): breakerOpens...:151 esperava 0 snapshots mas via 1. A asserção 148
(não bateu no portal) passava, provando que o crawler curto-circuitou correto —
o snapshot fantasma era RESÍDUO no Postgres singleton COMPARTILHADO por todas as
classes de integração (AbstractPostgresIntegrationTest). A limpeza só rodava em
@AfterEach, deixando a PRIMEIRA asserção exposta a resíduo de outra classe.

Fix: @beforeeach além do @AfterEach — cada teste começa com point_snapshots/
point_crawl_runs limpos, imune a resíduo. Não mascara bug de produto (o
comportamento do breaker é provado pela asserção 148). Repro em container Linux:
627 testes verdes, PointClockCrawler 5/5.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@fkazeredo
fkazeredo merged commit 0e1f389 into develop Jul 3, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant