Files
the-daily-epub/src/epub/templates/README.md
T
thalladaandClaude Fable 5.1 d261cd485d Curation v2 step 6: Behind the paper, stats, run report block, lock
Behind-the-paper chapter (behind.xhtml, both editions) built from the run's
StageCounts and candidate_runs near misses; daily-epub stats [--days N];
StageCounts gains knn/feed gates and verdicts_in_prompt, timings split
into summaries + brief, the four-line §15.4 info block logged once per
run and printed by print_report; src/lock.rs flock guard on
<database_path>.lock for generate, profile rebuild, features backfill and
backfill-social; README updated for the new CLI, env vars and costs.

Implemented by a Claude agent from docs/plans/curation-v2-briefs/step6.md;
reviewed against plan §5, §15.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A1rCLQeKBgnBo3oTgHuTMe
2026-09-02 16:21:06 +00:00

2.1 KiB

EPUB templates

Askama templates and stylesheets for the two editions (spec §3.10, implementation notes §11). src/epub/build.rs owns the structs they bind to; askama.toml at the crate root points askama here (dirs = ["src/epub/templates"]).

File Template struct Purpose
base.xhtml Shared XHTML skeleton ({% block body_class %}, {% block content %})
cover_page.xhtml CoverPage Page that displays the rasterized cover image
front_page.xhtml FrontPage "The Brief" + issue stats line
in_this_issue.xhtml InThisIssue Introduction chapter: per-section linked index
section.xhtml SectionPage Section title page (name only)
chapter.xhtml ArticleChapter Article: header, body, rating/read-online footer
discussion.xhtml DiscussionChapter Comment chapter (§3.7); body from comments::render_xhtml
world_briefing.xhtml WorldBriefingChapter Wikipedia Current Events (§3.8), body from world::render_xhtml
behind.xhtml BehindChapter "Behind the paper": run counts, admission mix, near misses, models (§15.1)
colophon.xhtml ColophonChapter Back matter: models, cost, counts
cover.svg CoverSvg Typographic cover, rasterized with resvg + tiny-skia
style.css Standard-edition stylesheet, embedded as stylesheet.css
style-x4.css X4 stylesheet: no floats/flex/grid, no fonts, hyphenation on

Conventions:

  • Every content template {% extends "base.xhtml" %} and provides title.
  • Templates declare escape = "html".xhtml/.svg are not in askama's default escaper extension list. Escaping emits numeric character references (&#38;), which are valid XML; only pre-sanitized markup uses |safe.
  • Markup that reaches |safe has gone through ammonia and epub::images::to_xhtml (void elements self-closed, &nbsp;&#160;) so the output parses as XML, as EPUB3 content documents must.
  • Entities other than the five XML built-ins are written as numeric references in the templates themselves (&#183;, &#128077;, …).