Front page — July 14, 2026
The Peloton Dispatch July 14, 2026 No. 108
● 95°F, no rain, 8 mph wind—summer kit outside. · summer kit

THE WORLD

Trump Blockades Hormuz; Iranian Missiles Kill Crew Member on UAE Tanker

↩ Developing story — first reported Jul 08 · previously Jul 10, Jul 12, Jul 13


ON THE ROAD — AURILLAC, FRANCE

Sources
  1. US-Iran Hormuz Strikes — Oil Toll cnbc.com Jul 14, 2026
  2. Key practical and cultural dates for your diary in France for July 2026 connexionfrance.com Jul 1, 2026
  3. Tour de France 2026 Étape Aurillac–Le Lioran: 100% Cantal le 14 juillet paysaurillactourisme.com Oct 23, 2025
  4. Iran war live — Deadly fighting rages as battle for Hormuz intensifies aljazeera.com Jul 14, 2026

↑ Back to top

THE PELOTON

Bastille Day in the Cantal: Stage 10 Climbs to Le Lioran on the Hottest Tour in Memory

↩ Developing story — first reported Jul 10 · previously Jul 11, Jul 12, Jul 13

— Stage 10 left here at 13:15 under 31°C — seven classified climbs, 3,791 metres of ascent, 166.6 kilometres of Cantal roads — and on Bastille Day, France is waiting at the summit.1

The finish at Le Lioran is one Jonas Vingegaard knows well. Two years ago he ran down Tadej Pogačar on the same 1,240-metre road in the Cantal and beat him in a sprint on a day the Dane appeared finished. He arrives today 2:42 behind that same man in yellow, the gap built almost entirely in the Pyrenees on Stage 6.2 Visma-Lease a Bike is not conceding. "I think Jonas is a leader by example," Matteo Jorgenson told Cyclingnews from the rest day. "He really believes that he can beat him, and we all do."

The jersey situation entering Stage 10: Pogačar carries yellow, Mads Pedersen the points jersey, Isaac Del Toro the white, Vingegaard the polka dot. Paul Seixas — 19 years old, in his first Tour de France — lies sixth, 28 seconds off a podium position.3 His directeur sportif Julien Jurdie told Cyclism'Actu on the rest day that the opening nine stages had been "extremely positive," crediting Olav Kooij's Stage 5 sprint in Pau with releasing pressure across the whole squad. "Winning a stage in the first week takes a huge amount of pressure off," Jurdie said. "Not many teams have won a stage so far, so it's a real relief."3 It is the first time in Seixas's career that he has ridden nine consecutive days; everything from Stage 11 onward is new territory.

The heat has accumulated into a formal dispute. The CPA negotiated a 2% time limit extension with ASO over the weekend — after Stage 9 was already shortened by 30km — then issued a statement calling for off-season talks with all stakeholders, saying it "urgently calls for discussions" before the 2027 season.4 Pogačar, at the Stage 9 finish in Ussel, went further: "If I could have the power to change it all, I would change all the calendar. I would not race in July and August in the hot places." Average temperatures at this Tour are running nine degrees Celsius above last year's race, according to VeloNews; riders have been losing up to 10 pounds of body weight per stage through dehydration.4 Jorgenson put the cumulative toll plainly: "I can't immediately remember a tougher edition. This is certainly the hottest."2

The riders assigned to Le Lioran for the rest day found the conditions unsupported. Uno-X Mobility and Alpecin-Premier Tech shared an apartment hotel that Magnus Cort subsequently reviewed on Instagram, rating it one out of seven stars: "only a small smell of rot... dirty, no aircondition and no WIFI."5 Brothers Anders and Tobias Halland Johannessen posted photos of their solution — beds moved onto the balcony, sleeping outside rather than in their rooms. Alpecin's Silvan Dillier posted a room-tour reel and did the same; his roommate Tim Marsman stayed inside with a portable AC unit. UAE Team Emirates-XRG and Lidl-Trek also reportedly had no air conditioning at a separate hotel. ASO books and assigns all Tour accommodation; teams are not permitted to pay for alternatives, in the name of competitive fairness.


