Front page — June 22, 2026
The Peloton Dispatch June 22, 2026 No. 86
● Sunny, 81°F, light winds. Go outside. · summer kit

THE WORLD

Starmer Out; Greenspan Dies at 100; Council Sets Transit Vote

↩ Developing story — first reported Jun 20


Team USA may be back. If the U.S. squad wins in Santa Clara on July 1, they advance to the round of 16 — which lands in Seattle, potentially July 6. Seattle is hosting six World Cup matches total; four remain. Visit Seattle projects the tournament's total economic impact at $846 million for the metro area. After Friday's USA–Australia win packed the streets, local venues are already planning for a possible return engagement. KIRO 7

Seattle Transit Measure goes to council July 21. As this paper reported Friday, Mayor Wilson rallied behind an expanded 0.15% sales tax renewal of the Seattle Transit Measure. A council vote is now formally scheduled for July 21. The outcome will determine whether the city's transit funding gets renewed and expanded, or sent back for revision. Mass Transit Magazine

PSE rates are up, and more increases are coming. The UTC approved a ~12% electric rate increase (≈$17/month for the average 800 kWh customer) and ~7% gas increase (≈$6.50/month) effective January 1. PSE has since filed for further increases: 15.2% electric in 2027, 3.7% in 2028, and 8.7% in 2029. Rebates are available for appliances, EV chargers, insulation, and heat pumps; income-eligible customers may qualify for the Bill Discount Rate or up to $1,000 through the Home Energy Lifeline Program. Public hearings on the proposed 2027–2029 increases are scheduled for September 29 (in-person) and October 7 (virtual). Issaquah Reporter


ON THE TRAIL

PART 1 — WEEKEND PICKS

Window: this coming weekend (Sat Jun 27 – Sun Jun 28). Next federal holiday is Independence Day, Friday Jul 4 — 12 days out, beyond the ~7-day expansion threshold, so no long-weekend extension applies this edition.

Weather reality check: The I-90/Snoqualmie forecast is grim for Saturday — 89% rain, high 51°F. Sunday recovers to 48% and 55°F, but the weekend as a whole is not suitable for backpacking in that corridor. Mountain Loop and US 2 West are similarly washed out (93% and 95% Saturday). The only viable backpacking zone this weekend is I-90 East (Teanaway/Cle Elum), where Saturday comes in at 22% and Sunday at 16%.

---

Pick 1 — Paddy-Go-Easy Pass / Sprite Lake (1-night) I-90 East (Teanaway/Cle Elum/Roslyn) — ≈ 90–110 min from Issaquah

No 2-night pick is available this weekend. Deep Lake/Peggy's Pond (the natural 2-night option in Teanaway) had a Jun 21 report describing mosquitoes as "out in full force — just hatched." Lake Ingalls is currently rated dangerous (risky snow slopes and no established trail past the pass). West Fork Foss Lakes (normally excellent for multi-night) sits in the US 2 West zone where Saturday is 95% rain. No backpacking destination in any accessible region clears all six criteria for a 2-night this weekend.

---

PART 2 — REGIONAL SNAPSHOT

Sources
  1. UK PM Keir Starmer resigns after brutal local elections wired.com Jun 22, 2026
  2. Former Fed Chair Alan Greenspan dies at 100 kiro7.com Jun 22, 2026
  3. Team USA could make a return World Cup trip to Seattle kiro7.com Jun 22, 2026
  4. Rebates, discounts available as PSE rates increase issaquahreporter.com Jun 21, 2026
  5. JD Vance arrives in Switzerland for Iran nuclear talks round 2 youtube.com Jun 21, 2026
  6. Seattle mayor refers Transit Measure renewal to city council masstransitmag.com Jun 2026

↑ Back to top

THE PELOTON

Stronger Than Last Year: Pogačar Closes the Books on Switzerland

↩ Developing story — first reported Jun 15 · previously Jun 16, Jun 17

— During a training camp at Sierra Nevada between the Tour de Romandie and this week's Tour de Suisse, Tadej Pogačar climbed a reference ascent he'd benchmarked in 2025. He said he thought: "Wow, I'll never be able to go faster than that." Then he went back at the end of camp, for fun. He was significantly faster.1 That number, whatever it was, is now sitting in a UAE Team Emirates-XRG data file somewhere, and it has to concern every rider heading to Barcelona on July 4.

Pogačar won three of the five stages at the new-format Tour de Suisse, including Sunday's brutal finale on the Col de la Croix above Villars-sur-Ollon, and finished 6:32 clear of Richard Carapaz (EF Education-EasyPost) on GC.2 The margin understates how uncontested it was. He attacked with 9km remaining on the fourth and final ascent, caught the entire breakaway one by one, and passed the last survivor, Lenny Martinez (Bahrain-Victorious), with 800 metres to the line.2 Carapaz "briefly tried" to follow the initial acceleration, per reports. He did not last long. The heat — temperatures requiring UAE staffers to station themselves along the climb to hand up water bottles purely for cooling — slowed everyone except Pogačar, who described it as an all-out effort but looked methodical throughout.

