Rubric: stylesheet contract
Written by a person. Last read by a person on 2026-09-05, 23 days ago. Its facts were checked by the eval suite on 2026-09-28.
Enforced by check_style_contract against data/style-contract.yaml.
The claim
Every class a reader meets is styled by all three design sheets, or listed as one we chose to leave plain, with the reason written down.
Observable evidence
- The set of class names appearing in built HTML.
- For each stylesheet named in the contract, whether a rule mentions each claimed class.
- For each unclaimed class, whether a reason is recorded.
The pass bar
Every emitted class appears in exactly one of claimed or unclaimed. Every claimed class
has a rule in every listed stylesheet and is emitted by at least one page. Every unclaimed
class carries a non-empty reason.
Why this rubric exists
Unstyled markup does not look broken, it looks plain. A page of annotations with no rules renders as a nested list in the browser's default type, and a reader has no way to tell that from a deliberately minimal design. It is never reported, and no build notices.
That is how it happened here. The three design sheets were written during 0004. Then
0007 added notes on the worked examples, concept registers, and a help page built from the
error taxonomy. Nothing joined the two, and the classes carrying the
project's most important ideas, what an error already proves and reasoning in the margin,
were styled by none of the four stylesheets.
The contract also keeps the three directions fair to each other. A design test only means something if each one is styling the same content. When one sheet handles a class and another skips it, the test is rigged and nobody can see it.
Ambiguous cases
A container with no rule of its own is a real decision, not an oversight, so it goes in
unclaimed with that as the reason rather than receiving a rule invented to satisfy the
check.
A hook for a change not yet built belongs in unclaimed, naming the change. It becomes
claimed when that change lands.
A stale claim, a class the contract claims and no page emits, is a failure. The contract is a statement about this site, and an entry describing markup that no longer exists weakens every other assertion it makes.
An unclaimed class with an empty reason is a failure. An unexplained exemption cannot be
told apart from someone silencing a real finding, which is the same standard the volatile
layer's volatile-ok escape hatch is held to.