Rubric: stylesheet contract
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_style_contract against data/style-contract.yaml.
The claim
Every class the built site puts in front of a reader is either styled by every design stylesheet, or declared unstyled with a stated reason.
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 exactly how it happened here. The three design directions were written during
0004. 0007 then added guided-example annotations, concept registers and a help page
rendered from the error taxonomy. Nothing connected the two, and the classes carrying the
project's most important ideas — what an error already proves, reasoning in the margin —
were styled by none of the four stylesheets.
The contract also keeps the directions comparable. A design comparison only means something if each direction is styling the same content, and a class one stylesheet handles and another ignores makes the comparison quietly unfair.
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.