orrery · lab reportAbstractIIIIIIIVVVIVIIVIIIIXXXIXIIReferences

orrery · the fleet · the GPU, the line, and what a generation keeps

Outgrowing Yourself: What the GPU Hands the Game, What a Generation Keeps, and Whether the Card-Hours Pay

Paul Richeson · Lab Report — IEEE Format · 6 November 2026

Paul Richeson, treadcore.org; Claude Code (Claude Opus 5.5) as the pair. Copyright (c) 2026 Paul Richeson. MIT licensed, as orrery and treadcore.

Companions: orrery tools/report/outgrowing.py (every number and figure here, from the queue and git), tools/plans/treadcore.py (crucible_ladder_home, bridge_jobs, clone_jobs, line_proof), tools/bridge.py; crucible src/crucible.cu; treadcore source/treadcore-brain/src/styles.rs. The data: docs/outgrowing/data.json, read at 08:30 on 6 November. Reports of 1 and 5 November: The Whole Line [1], The Duty Cycle [2], Three Generations, Filmed [3].

Abstract

Paul asked how a value computed on the GPU's CUDA cards gets back into the main run and on what conditions, how the GPU adds to the data, whether its compute hours can be justified, and what happens to a working system as it tries to outgrow its past versions: how long a generation takes, how many there are, and how big each one is. Everything here is read from the queue's records and from git. There are two ways for a GPU result to reach treadcore's main, and neither has delivered anything yet. On the first road, the bridge, a world milestone is read in the game as the Gladiator (bot style 17) and shipped as a net file. It has made no reads, because no milestone has been made since its code landed. On the second, the clone, the rules are re-learned on calber's card for the Scholar (style 6). It has run four rounds, and every clone read under the Scholar it would have replaced (−2.78, −1.73, −0.68 and −2.75 a seat). The only GPU net on main, M0015 as the Gladiator, was committed by hand on 4 November. No GPU number reaches the line's dials, which are the brain the game plays by default: those move only on CPU censuses. The cards have run 442 card-hours since 28 October (25.5% of the fleet's job-hours). They used 52.9 kWh (26.8% of its energy), about $9 at the planner's 17¢ a kWh, or $1.41 a day now. The world ladder made 13 milestones in its first 6.5 hours, each by a smaller margin than the last, and none in the 50 hours and 149 card-hours since. The last milestone, M0015, won its exam on 0.4% of duels, lost none and drew 99.6%. The islands have settled into a stable state where not losing pays, and the exam only credits winning. The line, meanwhile, committed 32 generations in nine days (5.0 a day since 1 November). A generation takes a median 1.0 h from its first read to its commit, and then a median 4.6 h to reach main. A generation keeps about 0.28 of the gain its held-out read claims (± 0.03, over 19 distinct lines the proof read). Main's six moves since 1 November took lines whose generations had claimed +14.96 a seat in all; the proofs that passed them read +9.43. The line today claims +2.75 over four generations and proves +0.45 ± 0.23, and has waited 20 hours. Six recommendations follow, none built. Two of them carry the most weight: make the arena's exam credit something a net can still gain, and key the proof's pool on the line's dials rather than its commit.

Index Terms: neuroevolution, coevolution, mediocre stable states, behaviour cloning, statistical acceptance testing, winner's curse, selection bias, continuous delivery, compute accounting.

I. The question

Paul, on the morning of 6 November, after the trailer: "Explain how the values from CUDA make it back into the main run. What are the conditions? Write a lab report. Give diagrams. Show me HTML. How does the GPU add to the data? We are getting many compute hours. Can we justify this? Write a lab report, IEEE, about post-working reality: transitions to improvements, outgrowing past versions of yourself. I'm asking about the turnaround time, the generations that occur, and the scalar improvements."

Five questions, then: the road and its conditions (section III); how many generations there are and when (IV); the turnaround (V); the size of an improvement, claimed and kept (VI); and what the GPU contributes and costs, with whether that is justified (VII to IX). Section X is about what working means once the pipeline works.

II. Two machines that grow

The fleet grows two different things, and the answer to every question depends on keeping them apart.

The line grows the game's own brain. That brain is treadcore's scripted rules, with about three hundred dials: weights, distances, switches. A generation of the line is a commit to treadcore that moves a few dials. It starts as a trial drawn by suggest.py from a fit to every census so far. The trial is read in censuses: whole games of treadcore, run on the CPUs, the trial's dials against today's defaults on the same seeds, with the score difference a seat as the measure. The reads run from 55 seeds, on to about 190, then 400 seeds that no search has seen. A trial past the bars is held to its families, its gauntlet and the brain's tests, then committed to the line (orrery/accepted), which every machine builds. Main, the branch a player installs, takes the line only through an hourly proof [1].

Crucible grows small neural networks on the three CUDA cards, on calber, whitewolf and boburner. It evolves populations of 55-48-48-4 nets that play 1-against-1 duels in an arena built with the game's sixteen physical constants (speed, turn, armour, gun range, reload, pillboxes). A segment of 100 generations takes 9 to 13 minutes. Each segment's champion sits an exam against the ladder. When it beats the newest milestone by two standard errors, it becomes the next milestone [4]. A crucible generation is therefore not a line generation: the islands count about 700, 510 and 460 generations an hour, and calber stands at generation 275,600.

The two share sixteen constants and nothing else. The arena has no forest, roads, water, economy, drones or maps, and it scores by its own fitness: damage dealt less taken, ±2 for a win or a loss, −1 for a draw. It does not use the game's score.

III. How a value from CUDA reaches main

GPU (three CUDA cards)crucible islands: 100 generations a segment, 9-13 minCPU FLEET (treadcore census)ten machines; the scripted brain's ~300 dials1 Segment championexam: 2,048 duels against eachof up to 8 rungs of the ladder2 Milestoneover the newest: margin > 2 se,and the ladder's mean >= 03 Bridge read (Gladiator)newest milestone only, as style 17;2 censuses x 48 seeds, all maps;diff > 2 se (errors unpaired)Clone round (Scholar)12 h and a new line head: record120 games (CPU), train on calber,judge: 48 seeds and the gauntlet4 Ship a net filebridge.py: auto mode, push ok;styles tests, push to mainShipped by this road so far: nothing.0 bridge reads (no milestone after the code landed);4 clone rounds, each read under the Scholar it would replace.The one GPU net on main, M0015 as the Gladiator,was committed by hand (21fdfbd, 4 Nov 10:31).Triala few dials drawn by suggest.pyfrom the fit of every censusFirst read, read-ons55 seeds, on to ~190 while itstays over the eased barHeld-out read400 seeds no search has seen,4 x 100 pooled; z over the barFamilies, gauntlet, tests9 families, 22 gauntlets and168 tests at their floorsThe line (committed)orrery/accepted: every machinebuilds it, reads trials against itmain (pushed)the hourly proof: main's values as atrial against the line, 800 seeds,pooled; z >= 3 and the trade rulea net file goes straight to main:no held-out read, no proofno wire: no GPU numberreaches the line's dialsThe gamefleet: dials17: Gladiator6: ScholarBlue: the GPU's road. Orange: the line. Green: main. Dashed: a connection that does not exist. Styles 17 and 6 play only when a person picks them.

