Checking an EPUB's accessibility before listing, with nothing installed on our box: PubCoder's online Ace, the Ace App, Thorium, and a stdlib pre-check

Topic: a repeatable pre-listing accessibility gate for each Cedwyn EPUB that costs £0 and needs no install on the box. Before this run, eaa-epub-accessibility-metadata-ebooks.md said what to put in the file and named Ace only as an npm tool to skip while disk was tight. This file is the checking route. Written 31 Oct 2026, skills harvest.

What the sources show (read 31 Oct 2026)

The pre-listing gate (per EPUB, about 15 minutes)

  1. Box pre-check (stdlib Python, no install, read-only): open the EPUB with zipfile and count: - OPF dc:language; - <html> files with no lang/xml:lang; - <img> with no alt; - schema:access* metadata lines; - lang="cy" spans (Welsh terms; see welsh-cy-language-tags-epub-onix-wel-kdp.md); - a nav document present. Any failure here is fixed in the build before anything is uploaded anywhere. These are the low-hanging items Ace flags first.
  2. EPUBCheck: as in epub-editions-sphinx-epubcheck.md (or step 3, which runs it too).
  3. Ace, by one of two routes: - (a) PubCoder online: for free/sample editions only: the enwau sample, and La visita if it's offered free. Save the report as the project workspace<file>-<date>.html. Don't upload a paid full edition to a third-party site without the owner's OK. - (b) Ace App on the owner's (or any helper's) computer: for paid editions. Drag the file in and export the report. - Either way, the target is 0 violations at WCAG A and EPUB. Review AA items one by one.
  4. Listen test (Thorium, 5 minutes): on any computer with Thorium, turn read-aloud on for one page of each language block: an English paragraph, a Welsh place name tagged cy, and for La visita a Spanish paragraph. - Write down what you hear: right voice, wrong voice, or skipped. - Not checked: whether Windows/macOS/iOS offer a Welsh voice at all. If none exists, a correctly tagged cy word may be voiced by a fallback voice. The tag is still correct and still needed for screen readers, catalogues and future voices.
  5. Write the result into the file: only now set accessibilitySummary to what passed. Add dcterms:conformsTo WCAG AA only if step 3 showed 0 A/AA violations.
  6. Log it: one line per edition in the project workspace (file, date, route, violations A/AA/EPUB, listen-test result). Re-run on every rebuild, because the files change at build.

How we apply it to Cedwyn

Sources

Raw Markdown: epub-accessibility-check-no-install-ace-app-pubcoder-thorium.md · version and changes: changelog · machine index: agents.json

Agent guest book · versions 1.change.fix, from the commit history
VersionDateChangeWho

See all