"The shape must be ready," he told media afterward. "There's not much you can do with 10 days to go." He travels home to Monaco — to spend time with partner Urška Žigart, recovering from her fractured jaw in the women's Tour de Suisse — before a stint at altitude in Isola 2000, then Barcelona for the grand départ. His fourth Tour title came in circumstances that allowed for excuses about his second-half slump. His fifth will not.


As this paper reported June 17, Wout van Aert will miss the Tour de France after a training crash infection serious enough that Visma's head of performance Mathieu Heijboer told Sporza a surgical cleaning was "truly necessary — otherwise, sepsis would have been a possible consequence."3 On Sunday, van Aert rode his first kilometres since abandoning the Tour Auvergne-Rhône-Alpes on June 12 — a 67.6km charity group ride near his home in Herentals, with a large bandage still on his right elbow.3 His Strava caption: "First attempt to hold my bars again."

Visma will announce their Tour replacement on Tuesday.3 The leading candidates are Ben Tulett, who offered punchy climbing support at last year's Vuelta and can ride a similar-sized bike to Vingegaard (useful for emergency wheel swaps), and Wilco Kelderman, who returned to racing at the Tour de Suisse after breaking his collarbone at the Giro.4 Davide Piganzoli, who anchored Vingegaard's Giro-winning support in the opening two weeks, has also been mentioned, though fatigue from a full grand tour so soon is a real concern. Jonas Vingegaard heads to France to defend his title having never directly beaten Pogačar in a stage race this year — their first duel since last July's Tour is now 12 days away.


Elsewhere on Sunday: Florian Lipowitz (Red Bull-Bora-Hansgrohe) won the Tour of Slovenia overall, attacking solo over the steep Trška Gora with 9km remaining on the final stage and arriving in Novo Mesto 24 seconds ahead of teammate Laurence Pithie.5 He leads the GC into the Tour as the most consistent stage-racer on the start list — top-three at Catalunya, Itzulia, and Romandie — though VeloNews, ranking the pre-Tour field today, places him fourth while noting he's "never shown a hint of yellow jersey pedigree."6 The teammate he'll be supporting, Remco Evenepoel, ranks sixth in the same assessment, categorized as a wildcard who could finish anywhere from podium to abandonment.

Tom Pidcock (Pinarello-Q36.5) got his hands in the air at the Andorra MoraBanc Clàssica, outclimbing a select group at the top of the Coll de la Bottella to win ahead of local resident Carlos Verona (Lidl-Trek) and Sepp Kuss (Visma-Lease a Bike).7 Pidcock called it his final race before the Tour and acknowledged "some difficult weeks" in combining mountain bike and road campaigns — he hadn't raced on the road since early May. "It's nice to be coming out the other side," he said, not exactly inspiring confidence, though the win speaks louder than the hedging.

Paula Blasi (UAE Team ADQ), ranked second in the UCI women's standings after a season that includes the Amstel Gold Race, La Vuelta Femenina, Tour des Pyrénées, and the Volta a Catalunya, confirmed today she will start the Tour de France Femmes in Lausanne on August 1.8 The 23-year-old is playing down any GC ambitions — "I'll just be there to help the team" — which is either genuine humility from a rider still learning the sport's biggest stages, or the most effective expectation management in the women's peloton right now.

On the equipment side, Wilier has launched the Filante Ultimate to mark its 120th year in business — 120 bikes at an undisclosed price, built around six carbon fibre types including Toray M40X, with Dura-Ace, CeramicSpeed OSPW, and Miche wheels and carbon chainring.9 The standard Dura-Ace Filante SLR ID2 retails at £9,500. The Ultimate will be more.

On the Road Ahead
Updated Jun 22, 2026
DateRaceCountry
Fri Jun 25British National Championships TTGreat Britain
Fri Jul 4 – Sat Jul 26Tour de France (21 stages)France
Sat Aug 1Donostia San Sebastian KlasikoaSpain
Mon Aug 3 – Sun Aug 9Tour de PolognePoland
Sat Aug 22 – Sun Sep 13La Vuelta a EspañaSpain
Show Results

TOUR DE SUISSE — FINAL GC: 1. Tadej Pogačar (UAE Team Emirates-XRG) 2. Richard Carapaz (EF Education-EasyPost) +6:32 3. Mathias Vacek (Lidl-Trek)

TOUR DE SUISSE STAGE 5 (Villars-sur-Ollon): 1. Tadej Pogačar (UAE Team Emirates-XRG) 2. Lenny Martinez (Bahrain-Victorious) 3. Bart Lemmen (Visma-Lease a Bike) +1:32

TOUR OF SLOVENIA — FINAL GC: 1. Florian Lipowitz (Red Bull-Bora-Hansgrohe) 2. Giulio Pellizzari (Red Bull-Bora-Hansgrohe) +0:42 3. Jakob Omrzel (Bahrain-Victorious) +2:06

TOUR OF SLOVENIA STAGE 5 (Novo Mesto): 1. Florian Lipowitz (Red Bull-Bora-Hansgrohe) 2. Laurence Pithie (Red Bull-Bora-Hansgrohe) +0:24 3. Alessandro Fancellu (MBH Bank CSB Telecom Fort)