Fig. 1. The roads to main, each gate as the code has it. Blue is the GPU's road and orange the line; green is main. The dashed curve marks the connection people assume exists, from the GPU to the line's dials. It does not exist. Styles 17 and 6 play only when a person picks them, in a menu or with --bots.

Two roads lead from the GPU to main, and both carry a file, not a number. The first is the bridge, which brings the Gladiator. The planner watches the world ladder. When the newest milestone is not the one already shipped and has not been read, it asks two censuses on the fastest machine, 48 seeds each over every map: the defaults with the candidate seated as style 17 (GLADIATOR=file), and the same with the shipped one. If the candidate is better by more than two errors, the auto mode ships it. tools/bridge.py checks the file (20,944 bytes, the world layout), makes a worktree of origin/main, runs the styles tests on the Mac, commits nets/gladiator.bin and pushes straight to main. There is no held-out read and no proof. The second is the clone, which brings the Scholar. It runs every 12 hours when the line has a new head. It records the rules playing 120 games (ten CPU jobs), trains a net from scratch on calber's card by behaviour cloning [5] (12 epochs; 77 to 287 seconds of card time), and judges it on 48 seeds with one seat beside the rules, plus a 100-run gauntlet. It ships into nets/scholar.bin only if it is better by two errors and no gauntlet item falls under its floor or the Scholar's.

RoadGateConditionWhere
GladiatorSegment100 generations; exam of 2,048 duels against each of up to 8 rungscrucible_exam
Milestonemargin over the newest > 2 se, and the ladder's mean ≥ 0treadcore.py 4454
Bridge readthe newest milestone only; 2 censuses × 48 seeds, all maps; diff > 2 se4592, 4616–4628
Shipauto mode and the push dry-run ok; styles tests; push to main2420, 3515; bridge.py 62–72
ScholarRound due12 h since the last, and a new line head4757
Record, train120 games on the CPUs; behaviour cloning on calber's card4762–4777
Judge48 seeds, one seat, diff > 2 se; gauntlet: nothing worse by 2 se, nothing under a floor4796–4836
Shipauto mode and the push ok; styles tests; push to main4839; bridge.py 107–128
The lineProofmain's values vs the line, 800 seeds an hour, pooled; z ≥ 3 and the trade rule1512, 5170

Table I. Every gate between a computation and main. Line numbers are in tools/plans/treadcore.py at orrery 3556714. The bridge's two errors are combined unpaired (hypot), although its comment calls the read paired: the bar it sets is stricter than the one described.

Neither road has shipped anything. The bridge has made no reads (plan/bridge.json: reads: []). Its code landed at 10:06 on 4 November, four hours after the last milestone. M0015 had already been committed by hand as the Gladiator at 10:31 (treadcore 21fdfbd), read at −2.53 ± 1.21 a seat against the defaults and +4.99 ± 2.08 over the Duelist it replaced. With the newest milestone already shipped, the bridge has had nothing to read. The clone has run four rounds, and all four lost:

RoundAskedRules atCloneScholar (bc2)Clone less ScholarGauntlet worse
14 Nov 11:0621fdfbd−42.71−39.93−2.78 ± 3.93none
24 Nov 23:06f04f157−9.32−7.59−1.73 ± 2.18G2, G3, G8
35 Nov 11:08d9e9aef−8.25−7.57−0.68 ± 2.01G22, G3, G8
45 Nov 23:09a96baf9−10.53−7.78−2.75 ± 2.26G3

Table II. The clone rounds (plan/clone.json). Round 1 seated the clone as the whole team. Rounds 2 to 4 seated it as one seat beside the rules, which is why their scores are so much smaller. Round 5 is due about 11:10 today, since the line's head is now 96c4954.

No GPU number reaches the line's dials. This is the answer to "how do the values make it back into the main run": they do not, by design and in fact. The censuses that move the dials send only a trial's dials. bot_style, bot_mix, model and patch are all 0 on the line. A style plays only when bot_style is above 0. The planner never asks an A/B of a style and never promotes one. suggest.py drops every row that names a choice or a net. The gauntlets that guard a promotion play the scripted brain (GAUNTLET_BRAINS=scripted). The influence runs the other way: a Gladiator in a game plays on top of the line's dials.

How the GPU adds to the data, then. It adds the ladder's data to orrery's own records: 922 world segments in growth.tsv, 811 exams against M0015 in lineage.tsv, and the Growth page and the films built from them. It adds one shipped net, by hand. It adds four clone rounds that measured how far an imitation falls short. It adds nothing to the censuses, the ledger, the fit, or anything else the line reads.

IV. The generations that occur

