fix(kwaliteit): meld een dia die niets toont (#583) #681

Merged
brenno merged 3 commits from fix/lege-dia-melden-583 into main 2026-07-22 20:21:45 +00:00
Owner

Sluit #583 (de tweede helft; de eerste landde in b043d5f, PR #652).

De kwaliteitscontrole zei "geen problemen" over een dia zonder inhoud. Dat blijft niet zo.

De regel gaat over de vorm, niet over het slidetype. Dat is de waardevolste helft van je voorstel: een scorecard die wit rendeert is één geval, "deze dia toont niets" vangt ze allemaal — óók de negen slidetypes uit #615 die door geen exporttest komen.

Hoe "leeg" wordt bepaald. De dia wordt vergeleken met een vers aangemaakte dia van hetzelfde type. Wat daar al in staat — de vaste kop van een checklist, de beginrijen van een scope-matrix, de voorbeeldgebeurtenissen van een tijdlijn — is niet van de auteur en telt dus niet als inhoud. Een handgeschreven veldenlijst zou die vaste koppen wél meetellen en dan meldt een lege checklist zichzelf nooit.

Bijkomend voordeel, en bij SlideType geen luxe: de regel onderhoudt zichzelf. Een nieuw slidetype dat zijn eigen beginstand meebrengt krijgt de juiste ondergrens zonder dat hier iets bij hoeft — en de compiler wijst maar een handvol van de plekken aan die zo'n type raakt.

Een waarschuwing, geen fout. Een dia die je nog moet vullen is geen vergissing; tijdens het schrijven mag de melding meelopen zonder de export te blokkeren.

De test

Uitputtend over SlideType.values in plaats van over een handvol types: een nieuw type dat hier stil doorheen glipt wil ik in de suite zien en niet bij een gebruiker die voor de zaal staat. Verder: één ingevuld veld laat de melding vallen, en een sprekersnotitie telt niet mee — de zaal ziet hem niet.

Eén bestaande test moest mee. forSlide returns only matching slide issues leunde erop dat een verse bullets-dia nul meldingen oplevert; dat is nu niet meer waar, en dan toetste die test niet langer wat hij belooft. Dia 0 heeft een titel gekregen.

Wat er nog omheen zat

De nieuwe controle duwde SlideQualityAnalyzer over zijn klasseplafond. Niet de basislijn verhoogd maar eruit gehaald wat er sowieso niet in hoefde: _checkEmptySlide en _checkQuestionAnswerable raken geen enkel veld van de analyzer — het zijn functies van een dia naar een lijst meldingen. Top-level nu, net als de memo's er al staan; de klasse zakt van 1204 naar 1102 regels en de basislijn gaat mee omlaag.

En de conventiepoort ving iets waar ik zelf overheen had gelezen: het scheidingsteken in de inhoudsvingerafdruk stond als een echt NUL-byte in het bestand, waardoor grep en git diff het als binair lazen. Nu de escape.

Poort

make check groen (niet door tail gepijpt). De nieuwe l10n.d(…) is in alle 31 talen vertaald via make add-l10n; make l10n-check groen. Geen afhankelijkheid erbij.

Eén bijvangst is als apart issue ingediend: #677 — zes talen dragen bestaande kwaliteitsmeldingen nog als onvertaald Engels, en l10n-check ziet dat niet omdat hij dekking toetst en niet taal.

Sluit #583 (de tweede helft; de eerste landde in `b043d5f`, PR #652). De kwaliteitscontrole zei "geen problemen" over een dia zonder inhoud. Dat blijft niet zo. **De regel gaat over de vorm, niet over het slidetype.** Dat is de waardevolste helft van je voorstel: een scorecard die wit rendeert is één geval, "deze dia toont niets" vangt ze allemaal — óók de negen slidetypes uit #615 die door geen exporttest komen. **Hoe "leeg" wordt bepaald.** De dia wordt vergeleken met een vers aangemaakte dia van hetzelfde type. Wat daar al in staat — de vaste kop van een checklist, de beginrijen van een scope-matrix, de voorbeeldgebeurtenissen van een tijdlijn — is niet van de auteur en telt dus niet als inhoud. Een handgeschreven veldenlijst zou die vaste koppen wél meetellen en dan meldt een lege checklist zichzelf nooit. Bijkomend voordeel, en bij `SlideType` geen luxe: de regel onderhoudt zichzelf. Een nieuw slidetype dat zijn eigen beginstand meebrengt krijgt de juiste ondergrens zonder dat hier iets bij hoeft — en de compiler wijst maar een handvol van de plekken aan die zo'n type raakt. **Een waarschuwing, geen fout.** Een dia die je nog moet vullen is geen vergissing; tijdens het schrijven mag de melding meelopen zonder de export te blokkeren. ## De test Uitputtend over `SlideType.values` in plaats van over een handvol types: een nieuw type dat hier stil doorheen glipt wil ik in de suite zien en niet bij een gebruiker die voor de zaal staat. Verder: één ingevuld veld laat de melding vallen, en een sprekersnotitie telt niet mee — de zaal ziet hem niet. Eén bestaande test moest mee. `forSlide returns only matching slide issues` leunde erop dat een verse bullets-dia nul meldingen oplevert; dat is nu niet meer waar, en dan toetste die test niet langer wat hij belooft. Dia 0 heeft een titel gekregen. ## Wat er nog omheen zat De nieuwe controle duwde `SlideQualityAnalyzer` over zijn klasseplafond. Niet de basislijn verhoogd maar eruit gehaald wat er sowieso niet in hoefde: `_checkEmptySlide` en `_checkQuestionAnswerable` raken geen enkel veld van de analyzer — het zijn functies van een dia naar een lijst meldingen. Top-level nu, net als de memo's er al staan; de klasse zakt van 1204 naar 1102 regels en de basislijn gaat mee omlaag. En de conventiepoort ving iets waar ik zelf overheen had gelezen: het scheidingsteken in de inhoudsvingerafdruk stond als een echt NUL-byte in het bestand, waardoor grep en git diff het als binair lazen. Nu de escape. ## Poort `make check` groen (niet door `tail` gepijpt). De nieuwe `l10n.d(…)` is in alle 31 talen vertaald via `make add-l10n`; `make l10n-check` groen. Geen afhankelijkheid erbij. Eén bijvangst is als apart issue ingediend: #677 — zes talen dragen bestaande kwaliteitsmeldingen nog als onvertaald Engels, en `l10n-check` ziet dat niet omdat hij dekking toetst en niet taal.
De tweede helft van #583. De eerste (de placeholders die als gewone
zwarte tekst stonden) landde in b043d5f; dit is de helft die niet over
dat ene slidetype gaat.