The team that races next year as Soudal Safety Jogger will still have Quick-Step on its jersey. Soudal's announcement of the Safety Jogger co-title partnership — confirming the new name and the Belgian PPE manufacturer's elevation from partner since 2022 to co-title sponsor from 2027 — included a detail that changes the read on the transition: the Quick-Step flooring brand has committed to supporting the team through 2030, with its name remaining prominent on the race kit.6 Quick-Step's 24-year run as title sponsor ends; its presence on the team does not.

FDJ United-SUEZ signed Kate Courtney to a 30-month contract effective immediately and running through the end of 2028.7 Courtney, 30, is the reigning MTB cross-country marathon World Champion and the current US Pro Road Champion — she outsprinted Lauren Stephens at road nationals. General manager Stephen Delcourt cited her "great potential on short to mid-range climbs and demanding efforts."7 She makes her Women's WorldTour debut at La Périgord Ladies on July 18, and is confirmed for Tour of Britain Women, August 19-23.

On the Road Ahead
Updated Jul 14, 2026
DateRaceCountry
Tue Jul 14 – Sun Jul 26Tour de France, Stages 10–21 (ongoing)France
Sat Aug 1Donostia San Sebastian KlasikoaSpain
Mon Aug 3 – Sun Aug 9Tour de PolognePoland
Sat Aug 22 – Sun Sep 13La Vuelta Ciclista a EspañaSpain
Show Results

STAGE 10 (Aurillac–Le Lioran, 166.6 km): Result not confirmed at filing — stage was underway at compile time (13:15 CET start).

Sources
  1. Tour de France 2026 Stage 10 Results — ProCyclingStats procyclingstats.com Jul 14, 2026
  2. 'I can't immediately remember a tougher edition' — Matteo Jorgenson suffers in the Tour de France heat cyclingnews.com Jul 14, 2026
  3. Early sprint stage win for Decathlon 'takes a huge amount of pressure off' teenage leader Paul Seixas cyclingnews.com Jul 14, 2026
  4. Coping With the Heatwave at the Tour de France — VeloNews velo.outsideonline.com Jul 13, 2026
  5. Multiple teams complain about Tour de France rest day hotels as riders forced to sleep outside in Massif Central cyclingnews.com Jul 14, 2026
  6. A New Era of the Team: Soudal Safety Jogger Announced for 2027 soudal-quickstepteam.com Jul 13, 2026
  7. 'One of the most challenging goals I have ever spoken out loud' — Kate Courtney enters the Women's WorldTour cyclingnews.com Jul 13, 2026
  8. Tour de France 2026 Stage 10 Live: Bastille Day, Aurillac → Le Lioran idlprocycling.com Jul 14, 2026

↑ Back to top

THE LAB

What Grok's Coding Agent Was Sending Home

A security researcher at Cereblab ran xAI's Grok Build CLI through a proxy and captured every byte it sent home. The findings are specific: version 0.2.93 was uploading entire repository snapshots to a GCS bucket called grok-code-session-traces, independent of which files the agent actually opened. A 12 GB test repository generated 5.10 GiB of uploads across 82 storage requests. The model-processing channel consumed 192 KB; the storage channel consumed 5.10 GiB — a ratio of roughly 27,800 to one.1 The researcher proved the upload was complete by cloning git bundles recovered from captured traffic and recovering files the agent never touched during the session.

The config option disable_codebase_upload=true exists in the [harness] section. It does not work the way the name implies: even with the "Improve the model" toggle disabled in the Grok UI, the server returned trace_upload_enabled: true.1 The relationship between client-side settings and server-side behavior is, per the analysis, undocumented. The wire-level research was published as a GitHub Gist and discussed on Hacker News; some commenters proposed a benign interpretation — uploading the full codebase lets the model inspect it without client round-trips during "thinking." Others noted this is a weak justification given the privacy implications, particularly for repositories containing .env files with production credentials.

The broader takeaway the researcher draws is accurate and not specific to Grok: choosing a coding agent harness is also choosing what leaves your machine and under what terms. The gap between "context for this task" and "persistent data collection" is frequently unspecified in documentation, and the only reliable verification method is running the tool through a proxy yourself.