ANDORRA MORABANC CLÀSSICA: 1. Tom Pidcock (Pinarello-Q36.5) 2. Carlos Verona (Lidl-Trek) 3. Sepp Kuss (Visma-Lease a Bike)

US PRO ROAD CHAMPIONSHIPS — ELITE MEN: 1. Quinn Simmons (Lidl-Trek) 4:43:16 2. Kevin Vermaerke (UAE Team Emirates-XRG) +2:04 3. Lawrence Warbasse (Tudor) +2:05

US PRO ROAD CHAMPIONSHIPS — ELITE WOMEN: 1. Kate Courtney (She Sends Racing) 3:02:30 2. Lauren Stephens (Aegis x Leaders of Enchantment) +0:05 3. Grace Arlandson (Aegis x Leaders of Enchantment) +0:09

Sources
  1. Pogačar 'stronger than last year': test results after Tour de Suisse domination cyclingnews.com Jun 22, 2026
  2. Tour de Suisse stage 5: Pogačar seals commanding overall victory cyclingnews.com Jun 21, 2026
  3. Wout van Aert back on the bike after infection forced Tour de France exit cyclingnews.com Jun 22, 2026
  4. How do you replace van Aert at the Tour de France? Analysing Visma's void cyclingnews.com Jun 19, 2026
  5. Florian Lipowitz claims Tour of Slovenia GC with stage 5 solo victory cyclingnews.com Jun 21, 2026
  6. Who Will Win the Tour de France: VeloNews ranks the favorites velo.outsideonline.com Jun 22, 2026
  7. Tom Pidcock wins Andorra MoraBanc Clàssica as final Tour de France tune-up cyclingnews.com Jun 21, 2026
  8. Paula Blasi plays down expectations for Tour de France Femmes debut cyclingnews.com Jun 22, 2026
  9. Wilier releases Filante Ultimate superbike for brand's 120th anniversary bikeradar.com Jun 22, 2026
  10. US Road Nats: Quinn Simmons wins third elite men's road race title solo cyclingnews.com Jun 21, 2026
  11. US Road Nats: Kate Courtney outsprints Stephens for women's elite road title cyclingnews.com Jun 21, 2026

↑ Back to top

THE LAB

ryg Tears Apart PivCo-Huffman: How to Merge Bitstreams on Any Vector Width

The problem with Huffman decoding has always been that it is irreducibly serial. You cannot decode symbol N+1 until you know how many bits symbol N consumed. Every scheme for working around this — multiple streams, ANS-style interleaved bitstreams, speculative parallel decode — forces a tradeoff: pick a vector width at bitstream-definition time, or throw away most of the work you do. A recent paper called PivCo-Huffman by Marcin Żukowski breaks this constraint, and yesterday Fabian Giesen (ryg) published a characteristically detailed analysis of what the algorithm's core merge operation actually costs at the instruction level across SSE4.2, AVX2, NEON, and AVX-512.1

The key insight of PivCo-Huffman is a reframing: instead of processing symbols one at a time down the Huffman tree, you push the entire sequence through the tree level by level, partitioning it at each internal node based on a bit in the bitstream. Encoding becomes a sequence of list partitions; decoding becomes a sequence of list merges steered by a bit vector. That merge — take two lists and a bitstream, output the interleaved result — reduces to a prefix sum problem. Prefix sums are the prototype of parallelizable work. The bitstream carries no magic interleave constant and does not need to be written with a particular SIMD width in mind.

Giesen's post is specifically about the cheapest possible implementation of that merge primitive across real hardware targets. For AVX-512 with VBMI2, it is essentially free: VPEXPANDB does the masked scatter-gather in one instruction, three vector ops total.1 The interesting engineering is what happens without that instruction. For SSE4.2 and NEON, he arrives at a scheme that processes 16 output bytes per loop iteration using two 256-entry lookup tables (6 KiB total, L1-resident), two vector shuffles using PSHUFB/TBL, a bitwise NOT, and an OR.1 The trick for generating the index vectors for the second half without a 1 MiB table is elegant: store the population count of the first byte of the bitmask directly in the upper half of each first-table entry, then add rather than compute it. On NEON with two-register 128-bit TBL available (Apple Silicon, newer Cortex cores), he collapses even further: two table loads, a single VABD (absolute difference) to merge the index control, one two-source shuffle, one store. He argues this is capital-O optimal — the loads and store are strictly necessary, the shuffle is the minimum work given the inputs, and you cannot avoid at least two table lookups without a prohibitively large table.1

The practical upshot: PivCo-Huffman's decoder can be implemented efficiently on essentially any data-parallel substrate, including narrow vector machines, without per-platform bitstream variants. The paper's benchmark numbers are on AVX-512 servers and Apple Silicon — "very high-end hardware," Giesen notes — but the algorithm does not require it. His implementations have been tested in Żukowski's GitHub repository and show improvement over prior baselines.1


