generated from coulomb/repo-seed
IB-WP-0016-T01: spine-aware EPUB3 intake
Parse META-INF/container.xml and the OPF package document, then iterate documents in spine reading order instead of archive-name sort. Classify each spine item (body, cover, nav, toc, header, footer, notes, license, auxiliary) and exclude non-body sections by default; include_non_body=True opts them back in for inspection. Capture OPF book metadata (title, creator, language, subjects, rights, identifier, source_url, modified) onto every chunk and propagate it through source artifact provenance. Preserve the legacy zip-without-OPF fallback for malformed EPUBs. Real Lefevre EPUB now yields 148 body chunks in spine order (was 155 mixed, archive-sorted) with cover=1, header=1, footer=4 detected and dropped. 78 tests pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -68,3 +68,24 @@ able to show:
|
||||
- selected chapter or chunk filters for smoke runs
|
||||
- deterministic fixture acceptance on a small Lefevre-like subset
|
||||
- optional live one-chapter smoke run with explicit provider/model/cost caps
|
||||
|
||||
## T01 Result (2026-05-17)
|
||||
|
||||
Spine-aware EPUB3 intake landed. Re-running the local Lefevre EPUB through
|
||||
`normalize_source(...)` now yields:
|
||||
|
||||
- 148 body chunks (default), down from the original 155 mixed chunks
|
||||
- Spine reading order: indices 0..27 in declared order, not archive-name sort
|
||||
- Full OPF metadata on every chunk's `book_metadata`:
|
||||
title, creator, language, subjects, rights, identifier, source_url, modified
|
||||
- Section roles classified across the 154 spine items:
|
||||
`body=148`, `footer=4`, `cover=1`, `header=1`
|
||||
- The four Gutenberg footer/license/notes sections and the `*** START OF…`
|
||||
header section are now excluded from generation input by default and
|
||||
available via `include_non_body=True` for inspection
|
||||
- The legacy zip-without-OPF fallback path is preserved for malformed EPUBs
|
||||
|
||||
The remaining gap is title collapse: all body sections still share the
|
||||
Project Gutenberg page title because chapter headings are not yet read from
|
||||
in-document `<h1>` content. That collapse is T02's scope (chapter-aware
|
||||
chunking and stable IDs from in-document headings).
|
||||
|
||||
Reference in New Issue
Block a user