On the more entertaining end of the week: Peter Gostev built DOOMQL, a Doom-like game in which SQLite is the actual game engine — not just a data store, but the engine for movement, collision detection, enemies, combat, progression, and every RGB pixel rendered to the terminal. The ray tracer is a single large recursive CTE. Gostev built the project using GPT-5.6 Sol.2 Simon Willison picked it up on July 13, cloned the repo, and used Datasette Apps to mirror the live SQLite game state into a browser view while playing in the terminal. A single prompt to Claude Fable 5 — "Build an app that displays the current state of the screen using the frame_pixels view with its x, y, r, g, b columns. have it refresh once a second." — produced a working live display; adding "add a minimap" completed it. The full render SQL and the Datasette App source are both linked from Willison's post.


Chips and Cheese published a detailed analysis of ACE, the x86 Ecosystem Advisory Group's forthcoming AMX accelerator that switches from inner products to outer products — the same architectural choice Arm made with SME2. Where AMX's original TMUL accelerator takes all operands from tile registers, ACE takes A and B inputs from AVX-512 vector registers and accumulates into tile registers. That frees the full tile register file for output accumulation, enabling a 32×64 element output tile and avoiding the register pressure that forces TMUL code to spill inputs through L1D.

The cache bandwidth numbers are the most consequential part of the analysis. For a 32K×32K INT8 matrix multiply at optimal tiling, AMX TMUL requires roughly 1.7 TB of cache traffic; ACE drops that to approximately 1.5 TB.3 A 512-bit SME implementation sits at around 2.0 TB, while a 1024-bit SME implementation reaches 1.0 TB. Per MAC operation, ACE comes in at roughly 0.046 bytes versus AVX-512-VNNI's 0.10 bytes, meaning an L1D capable of 128 bytes per cycle could sustain approximately 2,785 MAC operations per cycle with ACE versus 1,228 with VNNI. ACE also adds FP8 support via a 1024-bit Block Scale Register (BSR0) implementing OCP Microscaling Format scaling, and a new VUNPACKB instruction that, combined with AVX-512 permute instructions, handles quantized weight dequantization for any 2–7 bit format in three instructions.

No ACE hardware exists yet. Intel and AMD may be targeting next-generation parts, but as Chips and Cheese notes, ISA design and hardware implementation are different questions — how those implementations land will matter more than the spec. One interesting detail: the current AMX VEX encoding supports up to 16 tile register slots; AMX only used 8. If Intel expands to the full 16 slots in an ACE implementation, the cache efficiency would reach parity with a hypothetical 1024-bit SME implementation.

Trending today: GitHub is saturated with AI agent wrappers, CLAUDE.md skills collections, and coding-assistant proxy forks — no technical novelty cleared the bar.

Sources
  1. What xAI's Grok Build CLI Actually Sends Home: A Wire-Level Analysis developersdigest.tech Jul 13, 2026
  2. DOOMQL: a SQL interface built on top of Doom's source code simonwillison.net Jul 13, 2026
  3. Is x86 Ready to ACE It? chipsandcheese.com Jul 14, 2026

↑ Back to top

THE LONG READ

Eight Kilobytes Per Frame: How Game Arts Made the Sega CD Do the Impossible

The Sega CD's single-speed CD-ROM drive delivered 150 KiB per second. Its main processor ran at 12.5 MHz. A full-screen image at 15 frames per second implied something like 600 KiB per second just for raw pixel data — four times what the drive could physically deliver. Game Arts shipped Silpheed anyway, with near-fullscreen cutscenes that made the press question whether they were looking at pre-rendered video or real-time 3D. They were looking at pre-rendered video. What they couldn't see was what it took to make that video exist: a compression system that squeezed every frame into 8 KiB, built entirely from constraints Game Arts refused to compromise on.1

Fabien Sanglard — the engineer and writer known for dissecting the source code of Quake and Doom — spent two weeks reverse-engineering Silpheed's FMV format in his spare time.1 His writeup is the kind of systems archaeology that makes you realize how much engineering ingenuity was buried inside consumer hardware that most people treated as a novelty.

The core problem: the Sega CD had no framebuffer. Rendering went through a tile system — 768 tiles of 8×8 pixels, arranged on a 32×28 grid to form a 256×224 image. This looked like a liability. Sanglard's analysis reveals it was actually the foundation of the entire compression scheme.1

Most developers making FMV games at the time tried to cram real video into the constraints — small windows, compression artifacts, dithering that made images look like they had been printed on wet newsprint. Game Arts started from the other direction. They chose flat-shaded polygons, 16 colors total, no Gouraud shading, and minimal dithering. Choices that looked like concessions but were actually load-bearing decisions that made everything else possible.

