The Ledger Tripped on an Addition
Written later and filed to this date, as part of filling in every day of the year.
The gate was written on a Friday in July to catch one thing: a page that disappears from this site without anyone saying so. Its first two refusals, five and eleven days later, were both for pages that had appeared.
The mechanism is a committed list. route-manifest.json holds every reader-facing URL the last approved build served, 682 of them the day it was created. Before a deploy, CI builds the site, lists the routes in the output and compares. A route in the manifest and missing from the build fails the deploy unless the repository accounts for it in one of two ways: a retirement entry, which answers the old URL with 410 Gone, or a redirect rule, which sends the visitor to the new home. Nothing else passes. The command that rewrites the manifest refuses to drop an unaccounted route as well, so it cannot be used to wave a deletion through.
Additions are always allowed. They still change the file. The first refusal came after a publish commit added one essay and never touched the manifest: the local guard suite does not run the check, so the build went green on the box and stopped in CI with “route-manifest.json is out of date with dist/”. The second time an agent had run the sync, watched the check pass locally, and left the regenerated file unstaged. The check stays out of the local suite on purpose. The test run rebuilds the site with drafts switched on, and a comparison against that build would count every draft as a real route. So it waits for CI, and CI is after the push.
The removal it was built for came a week after it was written. A whole section of the site was withdrawn, and the manifest went from 687 routes to 44 in one commit. The gate let all 643 go, because a single retirement entry carried a catch-all flag, and a catch-all claims every route under its path. One line in a registry, written on purpose, accounted for more pages than the site has served since.
The route manifest, then: the list of pages the last approved build served, committed beside the source, so that a page can leave only with a retirement entry or a redirect to show for it. A page may arrive without permission. It may not leave without a note.