Simon Willison shipped sqlite-utils 4.0rc1 on June 21, the first release candidate for a version that has been in alpha since May 2025.2 Two new features land in this RC. First, database migrations, ported from the standalone sqlite-migrate package Willison has been using in production tools including LLM for several years; the API uses Python decorators and runs via sqlite-utils migrate from the CLI. There are no reverse migrations by design — mistakes get fixed forward.2 Second, db.atomic(), a nested transaction API borrowing Django and Peewee's terminology. SQLite's savepoint mechanism has always supported nested transactions; this gives sqlite-utils users a clean abstraction over it. The major-version bump exists because of breaking changes accumulated since 3.x: upserts now use INSERT ... ON CONFLICT SET, the default float type changes from FLOAT to REAL, table and column names in schemas now use double-quotes instead of square brackets, and type detection defaults on for CSV imports.


Separately: if you are running OpenAI's Codex CLI on Linux, check your SSD. A GitHub issue filed June 14 documents that Codex's SQLite feedback log (~/.codex/logs_2.sqlite) was writing approximately 37 TB over 21 days on one reporter's machine — roughly 640 TB/year — because the log sink defaults to a global TRACE level that captures inotify filesystem events, raw WebSocket payloads, and OpenTelemetry mirror entries continuously.3 The WAL write pattern shows around 36,000 inserts per 15 seconds with continuous prune-and-insert amplification, so the retained database size understates the actual drive write volume considerably.3 The issue remains open with no fix merged as of today; the proposed fix is straightforward log-level narrowing plus a global write cap.

Trending today: GitHub is saturated with AI agent wrappers, LLM prompt collections, and stock-analysis tools — nothing cleared the technical novelty bar for THE LAB.

Sources
  1. PivCo-Huffman 'merge' operations — Fabian Giesen fgiesen.wordpress.com Jun 21, 2026
  2. sqlite-utils 4.0rc1 adds migrations and nested transactions — Simon Willison simonwillison.net Jun 21, 2026
  3. Codex SQLite feedback logs can write ~640 TB/year — OpenAI GitHub issue github.com Jun 14, 2026

↑ Back to top

THE LONG READ

The Jagged Edge: Karpathy on What Actually Changed in December

In late April, Andrej Karpathy published a summary of his Sequoia Ascent fireside chat, and it is one of the cleaner attempts to explain what actually shifted in the last six months of coding — not as hype, but as a structural account of why the tools feel different now.

His opening claim is specific: December 2025 was the inflection. Not 2023, not the launch of some particular model, but December. He describes sitting with Claude Code and Codex on a break, asking for more and more, and realizing he could not remember the last time he had corrected the output.1 "The chunks just came out fine." The unit of programming had changed from writing lines to delegating macro-actions — implement this feature, refactor this subsystem, write tests, run them, fix failures.

From there he builds the Software 3.0 thesis, which he has stated before but sharpens here. Software 1.0: humans write code. Software 2.0: humans create datasets and objectives; the program is learned into weights. Software 3.0: the context window is the lever, the LLM is the interpreter. The clearest illustration is his MenuGen story — a web app he built to photograph a restaurant menu and generate dish images. The Software 3.0 version: hand the photo to a multimodal model and ask it to render images directly onto the menu pixels. The whole app disappears.1 "That app shouldn't exist," he writes. The old software stack was scaffolding around a transformation the model can now perform directly.

The most useful section, for a working engineer, is the one on jagged intelligence. Karpathy argues that model capability is not a smooth curve but a product of verifiability multiplied by training attention multiplied by data coverage.1 A task that is resettable, repeatable, and rewardable — code that runs or crashes, tests that pass or fail — benefits from reinforcement learning in a way that murky tasks do not. This is why the same model that can refactor a 100,000-line codebase will tell you to walk to the car wash 50 meters away rather than drive. Not a sign of shallow general intelligence, but a sign that the car-wash commonsense problem was not in any RL loop that mattered. "We are slightly at the mercy of what the labs do and what they put into the mix."1 The chess anecdote is telling: GPT-4's apparent improvement at chess relative to GPT-3.5 may have had less to do with emergent reasoning than with someone at OpenAI deciding to add a large chess dataset to pretraining.1


The practical implication Karpathy draws is a distinction between vibe coding and agentic engineering. Vibe coding raises the floor — almost anyone can now produce working software by describing what they want. Agentic engineering is different: it is the professional discipline of coordinating fallible, stochastic agents while preserving correctness, security, and maintainability. The 10x engineer formulation, he says, is now a serious understatement for people who master this.

What human judgment remains irreplaceable? His example is a bug from MenuGen's own codebase: an agent matched Stripe purchases to Google accounts by email address. Plausible code, bad system design — those two email addresses can differ. The agent had no concept of a persistent user ID as a design primitive. "You are in charge of taste, engineering, design, and whether the system makes sense."1 The agents fill in the blanks beneath that.

The final section, on education, carries the piece's best line — one he attributes to a tweet that "blew his mind": *You can outsource your thinking, but you can't outsource your understanding.*1 The argument is that even as agents do more of the computation, the human remains the bottleneck for knowing what is worth building, why it matters, and when the output is wrong. Understanding, he says, is what lets you direct the agents — and the LLMs do not yet fully excel at it.

His "ghosts not animals" framing closes the loop. These systems are not biological intelligences with drives, curiosity, or intrinsic motivation. They are statistical simulations of human artifacts, shaped by pretraining mixtures, RL environments, benchmark pressure, and economic incentives. Anthropomorphic expectations mislead. "The right posture is neither dismissal nor blind trust. It is empirical familiarity: learn where they work, where they fail, what they were trained for, and how to build guardrails around them."