The first compression layer came from how tiles repeat. In the example frame Sanglard analyzes in detail, 456 of 896 tiles are single-color fills. Rather than store each one individually, Silpheed's encoder issues the 15 plain-color tiles once per frame and references them over and over in the tilemap.1 Half the bandwidth problem, gone.

The second layer is where the engineering gets genuinely surprising. The Mega-CD ASIC included a feature called "Font bit" — intended to render two-color kanji characters quickly. You write two palette indices and a 16-bit bitmap to three registers; the hardware expands the 1-bit pattern into 4-bit pixel data representing two rows of an 8×8 tile. A font feature. Silpheed's engineers repurposed it as a tile decompressor. For the tiles made of exactly two colors — which turned out to be most of the remaining tiles — they used the font registers instead of storing raw nibble data. Three bytes in, eight bytes out. A 37% bandwidth reduction on the tiles that survived the first pass.1

After those two optimizations, some tiles still needed to be stored raw. But even the tilemap itself got compressed: rather than storing all 768 tile indices explicitly, Silpheed stored a 768-bit bitmap where a 0 means "auto-increment from the previous index" and a 1 means "read an explicit value." In practice this cut tilemap overhead by around 30%.1

The fractal levels — two stages with complex textures the developers called "fractals" — defeated every trick. No solid tiles, no two-color tiles, nothing that compressed well. The developers' only option was to drop to 7.5 frames per second and store everything raw. You can hear the concession in how Sanglard describes it: the fractals just didn't yield.

One more layer: palette cycling. The laser fire and explosions in gameplay appear multi-colored, which seems impossible given the 16-color constraint. During gameplay sequences, Game Arts reserved four palette slots at the tail of the palette and rotated them every frame via the main CPU. The result is a shimmer effect across every pixel using those palette indices. It also meant artists designing gameplay sequences had only 12 usable colors — the other four were always cycling. Cutscenes got the full 16 because there was no laser to render.1

The writeup includes an ASCII diagram of the full Genesis/Mega-CD dual-CPU architecture, per-frame tile breakdowns with grids overlaid, and a complete storyboard Sanglard generated with tools he designed during the reverse-engineering process. It rewards careful reading. What it amounts to is a case study in constraint-driven engineering: not the story of people finding workarounds for bad hardware, but of people who understood the hardware well enough to turn its oddities into a compression pipeline. The tilemap that looked like a limitation was the mechanism. The font register that was meant for kanji was the decompressor. The 16-color palette that seemed like a creative handicap was a performance budget.

The piece surfaced on Hacker News on July 13. It's been there before in various forms — Sanglard's site has a long track record of this kind of work — but this one is worth your time.

Sources
  1. The art and engineering of Sega CD Silpheed fabiensanglard.net

↑ Back to top

FROM THE ARCHIVE

The Dream of Mars: July 14, 1965

The signal left Mariner 4 at 10 watts. By the time it reached the 85-foot antenna dishes in South Africa, Australia, and Goldstone, California — having traveled roughly 191 million miles — it had dwindled to one billionth of one billionth of a watt.1 Barely perceptible, NASA's engineers noted. What it carried was the end of a very old dream.

On the evening of July 14, 1965, Mariner 4 made its closest approach to Mars: 6,118 miles from the surface, at 8:00 p.m. Eastern time.1 The TV camera had started shooting roughly 40 minutes before closest approach, capturing 21 images through red and green filters.1 The following day, those images began the long transmission home. They showed a heavily cratered, ancient surface — barren, scarred, unmistakably dead — with daytime temperatures reaching minus 148 degrees Fahrenheit.1 A faint radiation belt, barely one-tenth of one percent of Earth's, was the planet's only active signature.

That was it. Decades of speculation about Martian canals, civilizations, anything living — dispatched by 21 photographs in a single pass.

Mariner 4 was NASA's second attempt. Its twin, Mariner 3, had launched three weeks earlier and failed when its payload shroud refused to jettison; the solar panels never deployed and the spacecraft drifted off into solar orbit, inert. Engineers built a new all-metal shroud for Mariner 4. It worked. The spacecraft launched November 28, 1964, made one mid-course correction in December, and flew a seven-month arc to its appointment with Mars.

