Rubric: clean state
Written by a person. Last read by a person on 2026-09-05, 3 days ago. Its facts were checked by the eval suite on 2026-09-07.
Enforced by check_clean_state.
The claim
Every page is complete with scripting off. The prose is in the document, and so is every prerequisite and next step the page promises.
Observable evidence
- A sentence of each page's own prose, and whether it appears in the built HTML.
- The
prerequisitesandnext_stepsdeclared in frontmatter. - The rendered navigation blocks those declarations produce.
The pass bar
Every page's prose is present. Every declared prerequisite and next step appears in the built page. Comparison ignores markup on both sides, so a backtick or a link target is never mistaken for content going missing.
Why this rubric exists
Spec 2.0 makes this a gate rather than a preference, and 0004 requires it before any interactive feature is built. That ordering is the point. A clean-state rule added afterwards gets weakened whenever it is inconvenient, because by then something already depends on breaking it.
The failure it guards against is a page where something has quietly become reachable only by running a script. A reader with scripting off, a crawler, a screen reader in a stripped mode, and an agent reading the HTML all see the document before any interaction. Three of them will never perform one.
This site's script only rearranges what is already in the page, so today the check passes everywhere. That is the state worth locking in, and locking it in is what the check is for.
Ambiguous cases
Every extraction bug in this check has looked like a page failing. Stripping underscores
turned check_annotations into a word that appeared nowhere. Keeping a markdown link's target
folded a URL into the compared prose. Both reported real pages as broken. When this check
fires, read the quoted sentence before believing it.
It cannot judge whether the result reads well. Spec 2.0 asks that a page with interactivity stripped read as a document a technical writing manager would approve, and no counter decides that. It is the manual half, and it is the fresh-eyes review rather than anything here.
A page whose built output is absent is skipped, not failed. That is the build's business and the link-integrity rubric's, and reporting it twice would name the wrong cause.