Een scorecard die je zojuist had toegevoegd zag er ingevuld uit,
rendeerde wit, kwam als "geen problemen" door de kwaliteitscontrole en
exporteerde een lege pagina. Elk vangnet wees op hetzelfde moment de
verkeerde kant op, en de auteur stond ermee voor de zaal. De controle
gaat daarom over de vorm en niet over het type: valt er niets te tonen,
dan hoort dat gezegd te worden.

Hoe "leeg" wordt bepaald: de dia wordt vergeleken met een vers
aangemaakte dia van hetzelfde type. Wat daar ook al in staat — de vaste
kop van een checklist, de beginrijen van een scope-matrix — is niet van
de auteur en telt dus niet als inhoud. Dat maakt de regel bovendien
zelfonderhoudend: een nieuw slidetype dat zijn eigen beginstand
meebrengt krijgt de juiste ondergrens zonder dat hier iets bij moet, en
dat is bij SlideType geen luxe.

Een waarschuwing, geen fout: een dia die je nog moet vullen is geen
vergissing, en tijdens het schrijven mag de melding meelopen zonder de
export te blokkeren.

De test loopt uitputtend over SlideType.values in plaats van over een
handvol types — een nieuw type dat hier stil doorheen glipt wil ik in de
suite zien en niet bij een gebruiker die voor de zaal staat. Verder:
één ingevuld veld laat de melding vallen, en een sprekersnotitie telt
niet mee, want de zaal ziet hem niet.

Sluit #583.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
De lege-dia-controle duwde `SlideQualityAnalyzer` over zijn plafond.
Niet de basislijn verhoogd maar eruit gehaald wat er sowieso niet in
hoefde: `_checkEmptySlide` en `_checkQuestionAnswerable` raken geen
enkel veld van de analyzer — het zijn functies van een dia naar een
lijst meldingen. Top-level in dezelfde library dus, net als de memo's
er al staan. De klasse zakt van 1204 naar 1102 regels en de basislijn
gaat mee omlaag.

Plus: het scheidingsteken in de inhoudsvingerafdruk stond als een echt
NUL-byte in het bestand, waardoor grep en git diff het als binair lazen.
Nu de escape `\u0000` — byte-identiek, en leesbaar in een diff.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
test(kwaliteit): geef dia 0 een titel, want leeg is nu een melding
Some checks failed
CI / Gate (Linux) · Format · Analyze · Coverage (push) Failing after 25s
CI / Docs links (push) Failing after 22s
CI / Web hardening (push) Failing after 26s
CI / Supply-chain (Trivy · advisory) (push) Failing after 23s
CI / Gate (Linux) · Format · Analyze · Coverage (pull_request) Failing after 21s
CI / Docs links (pull_request) Failing after 26s
CI / Web hardening (pull_request) Failing after 28s
CI / Supply-chain (Trivy · advisory) (pull_request) Failing after 25s
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Test (macos-latest) (pull_request) Has been cancelled
CI / Test (windows-latest) (pull_request) Has been cancelled
92bbead986
`forSlide returns only matching slide issues` leunde erop dat een verse
bullets-dia nul meldingen oplevert. Dat is sinds de lege-dia-regel niet
meer waar, en terecht — maar dan toetst die test niet langer of
`forSlide` op index filtert. Een titel erbij en hij doet weer wat hij
belooft.

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