Skip to content

fix(régua): DOCSAUT deixa de reprovar branch de PR com autor novo - #415

Merged
rubenmarcus merged 1 commit into
mainfrom
fix/docsautoria-em-branch
Aug 22, 2026
Merged

fix(régua): DOCSAUT deixa de reprovar branch de PR com autor novo#415
rubenmarcus merged 1 commit into
mainfrom
fix/docsautoria-em-branch

Conversation

@rubenmarcus

Copy link
Copy Markdown
Member

Summary

Defeito meu, introduzido no #398: a régua eval:docsautoria reprovava qualquer branch de PR que trouxesse autor novo no histórico.

Evidência

A linha de base rodava gen-docs --check --autoria. Mas --autoria só é derivável na main — é literalmente o contrato que o #398 estabeleceu (o squash reescreve o autor, então o número certo só existe depois do merge). A régua passou a cobrar o oposto do que guarda.

Reprovou #375, #372, #399 e a pilha de CI de outra sessão, que precisou de PREPUSH=0 para empurrar. Achado reportado por ela.

Conserto

  • linha de base sem --autoria;
  • a cláusula DOCSAUT2 (que pergunta se --autoria morde a autoria torta) só roda quando a autoria está medível. Onde ela já está torta por si, a régua avisa que pulou em vez de reprovar. Na main continua valendo.

Validation

  • check:fast verde
  • mutantes sem-tolerancia → DOCSAUT1 e tolerancia-demais → DOCSAUT2 seguem mordendo
  • com autoria torta commitada numa branch: passa e imprime o aviso

DEFEITO MEU, do #398: a linha de base rodava `gen-docs --check --autoria`, mas `--autoria` só é
derivável na MAIN — é exatamente o contrato que o #398 estabeleceu. Qualquer branch com autor
novo no histórico reprovava, e a régua passou a cobrar o contrário do que guarda. Bateu em #375,
#372, #399 e na pilha de CI de outra sessão, que precisou de PREPUSH=0 para empurrar.

Conserto: linha de base sem `--autoria`. A DOCSAUT2 (que pergunta se `--autoria` MORDE a autoria
torta) só roda quando a autoria está medível; numa branch onde ela já está torta por si, a régua
AVISA que pulou em vez de reprovar. Na main continua valendo integralmente.

Conferido: os dois mutantes seguem mordendo na main, e com autoria torta commitada numa branch a
régua passa imprimindo o aviso.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
Agent: Claude Code
@vercel

vercel Bot commented Aug 22, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
csbrasil Ready Ready Preview Aug 22, 2026 12:24am

Request Review

@csbrasil-BOT csbrasil-BOT added the target:main PR apontando para a branch main label Aug 22, 2026
@csbrasil-BOT

Copy link
Copy Markdown
Collaborator

csbrasil-bot classification

Note

@rubenmarcus abriu 1 arquivo(s) · +10 −3, base main.

O que mudou

área arquivos + amostra
🧪 arnês 1 +10 −3 docs-autoria-check.mjs

Labels

label por quê
target:main vai direto pra main, sem fila de integração

Ações do bot

@rubenmarcus
rubenmarcus merged commit d0eceba into main Aug 22, 2026
19 checks passed
rubenmarcus added a commit that referenced this pull request Aug 22, 2026
A casa tem uma lei - régua que não morde não existe - e quem demonstra a mordida é
o modo `--mutante=`. Cinco réguas imprimiam

    ✗ MUTAÇÃO 'x' não acendeu nenhuma cláusula — portão cego (lei 3)

e logo abaixo chamavam `process.exit(falhas.length ? 1 : 0)`. Com a lista de
falhas VAZIA - que é exatamente o caso do portão cego - o processo saía com ZERO.
Quem roda a mutação num laço e confere o código de saída, que é o jeito óbvio de
automatizar a lei, via verde justo na hora em que a régua se mostrou cega.

A prova da mordida tinha o mesmo defeito que ela existe para caçar.

As cinco passam a seguir o padrão que o telemetry-check já usava: o portão cego
entra na lista de falhas. Não inventei um sexto jeito de fazer a mesma coisa.

A MC1 varre `tools/eval/` e aceita as duas formas que a casa usa - empurrar nas
falhas ou levar uma flag até o exit -, recusando só a terceira, que é imprimir o
aviso e sair pelo `falhas.length`. Sete réguas auditadas. O mutante `exit-cego`
remove o `falhas.push` de uma delas e reprova.

Achado enquanto eu resolvia conflito nos PRs; o defeito irmão do
`eval:docsautoria` está no #415, da outra sessão.

Agent: Claude Opus 5 (Claude Code)

Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
rubenmarcus added a commit that referenced this pull request Aug 22, 2026
…tão cego

Achado da sessão game4-fc na revisão do #415: o conserto anterior abria o buraco inverso —
bastaria forçar o pulo da medição para o portão da main ficar cego CALADO, que é exatamente o
que o #398 existia para fechar. A DOCSAUT4 reprova quando a autoria ERA derivável no ambiente e
mesmo assim não foi medida.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com>
Agent: Claude Code
@rubenmarcus

Copy link
Copy Markdown
Member Author

Acrescentei a DOCSAUT4, sugerida pela sessão game4-fc na revisão: sem ela, meu conserto abria o buraco inverso — bastaria forçar o pulo da medição para o portão da main ficar cego calado, que é o que o #398 existia para fechar.

DOCSAUT4 autoria era derivável e a régua pulou a medição — portão cego

Agora a régua guarda os dois lados: não cobra onde não dá para medir, e não deixa de cobrar onde dá. Mutantes sem-tolerancia → DOCSAUT1 e tolerancia-demais → DOCSAUT2 seguem mordendo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

target:main PR apontando para a branch main

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants