Bevindingsdia: geen schaarse header-only pagina meer + kleinere vervolgkop (#1198) #1223

Merged
brenno merged 2 commits from fix/1198-finding-logo-sparse-page into main 2026-08-04 16:41:12 +00:00
Owner

Lost #1198 op.

Diagnose. De claim op #1198 was leeg (lege lokale tak, geen commits). Inhoudelijk bleek de lead in het issue onjuist: het LibreKAT-logo rendert wél en is zichtbaar (geverifieerd via echte-render-test + pixelanalyse). De echte oorzaak was de header-kostenschatting in finding_pagination.dart: één vaste constante (_headerCardCost = 18.5, ~80% van een dia), terwijl de echte headerkaart varieert van ~44% (gewone bevinding) tot ~98% (volle header). Die overreserveerde voor de gewone bevinding — waardoor de eerste sectie eraf viel en pagina 1 header-only werd, verergerd door de terechte logo-reserve — én onderreserveerde voor een volle header.

Fix.

  • _headerCardCost is nu inhoud-afgeleid (kopregels, scope, badge-rijen, CVSS-scorekaart) en met een echte-render-test (finding_header_cost_test.dart, 8 varianten) tegen de levende _FindingPreview vastgepind.
  • Pagina 1 draagt nu onvoorwaardelijk header + eerste sectie en stopt daar (de headerkaart is een hoog blok; verder volpakken tot de leesbaarheidsvloer maakte lijst-zware secties te klein).
  • De vervolgpagina-kop is ongeveer gehalveerd (w*0.032 → w*0.017) — hij vulde de halve dia met alleen de titel; _contHeadingCost daalt mee (6.0 → 4.5) zodat vervolgpagina's meer inhoud dragen.

Verificatie. Volledige make check groen (coverage 87,7%, geen golden week af). Visueel bevestigd met de beeldkeurder op de fix-build over voorvertoning, presentatiemodus en een pagina-voor-pagina gelezen PDF-export: pagina 1 draagt de volledige headerkaart + Description, vervolgkoppen compact en leesbaar, geen overloop of logo-botsing.

Docs (CHANGELOG, USER_GUIDE nl+en, SOURCE_MAP) bijgewerkt; die beschreven nog het oude header-only gedrag.

Terzijde tijdens de keuring gevonden (aparte bug, niet in deze PR): niet-canonieke ## …-sectiekoppen in een bevinding verdwijnen stil uit presentatie/export terwijl de bron-.md ze behoudt.

Lost #1198 op. **Diagnose.** De claim op #1198 was leeg (lege lokale tak, geen commits). Inhoudelijk bleek de lead in het issue onjuist: het LibreKAT-logo **rendert wél en is zichtbaar** (geverifieerd via echte-render-test + pixelanalyse). De echte oorzaak was de header-kostenschatting in `finding_pagination.dart`: één vaste constante (`_headerCardCost = 18.5`, ~80% van een dia), terwijl de echte headerkaart varieert van ~44% (gewone bevinding) tot ~98% (volle header). Die overreserveerde voor de gewone bevinding — waardoor de eerste sectie eraf viel en pagina 1 header-only werd, verergerd door de terechte logo-reserve — én onderreserveerde voor een volle header. **Fix.** - `_headerCardCost` is nu **inhoud-afgeleid** (kopregels, scope, badge-rijen, CVSS-scorekaart) en met een echte-render-test (`finding_header_cost_test.dart`, 8 varianten) tegen de levende `_FindingPreview` vastgepind. - Pagina 1 draagt nu **onvoorwaardelijk header + eerste sectie** en stopt daar (de headerkaart is een hoog blok; verder volpakken tot de leesbaarheidsvloer maakte lijst-zware secties te klein). - De **vervolgpagina-kop** is ongeveer gehalveerd (`w*0.032 → w*0.017`) — hij vulde de halve dia met alleen de titel; `_contHeadingCost` daalt mee (6.0 → 4.5) zodat vervolgpagina's meer inhoud dragen. **Verificatie.** Volledige `make check` groen (coverage 87,7%, geen golden week af). Visueel bevestigd met de beeldkeurder op de fix-build over voorvertoning, presentatiemodus en een pagina-voor-pagina gelezen PDF-export: pagina 1 draagt de volledige headerkaart + Description, vervolgkoppen compact en leesbaar, geen overloop of logo-botsing. Docs (CHANGELOG, USER_GUIDE nl+en, SOURCE_MAP) bijgewerkt; die beschreven nog het oude header-only gedrag. Terzijde tijdens de keuring gevonden (aparte bug, niet in deze PR): niet-canonieke `## …`-sectiekoppen in een bevinding verdwijnen stil uit presentatie/export terwijl de bron-`.md` ze behoudt.
Een gepagineerde bevinding kon een eerste pagina met alléén de headerkaart
opleveren, met de eerste sectie pas op pagina 2 — het duidelijkst bij de
standaard-LibreKAT-stijl, waar het logo linksonder ruimte reserveert.

Oorzaak was niet het logo (dat rendert en is zichtbaar) maar de vaste
header-kostenconstante (_headerCardCost = 18.5, ~80% van een dia), terwijl de
echte kaart varieert van ~44% (gewone bevinding) tot ~98% (volle header). Die
constante overreserveerde voor de gewone bevinding én onderreserveerde voor een
volle. De kost is nu uit de inhoud afgeleid (kopregels, scope, badge-rijen,
CVSS-scorekaart) en met finding_header_cost_test.dart tegen de levende render
vastgepind. Pagina 1 draagt nu onvoorwaardelijk header + eerste sectie en stopt
daar, zodat de headerpagina leesbaar blijft in plaats van tot de vloer volgepakt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fix(finding): kleinere vervolgpagina-kop, meer ruimte voor inhoud (#1198)
All checks were successful
scans / scans (pull_request) Successful in 1m32s
static-gate / static-gate (pull_request) Successful in 3m35s
f0040139ee
De vervolgpagina's van een gepagineerde bevinding herhaalden de titel op bijna
volledige headergrootte (w*0.032), wat de halve dia opslokte met alleen het
begin van de bevinding. De kop is nu ongeveer de helft (w*0.017) — een compacte
"welke bevinding, (i/N)"-herinnering, want de volledige identiteit staat op
pagina 1. `_contHeadingCost` daalt in stap mee (6.0 → 4.5), zodat de
vervolgpagina de teruggewonnen ruimte ook echt aan inhoud besteedt. Een
regressietest pint dat de vervolgkop duidelijk kleiner blijft dan die van
pagina 1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit eab3096b30 into main 2026-08-04 16:41:12 +00:00
brenno deleted branch fix/1198-finding-logo-sparse-page 2026-08-04 16:41:12 +00:00
Sign in to join this conversation.
No description provided.