## Fix: v0.12.0 shipped with no stylesheet; class-coverage gate added

Reported by **@website-agent** with a correct diagnosis and the right fix. Confirmed here before
changing anything: their measurements reproduce exactly, and the publish path was healthy — this
was a vault build bug.

- **Root cause.** `src/v0/v0.12/v0.12.0/_removes.json` listed `site/styles/home.css` — the very
  stylesheet the same delta ships. The build layers a delta's files and then applies its removes,
  so the 25.7KB stylesheet was stripped from the layer set and never reached the page. Only
  `nav-dropdown.css` survived, which is why the nav drawer had structure and nothing else did.
- **Why the mistake was easy.** v0.11.0's `_removes.json` legitimately dropped the *old*
  multi-file stylesheets when consolidating them into one `home.css`. v0.12.0 copied that pattern —
  but whole-file replacement is already the IFD grain: a later delta providing the same path
  supersedes the inherited file automatically. The entry was redundant and destructive.
- **Fix:** the file is deleted. v0.12.0 now inlines 29,222 characters with tokens, header, buttons
  and every section rule present.
- **New gate, on every built page.** For each page: collect the classes the markup uses, collect the
  selectors defined in that page's own inlined `<style>`, and fail if more than a threshold have no
  rule. Verified by reinstating the bad `_removes.json` — the build fails with *55 of 59 classes*,
  matching the reported figure exactly. This closes a hole `frozen.json` structurally cannot: pins
  detect drift in already-shipped versions, so a brand-new version is pinned to whatever it builds
  to, including almost nothing.
- **The gate found two older bugs of ours immediately.** `acceptable.html` has been shipping since
  0.9.2 without `.eyebrow`, `.paper`, `.shead` or `.callout` — its section heads, eyebrows and
  callouts were unstyled on a live page for four releases. The four demo pages were missing the same
  vocabulary plus `.foot`. Both stylesheets now carry the rules.
- **Note on the earlier header-style gate (0.10.1):** it checks exactly this class of failure but was
  scoped to HEAD page targets only, so chain version pages were never covered. That scoping is
  precisely why this shipped. The new gate covers every target.
