Investigator report — 2026/07/12
Verdict
A strong edition undone by one hard defect: the lead image does not render on the frontpage PNG because the art director wrote a wrong relative path. Strip that bug and the editorial content is genuinely good — the GhostLock long read earns its priority, the cycling dispatch has real texture, and the QUESTION's EVE Online bridge is the edition's sharpest moment. Two smaller issues (THE WORLD local block at double its allowed sentence count, THE LONG READ and THE LAB sharing a story on the same frontpage) leave the paper reading better than it looks. The run was expensive relative to output: the orchestrator's polling cost more than every writer combined.
Frontpage
Broken lead image. The art director wrote <img src="./2026/07/12/lead_image.png" in frontpage.html (line 449). Since the HTML is already inside 2026/07/12/, the resolved path is 2026/07/12/2026/07/12/lead_image.png, which does not exist. The rendered PNG confirms this: the FROM THE ARCHIVE column shows only the alt text "France wins the 1998 World Cup Final at the Stade de France" with a broken-image icon, occupying the full 270px image area with nothing but text. The correct path is ./lead_image.png (or bare lead_image.png). The deployed index.html from build_html.py correctly uses src="lead_image.png" — the bug is isolated to the art director's frontpage output.
Layout and hierarchy are otherwise clean. THE WORLD renders as a two-line banner headline above the fold; THE LONG READ leads the main row (priority 86, highest among full-article sections); THE LAB and THE QUESTION fill the adjacent columns; the bottom row is THE PELOTON / FROM THE ARCHIVE / ALSO NOTED. Priority ordering is respected throughout. Font sizes are readable; no clipping observed in columns other than the expected fade-out at the bottom of each. THE FUNNIES is correctly omitted per frontpage_display: skip.
Adjacent GhostLock headlines. On the frontpage, a reader sees "Fifteen Years in the Lock: How One Wrong Assumption Haunted Every Linux Kernel" (THE LONG READ) immediately next to "GhostLock: A Fifteen-Year Linux Root Exploit, Now Public" (THE LAB). Before reading either article, the two columns look like the same story printed twice. This is not a layout error — each section serves its declared focus — but it is the most prominent visual redundancy on the page and worth flagging as an art-direction decision that was not made.
Priority ranking
| Section | Priority | Length (approx.) | Image | Notes |
| THE WORLD | 90 | ~750 words | — | Banner-only on frontpage per headline_only rule |
| THE LONG READ | 86 | ~1,200 words | — | Leads main row; substantive; earned |
| THE LAB | 80 | ~900 words | — | Same CVE as LONG READ dominates both |
| THE QUESTION | 75 | ~520 words | — | Drawn from PELOTON's third block, not primary story |
| THE PELOTON | 70 | ~750 words | — | Writer's YAML required orchestrator repair |
| FROM THE ARCHIVE | 40 | ~280 words | yes (broken) | triggers_meta: true; image path wrong |
| ALSO NOTED | 9 | ~650 words | — | Six items; solid |
| THE FUNNIES | 8 | ~50 words | — | Skipped on frontpage per rule |
The ranking is defensible for the day's news. THE WORLD at 90 reflects a genuine major event (Hormuz closure + US strikes). THE LONG READ at 86 earns it — the technical depth on a live, unpatched kernel bug with a working exploit is a legitimate "significant tech release" read. THE LAB at 80 and THE QUESTION at 75 are reasonable. No priority inflation; the spread from 90 to 70 gives the art director real ordering signal.
Editorial reading
THE WORLD local block exceeds the 1–2 sentence rule on both items. section-world.md focus rules read: "Local block scales by number of notable items (1–2 sentences each, no word cap)." The Seahawks item runs four sentences; the Seattle Transit item runs four sentences. Neither is padding — every sentence carries information — but the section's own declared discipline is not met. At 1–2 sentences each, the local block would be roughly half its current length, leaving more room for the ON THE TRAIL subsection to breathe. This is the world writer's most flagged gap.
THE LONG READ and THE LAB double the same CVE on the frontpage without a bridging signal. GhostLock (CVE-2026-43499) is the lead story for both THE LONG READ and THE LAB. The two articles are genuinely complementary — THE LAB covers actionable patch status and the IonStack browser chain; THE LONG READ covers the exploit construction in technical depth — but the frontpage renders them as adjacent columns with similar "fifteen-year" framing in both headlines. The art director made no editorial comment and produced no dinkus or bridging device indicating they are companion pieces. A reader picking up the paper for the first time is left to discover the distinction themselves. The right intervention here is the art director's: either a shared slug label ("GhostLock" across both) or a one-line bridge note on the frontpage layout. This falls on the art director, not the writers.
THE QUESTION's strongest move arrives in paragraph four. The question filed — "Prudhomme Backs a Cap. Who Has the Power to Build One?" — draws from THE PELOTON's third story block. The structural reasoning is solid: cycling's cap needs definition, enforcement authority, and buy-in from the teams most incentivized to resist. The article correctly invokes the EVE Online / Carbon open-sourcing as a counter-case (voluntary regime change when the moat dissolves). But that bridge appears only in the fourth of five paragraphs. Per the CROSS-DOMAIN BRIDGE rule in the section's focus config, a bridge between sport and tech governance should be the question's structural core, not an addendum. Opening on the EVE Online calculation and working back to cycling would have produced a stronger piece and better fulfilled the rule's intent: "a QUESTION that bridges two domains earns its place in the 75-94 priority band." As filed it sits at 75, which is correct — this is a solid question, not an exceptional one.
FROM THE ARCHIVE cites a single hobbyist domain for all four footnotes. Every <sup>1</sup> in the archive piece points to planetworldcup.com/CUPS/1998/final_fra_v_bra.html. The fact-checker confirmed each individual claim against that source (Desailly's 68th-minute yellow, Vieira sub at 74, Petit's 90th-minute goal, Ronaldo's age at 21). But for a major, well-documented public event where FIFA, BBC Sport, and Wikipedia all carry reliable match records, routing every footnote through a single fan-operated site is thin. If planetworldcup.com goes offline or its page changes, the entire archive article's evidentiary chain collapses. This is source redundancy, not factual accuracy — the facts are right — but the paper should aim for at least one institutional source on events of this visibility.
Dropped SIGGRAPH 2026 Games Summit (ALSO NOTED) is a reader-interest miss. The ALSO NOTED dropped list includes prnewswire.com/news-releases/siggraph-2026-introduces-the-games-summit-a-new-one-day-home-for-game-developers with reason "source unverifiable." SIGGRAPH's new Games Summit is directly in this reader's highest interests (game engines, graphics programming) and is a concrete, confirmable event. The drop reason is a fetch failure, not a credibility problem. The scout or researcher could have noted the official SIGGRAPH domain (siggraph.org) as a fallback source for an event announcement that needs no scraping. This is not a pipeline failure — it is a signal that "source unverifiable" as a universal drop reason should not apply to major industry conference announcements where the organization's own URL would confirm the news.
Pipeline observations
High-severity: art-director image path bug. frontpage.html line 449 contains src="./2026/07/12/lead_image.png". The correct path relative to the HTML file's own directory is ./lead_image.png. This is not the same class of error as the SVG illustrator path convention (which produces ./lead_image.svg without the edition prefix) — the OpenAI-backed illustrator writes lead_image.png to the edition directory, and build_html.py references it correctly as lead_image.png. The art director is prefixing the edition path as if writing from the repo root. The rendered frontpage.png shows the broken image. Root cause: the art-director agent is constructing image paths with the full edition subdirectory prefix. Upstream fix needed in the art-director prompt or post-processing.
THE PELOTON writer produced invalid YAML. Orchestrator session log (jsonl/session.jsonl.gz) contains: "PELOTON skipped due to YAML parse error. Fixing the malformed frontmatter." The orchestrator repaired the output before assembly. The shipped section-peloton.md is valid YAML and assembles correctly, but the writer's first output required manual remediation. The PELOTON writer produced the result in 362s and 32 messages; a YAML parse error suggests the writer was juggling the multi-line results: block (the jersey standings table) and broke the frontmatter quoting or indentation. A fact-checker then ran on the corrected output (28 claims, 2 corrections).
No dedup subagent. Twenty subagents are present in jsonl/subagents/; none is typed dedup. The dedup function is handled by build_coverage_index.py, run directly by the orchestrator as a shell step rather than a spawned subagent. covered.json is present and populated. This is a design decision, not a gap in the run — but it means dedup is invisible in the per-agent audit trail.
Orchestrator polling dominates cost. The session log shows 17 consecutive messages of "Still in Step 3. No git until Step 8." while waiting for writers. Each message generates tokens; the orchestrator's total is $3.25, the single largest line item, exceeding the researcher ($1.54) and every writer. This is a structural pattern: the orchestrator writes status notes to itself while blocking on subagents, and those notes accumulate in context. No remediation is currently in place.
Art director 2035s runtime. The art-director agent took 34 minutes for a layout task that produced 11 messages. No errors are logged in its final response. The slow runtime is unexplained by the trace alone; possible causes include repeated tool calls to read and re-read section files, or a slow file-write loop. At $0.41 it is not a cost concern, but the wall-clock impact on the overall pipeline is notable.
Fetch failures: Bungie layoffs (Bellevue) not recovered. fetch_retry_results.json shows king5.com/article/money/business/bellevue-based-bungie-announces-lay... failed on all methods. The Bungie story (292 layoffs in Bellevue following Destiny 2's end) appeared in ALSO NOTED's dropped list as "source unverifiable." This is a local tech story with direct reader relevance — Bungie is in Bellevue — and the fetch failure is the direct cause of the drop. The story should have had a second source (GeekWire, per the dropped list in section-noted.md, also listed but unverified). GeekWire would have been a better primary source for a Bellevue tech layoff; the pipeline reached for King5 first.
Starting commit is same-day. The dispatch commit cf0e27f was authored on July 12, 2026. Its parent 4c30d16 is the July 11 investigator commit (same-day relative to the dispatch run). No intervening changes to .claude/, *.py, or dispatch.md were committed between f57374d (July 11 dispatch) and cf0e27f (July 12 dispatch). The run started on a current worktree.
Trace highlights
THE WORLD writer is the most expensive writer at $1.36. This is 3.6× the next-most-expensive writer (ALSO NOTED at $0.38). The high cost is explained by the ON THE TRAIL subsection: per-trail-pick weather quotes, per-day mileage estimates, regional snapshots across multiple zones, and the 7-day forecast boundary calculation. THE WORLD at 1244s / $1.36 versus THE LONG READ at 87s / $0.08 captures the inverse of intuition — the technically sophisticated 1,200-word kernel-exploit analysis costs less than the hiking section.
Orchestrator at $3.25 is the single largest cost, beating the researcher ($1.54). The researcher ran for 1391s and produced the brief the writers drew from. The orchestrator costs more than the researcher because of the Step-3 polling loop and the long-lived context carrying all section outputs back to the parent. This is not a session anomaly — it is the expected shape of the current orchestrator design.
THE LONG READ at $0.08 / 87s is the best-value agent in the run. It produced the edition's most technically rigorous article using heavy cache reads (45,950 cache tokens read) and minimal fresh compute. The writer correctly read the single source deeply rather than ranging across multiple URLs.
Comic-strip agent at 578s produced a funnies section that shipped. The comics agent ran for nearly 10 minutes and generated 3,871 output tokens (the highest output among non-orchestrator agents). The result is the SVG strip in funnies.svg plus an OpenAI-rendered PNG in funnies-openai.png. The section body in section-funnies.md is a text description; both image files are correctly referenced in index.html. No defect here, but the 578s runtime is the third-longest agent in the run.
Trace summary
Dispatch 2026-07-12 (model: claude-sonnet-4-6)
| Agent | Dur | Input | Output | Cache Read | Cache 5m | Cache 1h | Cost |
| Scout | 461s | 9855 | 78 | 343254 | 77921 | 0 | $ 0.43 |
| Researcher | 1391s | 9129 | 4138 | 2702020 | 170525 | 0 | $ 1.54 |
| THE WORLD | 1244s | 9 | 32025 | 56358 | 229230 | 0 | $ 1.36 |
| THE PELOTON | 362s | 8 | 46 | 91425 | 85486 | 0 | $ 0.35 |
| THE LAB | 329s | 7 | 35 | 79972 | 37768 | 0 | $ 0.17 |
| THE LONG READ | 87s | 6 | 26 | 45950 | 16293 | 0 | $ 0.08 |
| FROM THE ARCHIVE | 146s | 6 | 25 | 59869 | 24578 | 0 | $ 0.11 |
| FC: THE LONG READ | 310s | 1493 | 34 | 111281 | 50285 | 0 | $ 0.23 |
| FC: FROM THE ARCHIVE | 158s | 7 | 34 | 90696 | 26648 | 0 | $ 0.13 |
| Meta-Writer | 59s | 6 | 25 | 49441 | 22756 | 0 | $ 0.10 |
| Illustrator | 48s | 219 | 1372 | 0 | 0 | 0 | $ 0.06 |
| FC: THE LAB | 376s | 653 | 52 | 204734 | 45077 | 0 | $ 0.23 |
| FC: THE PELOTON | 264s | 8 | 56 | 162317 | 45463 | 0 | $ 0.22 |
| FC: THE WORLD | 531s | 1015 | 44 | 118813 | 132920 | 0 | $ 0.54 |
| THE QUESTION | 222s | 6 | 25 | 73594 | 37194 | 0 | $ 0.16 |
| FC: THE QUESTION | 158s | 6 | 25 | 67481 | 28185 | 0 | $ 0.13 |
| ALSO NOTED | 332s | 9 | 50 | 272213 | 78997 | 0 | $ 0.38 |
| Draw today's TWO parody comic strips for | 578s | 11 | 3871 | 247171 | 86457 | 0 | $ 0.46 |
| FC: ALSO NOTED | 216s | 8 | 45 | 157902 | 44906 | 0 | $ 0.22 |
| Funnies (OpenAI) | 131s | 412 | 5488 | 0 | 0 | 0 | $ 0.22 |
| Art Director | 2035s | 14 | 34 | 10824 | 109208 | 0 | $ 0.41 |
| Update story threads for today's edition | 538s | 5 | 17 | 8380 | 103806 | 0 | $ 0.39 |
| Orchestrator | | 158 | 32011 | 6861509 | 0 | 118303 | $ 3.25 |
| TOTAL | | 23050 | 79556 | 11815204 | 1453703 | 118303 | $11.14 |
Suggestions for next edition
Fix the art-director image path. The agent is constructing image src as ./YYYY/MM/DD/lead_image.png instead of ./lead_image.png. The fix belongs in the art-director prompt or in a post-processing script that strips the edition-path prefix from any <img src= pointing at a file already in the edition directory. This broke the lead image on the frontpage today.
THE WORLD local block needs a sentence cap enforced at the writer level. Both local items ran to four sentences against a stated 1–2 sentence rule. If the WORLD writer is given explicit instruction ("each local item: 2 sentences maximum, trim to fit"), the section will sharpen without losing the Seahawks or Transit stories. The information density is good; the discipline is not.
The QUESTION writer should be prompted to draft the cross-domain bridge first, not last. Today's EVE Online / cycling governance connection is the article's best line. The CROSS-DOMAIN BRIDGE rule says to prefer it when the structural argument holds across domains — but the writer buried it in paragraph four. Adding a "write the bridge first, then fill in the domain-specific details" discipline to the QUESTION writer prompt would improve the section on the days it applies.
The SIGGRAPH / conference-announcement pattern needs a fetch fallback. PR Newswire is a known scraping target that fails often. When a dropped item is a major industry conference announcement (SIGGRAPH, GDC, Unite), the pipeline should attempt the organizing body's own domain (siggraph.org) as a second fetch before marking the item unverifiable. A note in the scout or researcher prompts about conference announcement sourcing would prevent this category of reader-relevant gap.