The occultation data from the flyby told another story equally as deflating: the Martian atmosphere was so thin that any future lander would need retro-rocket engines, not just parachutes, to slow down in time. There was no cushion to work with. The place was essentially naked to space.

NASA maintained contact with Mariner 4 until October 1, 1965.1 The spacecraft was reactivated two years later for attitude control tests and kept talking to Earth until December 31, 1967 — more than three years after launch. By then the conversation had long since moved on. The cratered desert was the baseline now. Everything that followed — the orbiters, landers, rovers — was built on what those 21 photographs confirmed: Mars is a harder problem than anyone had hoped, and the fantasy was finally over.

Sources
  1. Mariner 4: First Images From Another Planet — NASA science.nasa.gov Dec 20, 2017

↑ Back to top

THE FUNNIES

Hot Bikes, Leaky Agents

*After XKCD — on the gap between a coding agent's "disable upload" setting and what actually crosses the wire. After Garfield — on what pro cyclists' hotel accommodations look like during the hottest Tour on record.*

Hand-drawn parody comic strip

↑ Back to top

ALSO NOTED

Also Noted

↑ Back to top

THE QUESTION

The Spec Is Not the Implementation

The documentation said the upload was disabled. The wire said otherwise.

As THE LAB reports today, a security researcher ran a popular AI coding agent through a proxy and found that a client-side toggle to disable uploads had no apparent effect on server-side behavior: 5 GiB of repository contents left the machine regardless, including files the agent never opened during the session.1 Today's LONG READ traces a structurally identical gap across three decades: Fabien Sanglard's reverse engineering of a 1993 Sega CD game found that its entire compression pipeline — the mechanism that made near-fullscreen video possible on deeply constrained hardware — was built on registers documented for kanji font rendering. Game Arts knew what it was doing. Nobody else did until Sanglard spent two weeks looking.2

The audit mechanism in both cases is the same: someone willing to check what the system actually does, not what the label says. A proxy session. Two weeks of reverse engineering. Neither method scales to routine practice. For a 1993 video game, the gap between documentation and implementation is charming retrospective archaeology — engineering ingenuity buried in hardware most people long since discarded. For a coding agent with access to a production codebase that may contain live credentials, the same kind of gap is a different order of problem. The question today's edition raises isn't whether any particular tool is trustworthy. It's whether documentation can still function as a contract when systems are this opaque — and if it can't, what fills that role.

Sources
  1. What xAI's Grok Build CLI Actually Sends Home: A Wire-Level Analysis developersdigest.tech Jul 13, 2026
  2. Silpheed on the Sega CD — Fabien Sanglard fabiensanglard.net Jun 1, 2026

↑ Back to top

Investigator Report

Investigator report — 2026/07/14

Verdict

A strong edition for an extraordinary travel day — the reader is standing in Aurillac on Bastille Day as the Tour de France departs from their doorstep, while a US-Iran naval blockade is live in the Strait of Hormuz. The pipeline handled travel mode correctly, the Silpheed long read is the best piece in the edition, and the Peloton article earns its priority. Three things mar it: a World Cup semifinal (France vs. Spain, tonight, in France, on Bastille Day) is entirely absent from the ON THE ROAD block; THE QUESTION violates the COLLISION RULE by citing the Silpheed piece as a primary source on the same day THE LONG READ reviews it; and OpenAI billing failures cost the edition its lead image and one of its two funnies strips. The run was also expensive — the art director's 32K token overflow required a full retry, adding $1.50 and ~52 minutes to a run that was otherwise efficient.


Frontpage

The deployed PNG is clean and readable. The PELOTON lead headline occupies the dominant third of the page at a large point size; THE WORLD banner above it is appropriately subordinate (headline-only per rule). Layout hierarchy works: the eye lands on "Bastille Day in the Cantal" first, exactly as it should. The mid-row THE QUESTION / THE LAB split and the bottom three-column row are legible without cramping.

One clipping defect: the THE WORLD headline "Trump Blockades Hormuz; Iranian Missiles Kill Crew Member on UAE" is cut mid-phrase in the rendered PNG — "Tanker" is visibly absent, the sentence ends on "UAE" at the right edge of the world-banner box. The full headline is intact in the local frontpage.html (the art director wrote it correctly), so the overflow is geometric, not an art-director error — the 155 px fixed container can't hold a two-line 48 px headline at that character count. This recurs whenever the THE WORLD headline is long and the font is 48 px; the container height or font needs a safety check.

