the gatethe blackletter · build attestation334 checks
GATE: ALL CLEAR — the book may ship.
This printing shipped under the pre-deploy gate run below — census total accounting, verbatim fidelity against the slip opinions, authorities invariants, reference integrity, derived counts, layout coherence, per-decision completeness, artifact freshness, and evidence-vault parity. 334 of 334 checks passed · remote · run 2026-08-26 10:19. Deployment is blocked unless every check passes. Machine-readable: /api/gate.
| PASS | census: total accounting (no pending sentences) |
| PASS | census: every exclusion has a reason |
| PASS | fidelity: all quotes verbatim in source PDFs |
| PASS | census: no promise-bracket shortcuts (tribunal rule, 2026-08-24) |
| PASS | authorities: cases alphabetized |
| PASS | authorities: no duplicate cases |
| PASS | authorities: statute groups contiguous |
| PASS | references: every § resolves to a section |
| PASS | colophon: quotes = three hundred thirty-eight (bound to its label) |
| PASS | colophon: cases = one hundred five (bound to its label) |
| PASS | colophon: statutes = one hundred four (bound to its label) |
| PASS | colophon: sections = thirty-five (bound to its label) |
| PASS | colophon: holdings = sixteen (bound to its label) |
| PASS | contents-extra: case count |
| PASS | contents-extra: provision count |
| PASS | contents-extra: section/decision count |
| PASS | layout: every meter page matches layout |
| PASS | layout: § 19.3 example page true in page_edition |
| PASS | layout: § 19.3 example page true in page_howto |
| PASS | layout: every block on exactly one page |
| PASS | cite rule: gaines ccc is verified-format or pending |
| PASS | cite rule: difusco ccc is verified-format or pending |
| PASS | cite rule: perez ccc is verified-format or pending |
| PASS | cite rule: vazquez ccc is verified-format or pending |
| PASS | cite rule: dennis ccc is verified-format or pending |
| PASS | cite rule: coldiron ccc is verified-format or pending |
| PASS | cite rule: coldiron ccc is verified-format or pending |
| PASS | cite rule: maxham ccc is verified-format or pending |
| PASS | cite rule: suon ccc is verified-format or pending |
| PASS | docket: shelved count equals corpus size |
| PASS | docket: all recorded reporter cites well-formed |
| PASS | authorities: zero-hit entries (every table row appears in the book) |
| PASS | authorities: refs match corpus regeneration (bidirectional) |
| PASS | census: no same-source duplicate quotes within a section |
| PASS | meters: canonical grammar (32/32) |
| PASS | meters: verification date == max(decisions.verified) [8/24/26] |
| PASS | docket: reporter cites mirror decisions table |
| PASS | plates: balanced quotes, closed endings |
| PASS | xrefs: every section has a cross-reference block |
| PASS | editorial: single serial-and in corpus list |
| PASS | provenance: source-PDF sha256 anchors match local files |
| PASS | open items: every pending/preliminary item is watched |
| PASS | census: no running heads spliced into quotes |
| PASS | ledger: no running heads spliced into sentence rows |
| PASS | ledger: no HTML entities in exclusion reasons |
| PASS | ledger: no in-full claims against elided quotes |
| PASS | docket: every printed cite is index-sourced or verified |
| PASS | docket: no duplicate reporter cites |
| PASS | docket: mirrors the archived court index (139 filings) |
| PASS | cite rule: no invented reporter cite for pending decisions (free text) |
| PASS | index: locator groups ascend |
| PASS | index: no duplicate headwords |
| PASS | credits: Book JSON-LD has no author key |
| PASS | credits: exactly one citation_author (the WCAB, case pages) |
| PASS | credits: Howser never adjacent to an author key |
| PASS | ledger: no fragment rows marked quoted |
| PASS | ledger: no fused line-number prefixes |
| PASS | participants: no trailing-hyphen names |
| PASS | docket: summaries equal the full source cells (never truncated) |
| PASS | sections: chapter field present and matches the section number |
| PASS | xrefs: reserved-marker population non-empty (selector still matches) |
| PASS | xrefs: reserved markers name every printed sibling (heading-derived) |
| PASS | authorities: no case listed twice under different name forms |
| PASS | fidelity: no footnote digits fused into quoted words |
| PASS | fidelity: no quotation opens lowercase without a bracketed capital |
| PASS | copies: identical passages agree on source page and decision |
| PASS | structure: every quote block is followed by its cite (plates carry their own banner) |
| PASS | ledger: every row marked quoted is actually printed |
| PASS | pins: every quote opens on the page its cite names (or an adjacent one) |
| PASS | cite rule: every printed reporter cite is index-sourced or corroborated |
| PASS | threads: every passage printed in two sections carries an accord |
| PASS | threads: accord count has not silently decreased |
| PASS | xrefs: reserved markers list every sibling in their own text |
| PASS | chapters: all 28 chapters present |
| PASS | chapters: status matches whether the chapter has printed sections |
| PASS | cascade_log: every entry names a dispute, an answer and an outcome |
| PASS | cascade_log: the tribunal record is non-empty (173 entries) |
| PASS | watchlist: every watched item names what it affects |
| PASS | corrections: every logged correction carries a date and a description |
| PASS | provenance: image-proofread transcripts match their recorded anchors |
| PASS | completeness: gaines in gate PDFS map |
| PASS | completeness: gaines quote blocks |
| PASS | completeness: gaines sentences ledger |
| PASS | completeness: gaines signers recorded |
| PASS | completeness: gaines service list censused |
| PASS | completeness: gaines shelved on the docket |
| PASS | completeness: difusco in gate PDFS map |
| PASS | completeness: difusco quote blocks |
| PASS | completeness: difusco sentences ledger |
| PASS | completeness: difusco signers recorded |
| PASS | completeness: difusco service list censused |
| PASS | completeness: difusco shelved on the docket |
| PASS | completeness: perez in gate PDFS map |
| PASS | completeness: perez quote blocks |
| PASS | completeness: perez sentences ledger |
| PASS | completeness: perez signers recorded |
| PASS | completeness: perez service list censused |
| PASS | completeness: perez shelved on the docket |
| PASS | completeness: vazquez in gate PDFS map |
| PASS | completeness: vazquez quote blocks |
| PASS | completeness: vazquez sentences ledger |
| PASS | completeness: vazquez signers recorded |
| PASS | completeness: vazquez service list censused |
| PASS | completeness: vazquez shelved on the docket |
| PASS | completeness: dennis in gate PDFS map |
| PASS | completeness: dennis quote blocks |
| PASS | completeness: dennis sentences ledger |
| PASS | completeness: dennis signers recorded |
| PASS | completeness: dennis service list censused |
| PASS | completeness: dennis shelved on the docket |
| PASS | completeness: coldiron in gate PDFS map |
| PASS | completeness: coldiron quote blocks |
| PASS | completeness: coldiron sentences ledger |
| PASS | completeness: coldiron signers recorded |
| PASS | completeness: coldiron service list censused |
| PASS | completeness: coldiron shelved on the docket |
| PASS | completeness: coldiron in gate PDFS map |
| PASS | completeness: coldiron quote blocks |
| PASS | completeness: coldiron sentences ledger |
| PASS | completeness: coldiron signers recorded |
| PASS | completeness: coldiron service list censused |
| PASS | completeness: coldiron shelved on the docket |
| PASS | completeness: maxham in gate PDFS map |
| PASS | completeness: maxham quote blocks |
| PASS | completeness: maxham sentences ledger |
| PASS | completeness: maxham signers recorded |
| PASS | completeness: maxham service list censused |
| PASS | completeness: maxham shelved on the docket |
| PASS | completeness: suon in gate PDFS map |
| PASS | completeness: suon quote blocks |
| PASS | completeness: suon sentences ledger |
| PASS | completeness: suon signers recorded |
| PASS | completeness: suon service list censused |
| PASS | completeness: suon shelved on the docket |
| PASS | completeness: every signer has a bench slug |
| PASS | completeness: service_lists.json covers every decision |
| PASS | artifact: PDF metadata corpus label |
| PASS | artifact: PDF contains decision Gaines |
| PASS | artifact: PDF contains decision DiFusco |
| PASS | artifact: PDF contains decision Perez |
| PASS | artifact: PDF contains decision Vazquez |
| PASS | artifact: PDF contains decision Dennis |
| PASS | artifact: PDF contains decision Coldiron |
| PASS | artifact: PDF contains decision Coldiron |
| PASS | artifact: PDF contains decision Maxham |
| PASS | artifact: PDF contains decision Suon |
| PASS | artifact: every census quote verbatim in the PDF text layer |
| PASS | artifact: PDF corpus count current |
| PASS | artifact: outline.py corpus label |
| PASS | worker: book title says Corpus 9 |
| PASS | worker: about page says Corpus 9 |
| PASS | worker: corpus api says Corpus 9 |
| PASS | remote parity: table counts match |
| PASS | vault: /pdf/gaines serves |
| PASS | vault: /pdf/difusco serves |
| PASS | vault: /pdf/perez serves |
| PASS | vault: /pdf/vazquez serves |
| PASS | vault: /pdf/dennis serves |
| PASS | vault: /pdf/coldiron serves |
| PASS | vault: /pdf/coldiron serves |
| PASS | vault: /pdf/maxham serves |
| PASS | vault: /pdf/suon serves |
| PASS | vault: /pdf/gaines bytes match intake sha256 |
| PASS | vault: /pdf/difusco bytes match intake sha256 |
| PASS | vault: /pdf/perez bytes match intake sha256 |
| PASS | vault: /pdf/vazquez bytes match intake sha256 |
| PASS | vault: /pdf/dennis bytes match intake sha256 |
| PASS | vault: /pdf/coldiron bytes match intake sha256 |
| PASS | vault: /pdf/coldiron bytes match intake sha256 |
| PASS | vault: /pdf/maxham bytes match intake sha256 |
| PASS | vault: /pdf/suon bytes match intake sha256 |
| PASS | vault: R2 key census matches the corpus (no orphans, none missing) |
| PASS | remote parity: sections content digest |
| PASS | remote parity: authorities content digest |
| PASS | remote parity: index_entries content digest |
| PASS | remote parity: decisions content digest |
| PASS | remote parity: docket content digest |
| PASS | remote parity: participants content digest |
| PASS | remote parity: judge_slugs content digest |
| PASS | remote parity: blocks count+bytes |
| PASS | vault: served book PDF is the local printing (md5) |
| PASS | live: every quote renders verbatim on its section page (338 quotes / 35 pages) |
| PASS | live: verification manifest count matches DB |
| PASS | live: every SHA-256 in the manifest recomputes from the DB |
| PASS | live: census carries the gaines ledger (401 sentences) |
| PASS | live: census carries the difusco ledger (239 sentences) |
| PASS | live: census carries the perez ledger (184 sentences) |
| PASS | live: census carries the vazquez ledger (209 sentences) |
| PASS | live: census carries the dennis ledger (451 sentences) |
| PASS | live: census carries the coldiron ledger (108 sentences) |
| PASS | live: census carries the coldiron ledger (107 sentences) |
| PASS | live: census carries the maxham ledger (335 sentences) |
| PASS | live: census carries the suon ledger (482 sentences) |
| PASS | live: MCP canary — get_section 15.3 serves the census verbatim |
| PASS | live: book.md corpus label current (Corpus 9) |
| PASS | live: every quote appears IN FULL in the markdown edition (338 quotes) |
| PASS | live: Book JSON-LD has no author key (credits invariant) |
| PASS | live: case-page plates in numeric order |
| PASS | surfaces: sitemap lists every section (35) |
| PASS | surfaces: sitemap lists every case page (9) |
| PASS | surfaces: sitemap lists every bench page (8) |
| PASS | surfaces: robots.txt points at the sitemap |
| PASS | surfaces: robots.txt refuses AI training crawlers |
| PASS | surfaces: llms.txt names the newest decision (Suon) |
| PASS | surfaces: opensearch.xml is well-formed and names the book |
| PASS | surfaces: manifest is installable (standalone, start_url, 192+512 icons) |
| PASS | surfaces: every icon, image and font serves with the right type |
| PASS | surfaces: service worker is versioned and precaches the book |
| PASS | structure: every section has its own leaf (35) |
| PASS | structure: indexes carry no quotation text (1 checked) |
| PASS | structure: no rule is served at two URLs (duplicate content) |
| PASS | structure: every rule is served at one URL (none orphaned) |
| PASS | structure: /book.md is excluded from the index |
| PASS | structure: /print is excluded from the index |
| PASS | structure: /md is excluded from the index |
| PASS | structure: section leaf is self-canonical |
| PASS | structure: cross-references resolve to section URLs, not dead anchors |
| PASS | order: every decision carries the date it was decided |
| PASS | order: every decision date is a real ISO date |
| PASS | order: decision date agrees with the stated year |
| PASS | order: corpus is served newest decision first (9) |
| PASS | order: served order matches the census order |
| PASS | slugs: sitemap lists every section (printed) |
| PASS | slugs: sitemap section count is exact |
| PASS | slugs: every printed slug carries its chapter |
| PASS | slugs: every slug carries its chapter |
| PASS | slugs: decimals in titles are not fused (4062-3, not 40623) |
| PASS | slugs: every canonical section page serves 200 |
| PASS | slugs: legacy and wrong-chapter URLs 301 to canonical |
| PASS | slugs: section page has its own canonical |
| PASS | slugs: section page is self-canonical |
| PASS | slugs: section title renders the symbol, not an entity |
| PASS | slugs: section page carries its own quotes verbatim (13) |
| PASS | render: every sheet exactly 1037px (103 sheets) |
| PASS | render: no sheet overflows horizontally |
| PASS | render: EB Garamond loaded (roman/italic/semibold) |
| PASS | render: mobile no horizontal scroll / |
| PASS | render: mobile no horizontal scroll /blackletter/15.2-the-bona-fide-offer-of-regular-modified-or-alternative-work |
| PASS | render: mobile no horizontal scroll /docket |
| PASS | works: all internal links resolve (68 checked) |
| PASS | works: retired reader returns 404, never a stale sheet |
| PASS | works: phrase search returns results |
| PASS | works: section-number search redirects |
| PASS | works: service worker serves |
| PASS | works: manifest valid JSON |
| PASS | works: manifest installable shape |
| PASS | works: every manifest icon serves as an image |
| PASS | works: every service-worker CORE precache URL serves 200 |
| PASS | works: service worker actually installs (registration active) |
| PASS | a11y: axe clean / |
| PASS | a11y: axe clean /blackletter/15.1-the-supplemental-job-displacement-benefit |
| PASS | a11y: section page axe clean (light) |
| PASS | render: section page measure is 45-170 chars (light: 111) |
| PASS | render: section page has no horizontal scroll (light) |
| PASS | a11y: section page axe clean (dark) |
| PASS | render: section page measure is 45-170 chars (dark: 111) |
| PASS | render: section page has no horizontal scroll (dark) |
| PASS | render: section page fits 320px |
| PASS | render: no element overflows viewport at 320px |
| PASS | render: tap targets >= 24px at 320px |
| PASS | render: measure >= 34 chars at 320px (38) |
| PASS | render: measure <= 170 chars at 320px (38) |
| PASS | render: no quote splits across columns at 320px |
| PASS | render: reading gutter <= 200px at 320px (9) |
| PASS | render: section page fits 375px |
| PASS | render: no element overflows viewport at 375px |
| PASS | render: tap targets >= 24px at 375px |
| PASS | render: measure >= 34 chars at 375px (44) |
| PASS | render: measure <= 170 chars at 375px (44) |
| PASS | render: no quote splits across columns at 375px |
| PASS | render: reading gutter <= 200px at 375px (9) |
| PASS | render: section page fits 414px |
| PASS | render: no element overflows viewport at 414px |
| PASS | render: tap targets >= 24px at 414px |
| PASS | render: measure >= 40 chars at 414px (46) |
| PASS | render: measure <= 170 chars at 414px (46) |
| PASS | render: no quote splits across columns at 414px |
| PASS | render: reading gutter <= 200px at 414px (10) |
| PASS | render: section page fits 600px |
| PASS | render: no element overflows viewport at 600px |
| PASS | render: tap targets >= 24px at 600px |
| PASS | render: measure >= 55 chars at 600px (63) |
| PASS | render: measure <= 170 chars at 600px (63) |
| PASS | render: no quote splits across columns at 600px |
| PASS | render: reading gutter <= 200px at 600px (14) |
| PASS | render: section page fits 768px |
| PASS | render: no element overflows viewport at 768px |
| PASS | render: tap targets >= 24px at 768px |
| PASS | render: measure >= 55 chars at 768px (66) |
| PASS | render: measure <= 170 chars at 768px (66) |
| PASS | render: no quote splits across columns at 768px |
| PASS | render: reading gutter <= 200px at 768px (68) |
| PASS | render: section page fits 1024px |
| PASS | render: no element overflows viewport at 1024px |
| PASS | render: tap targets >= 24px at 1024px |
| PASS | render: measure >= 55 chars at 1024px (92) |
| PASS | render: measure <= 170 chars at 1024px (92) |
| PASS | render: no quote splits across columns at 1024px |
| PASS | render: reading gutter <= 200px at 1024px (36) |
| PASS | render: section page fits 1440px |
| PASS | render: no element overflows viewport at 1440px |
| PASS | render: tap targets >= 24px at 1440px |
| PASS | render: measure >= 55 chars at 1440px (111) |
| PASS | render: measure <= 170 chars at 1440px (111) |
| PASS | render: no quote splits across columns at 1440px |
| PASS | render: reading gutter <= 200px at 1440px (50) |
| PASS | render: section page fits 2560px |
| PASS | render: no element overflows viewport at 2560px |
| PASS | render: tap targets >= 24px at 2560px |
| PASS | render: measure >= 55 chars at 2560px (141) |
| PASS | render: measure <= 170 chars at 2560px (141) |
| PASS | render: no quote splits across columns at 2560px |
| PASS | render: reading gutter <= 200px at 2560px (80) |
| PASS | render: screen type is fluid (16.8px @320 -> 35.552px @2560) |
| PASS | render: screen type never below 16px |
| PASS | render: screen type never above 40px |
| PASS | render: measure within band at every width |
| PASS | render: section page is a single column at every width |
| PASS | render: type scales with the wide measure (>=24px past 1440px) |
| PASS | type: quotation matches body size at 390px |
| PASS | type: h2 larger than body at 390px |
| PASS | type: citation smaller than body at 390px |
| PASS | type: quotation matches body size at 1024px |
| PASS | type: h2 larger than body at 1024px |
| PASS | type: citation smaller than body at 1024px |
| PASS | type: quotation matches body size at 1600px |
| PASS | type: h2 larger than body at 1600px |
| PASS | type: citation smaller than body at 1600px |
| PASS | type: quotation matches body size at 2560px |
| PASS | type: h2 larger than body at 2560px |
| PASS | type: citation smaller than body at 2560px |
| PASS | web: section page names its chapter once |
| PASS | web: section page shows exactly one section |
| PASS | a11y: screen edition survives 200% text zoom (WCAG 1.4.4) |
California Workers’ Compensation Blackletter (2026)