Skip to content

Spec 001 T030: check-book - #162

Merged
adamjohnwright merged 6 commits into
mainfrom
t030/check-book-3
Nov 4, 2026
Merged

adamjohnwright merged 6 commits into
mainfrom
t030/check-book-3

Conversation

@adamjohnwright

Copy link
Copy Markdown
Contributor

Spec 001, task T030. Replaces #161 after its review (two highs, fixed in the second-last commit); #161 replaced #160.

Everything in #161 (check-book, run by book before the move; the layout kept inside the column), plus, from #161's review:

  • Figure labels set the page's body size, so a label-heavy diagram on a heading's page gave false no-name: headings are now measured against their section's own "Stable identifier" label, with figure-link text left out of any fallback.
  • overflow-wrap: anywhere split ordinary words in tables ("Au/th/ore/d"): back to break-word, with <wbr> every 20 characters in tokens over 40 (in texts and summations, never in attributes); edit dates don't wrap. Tested with 30 editors and a summation table of long words beside prose.
  • Docs no longer claim the layout never overflows; folded() imports NEVER_DRAWN; identifies() reads only its own section.

Tests: 441 in all. Mutants in tasks.md.

🤖 Generated with Claude Code

adamjohnwright and others added 6 commits November 4, 2026 02:21
…place

pdf-export check-book <folder> reads each PDF's outline, links and text
with pdf.js and reports FR-011's faults in the contract's three line
forms: missing-pathway, extra-file, and per PDF not-in-contents,
not-in-outline, no-name, no-stable-id, missing-figure (where the source
is in --files) and broken-link. book closes its printer, runs the check
on its folder and moves the folder into place only when it passes;
faults are exit 1 with no book, and the run report gives each check
with its count of faults.

From #159's review: a test that a printer's close removes its folder;
one private temporary folder live a process; bookCommand's cleanup in a
finally, the report written before the folder is removed; the serve
contract says which signals leave nothing; a signal once the book is in
place reports it written, with the signal, and exits 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gainst their page

The layout breaks a word too long for its line anywhere, so nothing is
wider than the text column and Chromium never prints a part scaled
down; the check reads a heading against its page's body text, so one
printed scaled down still reads its names. Names are compared without
the characters never drawn. Two sections of one name are told apart by
their stable identifiers, the contents list is bounded by the outline,
an undecodable address is a broken link, and the names are indexed
once. A failed removal of the private folder keeps its exit handler.
Release 98's counts of tables in summations noted in research R8.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rds kept whole

The check measures a heading against its section's own Stable identifier
label, or its page's commonest size outside its figures' labels, so a
figure of many small labels no longer takes the facts into a heading.
The pages break a word only where it overflows its line (break-word),
and the layout gives a token over 40 characters a <wbr> every 20, so a
table's short columns keep their words whole; an edit's date is never
broken. folded() takes NEVER_DRAWN's pattern; identifies() reads only a
candidate's own section. The docs say the layout keeps realistic content
inside the column, not that nothing overflows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@adamjohnwright
adamjohnwright merged commit 0e1bf38 into main Nov 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant