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.

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