From 1272aa6dc3fe10892136c93123822ab0c2f19237 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Mon, 28 Sep 2026 17:30:14 +0000 Subject: [PATCH] Record why the ring legend needs no overflow assertion gospel landed 21ebb4f2 -- "Stop the ring legend pushing the centered-set chart off the page" -- which is the same figure and the same legend I had just added to the packet, so it was worth checking whether the print side has the bug too. It does not, and the reason is worth writing down rather than leaving as arithmetic I happened to do once: a printed sheet is much taller than their constrained screen pane. With ALL TEN rings named the column needs ~924px of a ~1715px page. I wrote the assertion anyway and then deleted it, because mutation-testing showed it only begins to fail at 51 legend rows -- and there are only ten rings, so it could never fail for any input this code can produce. That is a tautology dressed as a safety check, the same class as the "rows close on the bottom margin" assertion already removed from check-profile-table: a value compared against a bound it cannot reach reads as coverage and is not. What actually protects the layout is the empty-ring filter asserted just above (ten rows is the hard ceiling) plus rega's rendered check. The comment now says so, including the detail that gospel's fix leans on overflow:auto and print has no scroll -- so if this page ever does get tight, their remedy is not available here. --- internal/check-packet-variants.mjs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/internal/check-packet-variants.mjs b/internal/check-packet-variants.mjs index 398c16d46..4bbbc9b22 100644 --- a/internal/check-packet-variants.mjs +++ b/internal/check-packet-variants.mjs @@ -132,6 +132,19 @@ ok(count(full, /class="sheet/g) - count(light, /class="sheet/g) === 3, ok(sparse.length === 3, `only the populated rings should be listed, got ${sparse.length}: ${JSON.stringify(sparse)}`) ok(/^2 /.test(sparse[0]) && /^1 /.test(sparse[1]) && /^3 /.test(sparse[2]), `the legend should carry each ring's own count, got ${JSON.stringify(sparse)}`) + + // ⚠ NO VERTICAL-OVERFLOW ASSERTION HERE, AND THAT IS DELIBERATE — I wrote one and deleted it. + // gospel hit exactly this failure on their screen panel (21ebb4f2, "Stop the ring legend pushing + // the centered-set chart off the page"): a legend stacked below a figure, taller than its space, + // displaces the chart. Their fix leans on overflow:auto, which PRINT DOES NOT HAVE — so the same + // layout would fail worse here, with the content simply gone rather than scrollable. + // Budgeted it: the column needs ~924px of a ~1715px sheet with ALL TEN rings named, and the + // assertion only starts failing at 51 rows. THERE ARE ONLY TEN RINGS, so it could never fail for + // any input this code can produce — a tautology dressed as a safety check, the same class as the + // "rows close on the bottom margin" one already deleted from check-profile-table. A printed sheet + // is simply much taller than gospel's constrained pane, which is why their bug is not ours. + // The real protection is the empty-ring filter asserted above (ten rows is the ceiling) plus + // rega's rendered check; a headless budget with 790px of slack would be decoration. } // An unknown variant must print the FULL packet. A typo that printed a SHORTER packet would look