28 Oct29 Oct30 Oct31 Oct1 Nov2 Nov3 Nov4 Nov5 Nov6 NovGPU milestonesGPU nets to mainGame / score versionLine commitsMain movesM0001-boburner-cuda-g200 at 10-30T16:23, 0.0 se over NoneM0002-calber-cuda-g235800 at 11-03T22:58, 43.8 se over M0001-boburner-cuda-g200M0003-calber-cuda-g236100 at 11-03T23:03, 51.6 se over M0002-calber-cuda-g235800M0004-calber-cuda-g236600 at 11-03T23:18, 16.8 se over M0003-calber-cuda-g236100M0005-whitewolf-cuda-g162500 at 11-03T23:38, 9.9 se over M0004-calber-cuda-g236600M0006-calber-cuda-g237000 at 11-03T23:54, 10.1 se over M0005-whitewolf-cuda-g162500M0007-boburner-cuda-g85600 at 11-04T00:14, 35.8 se over M0006-calber-cuda-g237000M0008-boburner-cuda-g85900 at 11-04T00:50, 5.6 se over M0007-boburner-cuda-g85600M0009-calber-cuda-g238100 at 11-04T01:25, 2.3 se over M0008-boburner-cuda-g85900M0010-calber-cuda-g238400 at 11-04T01:52, 15.7 se over M0009-calber-cuda-g238100M0011-calber-cuda-g238700 at 11-04T02:13, 5.0 se over M0010-calber-cuda-g238400M0012-calber-cuda-g239000 at 11-04T02:38, 2.3 se over M0011-calber-cuda-g238700M0013-calber-cuda-g239200 at 11-04T02:55, 2.3 se over M0012-calber-cuda-g239000M0014-calber-cuda-g240500 at 11-04T04:41, 2.5 se over M0013-calber-cuda-g239200M0015-calber-cuda-g241300 at 11-04T05:42, 2.8 se over M0014-calber-cuda-g24050021fdfbd 11-04T10:31: LR 138: the Duelist with world senses: crucible's world champion in the game as the Gladiator, style 17, read +4.99 a seclone round 1, asked 11-04T11:06: clone -42.71 vs the Scholar -39.93, -2.78 ± 3.93; not shippedclone round 2, asked 11-04T23:06: clone -9.32 vs the Scholar -7.59, -1.73 ± 2.18; not shippedclone round 3, asked 11-05T11:08: clone -8.25 vs the Scholar -7.57, -0.68 ± 2.01; not shippedclone round 4, asked 11-05T23:09: clone -10.53 vs the Scholar -7.78, -2.75 ± 2.26; not shippedgame 3 at 10-30T18:15 (71f3578)game 4 at 10-30T18:45 (11df8d0)game 5 at 11-02T13:05 (19aba7e)game 6 at 11-02T18:32 (d0ffb0b)game 7 at 11-02T18:58 (cc54a83)game 8 at 11-02T19:19 (9165c1d)score 1 at 11-04T12:59 (9195402)g3,g4g5g6,g7,g8s1r0019 w0034 committed 10-28T14:28; held out +3.17 ± 0.20r0051 w1266 committed 10-29T16:34; held out +0.35 ± 0.28r0057 w1463 committed 10-30T07:46; held out +0.23 ± 0.20r0060 w1554 committed 10-30T10:31; held out +0.76 ± 0.28r0062 w1656 committed 10-30T13:14; held out +1.92 ± 0.31r0068 w2087 committed 11-01T07:14; held out +2.05 ± 0.44r0069 w4399 committed 11-01T08:18; held out +0.15 ± 0.22r0073 w4540 committed 11-01T11:33; held out +0.39 ± 0.41r0074 w4749 committed 11-01T11:56; held out +0.82 ± 0.40r0086 w4845 committed 11-01T12:48; held out +0.18 ± 0.58r0089 w4424 committed 11-01T12:57; held out +0.49 ± 0.46r0092 w4966 committed 11-01T14:18; held out +1.06 ± 0.50r0099 w5004 committed 11-01T15:28; held out +0.30 ± 0.41r0100 w5085 committed 11-01T15:43; held out +0.55 ± 0.50r0101 w5151 committed 11-01T16:46; held out +0.10 ± 0.08r0103 w5264 committed 11-01T18:37; held out +0.30 ± 0.15r0110 w5387 committed 11-01T19:43; held out +1.34 ± 0.63r0113 w5482 committed 11-01T20:32; held out +0.08 ± 0.04r0118 w5525 committed 11-01T22:44; held out +2.65 ± 0.67r0122 (by hand) committed 11-01T23:44; held out -r0124 w5924 committed 11-02T02:58; held out +0.38 ± 0.17r0126 w5963 committed 11-02T03:47; held out +1.77 ± 0.47r0128 (by hand) committed 11-02T06:47; held out -r0132 w6331 committed 11-02T09:11; held out +1.23 ± 0.54r0133 w6501 committed 11-02T11:59; held out +1.17 ± 0.64r0178 w9615 committed 11-04T17:01; held out +0.80 ± 0.30r0179 w9761 committed 11-04T19:31; held out +0.51 ± 0.32r0186 w10040 committed 11-05T07:56; held out +0.69 ± 0.44r0196 w10839 committed 11-05T12:28; held out +0.96 ± 0.47r0199 w11139 committed 11-05T16:01; held out +0.50 ± 0.18r0201 w11352 committed 11-05T19:26; held out +0.56 ± 0.34r0209 w12042 committed 11-06T05:20; held out +0.73 ± 0.35main moved 10-28T14:24 to dc3df01: w0034main moved 10-29T16:34 to e669921: w1266main moved 10-30T07:46 to 7a63d39: w1463main moved 10-30T10:31 to 6c3274e: w1554main moved 10-30T13:14 to c015965: w1656main moved 11-01T07:14 to 7a0ca91: w2087main moved 11-01T20:07 to 286338b: w4399, w4424, w4540, w4749, w4845, w4966, w5004, w5085, w5151, w5264main moved 11-01T23:55 to 52400c6: w5387, w5482, w5525main moved 11-02T09:43 to da7e1da: w5924, w5963, w6331main moved 11-02T16:31 to 458ea64: w6501main moved 11-04T18:24 to 43f9f67: w9615main moved 11-05T11:37 to 562b3d4: w10040, w9761the line waits for its proofFilled square: a GPU net on main (by hand). Hollow squares: clone rounds, none shipped. Hollow dots: generations committed by hand. Hover a mark.

