Skip to content

feat: um comando para ver a ferramenta funcionando - #35

Merged
lvcas-dotcom merged 2 commits into
mainfrom
feat/demo-visivel
Aug 13, 2026
Merged

feat: um comando para ver a ferramenta funcionando#35
lvcas-dotcom merged 2 commits into
mainfrom
feat/demo-visivel

Conversation

@lvcas-dotcom

@lvcas-dotcom lvcas-dotcom commented Aug 13, 2026

Copy link
Copy Markdown
Owner

O demo

$ docker compose -f demo/compose.yaml up

Sobe um Postgres descartável, carrega um schema que quase não declara a própria integridade, e imprime o relatório. Nada do usuário envolvido, e o banco morre com o contêiner. Testado ponta a ponta.

A imagem no topo do README é saída real renderizada em SVG, não screenshot — screenshot ninguém versiona, envelhece calado, e não se regrava sem a mesma máquina e a mesma fonte. scripts/termsvg.go lê os bytes que a ferramenta emite, escapes inclusive, e make demo-svg regenera. O gerador é Go com //go:build ignore: roda por go run, não entra no binário e não traz dependência.

O SQL do demo passa a ter uma cópia sódocs/DEMO.md carregava a segunda.

Dois defeitos que só a gravação revelou

A seção de detecção saía com o cabeçalho vazio. A auditoria de eficiência (#22) acrescentou uma dimensão — o nome que o schema dá às próprias chaves primárias — e a incluiu em Empty(). O renderizador do terminal não foi junto. Num schema cuja única convenção detectada fosse essa, o relatório abria DETECTED — conventions read from the schema itself, desenhava a régua, e não listava nada.

O teste percorre as quatro dimensões e falha se alguma contar como evidência sem aparecer. Verificado por mutação.

O alvo carimbava a versão da árvore de trabalho. A gravação saía com v0.1.2-16-g837ec2a-dirty, que conta ao leitor sobre o checkout do mantenedor em vez de sobre o banco dele. Agora constrói na última tag — o que exigiu tornar LDFLAGS recursivo, porque com := ele já estava expandido antes de a variável do alvo existir.

Nenhum dos dois é pego por leitura de código. O primeiro precisa de um schema com uma forma específica; o segundo só existe quando alguém roda.

Verificação

  • go test ./... verde, golangci-lint zero issues, make release-check nos três estágios
  • docker compose -f demo/compose.yaml up roda até o fim e sai com código 0
  • Imagem e bloco de texto do README vêm da mesma captura — mesma duração, mesma versão

Para olhar com os próprios olhos

Vale abrir o assets/demo.svg renderizado e a pré-visualização do README. É a única parte que não dá para verificar por teste: se a fonte monoespaçada do navegador tiver largura diferente da assumida, as colunas da tabela desalinham.

A auditoria de eficiência acrescentou uma dimensão à detecção — o nome que o
schema dá às próprias chaves primárias — e a incluiu em Empty(). O
renderizador do terminal não foi junto: ele imprime sufixo, prefixo e
prefixo de tabela, e não sabe da quarta.

Num schema cuja única convenção detectada seja essa, o relatório abre
"DETECTED — conventions read from the schema itself", desenha a régua, e não
lista nada. Uma seção afirmando ter lido convenções e nomeando nenhuma, que
é o oposto do que este relatório promete.

O teste percorre as quatro dimensões e falha se alguma contar como evidência
sem aparecer, que é a costura que se soltou. Só apareceu porque fui gravar o
demo: nenhuma leitura de código pega isto, precisa de um schema com essa
forma exata.
Quem chega pelo README dá trinta segundos. Nesse tempo não dava para ver
nada: a saída colorida existia, era bonita, e exigia ter um banco.

docker compose -f demo/compose.yaml up sobe um Postgres descartável, carrega
um schema que quase não declara a própria integridade, e imprime o
relatório. Nada do usuário envolvido, e o banco morre com o contêiner.

A imagem no topo do README é a saída real renderizada em SVG, não um
screenshot: screenshot ninguém consegue versionar, envelhece calado, e o
mantenedor não regrava sem a mesma máquina e a mesma fonte. Isto lê os bytes
que a ferramenta emite, escapes inclusive, e sai de make demo-svg.

O gerador é Go com //go:build ignore — roda por go run, não entra no binário
de ninguém e não traz dependência.

O SQL do demo passa a ter uma cópia só. docs/DEMO.md carregava a segunda, e
duas cópias que precisam concordar sempre acabam discordando.

E o alvo constrói na última tag, não na árvore de trabalho: o relatório
carimba a própria versão, e uma gravação dizendo v0.1.2-16-g837ec2a-dirty
conta ao leitor sobre o checkout do mantenedor em vez de sobre o banco dele.
@lvcas-dotcom
lvcas-dotcom merged commit e147474 into main Aug 13, 2026
10 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