The Krissy Hall Library

Verification

What Was Checked

Every gate here is poison-tested: broken on purpose to prove it fails.

Every check below actually ran against the build that is live, on 2026-08-22. 17 of 17 gates passed, inspecting 1,332 separate things, and 26 of 26 deliberate breakages were caught.

The gates

GateWhat it will not allow Checked
verbatimevery sentence in the library is byte-for-byte hers 663pass
tagsno markup ever prints as literal text 32pass
classesevery class used in the HTML is actually styled 101pass
cspnothing in the build is dropped by the production CSP 33pass
a11yone h1, a lang, a skip link, alt on images, a label on every field 32pass
privacyno shipped script can send anything anywhere 33pass
loopsevery loop is 1600x900, has frames, is generated-and-disclosed, and is used by a page 35pass
seamsevery loop’s last frame dissolves into its first with no visible cut 7pass
jacketsevery book on the shelf has a portrait jacket that resolves, and the three made-to-match ones are disclosed 29pass
filmsher two films are carried byte for byte, play, and have a poster 35pass
iconsa real .ico declared first, every named icon present, a resolving share card 45pass
linksevery internal link answers 200 under the production headers 108pass
servingmedia is served with its own type and answers a Range request 9pass
instrumentsevery instrument mounts in a real browser and puts working controls on the page 28pass
interactionpressing the controls actually changes what the page says 10pass
contrastevery word over footage clears WCAG against the real page, at the worst moment of its loop 118pass
survivalthe scrims darken the picture without erasing it — measured on the real page, scrim on vs scrim off 14pass

The breakages

A gate that passes proves nothing on its own — it might not be looking. So a copy of the finished build is broken on purpose, one fault at a time, and served to the same gate on its own port. Every row here is a real fault of exactly the kind its gate exists to catch, and each one names the failure message that has to appear: a gate that goes red for the wrong reason is reported as not caught.

GateThe fault introduced
verbatimchange six words of one storybook page caught
verbatimhand the gate a source that no longer says what the site says caught
tagslet a bold-emphasis tag print as literal characters instead of bold caught
classesship a class the stylesheet has no rule for caught
cspadd an inline script element, which the production CSP drops caught
a11yremove the alt text from a book cover caught
a11ygive a page a second heading of the top level caught
privacyadd an outbound call to the shipped script — the library promises nothing leaves the browser caught
privacyload an image from a host the reader never chose caught
loopstruncate a loop to a handful of frames caught
loopsleave the build holding a previous encode of a loop that has since been re-cut caught
loopsstop the credits page disclosing a generated loop caught
seamsrebuild a loop with no dissolve, so its end cuts hard to its start caught
jacketsship a book cover that is not portrait caught
jacketsstop the credits page saying which three jackets were rendered rather than painted caught
filmsre-encode her film — smaller, and no longer the thing she made caught
filmsdrop one of her read-along captions from the page caught
iconsdeclare the SVG favicon before the .ico — the broken-square link card caught
iconsreplace the multi-image .ico with a single 16px one caught
linkspoint a link at a page that does not exist caught
servingtruncate a loop to zero bytes — still 200, still video/mp4, still nothing caught
linksanswer on the port with a different site’s X-Served-By caught
instrumentsmake the storybook reader throw the moment it mounts caught
interactionleave the reading-level buttons mounted and looking right, but stop them changing the words caught
contrastdelete the scrim behind the words, leaving white type on bare footage caught
survivaldarken the scrim until the footage is a black rectangle — what a contrast gate alone would happily accept caught

Two gates that pull against each other

The words over the moving backgrounds have to be readable, and the backgrounds have to still be pictures. Those two demands point in opposite directions, and a readability check on its own is perfectly satisfied by painting everything black. So there are two gates. contrast screenshots the real page, hides only the letterforms, seeks each loop to four different moments and measures the worst pixel behind every word. survival screenshots the same page twice — once as it ships and once with both scrims switched off — and requires the picture to keep most of its own tonal range.

What is checked about her words

The strictest gate here is verbatim. It reads the files she supplied, strips the markup and the JavaScript escaping out of them, and then looks for every single sentence this library prints — all three reading levels of all 47 storybook pages, every line of every little book, every game question, every film caption — in both directions: her files must contain it, and the page must actually print it.