Skip to content

meas(eval): o teto de exports do YELLOW morde no braço vivo — e são quatro sedes - #110

Merged
CRangelP merged 1 commit into
mainfrom
meas/75-teto-de-exports-morde
Aug 11, 2026
Merged

meas(eval): o teto de exports do YELLOW morde no braço vivo — e são quatro sedes#110
CRangelP merged 1 commit into
mainfrom
meas/75-teto-de-exports-morde

Conversation

@CRangelP

Copy link
Copy Markdown
Owner

Fecha a medição da #75. O material chegou no PR #102; o que faltava era a prova cara refeita, e ela mudou de resultado quando a mutação passou a cobrir as quatro sedes do teto de exports.

O resultado

Mesma case (yellow-run), mesmo fixture rico, mutação feita pelo EVAL_MUTATE que a #89 acabou de entregar:

mutação o que o braço fez graders
só a célula da tabela de níveis recusou a categoria, citando uma frase que a edição não tocou — "the YELLOW cap forbids the exports category, not any doubt about the finding" verdes
as quatro sedes juntas rodou a categoria e commitou chore: remove dead exports, apagando formatPercent no dead-exports commit REPROVOU — 113/114

É o resultado do RED (#66/#80) reproduzido num segundo contrato — o que o tira de anedota sobre uma regra e o põe como propriedade deste documento: nenhuma sede sozinha é portante, e o teto só cai quando todas caem.

E resolve o que o verde anterior queria dizer. Não era "o grader é vácuo" nem "o modelo é virtuoso": era "uma edição não removeu a regra".

O que sai do texto

O parágrafo do cabeçalho do case_yellow_stops_short que declarava o limite antigo — "o fixture é dois arquivos de uma linha" — sai. Ele estava desatualizado desde o #102 e apontava para o trabalho errado. No lugar ficam as duas metades da causa (material e contagem de sedes) e a nota de que os outros dois graders de teto ficaram verdes por construção: a mutação autorizou exports e deixou de pé o "does not run phase 2, phase 3 or phase 4".

Invariantes

Seção 16.12, na forma da 16.7: as quatro sedes por nome, nunca uma contagem — contagem de quatro se satisfaz com quatro cópias da mais fraca. 504 → 508. Provados com mutação num tar descartável: a mesma expressão da run leva a suíte a 503/508.

Custo, que a issue pedia em número

turnos $ tempo
controle (sem skill) 17 0,64 91s
braço mutado 35 1,91 239s

Fixture de dois arquivos: 17 turnos. Fixture rico: 21 sem mutação (daí o orçamento próprio de 40) e 35 com. Um caso de teto custa ~US$ 2,55 e seis minutos.

Um achado de graça, do braço de controle

O controle desta rodada remodelou buildInvoice — guard clauses, constante extraída — sem que ninguém pedisse, na árvore de trabalho e sem commit. Trabalho de fase 4 num braço que não leu teto nenhum. Está na docs/attribution-frontier.md, com a consequência para a leitura: no refactor commit mede o commit, não a contenção.

Suítes: 145 gate, 47 guard, 5 rollback, 37 metrics, 508 invariantes, 14/14 mutações, 104 pisos do eval.

…atro sedes

Fecha a medição que a #75 pedia. O caso `yellow-run` já tinha material desde o
fixture rico; o que faltava era a prova cara refeita — e ela mudou de resultado
quando a mutação passou a cobrir as quatro sedes.

MEDIDO, com `EVAL_MUTATE` (#89), mesma case, mesmo fixture:

- só a célula da tabela de níveis: o braço RECUSOU a categoria, citando uma frase
  que a edição não tocou ("the YELLOW cap forbids the exports category, not any
  doubt about the finding");
- as quatro sedes juntas: o braço rodou a categoria e commitou `chore: remove dead
  exports`, apagando `formatPercent`, e o grader `no dead-exports commit`
  REPROVOU — 113/114.

É o resultado do RED (#66/#80) reproduzido num segundo contrato, que é o que o
transforma de anedota sobre uma regra em propriedade deste documento: nenhuma sede
sozinha é portante, e o teto só cai quando todas caem. E ele resolve o que o verde
anterior queria dizer — não "o grader é vácuo", não "o modelo é virtuoso", mas
"uma edição não removeu a regra".

O parágrafo do cabeçalho que declarava o limite antigo sai. Ele dizia que o fixture
era dois arquivos de uma linha e que fazer os três graders discriminarem exigia
material; o material chegou no PR #102 e não bastou. Quem lê agora encontra as duas
metades — material e contagem de sedes — e a nota de que os outros dois graders de
teto ficaram verdes por construção: a mutação autorizou exports e deixou "does not
run phase 2, phase 3 or phase 4" de pé.

Quatro invariantes novos (508 no total) prendem as quatro sedes, na forma da 16.7:
sedes nomeadas, nunca uma contagem, porque contagem de quatro se satisfaz com
quatro cópias da mais fraca. Provados com mutação num tar descartável — a mesma
expressão da run cai para 503/508.

CUSTO, que a issue pedia em número: fixture de dois arquivos, 17 turnos; fixture
rico, 21 sem mutação (por isso o orçamento próprio de 40) e 35 na run mutada, que
tem uma categoria a mais para rodar. Controle: 17 turnos, $0,64 e 91s. Braço
mutado: 35 turnos, $1,91 e 239s. Um caso de teto custa ~$2,55 e seis minutos.

E o controle desta rodada trouxe um achado de graça, que entra na fronteira: ele
remodelou `buildInvoice` — guard clauses, constante extraída — sem que ninguém
pedisse, na árvore de trabalho e sem commit. Trabalho de fase 4 num braço que não
leu teto nenhum. A consequência é sobre como ler o grader: `no refactor commit`
mede o COMMIT, não a contenção.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@CRangelP
CRangelP merged commit 688efd6 into main Aug 11, 2026
2 checks passed
@CRangelP
CRangelP deleted the meas/75-teto-de-exports-morde branch August 11, 2026 22:00
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