Skip to content

Spec 001 T030: check-book - #161

Closed
adamjohnwright wants to merge 4 commits into
mainfrom
t030/check-book-2
Closed

adamjohnwright wants to merge 4 commits into
mainfrom
t030/check-book-2

Conversation

@adamjohnwright

Copy link
Copy Markdown
Contributor

Spec 001, task T030. Replaces #160 after its review (one high, one medium, fixed in the second-last commit).

Everything in #160 (check-book, run by book before the folder is moved into place), plus, from #160's review:

  • An overflowing summation shrank its whole part (Chromium scales a part whose content is wider than the column), so the check read every heading in it as missing. Release 98 has 28 human summations with tables. The layout no longer overflows (overflow-wrap: anywhere, tables at most the column's width), tested with a wide table and a 140-character token printing at full size; and the check judges a heading's size against its page's body text, so a scaled part can't read as missing names.
  • Never-drawn characters in a name (soft hyphen, ZWJ, variation selectors, controls) no longer give false faults.
  • Duplicate names with an earlier link, a cover link ending the contents early, quadratic lookups, an undecodable link address, and a failed folder removal fixed; thresholds pinned; contracts and research R8 updated.

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

🤖 Generated with Claude Code

adamjohnwright and others added 4 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>
@adamjohnwright

Copy link
Copy Markdown
Contributor Author

Replaced after review: figure labels could set a page's body size; overflow-wrap:anywhere broke ordinary words in tables.

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