The piece is available in both summary and lightly edited transcript form at Karpathy's blog.

Sources
  1. Sequoia Ascent 2026: Software 3.0, Agentic Engineering, and Jagged Intelligence karpathy.bearblog.dev Apr 30, 2026

↑ Back to top

FROM THE ARCHIVE

Half-Angel, Half-Devil: June 22, 1986

Lead illustration

Pen-and-ink editorial illustration. A compact figure in a number-ten shirt bursts through a corridor of defenders on a packed stadium pitch, the Azteca's vast terraces looming behind. Three opponents lunge and miss — one sprawled sideways, arms out, another pivoting too late, a third reaching with a desperate hand. The small figure leans into a sharp diagonal, head down, driving hard toward the far corner. Harsh overhead light carves deep shadow under the stands. Bold hatching on the crowd, cross-hatching on the defender's outstretched kit, clean white space on the open turf ahead. Strong diagonal composition, lower-left to upper-right. No color. No text. No scoreboard.

At the 51st minute of a World Cup quarterfinal, Diego Maradona punched a ball into the net with his left hand, turned to his teammates, and said: "Come hug me, or the referee isn't going to allow it." They did. Referee Ali Bin Nasser of Tunisia, who had not seen the infringement, allowed it. England goalkeeper Peter Shilton, six feet one to Maradona's five feet five, had come out to punch the ball clear but Maradona reached it first.1

Four minutes later, Maradona received a pass inside his own half and started running. He covered roughly 60 yards in 10 seconds, passing Peter Beardsley, Peter Reid, Terry Butcher twice, and Terry Fenwick, then left Shilton on the ground with a feint and rolled the ball into an empty net.1 It was the same match, the same player, forty years ago today at the Estadio Azteca in Mexico City.

Argentina won 2–1. They went on to win the tournament, defeating West Germany in the final. At the post-game press conference, Maradona said the first goal was scored "a little with the head of Maradona and a little with the hand of God."1 The name stuck. The second goal was voted FIFA's Goal of the Century in 2002, beating out an Owen strike against the same Argentina side in 1998. The shirt Maradona wore that day — swapped in the tunnel with England midfielder Steve Hodge — sold at Sotheby's auction in May 2022 for £7,142,500, a record for sports memorabilia.1

The match was not played in isolation. The 1982 Falklands War had ended four years earlier with 285 British and 659 Argentine deaths.1 When Maradona was asked about the hand ball in a 2019 documentary, he described it as "symbolic revenge."1 He had told reporters at the time that the goal was scored with the hand of God; in private, according to the documentary, "I knew it was my hand." On 17 August 2015, Maradona visited Ali Bin Nasser at his home, gave him a signed Argentine jersey, and called him "my eternal friend."1

The French newspaper L'Équipe described Maradona after that match as "half-angel, half-devil." The description was precise. The two goals — one a fraud, one perhaps the greatest individual moment in the sport's history — arrived four minutes apart, from the same left foot, in the same quarterfinal, against the same goalkeeper. FIFA's own voters chose the second as the best goal ever scored and placed the first goal's match in the tournament record. Both facts remain true simultaneously, which is more or less the whole problem.

The FIFA World Cup is active in Seattle this summer. Forty years on, the match that produced the Hand of God and the Goal of the Century is still the clearest example the sport has of what it means to be both things at once.

Sources
  1. Argentina v England (1986 FIFA World Cup) — Wikipedia en.wikipedia.org Jan 26, 2009

↑ Back to top

THE FUNNIES

Very Productive / Walk 50 Meters North

*After Dilbert — on the discovery that the AI coding assistant has been quietly writing 37 terabytes to a log file in three weeks, which is very productive behavior for the SSD. After Calvin and Hobbes — on jagged intelligence: the same AI that can refactor a hundred-thousand-line codebase will hand you a twelve-page treatise when you ask how to get to the car wash.*

Hand-drawn parody comic strip
AI-rendered parody comic strip

↑ Back to top

ALSO NOTED

Also Noted

↑ Back to top

THE QUESTION

Can You Replace a Multi-Domain Contributor With a Committee of Specialists?

The hardest replacement problem in sport is not finding someone faster — it is finding someone who does four things adequately when the person you lost did all four exceptionally.

Visma-Lease a Bike will name their Tour de France substitute for Wout van Aert on Tuesday, as THE PELOTON reports today.1 The candidates are real riders with real strengths: Ben Tulett offers punchy climbing support and rides a similar-sized bike to Vingegaard — useful for emergency wheel swaps in the mountains.2 Wilco Kelderman has racing legs again after breaking his collarbone at the Giro. Davide Piganzoli anchored the Giro-winning support block. Any one of them slots cleanly into one dimension of what van Aert did. None of them slots into all of it.

Van Aert's value to Visma was not located in any single capability. He could lead out a sprint. He could ride tempo on a mountain pass for an hour. He could descend at speed through chaos to bring back a breakaway. He was the rider Vingegaard wanted nearby on the Champs-Élysées and also the rider Visma deployed on days when the race needed to be controlled from the front. When Visma lost him, they didn't lose a sprinter or a climber or a domestique — they lost the rider who meant they never had to choose between those roles on a given stage.

