test(mutatie): laat de sweep alle zeven doelen draaien, en kijk mee met de juiste test (#660) #678

Merged
brenno merged 1 commit from fix/checklist-scope-mutant-660 into main 2026-07-22 20:02:29 +00:00
Owner

Sluit #660.

De overlever was geen dode code. Het ocideck_checklist_scope:-predicaat is wel degelijk gedekt — test/checklist_spec_test.dart haalt een checklistdia mét scope-object door generateDeck en parseDeck en toetst dat out.checklistScope er weer uitkomt. Dat bestand stond alleen niet in de lijst tests die de sweep voor dít doel opnieuw draait. Een predicaat waarvan de dekking in een ander bestand zit, overleeft.

De ronde-trip-test die je vroeg bestond dus al; ik heb er geen tweede naast gezet. Wat ontbrak was dat de sweep ernaar keek.

Het tweede punt was het grotere. Het doel had één make-regel per bestand, dus make stopte bij de eerste overlever en de resterende vijf doelen kwamen nooit aan bod. Daardoor was "26 mutanten" niet het aantal mutanten maar het aantal dat het tot de eerste stop haalde. Het doel draait nu alle zeven en telt de mislukkingen op, met een exit-code aan het eind.

Uitkomst na beide wijzigingen: 51 mutanten over zeven doelen, nul overlevers.

Dat getal staat nu in CONTRIBUTING.md en in assurance/CRA-2024-2847-positie.md, mét de vermelding dat het vorige getal een artefact was. Dat lijkt me hier het belangrijkste: een sweep die zijn eigen uitkomst afkapt is een sweep waarvan je de uitslag niet kunt geloven, en dat hoort niet stilzwijgend uit de tekst te verdwijnen zodra hij groen is. De correctie staat er gedateerd bij, zoals de rest van die documenten dat doet.

Poort

make check groen (niet door tail gepijpt). make mutate-parsers twee keer volledig gedraaid — één keer om de uitkomst te zien, één keer om het mutanten-aantal te tellen.

Sluit #660. **De overlever was geen dode code.** Het `ocideck_checklist_scope:`-predicaat is wel degelijk gedekt — `test/checklist_spec_test.dart` haalt een checklistdia mét scope-object door `generateDeck` en `parseDeck` en toetst dat `out.checklistScope` er weer uitkomt. Dat bestand stond alleen niet in de lijst tests die de sweep voor dít doel opnieuw draait. Een predicaat waarvan de dekking in een ander bestand zit, overleeft. De ronde-trip-test die je vroeg bestond dus al; ik heb er geen tweede naast gezet. Wat ontbrak was dat de sweep ernaar keek. **Het tweede punt was het grotere.** Het doel had één `make`-regel per bestand, dus make stopte bij de eerste overlever en de resterende vijf doelen kwamen nooit aan bod. Daardoor was "26 mutanten" niet het aantal mutanten maar het aantal dat het tot de eerste stop haalde. Het doel draait nu alle zeven en telt de mislukkingen op, met een exit-code aan het eind. **Uitkomst na beide wijzigingen: 51 mutanten over zeven doelen, nul overlevers.** Dat getal staat nu in `CONTRIBUTING.md` en in `assurance/CRA-2024-2847-positie.md`, mét de vermelding dat het vorige getal een artefact was. Dat lijkt me hier het belangrijkste: een sweep die zijn eigen uitkomst afkapt is een sweep waarvan je de uitslag niet kunt geloven, en dat hoort niet stilzwijgend uit de tekst te verdwijnen zodra hij groen is. De correctie staat er gedateerd bij, zoals de rest van die documenten dat doet. ## Poort `make check` groen (niet door `tail` gepijpt). `make mutate-parsers` twee keer volledig gedraaid — één keer om de uitkomst te zien, één keer om het mutanten-aantal te tellen.
test(mutatie): laat de sweep alle zeven doelen draaien, en kijk mee met de juiste test (#660)
Some checks failed
CI / Gate (Linux) · Format · Analyze · Coverage (pull_request) Failing after 24s
CI / Web hardening (pull_request) Failing after 25s
CI / Docs links (pull_request) Failing after 27s
CI / Supply-chain (Trivy · advisory) (pull_request) Failing after 27s
CI / Gate (Linux) · Format · Analyze · Coverage (push) Failing after 27s
CI / Web hardening (push) Failing after 29s
CI / Docs links (push) Failing after 26s
CI / Supply-chain (Trivy · advisory) (push) Failing after 26s
CI / Test (macos-latest) (pull_request) Has been cancelled
CI / Test (windows-latest) (pull_request) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
75c4d404e7
De overlever was geen dode code. Het `ocideck_checklist_scope:`-predicaat
in `markdown_service_finding.dart` is wel degelijk gedekt — door
`test/checklist_spec_test.dart`, dat een checklistdia mét scope-object door
`generateDeck` en `parseDeck` haalt. Alleen stond dat bestand niet in de
lijst tests die de sweep voor dít doel opnieuw draait, en dan overleeft een
predicaat waarvan de dekking gewoon bestaat.

Tegelijk het tweede punt uit het issue, en dat was het grotere: het doel
had één `make`-regel per bestand, dus make stopte bij de eerste overlever
en de resterende vijf doelen kwamen nooit aan bod. Daardoor was "26
mutanten" niet het aantal mutanten maar het aantal dat het tot de eerste
stop haalde. Het doel draait nu alle zeven en faalt pas aan het eind.

Uitkomst na beide wijzigingen: **51 mutanten over zeven doelen, nul
overlevers.** Dat getal staat nu in CONTRIBUTING.md en in de
CRA-positiebepaling, mét de vermelding dat het vorige getal een artefact
was — een sweep die zijn eigen uitkomst afkapt is een sweep waarvan je de
uitslag niet kunt geloven, en dat hoort er niet stilzwijgend uit te
verdwijnen.

Sluit #660.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit b3ae2da520 into main 2026-07-22 20:02:29 +00:00
Sign in to join this conversation.
No description provided.