Fix world briefing & add LLM enrichment, colophon fix, x4 cover fix

- World Briefing now starts with yesterday, preserves complete nested
event hierarchies and Wikipedia links, fetches deduplicated article
leads concurrently, and adds stable-ID summaries plus a daily overview.
- Enrichment runs after normal editorial work and degrades safely with
report warnings.
- Colophon facts now use X4-safe block paragraphs.
- Standard cover remains 1200×1600 RGB PNG.
- X4 cover is a 480×800 baseline RGB JPEG with consistent XHTML and OPF
declarations.
- Added CrossInk cache-clearing guidance to README.md.
- Worked around an epub-builder duplicate XML-ID defect discovered by
validation.
This commit is contained in:
2026-08-15 21:13:56 +00:00
parent 9e27a32fb6
commit 38fb493989
12 changed files with 897 additions and 319 deletions
+23 -2
View File
@@ -399,8 +399,29 @@ pub struct WorldBriefing {
pub date: Date,
/// Portal URL the content came from (also used for CC BY-SA attribution).
pub source_url: String,
/// Sanitized `<ul>`-style markup of the day's events.
pub body_html: String,
/// Optional synthesized overview of the completed day's events.
pub overview: Option<String>,
/// Categories in portal order, including every nested list item.
pub sections: Vec<WorldBriefingSection>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct WorldBriefingSection {
pub title: String,
pub events: Vec<WorldEvent>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct WorldEvent {
/// Stable positional key such as `s1-e2-1`.
pub id: String,
/// Plain source text from the Wikipedia list item (excluding child lists).
pub source_text: String,
/// Same-host English Wikipedia article links found in this list item.
pub links: Vec<String>,
pub children: Vec<WorldEvent>,
/// LLM enrichment, attached only to leaf news statements.
pub summary: Option<String>,
}
/// Reserved section name for [`WorldBriefing`] — never offered to the LLM (§3.6).