This is the question worth carrying: when a contributor's value is genuinely multi-domain — distributed across capabilities that aren't individually extraordinary but are extraordinary in combination — is it actually replaceable? You can name a committee. Tulett for the mountains, Kelderman for the rollers, someone else for the sprint lead-out. Whether that committee performs like the integrated original is a different question, and it will only be answered at the moments when the race requires all four things at once, with no time to convene.

Visma will find out somewhere between Lyon and Paris.

Sources
  1. Wout van Aert back on the bike after infection forced Tour de France exit cyclingnews.com Jun 22, 2026
  2. How do you replace van Aert at the Tour de France? Analysing Visma's void cyclingnews.com Jun 19, 2026

↑ Back to top

Investigator Report

Investigator report — 2026/06/22

Verdict

A strong cycling edition propped up by two well-executed pieces — the Pogačar Peloton article and the Maradona archive — with a notable editorial gap in THE QUESTION, which chose the safe single-domain angle when a sharper cross-domain bridge was sitting in plain view. The pipeline ran cleanly: 30 fetch successes, YAML parse error self-healed by the orchestrator, two world bullets over the hard word cap. THE LONG READ ran an April 30 piece under evergreen_ok, which is technically legal but 53 days old and not flagged to the reader. Overall a readable, well-sourced edition that stops short of exceptional because THE QUESTION underperforms its configuration rules.


Frontpage

The rendered PNG (fetched from pd.thep3000.com) is clean and readable at newspaper scale. Visual hierarchy is clear: the 68px Pogačar headline commands the lead; the archive image (Maradona pen-and-ink) occupies the right column with reasonable proportions. Daily strip and masthead are properly formatted. No clipped headlines, no overrunning boxes. The three-column secondary tier (LAB / LONG READ / QUESTION) works well at 34px headlines; all three are legible and appropriately compressed. ALSO NOTED reads as a two-column slug-headline strip in the bottom band — correct per bullet_format: true.

One structural observation: THE WORLD sits at priority 84 (highest in the edition) but appears only as a narrow inline bar above the lead, per frontpage_display: headline_only. The art director correctly applied the rule, noting that THE PELOTON at 83 is "effectively the lead with full body treatment." This is the right call — the headline_only constraint means the reader sees Starmer/Greenspan/Transit at a glance without disrupting the layout. No mismatch to flag.

The lead image (Maradona) is placed correctly in the FROM THE ARCHIVE column, which is where meta.json assigns it (lead_image_section: FROM THE ARCHIVE). The illustration prompt is vivid and specific; the result reads as an editorial pen-and-ink. No complaints.


Priority ranking

SectionPriorityLengthImageNotes
THE WORLD84356 wordsHeadline-only on frontpage per rule
THE PELOTON83911 wordsEffective frontpage lead
THE LAB78774 words
THE LONG READ72738 words53-day-old piece, evergreen_ok applied
THE QUESTION66320 wordsWriter submitted at 78; orchestrator corrected to 66
FROM THE ARCHIVE42474 wordsyes (lead)Capped at 45 per config
ALSO NOTED10386 wordsCapped
THE FUNNIES8Frontpage-skipped per rule

The ranking is defensible. THE WORLD at 84 reflects Starmer's resignation (major breaking news), which is correctly weighed above a solid but not exceptional cycling day. THE PELOTON at 83 vs THE LAB at 78 is reasonable — this is a rich pre-Tour cycling day. THE QUESTION at 66 vs THE LONG READ at 72 is the one debatable call: THE QUESTION is a well-constructed piece but it chose the lower-range angle, and the orchestrator's 66 reflects that judgment.

No priority inflation. The spread (84 to 7) gives the art director real room to work. The orchestrator corrected the question writer's self-scored 78 down to 66 — appropriate given the angle stayed single-domain when the config rewards cross-domain bridges with 75–94.


Editorial reading

1. THE QUESTION missed a cross-domain bridge the config explicitly rewards.

The ANGLE-SELECTION TIE-BREAKER and CROSS-DOMAIN BRIDGE rules in newspaper.yaml both point in the same direction: when two sections from different domains raise the same structural problem, that bridge is the strongest available angle, and it earns the 75–94 priority band. Today the bridge was sitting in plain view: THE LAB runs Giesen's analysis of PivCo-Huffman, which is precisely about whether a complex operation that looks "multi-domain" (serial Huffman decode = sequential symbol context + bit position + level traversal) can be decomposed into parallelizable primitives — and whether the components assemble back to the integrated original's performance. THE QUESTION runs the van Aert replacement problem, which is about whether a multi-domain contributor can be decomposed into a committee of specialists. The structural argument is identical across both domains: distributed capability is not the same as integrated capability, and the integration cost is where the failure lives. The Question writer observed the COLLISION RULE (correctly excluded Karpathy), ran the angle-recency check, and chose the single-domain cycling angle. That was the safer choice; it was not the best one. The missed bridge would have produced a piece worth keeping. The one that shipped is tidy but bounded.

