Files
the-daily-epub/docs/plans/briefs/web-dashboard-v2/handoff-step1.md
T
thalladaandClaude Fable 5.1 f410df47c0 Web dashboard v2 step 1: public summaries, legacy issue fallback
Public issue pages and the Atom feed now carry each pick's summary and
'Why it's here' line (bodies, The Brief, World Briefing and comments stay
private). Issues stored before issues.issue_json existed rebuild their
colophon and Behind the paper from issues.report_json / the run row and
candidate_runs, and recover the World Briefing chapter from the EPUB on
disk. The dev seed mirrors that legacy shape.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NHyYupFdBiR4VfoUM7NjSM
2026-09-03 20:28:16 +00:00

3.8 KiB

Web dashboard v2 — step 1 handoff

What landed

  • Public issue pages and Atom entries now show each pick's trimmed summary and its “Why it's here” line. The public view model still has no article body, Brief, World Briefing, or discussion/comment content, and the public tests assert those fields do not leak.
  • Legacy issues.issue_json IS NULL loads now recover their colophon and Behind the paper data from issues.report_json, matching the report to its run by started_at for near misses. If the issue report is absent, the loader uses the latest finished run for that issue date. Missing historical values render as n/a in the web colophon rather than misleading zeroes.
  • Historical model names come from the resolved run config. Summary-provider resolution follows editorial.summary_model; missing model metadata falls back to the current config and is called out in the generator note.
  • Legacy World Briefings are recovered from OEBPS/world.xhtml in the stored standard EPUB (or its canonical publish path). The EPUB body is used after removing its own leading heading; missing or corrupt files are debug-logged and treated as “no World chapter,” not as request errors.
  • The development seed's 2026-09-01 issue now has a real report, a real EPUB path with fixture World Briefing content, issue_json = NULL, and three candidate_runs near misses. The 2026-09-02 issue retains a full snapshot.
  • README and the dashboard plan now document the operator's 2026-09-03 public summary/why decision and list recovered EPUB XHTML among the trusted |safe inputs. zip moved from dev-only to runtime dependencies.

Tests

  • Focused web issue tests: 10 passed, including report and run-only colophon fallback, recovered World/Behind routes, missing EPUB behavior, and public/feed privacy assertions.
  • Public view-model test: 1 passed.
  • Development seed smoke test: successfully generated the database and EPUB; SQL verification showed the legacy row has a null snapshot, present report and EPUB path, plus 3 near-miss rows.
  • cargo fmt: clean.
  • cargo clippy --all-targets -- -D warnings: clean.
  • Unfiltered cargo test: library result 427 passed, 13 failed. Every failure was a pre-existing loopback-listener test rejected by the sandbox.
  • Filtered sandbox run: 461 passed, 0 failed, 15 filtered across library, binary, integration, and doc-test targets. The filters were the 13 loopback unit tests and both tests/m7_server.rs TCP tests.

Deviations and follow-up

  • 00-shared.md lists four Anthropic listener tests, one extraction listener test, five server listener tests, and m7_server as sandbox-only failures. The code also has three pre-existing OpenAI mock-server tests that bind the same forbidden loopback listener; they failed with the identical PermissionDenied error. docs/plans/2026-08-15-implementation-notes.md already lists those three. They were therefore filtered for the complete sandbox verification and should run normally in the orchestrator.
  • No migrations, routes, auth behavior, or security headers changed. No database backfill is performed.
  • This sandbox mounts the worktree's shared Git metadata under /home/thallada/workspace/the-daily-epub/.git/worktrees/the-daily-epub-v2a read-only. The required git add failed while creating index.lock, so the verified changes remain unstaged and the single requested commit still needs to be created by the orchestrator with message Web dashboard v2 step 1: public summaries, legacy issue fallback. No source or data in the forbidden main checkout was changed.
  • Beyond that commit and the orchestrator's unsandboxed full-suite run, nothing remains for step 1. This was not a design step, so no screenshots were taken.