A second minor issue: in the mid-row, THE QUESTION (priority 75) is placed in the left column and THE LAB (priority 80) in the right. On a traditional two-column layout, the left is the higher-prominence position. THE LAB, being the higher-priority section, should appear on the left. The priority ordering is otherwise respected throughout the page.

The daily-strip bar renders "95°F, no rain, 8 mph wind—summer kit outside. · summer kit" — the kit label appears twice (once from the summary field, once from the kit field). Minor but visible.

No lead image appears (OpenAI billing limit hit; see Pipeline). The page holds up without it — the PELOTON headline fills the space — but FROM THE ARCHIVE selected as the lead image section has image: true and the reader expects something here.


Priority ranking

SectionPriorityLengthImageNotes
THE WORLD90242 wordsHeadline-only; active naval blockade
THE PELOTON86754 wordsLead article; stage result pending at filing
THE LAB80755 wordsRight col (lower prominence than left col THE QUESTION)
THE QUESTION75251 wordsLeft col despite lower priority than THE LAB
THE LONG READ72804 wordsWriter filed at 79; managing editor cut to 72
FROM THE ARCHIVE38378 wordsyesDesignated lead image section; image absent
ALSO NOTED9492 words7 items; good catch-all haul
THE FUNNIES836 wordsSkipped on front page per rule; one of two strips missing

The ranking is defensible. THE WORLD at 90 is correct — this is a formal US naval blockade with casualties, not routine Iran escalation. THE PELOTON at 86 earns a bump from the reader's physical presence at the start in Aurillac; the heat crisis adds depth beyond stage coverage. THE LAB at 80 is appropriate for a tool-specific security story with measurable data. THE QUESTION at 75 is modestly high for a piece that reads partly as a LONG READ coda (see Editorial). THE LONG READ's cut from 79 to 72 is reasonable — it's a genuinely excellent piece about a 1993 video game, not breaking news, and 72 places it in the "interesting tech story" band correctly.

The art director respected the priority order in sections, but swapped THE QUESTION and THE LAB within the mid-row, giving THE QUESTION the higher-prominence left column.


Editorial reading

France vs. Spain — the biggest item not in the edition. The reader is in Aurillac on Bastille Day. France vs. Spain plays tonight at 19:00 UTC in a World Cup semifinal — the most France-relevant sporting event of the year, on the most France-relevant national holiday, during a France trip the paper has been covering in travel mode. The ON THE ROAD block mentions Bastille Day fireworks, the TDF stage departure, traffic warnings, and Les Fêtes de Bayonne — but has zero mention of the semifinal. It appears in THE WORLD's dropped array with reason "source blocked — ESPN and FIFA match pages failed all methods; no result at compile time." This is accurate — the match hadn't started — but the drop should not have prevented a forward-looking bullet: "France vs. Spain plays tonight at 19:00 UTC in the World Cup semifinal — book a spot at a bar before they fill up." No source is needed for that item. The gap is an editorial call, not a fetch failure.

THE QUESTION violates the COLLISION RULE. The rule states: "THE QUESTION may not share primary sources with THE LONG READ on the same day, and may not re-state THE LONG READ's central statistic." The question cites the Sanglard Silpheed piece as source [2] and devotes its second paragraph to paraphrasing the article's central insight: "the entire compression pipeline was built on registers documented for kanji font rendering." The LONG READ covers this in extensive detail as its entire thesis. The cross-domain bridge between THE LAB (Grok CLI spec vs. wire behavior) and THE LONG READ (documentation vs. implementation) is structurally elegant — the problem is citation overlap, not concept overlap. An alternative angle was available and dismissed too quickly: the Hormuz blockade (dropped as "doesn't bridge cleanly to a second section") has an identical structural pattern — a formal policy announcement (Trump orders a blockade, floats a 20% toll) whose operational implementation is wholly unclear (can you toll international shipping lanes? how does enforcement work when Iran fires back?). That bridge between THE WORLD (policy announcement) and THE LAB (software spec) would have been higher-priority source material, avoided the collision, and given the question real range on a day dominated by two strong stories.