Fig. 2. Nine days in lanes. The GPU's milestones (two carried over from the hybrid home, then thirteen in the night of 3–4 November); the GPU's nets on main (filled: M0015, by hand) and the clone rounds (hollow); the game's own version changes, after which a seat's score means something new; every line commit (hollow: by a person's hand); and every move of main, from the coordinator's reflog of origin/main.

The line made 32 generations, 27 of them since 1 November: five a day. 55 promotion tries were asked. 32 landed (28 now on main, 4 on the line) and 23 failed, 19 of those at the brain's tests and none at the families. The gap between two generations has a median of 2.5 h and a mean of 6.7 h. The mean is pulled up by the shutdown of 31 October and by the 53 hours of 2 to 4 November, when games 5 to 8 and score 1 changed the game under the fleet and the auto mode stood paused after two failed promotions (r0156, r0166). Main moved 12 times. The first six took one generation each, straight to main, before the line existed. The last six took 10, 3, 3, 1, 1 and 2 generations through the proof.

The GPU made 15 milestones, 13 of them in six and a half hours. The world home began at 23:00 on 3 November. Its milestones came at one every 25 minutes until 05:42 on 4 November, and then stopped. Since then the islands have run about 85,000 generations: calber from 241,300 to 275,600, whitewolf and boburner about 25,000 each. None has been a milestone.

V. Turnaround

first read → commit (hours before)commit → main (hours after)061224366121824r0019 w0034w0034: first read 10-28T12:37, committed 10-28T14:28, 1.8 hstraight to mainr0051 w1266w1266: first read 10-29T09:28, committed 10-29T16:34, 7.1 hstraight to mainr0057 w1463w1463: first read 10-29T18:44, committed 10-30T07:46, 13.0 hstraight to mainr0060 w1554w1554: first read 10-30T08:52, committed 10-30T10:31, 1.6 hstraight to mainr0062 w1656w1656: first read 10-30T11:42, committed 10-30T13:14, 1.5 hstraight to mainr0068 w2087w2087: first read 10-30T21:10, committed 11-01T07:14, 35.1 hstraight to mainr0069 w4399w4399: first read 11-01T07:21, committed 11-01T08:18, 0.9 hw4399: committed 11-01T08:18, on main 11-01T20:07, 11.8 hr0073 w4540w4540: first read 11-01T08:48, committed 11-01T11:33, 2.8 hw4540: committed 11-01T11:33, on main 11-01T20:07, 8.6 hr0074 w4749w4749: first read 11-01T11:43, committed 11-01T11:56, 0.2 hw4749: committed 11-01T11:56, on main 11-01T20:07, 8.2 hr0086 w4845w4845: first read 11-01T12:26, committed 11-01T12:48, 0.4 hw4845: committed 11-01T12:48, on main 11-01T20:07, 7.3 hr0089 w4424w4424: first read 11-01T07:38, committed 11-01T12:57, 5.3 hw4424: committed 11-01T12:57, on main 11-01T20:07, 7.2 hr0092 w4966w4966: first read 11-01T14:05, committed 11-01T14:18, 0.2 hw4966: committed 11-01T14:18, on main 11-01T20:07, 5.8 hr0099 w5004w5004: first read 11-01T14:27, committed 11-01T15:28, 1.0 hw5004: committed 11-01T15:28, on main 11-01T20:07, 4.6 hr0100 w5085w5085: first read 11-01T15:33, committed 11-01T15:43, 0.2 hw5085: committed 11-01T15:43, on main 11-01T20:07, 4.4 hr0101 w5151w5151: first read 11-01T15:55, committed 11-01T16:46, 0.9 hw5151: committed 11-01T16:46, on main 11-01T20:07, 3.4 hr0103 w5264w5264: first read 11-01T17:07, committed 11-01T18:37, 1.5 hw5264: committed 11-01T18:37, on main 11-01T20:07, 1.5 hr0110 w5387w5387: first read 11-01T18:46, committed 11-01T19:43, 1.0 hw5387: committed 11-01T19:43, on main 11-01T23:55, 4.2 hr0113 w5482w5482: first read 11-01T20:00, committed 11-01T20:32, 0.5 hw5482: committed 11-01T20:32, on main 11-01T23:55, 3.4 hr0118 w5525w5525: first read 11-01T20:41, committed 11-01T22:44, 2.0 hw5525: committed 11-01T22:44, on main 11-01T23:55, 1.2 hr0122 by handby hand, with its batchr0124 w5924w5924: first read 11-02T02:25, committed 11-02T02:58, 0.5 hw5924: committed 11-02T02:58, on main 11-02T09:43, 6.8 hr0126 w5963w5963: first read 11-02T03:06, committed 11-02T03:47, 0.7 hw5963: committed 11-02T03:47, on main 11-02T09:43, 5.9 hr0128 by handby hand, with its batchr0132 w6331w6331: first read 11-02T08:40, committed 11-02T09:11, 0.5 hw6331: committed 11-02T09:11, on main 11-02T09:43, 0.5 hr0133 w6501w6501: first read 11-02T11:10, committed 11-02T11:59, 0.8 hw6501: committed 11-02T11:59, on main 11-02T16:31, 4.5 hr0178 w9615w9615: first read 11-04T16:01, committed 11-04T17:01, 1.0 hw9615: committed 11-04T17:01, on main 11-04T18:24, 1.4 hr0179 w9761w9761: first read 11-04T18:06, committed 11-04T19:31, 1.4 hw9761: committed 11-04T19:31, on main 11-05T11:37, 16.1 hr0186 w10040w10040: first read 11-04T23:21, committed 11-05T07:56, 8.6 hw10040: committed 11-05T07:56, on main 11-05T11:37, 3.7 hr0196 w10839w10839: first read 11-05T10:29, committed 11-05T12:28, 2.0 hw10839: on the line since 11-05T12:28, 20.0 h, waiting for the proofwaiting, 20 hr0199 w11139w11139: first read 11-05T15:30, committed 11-05T16:01, 0.5 hw11139: on the line since 11-05T16:01, 16.5 h, waiting for the proofwaiting, 16 hr0201 w11352w11352: first read 11-05T18:22, committed 11-05T19:26, 1.1 hw11352: on the line since 11-05T19:26, 13.1 h, waiting for the proofwaiting, 13 hr0209 w12042w12042: first read 11-06T04:43, committed 11-06T05:20, 0.6 hw12042: on the line since 11-06T05:20, 3.2 h, waiting for the proofwaiting, 3 hOrange: the fleet's work on the question. Green: the commit waiting for main. Dashed: still waiting. Hover a bar for its times.

Fig. 3. Every committed generation: from its trial's first job to its commit (orange, hours before the commit), and from its commit to main (green, hours after). Before 1 November a promotion went straight to main. Dashed bars are the four generations still on the line, waiting at 08:30.

A question becomes a commit in about an hour, and a commit becomes main in about four and a half. From a trial's first read to its commit takes a median 1.0 h over 30 generations (mean 3.2 h; shortest 10 minutes, longest 35 hours, for r0068 across the shutdown). Since the proof began on 1 November, a commit has reached main in a median 4.6 h (mean 5.5 h, longest 16.1 h), so a question reaches main in a median 5.9 h. The Duty Cycle measured the first stretch from the other side: a trial's chain is mostly waiting between links, not work [2].

The second stretch is where the time goes now. r0196 has waited 20.0 h, r0199 16.5 h, r0201 13.1 h and r0209 3.2 h. They wait because the proof has not reached z 3 (section VI). They also wait for a reason that is the pipeline's own: a push to main restarts the proof. The proof pools its hourly reads for one line head against one main. Every push to main replays the line and gives it a new head, and that includes a report, a fix to a test, or a lab report like this one. Of the 26 heads the proof has read, 6 had the same generations as the head before, and each threw away its predecessor's pool. The line that took r0179 and r0186 to main was read under three heads in two and a half hours: +0.80, +0.49, then +1.28, and passed on the third. Pooled by inverse variance [10], the three read +0.88 ± 0.19. The restart costs more than time. Each new head is a fresh look, and a bar of z 3 met once among many short looks is easier to meet by luck than once at the end of one long pool [11].

VI. Scalar improvements: what a generation claims, and what it keeps

-1-100+1+1+2+2+3+3+4+4+5+5+6+6kept all it claimedclaimed: the sum of the held-out reads of the generations on the lineproven: the line read over main (± 1 se)line 9d438c8, 11-01T08:48-11:35: r0069; claimed +0.15, proven -0.23 ± 0.10 over 2400 seeds (z -2.4)line 44159e2, 11-01T14:00-14:02: r0069, r0073, r0074, r0086, r0089; claimed +2.03, proven +0.54 ± 0.35 over 800 seeds (z 1.6)line 94a99be, 11-01T15:21-15:32: r0069, r0073, r0074, r0086, r0089, r0092; claimed +3.09, proven +1.97 ± 0.41 over 800 seeds (z 4.8); passed, main movedline d4002e5, 11-01T16:56-17:07: r0069, r0073, r0074, r0086, r0089, r0092, r0099, r0100; claimed +3.94, proven -0.07 ± 0.41 over 800 seeds (z -0.2)line 54757f8, 11-01T18:17-18:27: r0069, r0073, r0074, r0086, r0089, r0092, r0099, r0100, r0101; claimed +4.04, proven +0.24 ± 0.43 over 800 seeds (z 0.6)line 286338b, 11-01T19:49-20:06: r0069, r0073, r0074, r0086, r0089, r0092, r0099, r0100, r0101, r0103; claimed +4.34, proven +1.43 ± 0.41 over 800 seeds (z 3.5); passed, main movedline d7bf6e8, 11-01T21:17-21:19: r0110, r0113; claimed +1.42, proven -0.60 ± 0.44 over 800 seeds (z -1.3)line 346c405, 11-01T22:31-22:39: r0110, r0113; claimed +1.42, proven +0.77 ± 0.43 over 800 seeds (z 1.8)line 84b8fdd, 11-01T23:48-23:54: r0110, r0113, r0118; claimed +4.07, proven +3.16 ± 0.46 over 800 seeds (z 6.9); passed, main movedline 307a827, 11-02T03:35-03:35: r0124; claimed +0.38, proven -0.46 ± 0.31 over 800 seeds (z -1.5)line 6fecf45, 11-02T04:46-06:02: r0124, r0126; claimed +2.15, proven +1.18 ± 0.25 over 1600 seeds (z 4.8); passed, main movedline 2752ded, 11-02T07:12-08:30: r0124, r0126; claimed +2.15, proven +0.59 ± 0.25 over 1600 seeds (z 2.3)line da7e1da, 11-02T09:41-09:42: r0124, r0126, r0132; claimed +3.38, proven +1.82 ± 0.42 over 800 seeds (z 4.3); passed, main movedline e9e13e4, 11-02T12:17-12:20: r0133; claimed +1.17, proven +0.17 ± 0.46 over 800 seeds (z 0.4)line 248e30b, 11-02T13:47-16:29: r0133; claimed +1.17, proven +1.02 ± 0.27 over 2400 seeds (z 3.8); passed, main movedline 78baee8, 11-04T17:22-17:26: r0178; claimed +0.80, proven +0.71 ± 0.20 over 800 seeds (z 3.5); passed, main movedline bdca5eb, 11-04T19:51-19:53: r0179; claimed +0.51, proven -0.23 ± 0.22 over 800 seeds (z -1.1)line f04f157, 11-04T21:14-07:41: r0179; claimed +0.51, proven +0.06 ± 0.07 over 7200 seeds (z 0.8)line 0724007, 11-05T09:01-09:03: r0179, r0186; claimed +1.20, proven +0.80 ± 0.33 over 800 seeds (z 2.4)line 17f5f6a, 11-05T10:19-10:21: r0179, r0186; claimed +1.20, proven +0.49 ± 0.34 over 800 seeds (z 1.4)line d9e9aef, 11-05T11:33-11:35: r0179, r0186; claimed +1.20, proven +1.28 ± 0.31 over 800 seeds (z 4.2); passed, main movedline 7c64198, 11-05T12:47-15:21: r0196; claimed +0.96, proven +0.00 ± 0.18 over 2400 seeds (z 0.0)line ea41f83, 11-05T16:33-19:12: r0196, r0199; claimed +1.46, proven +0.33 ± 0.18 over 2400 seeds (z 1.9)line a96baf9, 11-05T20:23-05:06: r0196, r0199, r0201; claimed +2.02, proven +0.27 ± 0.11 over 6400 seeds (z 2.4)line 96c4954, 11-06T06:16-07:34: r0196, r0199, r0201, r0209; claimed +2.75, proven +0.45 ± 0.23 over 1600 seeds (z 1.9)the line now, 96c4954: r0196, r0199, r0201, r0209a line head the proof passed (z ≥ 3)a line head the proof read and did not passPoints under the dashed line kept less thantheir generations claimed. When main moved,the 6 lines it took had claimed +14.96 in all;the proofs that passed them read +9.43.One head can be read many times: each push tomain (a report, a fix) replays the line, gives ita new head, and starts its proof's pool again.

Fig. 4. For each line head the proof read: the sum of the held-out reads its generations claimed (x) against what the proof read of the line over main (y, ± 1 se). Filled points passed (z ≥ 3). A point on the dashed line kept all it claimed. Hover a point for its generations and seeds.

A generation keeps about a quarter of what it claims. A generation's held-out read is honest about its own seeds: 400 that no search has seen. But it is read only because it passed the reads before it, and it is committed only because it passed the held-out bar. A read selected for being high is, on average, too high. This is the winner's curse [6], and selection bias in its most familiar form [7]. The proof is the first read of the generations that nothing has selected, and it reads the line against main directly. Pooling the proof's reads by the line's contents gives 19 distinct lines. Fitting proven against claimed, weighted by the errors, gives a slope of 0.28 ± 0.03; the plain ratio of their sums is 0.32. The record has two clean single cases. r0179 (bio 0 -> 3) claimed +0.51 and was read alone over 8,000 seeds at +0.03 ± 0.07. r0196 (four dials) claimed +0.96 and was read alone over 2,400 seeds at +0.00 ± 0.18.

Line (generations on it)ClaimedProvenSeeds
r0069 … r0103 (10 generations; main 1 Nov 20:07)+4.34+1.43 ± 0.41800
r0110, r0113, r0118 (main 1 Nov 23:55)+4.07+3.16 ± 0.46800
r0124, r0126, r0132 (main 2 Nov 09:43)+3.38+1.82 ± 0.42800
r0133 (main 2 Nov 16:31)+1.17+0.81 ± 0.233,200
r0178 (main 4 Nov 18:24)+0.80+0.71 ± 0.20800
r0179 alone+0.51+0.03 ± 0.078,000
r0179, r0186 (main 5 Nov 11:37)+1.20+0.88 ± 0.192,400
r0196 alone+0.96+0.00 ± 0.182,400
r0196, r0199+1.46+0.33 ± 0.182,400
r0196, r0199, r0201+2.02+0.27 ± 0.116,400
r0196, r0199, r0201, r0209 (the line now)+2.75+0.45 ± 0.231,600

Table III. A selection of the 19 distinct lines, every read of one line pooled across its heads (all in docs/outgrowing/distinct.json). "Claimed" is the sum of the generations' held-out reads. "Proven" is the proof's read of the line over main, a seat. Where a line moved main, the proven value shown is the pool, not only the passing read.

What main has gained, in one unit. A seat's score changed meaning twice in these nine days: the economy (games 5 to 8, 2 November) and the score that counts building (score 1, 13:00 on 4 November). Sums across those changes add different things. Since score 1, main has moved twice, taking three generations. The proofs read those moves at +0.71 ± 0.20 and +0.88 ± 0.19 pooled, so main today is about +1.6 ± 0.3 a seat over the brain of 4 November at 13:00; those three generations had claimed +2.00. The line's four more claim +2.75 and prove +0.45 ± 0.23. Over the whole stretch, seven generations claimed +4.75, and about +2.0 has been proved. For scale, one seat's score swings by about 9.5 from game to game [1], so 1.6 is a sixth of one game's spread. It is a real improvement, and it is less than half of what was claimed.

Three things shrink a claim, and the record cannot separate them. Selection is one. The second is interaction: dials tuned against today's defaults are read together against a main that has since moved. The third is that the game itself changed under some of the reads. The cure is the same for all three, and the pipeline already has it: the proof. What the pipeline lacks is a way to say so out loud. The trailer, the montage and the Flow all show the claim, and only the proof card shows what was kept.

VII. Outgrowing past versions of yourself: the islands

(a) Each milestone's margin over the one before it, in standard errors (dashed: the bar, 2)01020304050M0002-calber-cuda-g235800, made 11-03T22:58: 43.8 se over M0001-boburner-cuda-g20043.8M0002M0003-calber-cuda-g236100, made 11-03T23:03: 51.6 se over M0002-calber-cuda-g23580051.6M0003M0004-calber-cuda-g236600, made 11-03T23:18: 16.8 se over M0003-calber-cuda-g23610016.8M0004M0005-whitewolf-cuda-g162500, made 11-03T23:38: 9.9 se over M0004-calber-cuda-g2366009.9M0005M0006-calber-cuda-g237000, made 11-03T23:54: 10.1 se over M0005-whitewolf-cuda-g16250010.1M0006M0007-boburner-cuda-g85600, made 11-04T00:14: 35.8 se over M0006-calber-cuda-g23700035.8M0007M0008-boburner-cuda-g85900, made 11-04T00:50: 5.6 se over M0007-boburner-cuda-g856005.6M0008M0009-calber-cuda-g238100, made 11-04T01:25: 2.3 se over M0008-boburner-cuda-g859002.3M0009M0010-calber-cuda-g238400, made 11-04T01:52: 15.7 se over M0009-calber-cuda-g23810015.7M0010M0011-calber-cuda-g238700, made 11-04T02:13: 5.0 se over M0010-calber-cuda-g2384005.0M0011M0012-calber-cuda-g239000, made 11-04T02:38: 2.3 se over M0011-calber-cuda-g2387002.3M0012M0013-calber-cuda-g239200, made 11-04T02:55: 2.3 se over M0012-calber-cuda-g2390002.3M0013M0014-calber-cuda-g240500, made 11-04T04:41: 2.5 se over M0013-calber-cuda-g2392002.5M0014M0015-calber-cuda-g241300, made 11-04T05:42: 2.8 se over M0014-calber-cuda-g2405002.8M0015(b) Since M0015: the exams against it, best (solid) and median (dotted) of each hour, in se (dashed: the bar, +2)-50-40-30-20-1005 Nov6 Nov11-04T05:00, 1 exams: best -2.6, median -2.6 se11-04T06:00, 18 exams: best -0.5, median -37.9 se11-04T07:00, 17 exams: best +1.4, median -33.3 se11-04T08:00, 16 exams: best +0.0, median -37.1 se11-04T09:00, 11 exams: best -1.0, median -34.1 se11-04T10:00, 14 exams: best +0.0, median -41.2 se11-04T11:00, 13 exams: best +0.0, median -44.7 se11-04T12:00, 14 exams: best +1.0, median -44.1 se11-04T13:00, 14 exams: best -1.0, median -36.3 se11-04T14:00, 14 exams: best -5.2, median -32.4 se11-04T15:00, 16 exams: best -7.3, median -34.6 se11-04T16:00, 16 exams: best -8.1, median -30.8 se11-04T17:00, 16 exams: best -6.7, median -31.8 se11-04T18:00, 17 exams: best -7.5, median -32.0 se11-04T19:00, 14 exams: best -7.0, median -28.4 se11-04T20:00, 16 exams: best -3.8, median -24.4 se11-04T21:00, 16 exams: best -5.2, median -27.1 se11-04T22:00, 16 exams: best -6.4, median -27.0 se11-04T23:00, 17 exams: best -5.3, median -27.4 se11-05T00:00, 16 exams: best -4.8, median -23.9 se11-05T01:00, 17 exams: best -5.3, median -21.1 se11-05T02:00, 16 exams: best -4.6, median -23.4 se11-05T03:00, 16 exams: best -4.8, median -22.3 se11-05T04:00, 17 exams: best -7.5, median -19.3 se11-05T05:00, 16 exams: best -3.0, median -16.0 se11-05T06:00, 16 exams: best -7.1, median -17.0 se11-05T07:00, 17 exams: best -5.9, median -19.4 se11-05T08:00, 16 exams: best -4.3, median -17.1 se11-05T09:00, 17 exams: best -3.6, median -12.7 se11-05T10:00, 16 exams: best -1.5, median -14.6 se11-05T11:00, 17 exams: best -4.3, median -17.6 se11-05T12:00, 16 exams: best -2.7, median -18.1 se11-05T13:00, 18 exams: best -3.9, median -13.3 se11-05T14:00, 16 exams: best -2.8, median -10.9 se11-05T15:00, 16 exams: best -1.9, median -11.7 se11-05T16:00, 16 exams: best -1.5, median -12.0 se11-05T17:00, 17 exams: best -1.7, median -8.4 se11-05T18:00, 18 exams: best +0.0, median -10.8 se11-05T19:00, 15 exams: best -1.7, median -6.2 se11-05T20:00, 18 exams: best -2.0, median -8.0 se11-05T21:00, 13 exams: best -2.9, median -5.5 se11-05T22:00, 17 exams: best -2.1, median -6.5 se11-05T23:00, 17 exams: best +0.0, median -9.4 se11-06T00:00, 16 exams: best +0.0, median -8.8 se11-06T01:00, 17 exams: best -1.7, median -7.7 se11-06T02:00, 15 exams: best -3.8, median -8.5 se11-06T03:00, 18 exams: best -4.4, median -7.8 se11-06T04:00, 17 exams: best -2.7, median -7.7 se11-06T05:00, 16 exams: best -1.9, median -7.4 se11-06T06:00, 17 exams: best -1.7, median -8.1 se11-06T07:00, 18 exams: best -4.3, median -8.0 se11-06T08:00, 7 exams: best -1.9, median -8.1 sebestmedian(c) The yardstick: the share of duels won against crucible's fixed opponent, median of each half-day, all islands0.700.720.7411-04 morning: median 0.719 over 192 segments04 Nov am0.71911-04 afternoon: median 0.719 over 186 segments04 Nov pm0.71911-05 morning: median 0.721 over 197 segments05 Nov am0.72111-05 afternoon: median 0.727 over 197 segments05 Nov pm0.72711-06 morning: median 0.729 over 141 segments06 Nov am0.729

Fig. 5. (a) The margin each milestone set over the one before it, in standard errors, against the bar of 2. (b) Every exam against M0015 since it was made: the best and the median of each hour. (c) The yardstick: the share of duels won against crucible's fixed scripted opponent, a half-day's median over all islands.

The ladder outgrew itself thirteen times in a night, each time by less, and then stopped. The margins fell from 51.6 and 35.8 standard errors to 2.3, 2.3, 2.5 and 2.8, just over the bar. The exams explain why. M0014 won its exam winning 1.1% of duels, losing 0.4% and drawing 98.4%. M0015 won by winning 0.4%, losing none and drawing 99.6%. Since then, 811 exams have met M0015. Their median champion draws 93% of duels against it, wins 0.2% and loses 6.7%, and the best margin any reached is +1.43. In panel (b) the median has climbed from −40 to about −8 standard errors, and the best has stayed between −2 and +1.

The past self has become a net that never loses. Over the same days the islands' champions have taken less and less pillbox damage, from 0.29 to 0.06 of a shell's worth a duel. Their yardstick has not moved: 0.719 of duels won against the fixed opponent on 4 November, 0.729 now. The populations have found what coevolution's literature calls a mediocre stable state [8]: play that is safe against itself, with less to gain from winning than to lose by trying. An exam that counts wins less losses over standard errors cannot credit a net for drawing. A successor must win against a fortress, and the arena now pays for staying out of fights. Measured against the fixed opponent instead of each other [9], the islands are still where they were at 05:42 on 4 November. In the ladder's own terms, the islands have not outgrown M0015.

VIII. Compute hours, and what they bought

0 h50 h100 h150 h200 h2026-10-28: GPU 13.7 card-hours, 1.6 kWh2026-10-28: CPU 75.4 machine-hours, 6.7 kWh147528 Oct8.3 kWh2026-10-29: GPU 61.9 card-hours, 7.2 kWh2026-10-29: CPU 142.5 machine-hours, 12.0 kWh6214229 Oct19.3 kWh2026-10-30: GPU 37.4 card-hours, 4.5 kWh2026-10-30: CPU 99.6 machine-hours, 10.2 kWh3710030 Oct14.6 kWh2026-10-31: GPU 0.0 card-hours, 0.0 kWh2026-10-31: CPU 40.1 machine-hours, 5.9 kWh04031 Oct5.9 kWh2026-11-01: GPU 33.3 card-hours, 4.5 kWh2026-11-01: CPU 158.6 machine-hours, 17.5 kWh331591 Nov21.9 kWh2026-11-02: GPU 59.9 card-hours, 7.4 kWh2026-11-02: CPU 164.1 machine-hours, 18.7 kWh601642 Nov26.1 kWh2026-11-03: GPU 69.7 card-hours, 8.1 kWh2026-11-03: CPU 163.1 machine-hours, 19.4 kWh701633 Nov27.5 kWh2026-11-04: GPU 69.4 card-hours, 8.3 kWh2026-11-04: CPU 176.7 machine-hours, 22.2 kWh691774 Nov30.5 kWh2026-11-05: GPU 71.5 card-hours, 8.4 kWh2026-11-05: CPU 194.5 machine-hours, 23.4 kWh721955 Nov31.8 kWh2026-11-06: GPU 25.3 card-hours, 3.0 kWh2026-11-06: CPU 75.7 machine-hours, 8.6 kWh25766 Nov11.5 kWhGPU card-hours (3 cards: 72 a day at most)CPU machine-hoursJob-hours from events.jsonl (a job's seconds on its machine); kWh from the planner's energy tally. 31 Oct: the fleet was shut down.

Fig. 6. Job-hours a day: the three cards' (blue; at most 72 a day) and the CPU machines' (orange), with the day's energy beneath. The fleet was shut down on 31 October.

Since 28 OctoberGPU (3 cards)CPU (about 10 machines)
Job-hours442.1 card-hours (25.5%)1,290.3 machine-hours
Energy, cost at 17¢ a kWh52.9 kWh (26.8%), $9.00144.5 kWh, $24.56
Now, a dayabout 70 card-hours, 8.3 kWh, $1.41about 185 machine-hours, 23 kWh, $3.95
Since the world arena (3 Nov 23:00)169.1 card-hours—
Since the last milestone (4 Nov 05:42)149.1 card-hours, about $4.20—
What reached main1 net file, by hand32 generations, 12 moves of main

Table IV. Job-hours are each job's seconds on its machine, from events.jsonl; a CPU job uses the whole machine and a GPU job uses its card. Energy is the planner's tally (plan/timeline-bins.json): measured where a machine has a counter, and modelled where it has none, as on the Xeons. The price is power.json's guess until Paul sets his own.

The cards are cheap, and lately they have bought nothing the game uses. The three cards draw about 8.3 kWh a day, $1.41 at the guessed price. That is a quarter of the fleet's energy, and they run near 99% of the time [2]. Since 28 October those hours bought the following:

  • 15 milestones. Thirteen of them came in the first six and a half hours of the world arena.
  • One shipped net, M0015 as the Gladiator, committed by hand. It is +4.99 ± 2.08 a seat better than the Duelist it replaced, and −2.53 ± 1.21 against the rules: a better opponent style, but not the brain.
  • Four clone rounds, none better than the Scholar.
  • The films and the Growth page.

Since M0015, the last thing that could ship, the cards have run 149 card-hours, about $4.20 of electricity, with no milestone, no ship and no read of any kind for the line.

IX. Can it be justified?

In money, yes. In what it hands the game, not now. The honest justification is a change, not more hours. The cards would otherwise idle: a crucible job takes a card, not the CPU lanes on the same machines. So their cost is the electricity, about $1.41 a day, plus the attention their pages and films take. Against that, the arena has stood still for two days, and its exam cannot see the only direction left open to it. Six transitions, each small, each with a number to watch. None is built; each waits on Paul.

  1. Make the exam able to see progress again. Read a champion against a milestone over decisive duels only, and require it to be no worse against the fixed yardstick. Or keep the exam and change the arena so that not losing is not enough: draws cost more than they do now, or the arena shrinks as the duel goes on. Watch: a milestone within a day, and the yardstick above 0.73.
  2. Point a card at what the line uses. The clone's training takes one to five minutes of card time and runs every 12 hours. More rounds with more recorded games, or imitation of the line's head for the Scholar, would turn card-hours into reads the game can use. Watch: a clone round within 2 errors of the Scholar.
  3. Or rest two of the three islands while the ladder stands. That saves about 5.5 kWh, roughly $0.95, a day, and keeps one island searching. This is the option if neither 1 nor 2 is wanted.
  4. Key the proof's pool on the line's dials, not its commit. Two heads with the same promotions over the same main are the same question. Pooling them would have kept 6 of the last 26 pools instead of starting again. Watch: commit-to-main time under the present median of 4.6 h.
  5. Say what was kept. Show the proof's read beside the held-out claim on the trailer, the montage, the Flow and the run detail, and shrink a claim before showing it. An empirical-Bayes shrinkage toward the line's own record of 0.28 is the simplest honest version [7]. Watch: nothing in orrery shows a claim without its proof.
  6. Read the brain against a fixed past self. Every number in section VI is a step, a line over the main before it. Once a week, read today's line against a frozen brain, such as main as it stood after score 1 (43f9f67). That tells "outgrowing past versions" in one number, as the islands' yardstick does for them [9]. Watch: that number, week on week.

A smaller fault was found on the way. The bridge's comment calls its read paired, but its two errors are combined as if independent. That makes its bar stricter than the one written, so a real improvement is less likely to ship. Pairing the two censuses' seats would put the bar where the comment says it is.

X. Post-working reality

The pipeline works. Questions are asked by themselves, read on machines nobody watches, committed, built everywhere, filmed and proved. What changes when a system works is the question it can be asked. Before, the question was whether it runs. Now it is what it keeps, and the record answers in three parts.

What is kept is smaller than what is claimed. Each step's honest read, chosen for passing, overstates the step about three and a half times. The steps still add up: three generations since score 1 made main +1.6 a seat better, proved, and four more wait. A working system's improvements are real and modest, and an account that adds up claims will overstate them every time.

Outgrowing yourself is fast, then hard, and can stop for reasons that are not about skill. The islands beat their past selves thirteen times in a night, and then made a past self that cannot lose. Whether a successor is better now depends on what the exam can see, not on how many hours it runs. The line has the same shape more slowly. Main's first moves through the proof were +1.4 to +3.2 a seat. Its recent ones are +0.7 to +0.9, and the line now waiting reads +0.45. Diminishing returns are what working looks like from inside, as the Red Queen's measurements found for coevolving populations long before this one [9].

Transitions come from measurement, not more compute. Each of the six recommendations changes what is measured or where it is pooled; none adds hours. The cards are cheap enough to keep. What would justify them is a target they can still move, an exam that can see them move it, and a road from the result to the game that something actually travels.

XI. What is not shown, and what is open

  • The heads overlap. Lines that share generations are not independent reads, so the fit's ± 0.03 is too narrow. The ratio of sums (0.32) and the two single-generation cases agree with it.
  • The units changed. A seat's score before 2 November, before 4 November at 13:00, and after, are three different measures. No sum here crosses those boundaries except the claimed-against-kept fit, which compares each line with its own proof at the same time.
  • When main moved comes from one reflog, the coordinator's (this Mac's) record of its own pushes. The commits' dates cannot be used: a proof that passes fast-forwards main, and the commits keep the dates they were made on the line.
  • Energy is partly modelled. The Xeons have no energy counter, and the cards' energy is the card's lane only. The host's CPU is counted in its CPU lane.
  • No recommendation is built, and none has been read. The fixed-past-self read (6) needs a census that crosses dials added since score 1; how to seat old values in today's table is open.
  • Clone round 5 is due about 11:10 today and is not in Table II.

XII. How to make it again

python3 -I tools/report/outgrowing.py QUEUE docs/outgrowing reads the queue and treadcore's git, then writes docs/outgrowing/data.json and the six figures as inline SVG on the page's own colours. sh tools/report/all.sh builds this page with the rest. Figure colours: blue for the GPU, orange for the line, green for main. The light steps were deepened for the report's tan paper and validated for colour vision (worst pair ΔE 7.7, with every series labelled); the dark steps are the reference palette's (ΔE 9.4).

References

[1] orrery, The Whole Line: One Table, Read by the Planner, orrery and This Report, lab report, 1 November 2026.

[2] orrery, The Duty Cycle: The Fleet That Trains the Bots Is 98% Busy and Waits on No One, lab report, 5 November 2026, with addenda XIV to XVI.

[3] orrery, Three Generations, Filmed: The Line from Question to Commit, a Crowd of Duels That Are Really Different, and Every Wire in Its Node's Colour, lab report, 5 November 2026.

[4] C. D. Rosin and R. K. Belew, "New methods for competitive coevolution," Evolutionary Computation, vol. 5, no. 1, pp. 1–29, 1997.

[5] D. A. Pomerleau, "ALVINN: An autonomous land vehicle in a neural network," in Advances in Neural Information Processing Systems 1, D. S. Touretzky, Ed. San Mateo, CA: Morgan Kaufmann, 1989, pp. 305–313.

[6] J. P. A. Ioannidis, "Why most discovered true associations are inflated," Epidemiology, vol. 19, no. 5, pp. 640–648, 2008.

[7] B. Efron, "Tweedie's formula and selection bias," Journal of the American Statistical Association, vol. 106, no. 496, pp. 1602–1614, 2011.

[8] S. G. Ficici and J. B. Pollack, "Challenges in coevolutionary learning: Arms-race dynamics, open-endedness, and mediocre stable states," in Artificial Life VI: Proc. 6th Int. Conf. Artificial Life, C. Adami, R. K. Belew, H. Kitano, and C. E. Taylor, Eds. Cambridge, MA: MIT Press, 1998, pp. 238–247.

[9] D. Cliff and G. F. Miller, "Tracking the Red Queen: Measurements of adaptive progress in co-evolutionary simulations," in Advances in Artificial Life: Proc. 3rd European Conf. Artificial Life (ECAL '95), Lecture Notes in Computer Science, vol. 929. Berlin: Springer, 1995, pp. 200–218.

[10] W. G. Cochran, "The combination of estimates from different experiments," Biometrics, vol. 10, no. 1, pp. 101–129, 1954.

[11] P. Armitage, C. K. McPherson, and B. C. Rowe, "Repeated significance tests on accumulating data," Journal of the Royal Statistical Society, Series A, vol. 132, no. 2, pp. 235–244, 1969.