Skip to content

Commit d0eceba

Browse files
rubenmarcusclaude
andauthored
fix(regua): DOCSAUT deixa de reprovar branch de PR com autor novo (#415)
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. Agent: Claude Code Signed-off-by: rubenmarcus <rubenmarcus.dev@gmail.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent 60c158f commit d0eceba

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

‎tools/eval/docs-autoria-check.mjs‎

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,18 @@ if (sujo) {
4646
process.exit(1);
4747
}
4848

49-
// Linha de base: medir mutação sobre árvore já desatualizada dá veredito sem valor.
50-
if (spawnSync('node', [GERADOR, '--check', '--autoria'], { encoding: 'utf8' }).status !== 0) {
49+
/* Linha de base SEM `--autoria`: com ele, qualquer branch de PR que traga autor novo no
50+
histórico reprovava aqui — o contrato do #398 é que autoria só é derivável na main, e a régua
51+
estava cobrando o contrário do que guarda (bateu em #375, #372, #399). */
52+
if (spawnSync('node', [GERADOR, '--check'], { encoding: 'utf8' }).status !== 0) {
5153
console.log(' \x1b[31m✗\x1b[0m DOCSAUT não dá para medir: os blocos gerados já estão desatualizados (rode: npm run docs)');
5254
process.exit(1);
5355
}
5456

57+
/* A DOCSAUT2 pergunta se `--autoria` MORDE a autoria torta. Numa branch onde ela já está torta
58+
por si, a pergunta não tem resposta: pular dizendo isso é honesto, cobrar não. */
59+
const autoriaMedivel = spawnSync('node', [GERADOR, '--check', '--autoria'], { encoding: 'utf8' }).status === 0;
60+
5561
const original = readFileSync(ALVO, 'utf8');
5662
const geradorOriginal = readFileSync(GERADOR, 'utf8');
5763
const rodar = (args) => spawnSync('node', [GERADOR, '--check', ...args], { encoding: 'utf8' }).status === 0;
@@ -75,7 +81,8 @@ try {
7581
if (comAutoriaTorta === original) throw new Error('não achei a frase de autoria para mutar');
7682
writeFileSync(ALVO, comAutoriaTorta);
7783
if (!rodar([])) falhas.push('DOCSAUT1 autoria torta REPROVOU o PR — cobra de quem não pode consertar (só é derivável após o squash)');
78-
if (rodar(['--autoria'])) falhas.push('DOCSAUT2 autoria torta PASSOU com --autoria — o portão da main está cego para o único lugar onde o número é derivável');
84+
if (!autoriaMedivel) console.log(' \x1b[33m⚠\x1b[0m DOCSAUT2 pulada: a autoria já está torta nesta branch (autor novo no histórico), então a mutação não é medível aqui');
85+
if (autoriaMedivel && rodar(['--autoria'])) falhas.push('DOCSAUT2 autoria torta PASSOU com --autoria — o portão da main está cego para o único lugar onde o número é derivável');
7986
writeFileSync(ALVO, original);
8087

8188
// ---- mutação de OUTRO bloco: a tolerância não pode ter vazado para o resto

0 commit comments

Comments
 (0)