THE PELOTON misses its best vantage point. The article opens "Stage 10 left here at 13:15 under 31°C" — which is good in media res. But the reader is physically standing in Aurillac as they read this. The article never exploits that vantage: no crowd description, no sense of the town, no specific detail anchored to what it feels like to watch the départ from the streets. The hotel story (Magnus Cort's one-star Instagram review, riders sleeping on balconies) is the most vivid material in the piece and comes four paragraphs deep. The lede buries what would have been the most immediate detail from a reader who walked out their hotel door this morning.

THE WORLD block is monotopic. All four Iran/Hormuz bullets are legitimate at the section's own rules (at most 4 bullets), but a ship fire that killed 27 people in Bangkok and a significant LAPD privacy story both appeared later in ALSO NOTED. Having every THE WORLD bullet on a single thread with four CNBC citations leaves the world block feeling thin even where it is technically compliant. This is a defensible editorial call — the blockade is genuinely the top story — but worth flagging as a pattern risk: if the CNBC article had been the only source for a major day, the world block would have no redundancy.

THE FUNNIES shipped one strip, described two. The section-funnies.md lede says "After XKCD... After Garfield" — but funnies.svg contains only the XKCD-style strip (the Grok CLI upload parody). The comic-strip agent produced the Garfield prompt as funnies-openai-prompt.json and handed it to the OpenAI image API, which returned a billing error. The Garfield strip (pro cyclist assuming luxury hotels, getting balcony camping in the Massif Central heat) never rendered. The section text references it; the SVG doesn't contain it. The XKCD strip that did ship is well-executed — three-panel, clean geometry, accurate code terminal.

THE LONG READ source is single-threaded — and that's fine here. Sanglard's Silpheed writeup is the subject of the article, so the single-source dependency is structural rather than lazy. The piece demonstrates good source fidelity: the specific compression layers (font-register trick, auto-increment tilemap bitmap, palette cycling for laser fire) all check out against the fetched page. No inflation, no misattribution.


Pipeline observations

Art Director: 32K output token overflow, retry required. agent-a4d37bfcb1c26478c (first Art Director run) terminated with "API Error: Claude's response exceeded the 32000 output token maximum." The orchestrator launched a retry (agent-a85341d5a6a5a34a2) which succeeded. The JSONL confirms this was logged and recovered. Combined cost: $1.50; combined wall time: approximately 52 minutes. This is a recurring failure mode for the art director when it outputs long inline HTML with CSS. The orchestrator handled it correctly.

OpenAI billing limit hit twice. The illustrator run (bpzhz3bzl) failed with "Billing hard limit has been reached" — this killed the lead image for FROM THE ARCHIVE. The same billing limit then blocked the Garfield funnies strip, which the comic-strip agent had submitted via fetch_lead_image.py. Both failures are logged in funnies-openai.error.txt and the orchestrator's session log. The pipeline recovered gracefully (no image on frontpage, one of two funnies strips missing), but the reader lost a compelling Mariner 4 illustration and a topical hotel-heat parody.

Expected agent set ran cleanly. All required agents are present in jsonl/subagents/: scout, researcher, five section writers (WORLD, PELOTON, LAB, LONGREAD, ARCHIVE), meta-writer, six fact-checkers, the QUESTION reflector, ALSO NOTED sweep, comic-strip, thread-editor, and art director (2 instances due to retry). No missing agents; no unexpected duplicates beyond the expected art-director retry.

Fact-checker rework was light. THE LAB fact-checker fixed one error ("three instructions" not "two" for the VUNPACKB sequence). THE PELOTON fact-checker made four corrections (quote fixes, a stale date reference). THE LONG READ fact-checker removed one unsupported claim ("procedurally-generated" characterization). THE WORLD and THE QUESTION fact-checkers came back clean. This is a healthy signal — writers filed accurate work.

Fetch failures were minimal and handled. The initial fetch of https://www.fifa.com/... and https://www.espn.com/soccer/... both failed all methods. These were the France-Spain match pages, which had not yet populated at compile time (match at 19:00 UTC, pipeline ran morning). The failures are correctly logged in fetch_results.json and fetch_retry_results.json. No other fetch failures with section impact.

Starting commit. The run synced to 534ecdb (Investigator: 2026-07-13), which was origin/main at run time. The dispatch commit 54bb50a follows directly. No intervening commits were missed.


Trace highlights

The researcher spent $2.19 across 34 minutes and produced a 3-million-token cache-read context for the writers. The LAB writer then cost $0.18 and 186 seconds to file a 755-word article. The cache hit was productive — the writer clearly used the brief — but the researcher's cost is the second-highest in the run behind the orchestrator, and the ratio of brief cost to article cost (12-to-1) is worth watching as a long-term pattern.

The art director's two combined runs cost $1.50 — more than the researcher ($1.45 × 2 context creation passes) and roughly equal to the scout. The overflow failure on the first run is the only structural error in the pipeline. The retry resolved it correctly, but a 32K output from the art director is unusual; the frontpage HTML for this edition is not especially long.

The orchestrator spent $3.50 — the highest single cost in the run, more than the researcher ($2.19) or the combined art-director runs ($1.50). At 7.66 million cache-read tokens, the orchestrator is managing substantial cross-agent context across a 2+ hour pipeline. This isn't a problem, but it's worth noting: the orchestrator's cost now rivals the sum of all content-agent fact-checkers ($1.40 combined).

THE LONG READ writer filed 804 words of tight technical writing in 100 seconds for $0.09 — the strongest value-per-word result in the run. FROM THE ARCHIVE was similarly $0.09 / 66 seconds / 378 words of quality prose. Both suggest the research brief for these sections was well-targeted and immediately usable.

Trace summary

Dispatch 2026-07-14 (model: claude-sonnet-4-6)

AgentDurInputOutputCache ReadCache 5mCache 1hCost
Scout548s461657083077261536670$ 0.77
Researcher2040s45167230701113324410$ 2.19
THE WORLD305s736155100783930$ 0.34
THE PELOTON419s73871303987490$ 0.39
THE LAB186s736100438391370$ 0.18
THE LONG READ100s62551541193320$ 0.09
FROM THE ARCHIVE66s612760082197990$ 0.09
Meta-Writer80s62550428237500$ 0.10
FC: FROM THE ARCHIVE122s73586043323070$ 0.15
FC: THE LONG READ260s734107309363230$ 0.17
FC: THE LAB278s736120258433800$ 0.20
FC: THE WORLD178s733103903322040$ 0.15
FC: THE PELOTON504s107342167448618650$ 0.29
THE QUESTION267s62768287366330$ 0.16
FC: THE QUESTION236s8291139680357690$ 0.18
ALSO NOTED307s10363315856801860$ 0.40
Draw today's TWO parody comic strips for933s12143201434943190$ 0.42
FC: ALSO NOTED236s848182640537310$ 0.26
Art Director2164s133203211991621000$ 0.72
Update story threads for today's edition501s51772601037170$ 0.39
Art Director1048s83201710831778620$ 0.78
Orchestrator1663235376606990118883$ 3.50
TOTAL6037105138130503681515664118883$11.91

Suggestions for next edition

Add a forward-looking events bullet to ON THE ROAD. When fetch failures prevent reporting a match result, the writer should still include the pre-game forward-reference when the game is tonight and the reader is in the host country. No source is required for "France vs. Spain, 19:00 UTC tonight." The WORLD writer's prompt could explicitly say: "if a major sporting event in the travel destination is happening today or tonight, include a forward-facing bullet even without a result."

THE QUESTION writer should fail-check for COLLISION RULE before filing. The dropped block shows the writer was explicitly aware of the angle-recency risk (dropped the TDF heat angle as too close to Jul 12's question) but did not check the primary-source collision with THE LONG READ. The preflight checklist in the QUESTION prompt should add one step: "list the primary sources you plan to cite and confirm none appear in section-longread.md's source list."

Investigate the art director's token overflow. The art director hit 32,000 output tokens on the first run. Its output is an HTML file that in practice runs to 2,000-4,000 characters. Something is causing it to generate far more output than needed — possibly embedded SVG markup, a thinking-trace being counted, or prompt injection. This adds ~$1.50 and 35 minutes to every run it triggers. Checking the first art-director transcript against the output file size would confirm whether it's generating excess preamble or actual file content.

Resolve OpenAI billing to restore the lead image. Two consecutive editions have lost the Mariner 4 illustration (today) and the Garfield funnies strip to the same billing limit. The lead image from FROM THE ARCHIVE was one of the strongest prompts in recent memory — a missed opportunity. Topping up the OpenAI credit balance restores both the illustrator and the funnies raster path.