fix(finding): niet-canonieke ## secties verdwijnen niet langer stil (#1198) #1225
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1225
Loading…
Reference in a new issue
No description provided.
Delete branch "claude/clever-bouman-c9c37a"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Probleem
Niet-canonieke
## …-sectiekoppen in eenfindingwerden stil uit de weergave én export gedropt, terwijl de bron-.mdde tekst behield — een stille afwijking tussen "bestand = bron" en wat je presenteert/exporteert. Voor een opgeleverd pentestrapport een reëel risico. Gevonden bij de beeldkeuring van #1198.De kopkaart rendert vier vaste, taalonafhankelijke ankers (
## Description,## Confirmation (reproduction),## Possible impact,## Recommendation).FindingSpec.parselas alleen die exacte ankers: een handgeschreven/geïmporteerde## Confirmationof## Impact(korte vorm), of een extra## Notes/## References, matchte niets en verdween.Oplossing (twee lagen)
FindingSpec.canonicalSectionAnchormapt gangbare korte vormen en de Nederlandse bronkoppen (hoofdletterongevoelig) op het juiste anker. De inhoud landt in het juiste veld en round-trippt bij de volgende opslag naar de canonieke Engelse kop.## …-sectie op een finding-kop-dia levert een kwaliteitswaarschuwing op (SlideQualityAnalyzer, categorie Inhoud): de melding zegt dat de sectie niet wordt getoond/geëxporteerd en hoe je de kop hernoemt. Zo wordt de stille datalek onmogelijk. Detail-/bewijs-dia's dragen geen kopkaart en blijven ongemoeid.Weging (bewaker)
Deze wijziging raakt hoe de
.mdwordt geïnterpreteerd en normaliseert bij opslag een niet-canonieke kop naar het Engelse anker. Afweging: uitwisselbaarheid/round-trip (de kern van het product) vs. een strengere parser. Gekozen om stille afwijking onmogelijk te maken zónder informatie te verliezen — het bestand blijft de bron, de round-trip blijft heel, en niet-gelijkwaardige secties gaan niet verloren maar worden zichtbaar gemeld i.p.v. auto-verplaatst. Geen nieuwe afhankelijkheid, geen uitgaand verkeer, geen nieuwe vertrouwde partij. De zwaardere variant (onbekende secties bewaren én meerenderen) is bewust niet gekozen: die raakt paginatie, preview, alle exportpaden en l10n, met hoger risico voor beperkt extra nut.Tests
finding_spec_test.dart: alias-routing (korte vorm + NL + hoofdletterongevoelig), onbekende sectie inunknownSectionTitles, canonieke bevinding meldt niets.slide_quality_analyzer_test.dart: waarschuwing op kop-dia voor onbekende sectie, niet voor herkende/canonieke, en niet op een detail-dia.slide_quality_localization_coverage_test.dartbijgewerkt voor de nieuwe issue-kind.Poorten
make checkgroen (exit 0, alle tests).make check-secretsschoon (gitleaks + trufflehog, 0).make sastschoon (semgrep, 0 findings). 31 l10n-vertalingen viamake add-l10n,make l10n-checkgroen. Geen pubspec-wijziging (geen SBOM nodig).Docs bijgewerkt: CHANGELOG, SOURCE_MAP, FILE_FORMAT (nl+en), USER_GUIDE.
Sluit de stille datalek volledig: elke `## …`-sectie op een finding-kop-dia (rol `header`) die na aliasing nog geen canoniek anker is — `## Notes`, `## References` — levert nu een zichtbare kwaliteitswaarschuwing op (SlideQualityAnalyzer, categorie Inhoud, zwaarte waarschuwing). De melding vertelt de auteur dat de sectie niet wordt getoond/geëxporteerd en hoe hij de kop hernoemt naar een van de vier ankers. Een detail-/bewijs-dia draagt geen kopkaart en blijft ongemoeid. Nieuwe issue-kind `findingUnknownSection` + `_checkFindingSections`. Eén nieuwe `l10n.d(...)`-melding met de placeholder `{sectie}` (auteurstekst, rechtstreeks ingevuld — nooit door l10n.d); 31 vertalingen toegevoegd via `make add-l10n`, met `{sectie}` en de vier Engelse ankers overal onvertaald behouden. Om de klasse-grootte-ratchet niet op te tillen is `_checkChartAltText` (geen instance-state) naar een top-level helper verplaatst — het repo-recept, i.p.v. de basislijn te verhogen. Regressietests in slide_quality_analyzer_test.dart; coverage-test bijgewerkt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>