Commit graph

1 commit

Author SHA1 Message Date
311f60d4d0 move 7: the book's button — check-book.sh + check-book.py
The only source of 'ALL GREEN' for this repository. Rebuilds the PDF,
then verifies 93 countable claims printed in the book against reality
measured at run time:

- source hygiene: inputs<->files both directions, contiguous ch01..ch14,
  every chapter (and the interlude) ends on its checkpoint, per-chapter
  exercise count == solution count with hand-typed numbering N.1..N.k
- built PDF: >=100 pages, zero unresolved references, any page-count
  claim in prose must equal pdfinfo
- internal congruence: chapter-count words in README/ch01 vs measured N
  ('spent twelve chapters' in ch13 is checked as a positional count, not
  grepped as stale — the spelling-vs-property lesson, applied to the
  checker itself); week-plan heading == max table row; the
  discussion-exercise roster parsed from prose == measured set; the
  SLH-DSA arithmetic recomputed from scratch (digest split 21/7/2, sig
  7856, fixed 254, per-layer max 510 by brute force, worst 3824,
  checksum digit examples) and each value required present in ch13
- cross-repo congruence: 19 leaves derived by property (six-digit
  filenames + index fields — the entries/ glob counts 25); every
  nineteen/19 claim in prose parsed and compared; leaves 13-16 subjects
  + 44 certs; leaves 12/17 = 61; leaves 0-11 = 16; leaf 18 = 11 certs,
  apex cone kernel-3+5 oracles, ht cone f,h,t_l, four kernel-3-only
  plumbing certs, all cones exact; first dual-signed head at size 14;
  final head size == leaf count; ch13 parameter card == the const-generic
  arguments parsed out of the extracted Funs.lean; ch07's 71-digit Q ==
  P25519.lean digit for digit

Fails closed: a missing sibling repo is a FAILURE, not a skip;
BOOK_LOCAL_ONLY=1 skips cross-repo loudly and never prints ALL GREEN.
--selftest mutates copies of the sources seven ways (count drift,
deleted solution, one Q digit, leaf-count drift, arithmetic drift,
stray box after a checkpoint, plan/heading divergence) and requires each
to be caught BY ITS OWN CHECK, plus an unmutated control that must pass.

Full run: ALL GREEN (93 checks). Selftest: 8/8.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 14:16:30 +02:00