Skip to content

Adopt the deferred private EPUB ingestion prototype into the canonical Reader #289

Closed

Description

@andy-zen-dev

Recovered product debt

Current README and the historical #274 delivery record explicitly retain unpublished EPUB/batch Workbench work. It was not part of the accepted UTF-8 Reader integration (#273/#276), nor of #288's report comparator. Open/closed issue and PR searches found no delivered EPUB integration. The prototype bytes were not recovered in this session; the historical claim is not implementation or test evidence.

User outcome

Analyze a locally supplied, unencrypted EPUB with the same canonical metrics, without uploading the book, executing embedded content or silently treating a container file as its literary body.

Acceptance

  • First locate and inspect any surviving handoff; deduplicate against current source. Recover only useful code into the canonical ingestion layer, not a parallel Workbench/analyzer.
  • Explicit supported EPUB subset and reading-order policy; separate raw archive, extracted body and normalized-text identities and versions. Preserve editions/translations as distinct inputs.
  • Bounded archive/member counts, compressed and expanded bytes; reject traversal, duplicate/ambiguous members, encrypted input, unsupported structures and unsafe XML. Never execute scripts, follow remote resources, write archive paths or bypass DRM.
  • Reuse the actual analyzer and current privacy/error/create-only output semantics; short-text representativeness remains explicit.
  • Real installed CLI -> HTML/JSON/CSV tests with small original synthetic fixtures: reading order, Unicode, missing spine, malformed archives and size/path attacks. No full copyrighted books in fixtures or reports.
  • Document the accepted input subset and failures. No corpus admission, FantLab-input match, new backend or parity claim. M2 remains 0/5.

Independent of #280 browser report comparison. Keep execution ordering in the existing compact project queue; do not create a competing worker or speculative integration branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions