Commit graph

2 commits

Author SHA1 Message Date
1f11b8aa4d print-quality pass: the book gets looked at, and the looking becomes a gate
The operator caught what no check had ever tested: nobody had LOOKED at
the rendered pages. A ten-inspector visual audit of all 129 pages (every
page opened as an image) found 40 defects, including didactic
correctness bugs invisible to the text layer:

BAD, fixed:
- ch03 printed WRONG Lean operators: \lean{P /\ Q} lost its backslash
  ('P / Q') and \lean{P \/ Q} lost the operator entirely ('P  Q') —
  TeX ate them inside the non-verbatim macro. Now the unicode ∧/∨ the
  book uses everywhere else.
- ch12: the doubling display overflowed its box border, slicing the
  math; stacked on two lines.
- toolkit Card 6: the headroom-audit display was clipped by the page
  edge; now an align* stack.

UGLY, fixed:
- title page: the 'pyramid motif' at 5% white opacity on near-black
  rendered as smudge artifacts, plus a clipped ∀ glyph in the corner
  — redrawn with solid mixed colors (no transparency), glyph removed;
  the footer's mid-word paragraph gap was a \vspace landing inside
  horizontal mode; fixed with \par
- ch06: both clock diagrams' wrap-around arrows ran counterclockwise,
  retracing over earlier arcs — target position expressed as 12 (one
  revolution) so the arc continues clockwise, landing on 0 (mod 12)
  and 1 (mod 11) correctly
- ch04: two_mul'' printed as two_mul" (quote ligature)
- one-line orphaned box fragments and stranded solution headings
  throughout: bigidea/tryit/pitfall/aha/checkpoint are now unbreakable
  (none exceeds half a page), worked boxes announce '(continued)' after
  a break, \solhead keeps four lines with \Needspace
- --all/--receipt flags printed as one merged dash: \ddash macro
- inline code no longer hyphen-breaks at underscores (codeguards)
- ch09's 2^{...} smudge, glossary margin overflow, ch08 orphaned
  listing line, ch13 command-line layout, three >10pt overfulls

THE STRUCTURAL LESSON, encoded: the two worst clipping bugs had been
announced as 80pt/73pt overfull warnings in every build log and ignored.
check-book.sh now FAILS on any overfull box past 10pt — the machine was
telling us; now it is allowed to stop us.

132 pages; publication-history and README counts synced; every fixed
page re-rendered and verified by eye. Button: ALL GREEN (96 checks).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 19:11:09 +02:00
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