Skip to content

CI: o mapa do banco não pode mais apodrecer em silêncio - #53

Merged
BarryBits merged 1 commit into
mainfrom
chore/gate-estrutura-em-dia
Aug 12, 2026
Merged

CI: o mapa do banco não pode mais apodrecer em silêncio#53
BarryBits merged 1 commit into
mainfrom
chore/gate-estrutura-em-dia

Conversation

@BarryBits

Copy link
Copy Markdown
Owner

Primeiro item da lista aberta depois do marco zero (#52).

O buraco

db/ESTRUTURA.md é gerado do dump (db/snapshot/schema.sql) cruzado com src/. Nada obrigava ele a acompanhar: bastava um re-dump entrar sem regerar o .md para ele começar a mentir sobre o banco — e ele é justamente o arquivo que a gente lê para decidir.

Não é hipótese: aconteceu ontem mesmo. O gerador rodou 15:42, o SNAPSHOT.md foi salvo 15:45, e o .md já nasceu apontando para o dump errado no cabeçalho.

É a mesma classe de erro que a baseline existe para impedir — documento que descreve o banco e envelhece sem avisar —, só que num .md em vez de numa pasta de migrations.

O gate

- name: Mapa do banco em dia (db/ESTRUTURA.md)
  run: npx tsx scripts/db/gerar-estrutura.ts --check

Compara o .md com o que o dump produziria agora. Divergiu, sai com exit 1.

Provado nos dois sentidos antes de commitar — gate que não morde é pior que gate nenhum:

cenário saída exit
.md em dia ✓ db/ESTRUTURA.md está em dia com db/snapshot/schema.sql 0
.md adulterado ✗ db/ESTRUTURA.md está desatualizado. Rode: npx tsx … 1

O check normaliza CRLF na leitura, então o .md gerado no Windows não quebra no runner Linux.

Por que tsx vira devDependency

Não era declarado — nem no package.json, nem no lock, nem instalado. O npx tsx … que o CLAUDE.md e o db/snapshot/README.md documentam funcionava baixando da rede a cada execução. Um gate pendurado em fetch não pinado falha à toa, e gate que falha à toa ensina a ignorar vermelho — o problema que acabamos de resolver no Supabase Preview.

Pinado em ^4.23.12. O lock só ganhou linhas (519 inserções, zero remoção): nenhuma versão de outro pacote se mexeu.

Fluxo novo depois de todo re-dump

npx tsx scripts/db/gerar-estrutura.ts   # regera
git add db/snapshot/schema.sql db/ESTRUTURA.md

O diff do .md passa a ser a leitura humana do que mudou no banco.

🤖 Generated with Claude Code

db/ESTRUTURA.md é gerado do dump cruzado com src/ — e sem gate ele envelhece
sozinho: entra um re-dump, o .md fica pra trás, e a partir daí ele mente sobre o
banco. É a mesma classe de erro que a baseline de 2026-08-11 existe pra impedir,
só que num arquivo que a gente lê pra decidir.

O CI agora roda `gerar-estrutura.ts --check`, que compara o .md com o que o dump
produziria e sai com exit 1 se divergir. Provado nos dois sentidos antes de
commitar: passa com o .md em dia, falha com o .md adulterado.

tsx entra como devDependency (^4.23.12) porque não era declarado — o `npx tsx`
documentado no CLAUDE.md só funcionava baixando da rede a cada execução. Gate que
depende de fetch não pinado falha à toa e ensina a ignorar o vermelho. O lock só
ganhou linhas (519 inserções, zero remoção): nenhuma versão de outro pacote mexeu.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@supabase

supabase Bot commented Aug 12, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project tdlxqqgechxhkygdmsxq because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@vercel

vercel Bot commented Aug 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
atr-os Ready Ready Preview Aug 12, 2026 3:13am

@BarryBits
BarryBits merged commit 501cf62 into main Aug 12, 2026
4 checks passed
BarryBits added a commit that referenced this pull request Aug 12, 2026
Traz o gate de db/ESTRUTURA.md do #53 para que ele valide justamente este PR,
que mexe no dump e no mapa gerado.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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