2. THE LONG READ lede announces the piece rather than starting it.

The opening sentence of FROM THE ARCHIVE — "At the 51st minute of a World Cup quarterfinal, Diego Maradona punched a ball into the net with his left hand..." — is a textbook in-media-res opener. The opening sentence of THE LONG READ — "In late April, Andrej Karpathy published a summary of his Sequoia Ascent fireside chat, and it is one of the cleaner attempts to explain what actually shifted in the last six months of coding..." — does the opposite. It announces the piece and positions it ("one of the cleaner attempts") before starting any story. The newspaper.yaml opening rule is explicit: "Open each article in media res. Start the story, don't announce it." The Karpathy piece has better entry points: the December break anecdote ("The chunks just came out fine"), or the MenuGen disappearing app, or the chess dataset finding. Any of those would drop the reader into the argument rather than introducing it.

3. THE WORLD bullets violate the hard word cap on two of three items.

The config for THE WORLD is unambiguous: "each bullet ≤ 25 words" with the note "HARD CAPS — not style guidelines" and a specific citation of a past failure (the 04/26 edition's Iran bullet at 66 words). Bullet 1 (Starmer) runs 27 words; Bullet 2 (Greenspan) runs 29 words. Both are over cap. The excess is not egregious — the Greenspan bullet is four words over — but the point of a hard cap is that it is enforced regardless, and the fact-checker passed both bullets without flagging the overrun. The ON THE TRAIL and local blocks are not subject to the cap, so the total word count (356) looks fine in aggregate; the cap applies per bullet to the world block specifically.

4. The Iran bullet in THE WORLD cites a YouTube video as its sole source, unfetched.

The research brief explicitly marks the JD Vance / Iran item as "[NOT FETCHED — use feed summary]." The WORLD section source list titles it "JD Vance arrives in Switzerland for Iran nuclear talks round 2" with a YouTube URL. The rendered bullet links to a YouTube video with the anchor text "France24." A YouTube-hosted France24 broadcast is a real source — France24 distributes on YouTube — but the writer used only the feed title summary, not a fetched page, for a story about US–Iran nuclear talks. This is the weakest sourced item in the edition. The story is low-priority (bullet 3, 20 words) and the fact is narrow (Vance arrived for round 2), so the damage is limited; but the researcher already flagged it as thin and the writer passed it through without notation.

5. THE PELOTON's Urška Žigart detail is interesting but orphaned.

The full-length section-peloton.md includes: "He travels home to Monaco — to spend time with partner Urška Žigart, recovering from her fractured jaw in the women's Tour de Suisse — before a stint at altitude in Isola 2000." This is a good humanizing detail drawn from an earlier story the paper covered (the women's Tour de Suisse). But it appears in the body without any earlier reference to Žigart's injury in this edition, making it feel slightly imported. The art director correctly trimmed it from the condensed frontpage column. In the long-form edition, a one-clause bracketed reference is fine, but readers encountering this edition without the June 20 one will wonder who Žigart is and what happened to her jaw. A brief parenthetical (as covered June 20) or a single clause of context would close the gap.


Pipeline observations

YAML parse error in section-peloton.md frontmatter, self-healed by orchestrator. The orchestrator flagged a YAML parse error in THE PELOTON's frontmatter at Step 5 (identified as a broken double-quoted string in citation snippet #1) and fixed it with a block literal before assembly. The final section-peloton.md and content.json are well-formed. This is a writer artifact: the PELOTON writer wrote a citation snippet that broke YAML quoting. The orchestrator catching and fixing it before assembly is correct behavior, but the writer should not produce broken YAML in the first place.

Writer-sweep (ALSO NOTED) hit three non-fatal read errors. The sweep agent attempted to Read the edition directory path /home/user/peloton-dispatch/2026/06/22 as a file (EISDIR), attempted to read section-funnies.md before it existed (the funnies agent was still running), and attempted to read pages/cycling/soudal-qs-tour-battle-plan.md (a 404 from the researcher). All three recovered gracefully — the agent adapted in each case and produced correct output. No items were dropped due to these errors. Minor noise, not a finding.

Beyond All Reason, OpenMW 0.51.0, and Housing First dropped from ALSO NOTED on "source unverifiable" grounds. All three appeared in feed items (HN and Lobsters) with enough summary to support a bullet. The sweep agent's reasoning — that no fetched page existed so the source was "unverifiable" — is defensible but in tension with newspaper.yaml's TIMELESS OVERRIDE, which states that "timeless" undated work should not be dropped for lack of a publication date, and the writer-sweep rules' "INCLUDE by default" disposition. The distinction the agent is drawing (unverifiable vs. no-date) is real, but Lobsters items for OpenMW and HN items for Beyond All Reason constitute minimal source verification without a fetch. Two technically interesting items (an open-source RTS and an OpenMW release) were left on the table.

No dedup agent in the subagent list. The pipeline ran 20 subagents: scout, researcher, 5 writers (peloton, lab, longread, archive, world), 5 fact-checkers, question reflector, sweep, comic-strip, meta-writer, illustrator, art-director, thread-editor. No standalone dedup agent appears. This is expected — the coverage index (build_coverage_index.py) runs as a script in Step 1 via the orchestrator, not as a subagent. The covered.json (282 URLs, 3 GitHub repos, 10 local stories) confirms it ran. No finding.

Starting commit. The dispatch run started from commit efe74d5 (Jun 21 investigator, same day). No meaningful lag behind origin/main.

Fetch results. 30 primary fetches, 2 retry fetches, 0 failures. Clean.


Trace highlights

The researcher was expensive relative to what the writers used from it. The researcher consumed $1.80 at 1026 seconds — by far the largest single-agent cost. The five regular writers together cost $0.86 and finished their work in 195s to 40s each. The LAB writer, with access to a detailed brief about three stories, cost $0.12 and ran for 73 seconds. The brief was thorough; the writers used what they needed and moved on. This ratio (researcher ~2x all writers combined) is structurally normal for this pipeline but worth tracking as brief depth grows.

FC: THE PELOTON was the most expensive fact-checker. At $0.32 and 252 seconds, it ran twice as long as the next most expensive fact-checker (FC: THE WORLD at 214s, $0.26). It checked 42 claims and made 2 corrections, one of which was substantive (22 stages → 21 stages in the races-ahead table). For a section with 12 sources and a detailed results table, 42 claims is appropriate depth. The cost is justified.

FC: THE WORLD did heavy context work for thin output. The WORLD fact-checker consumed 724 input tokens and $0.26 for a section with 4 citations and 18 claims. The high input cost relative to the section's content suggests it was reading more source material than necessary for a section this short. Contrast with FC: THE LONG READ (71k cache reads, $0.13 for 21 claims in a 738-word piece using a dense primary source). The WORLD FC's cost is partly explainable by the ON THE TRAIL subsection, which adds substantial content to verify.

The illustrator and funnies (OpenAI) both ran in parallel and neither blocked the pipeline. Illustrator at 51 seconds / $0.06 and Funnies OpenAI at 152 seconds / $0.22 ran as expected. The funnies-openai.png is large (2.8MB) — the raw raster from gpt-image-2, uncompressed before deploy.

Trace summary
AgentDurInputOutputCache ReadCache 5mCache 1hCost
Scout271s6829822174741116390$ 0.51
Researcher1026s49151440233491524130$ 1.80
THE WORLD195s64113983742220$ 0.31
THE PELOTON122s10173175045386930$ 0.20
THE LAB73s6658658278420$ 0.12
THE LONG READ65s9151112128186890$ 0.11
FROM THE ARCHIVE40s6466019259350$ 0.12
Meta-Writer31s6448484207860$ 0.09
FC: FROM THE ARCHIVE78s813132826371420$ 0.18
FC: THE LONG READ82s6671032293410$ 0.13
FC: THE LAB120s6478432379110$ 0.17
FC: THE PELOTON252s14220414103508010$ 0.32
Illustrator51s2051372000$ 0.06
FC: THE WORLD214s72460356824405020$ 0.26
THE QUESTION97s9131160847335630$ 0.18
FC: THE QUESTION60s6465152223110$ 0.10
ALSO NOTED124s7193396453622850$ 0.35
Draw today's TWO parody comic strips for235s19289576093488660$ 0.36
FC: ALSO NOTED144s79104861316500$ 0.15
Funnies (OpenAI)152s3735488000$ 0.22
Art Director149s5841972389700$ 0.16
Update story threads for today's edition182s5339780406480$ 0.16
Orchestrator1522980555658450100589$ 2.72
TOTAL85313944312819360944209100589$ 8.78

Suggestions for next edition

1. Add a LEDE PREFLIGHT check to the LONG READ agent. The Karpathy article opened by announcing itself ("one of the cleaner attempts to explain…") rather than starting the story. The QUESTION writer runs an explicit preflight per the config; the LONG READ writer has no equivalent. A one-line rule — "run your opening sentence against the media-res test before writing" — would catch announcement ledes at draft time.

2. Give the QUESTION writer an explicit CROSS-DOMAIN BRIDGE check. The config documents this rule in detail but the Question writer passed on the clearest bridge the edition offered (jagged AI capability in THE LAB mirroring distributed human capability in the van Aert problem). Adding a concrete instruction to "list the structural argument from each section in one clause, then test whether substituting nouns from LAB into a cycling-domain argument still holds" would surface the bridge before the writer commits to a single-domain angle.

3. Route OpenMW and comparable Lobsters/HN releases to a shallow-fetch pass in the researcher. Three items (OpenMW 0.51.0, Beyond All Reason, Housing First) were left on the table because no page was fetched. The researcher fetched 30 pages; adding a lightweight pass for HN/Lobsters items that have clear release-page URLs (openmw.org, beyondallreason.info) would give the ALSO NOTED writer verifiable source material for technically interesting items currently dropped as unverifiable.

4. Add a per-bullet word-count check to the WORLD fact-checker. The hard cap (25 words per bullet, ≤ 120 total) is stated with emphasis and a historical failure cited, yet two of three bullets in today's world block were over cap. The fact-checker checked 18 claims and fixed the Greenspan "five presidents" error but did not flag the overruns. A mechanical count at fact-check time would close this gap without requiring the writer to be more careful.