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 955 separate things, and 24 of 24 deliberate breakages were caught.
The gates
| Gate | What it will not allow | Checked | |
|---|---|---|---|
verbatim | every sentence of both books is byte-for-byte hers | 164 | pass |
tags | no markup ever prints as literal text | 29 | pass |
classes | every class used in the HTML is actually styled | 137 | pass |
csp | nothing in the build is dropped by the production CSP | 30 | pass |
a11y | one h1, a lang, a skip link, alt on images, a label on every field | 29 | pass |
privacy | no shipped script can send anything anywhere | 30 | pass |
loops | every loop is 1600x900, has frames, and is used by a page | 80 | pass |
seams | every loop’s last frame dissolves into its first with no visible cut | 20 | pass |
audio | every living-book line has real speech of a plausible length | 62 | pass |
film | the film has picture, sound, visible titles and captions that match | 32 | pass |
icons | a real .ico declared first, every named icon present, a resolving share card | 42 | pass |
links | every internal link answers 200 under the production headers | 107 | pass |
serving | media is served with its own type and answers a Range request | 9 | pass |
instruments | every instrument mounts in a real browser and puts working controls on the page | 19 | pass |
interaction | pressing the controls actually changes what the page says | 17 | pass |
contrast | every word over footage clears WCAG against the real page, at the worst moment of its loop | 108 | pass |
survival | the scrims darken the picture without erasing it — measured on the real page, scrim on vs scrim off | 40 | pass |
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 the gate has to go red.
| Gate | The fault introduced | |
|---|---|---|
verbatim | change four words of her chapter text on one page | caught |
verbatim | delete one of her paragraphs from a chapter page | caught |
verbatim | hand the gate a manuscript that no longer says what the site says | caught |
tags | let one of her bold-emphasis tags print as literal characters instead of bold | caught |
classes | ship a class the stylesheet has no rule for | caught |
csp | add an inline script element, which the production CSP drops | caught |
a11y | remove the alt text from one image | caught |
a11y | give a page a second heading of the top level | caught |
privacy | add an outbound call to the shipped script — the site promises nothing leaves the browser | caught |
loops | truncate a loop to a handful of frames | caught |
seams | rebuild a loop with no dissolve, so its end cuts hard to its start | caught |
audio | replace one spoken line with a short take of the wrong length | caught |
loops | leave the build holding a previous encode of a loop that has since been re-cut | caught |
audio | drop one spoken line 8 dB, so the volume jumps when that voice speaks | caught |
film | blank the film’s title band, exactly as the real -loop bug did | caught |
icons | declare the SVG favicon before the .ico — the broken-square link card | caught |
icons | replace the multi-image .ico with a single 16px one | caught |
links | point a link at a page that does not exist | caught |
serving | truncate a loop to zero bytes — still 200, still video/mp4, still nothing | caught |
links | answer on the port with a different site’s X-Served-By | caught |
instruments | make one instrument throw the moment it mounts | caught |
interaction | leave an instrument mounted and looking right, but stop its button working | caught |
contrast | delete the scrim behind the words, leaving white type on bare footage | caught |
survival | darken 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 pictures have to be readable, and the moving pictures
have to still be pictures. Those two demands point in opposite directions: darkening the layer
behind the text makes the words easier to read and the footage worse, and a readability check on
its own is perfectly satisfied by painting the whole thing 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. Neither can
be satisfied by moving the scrim the way the other wants, and the settings that ship are where
both are green at once.