Row and column lookup tables, learned from a billion moves
A lookup-table evaluator that reads every full row and full column of the board as one pattern, learns its numbers by temporal-difference play on the Rust engine, and replaces the hand-written leaf inside the depth-3 fair search.
Look at the board through many small windows, look each window's contents up in a table of learned numbers, and add the numbers.
On this page
- A row-and-column n-tuple network trained by temporal-coherence TD on a billion engine moves beats the frozen fair leaf inside the same depth-3 search
- A fill-conditioned n-tuple leaf: bucketing every table by how full the board is, warm-started from the frozen tables, beats the frozen tables inside the same depth-3 search
- The frozen row-and-column n-tuple leaf is search-compatible: a fourth completed ply of the fair search raises its mean score, by at least as much as it raises the fair leaf
- Row-and-column n-tuple network trained by temporal-coherence TD on the Rust engine, screened as the leaf of the depth-3 seven-stratum fair search
- Fill-conditioned tables warm-started from the frozen n-tuple leaf, beside an unconditioned continuation and two no-training edits of the frozen tables, screened once on a fresh 512-game block at depth 3 and depth 4
- The frozen n-tuple tables as the leaf of the depth-4 fair search: a two-by-two leaf-by-depth screen on a fresh block
- Fresh-block replication of the row-and-column n-tuple leaf at larger scale: wider tables trained until the validation margins plateau, screened beside the first candidate
- Row-and-column n-tuple network trained by temporal-coherence TD on the Rust engine, screened as the leaf of the depth-3 seven-stratum fair search
- Fresh-block replication of the row-and-column n-tuple leaf at larger scale: wider tables trained until the validation margins plateau, screened beside the first candidate
- The frozen n-tuple tables as the leaf of the depth-4 fair search: a two-by-two leaf-by-depth screen on a fresh block
- Fill-conditioned tables warm-started from the frozen n-tuple leaf, beside an unconditioned continuation and two no-training edits of the frozen tables, screened once on a fresh 512-game block at depth 3 and depth 4
The problem
Every game tree search ends the same way: after a few imagined moves it stops and asks a leaf evaluator how good the board is. The frozen fair leaf is a sum of eighteen hand-written terms, and a diagnostic on the evolved NNUE page measured that term carrying about 95% of the spread between columns at every search depth.
The leaf evaluator is where the decisions are made.
This family's earlier n-tuple networks looked at the board through four-to-six-cell windows trained on tens of thousand games, after which they were played on their own under a search that followed one guessed outcome instead of averaging over chance. After establishing it as a promising research direction, a much larger network was trained on millions of games with a full set of seven-cell row and column windows.
Proposed solution
Read every full row and every full column as one seven-cell pattern. Each cell has ten possible states (empty, a number from 1 to 7, an untouched gray disc, or a cracked one), so a line has 107 (ten million) possible patterns and each pattern gets its own learned number. Thirty two-by-three windows and thirty three-by-two windows add local structure between lines. The column tables are also split by the number of drops left before the next rise. The whole evaluator is the sum of 74 looked-up numbers, from about 480 million table entries.
The numbers are learned the way 2048 evaluators were: the program plays complete games with a one-move-ahead policy over the tables, and after each move, it nudges its entries toward the points the move scored plus its own estimate of the next board. Temporal coherence gives every entry its own step size, which shrinks once that entry's errors stop pointing the same way. The policy reads the visible board and the moves until the next rise, and nothing else; the visible next disc is deliberately not an input, so one learned number serves every column that leads to the same board.
Experiment design
- The Rust bitboard engine keeps the board as seven packed column words, four bits per cell. A column's pattern number comes from its word through two small lookup tables, without unpacking a single cell. Row patterns come from a nibble gather across the seven words, and windows from two or three adjacent nibbles of neighbouring words. Feature extraction costs about forty nanoseconds per board.
- Training: Thirty-two threads play games at once on the shared tables, each thread picking the column whose expected value, averaged over the same seven covered-disc reveal samples the fair search uses, is highest. After every move the previous board's entries move toward the observed reward plus the new board's value. Tables start optimistic, at twenty row-rises of value for any board, so unexplored boards look attractive.
- Validation: At fixed move counts the tables are dropped into the real depth-3, seven-stratum fair search and played on 64 fixed training-role games against the same search with the frozen fair leaf, and also played directly one ply. The point with the largest paired margin is frozen as the candidate.
- Tuning parameters: Six configurations train for two hundred million moves each on the same seeds: with and without rise-phase tables, with and without the windows, windows only (which tests whether the full lines are what matters), and a smaller step size. The one with the largest final validation margin is trained again from scratch for four billion moves.
- Screen: The frozen candidate plays 256 games on a seed block nothing has ever opened, as the leaf of the depth-3 search, against three arms on the identical seeds: the frozen fair leaf in the same search (the comparator), the same tables played directly one ply, and the fair leaf at depth 4 (the program's standing reference).
What happened
RUN-20260905T193006Z-4fbeb4e5 under EX-20260905-ntuple-scale-tc-td-leaf-d3-535b2620 · run record lifecycle: completedsnapshot 2026-09-05T21:57:14Z- 0 · CHECK gatesdone15 gates passed on the probe block
- A · pilot armsdone6 of 6 arms trained for 200,003,947 moves; arm C selected
- B · main rundone4,000,004,271 moves, 20 validation points on undefined paired games; best margin +270,023 at 1,400,240,319 moves
- C · freezedonecandidate frozen, SHA-256 0ade9d4e4080…
- D · held-out screendonepreregistered gate passed
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260905T193006Z-4fbeb4e5.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts.
On 256 never-read paired games, the tables as the leaf of the depth-3 search averaged 484,577 points and 140 moves. The same search with the frozen fair leaf averaged 314,438 points and 93 moves on the identical games. The paired difference is 170,139 points with a bootstrap 95% lower bound of 130,499, both halves of the block positive, 167 wins to 89, and a higher lower quartile, so every criterion of the preregistered gate passes (RS-20260905T215332Z-95d18a5a).
This is the first learned evaluator produced by this research project which consistently outperforms the hand-written fair leaf evaluator.
The fair leaf at depth 4, which is the current standing reference, averaged 377,803 on the same games, and the tables at depth 3 beat it by 106,775 paired with a lower bound of 62,574. The tables played directly one ply averaged 281,441 and lost to the fair leaf at depth 3 by 32,997, so the search over the tables is worth about 200,000 points on these games.
Six configurations, one budget each
Training arms: paired margin over the fair leaf at the final validation point
- positive: candidate above its reference
- negative: candidate below its reference
- recorded detection floor (±)
- A: rows,cols,win23,win32,phase=cols, alpha 1
- final +95,051, best +170,874 at 100,030,499 moves after 200,003,947 moves
- B: rows,cols,win23,win32,phase=none, alpha 1
- final -70,587, best -35,091 at 100,018,759 moves after 200,002,183 moves
- C: rows,cols,win23,win32,phase=all, alpha 1
- final +123,950, best +123,950 at 200,002,957 moves after 200,002,957 moves
- D: rows,cols,phase=cols, alpha 1
- final +26,951, best +94,015 at 150,030,873 moves after 200,002,392 moves
- E: win23,win32,phase=none, alpha 1
- final -83,261, best -80,696 at 150,025,673 moves after 200,001,766 moves
- F: rows,cols,win23,win32,phase=cols, alpha 0.25
- final +73,116, best +112,886 at 150,038,586 moves after 200,003,528 moves
- selected
- arm C (rows,cols,win23,win32,phase=all, alpha 1)
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260905T193006Z-4fbeb4e5.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/analysis.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/A/progress.jsonlruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/A/val-000050013622.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/A/val-000100030499.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/A/val-000150047792.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/A/val-000200003947.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/B/progress.jsonlruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/B/val-000050008766.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/B/val-000100018759.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/B/val-000150029502.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/B/val-000200002183.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/C/progress.jsonlruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/C/val-000050009591.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/C/val-000100022675.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/C/val-000150036213.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/C/val-000200002957.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/D/progress.jsonlruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/D/val-000050009273.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/D/val-000100019839.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/D/val-000150030873.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/D/val-000200002392.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/E/progress.jsonlruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/E/val-000050007312.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/E/val-000100016374.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/E/val-000150025673.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/E/val-000200001766.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/F/progress.jsonlruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/F/val-000050010817.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/F/val-000100024537.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/F/val-000150038586.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/F/val-000200003528.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/pilot/selection.json
The pilot picked arm C, every table family conditioned on the rise clock, at a final validation margin of 123,950. The two arms without rise-phase column tables, and the windows-only arm, all lost to the fair leaf on the validation block; the arms with full rows and columns all beat it.
Main run: the validation line-up as training proceeds
- tables as the depth-3 leaf
- fair leaf in the same search (same games)
- tables played directly, one ply
- training games (one-ply play, mean per chunk)
- training moves
- 4,000,004,271
- training games
- 45,852,198
- table entries
- 1,000,000,000
- moves per second
- 1,956,636
- wall time
- 41 min
- training-game mean (latest chunk)
- 313,483 / 93.1 moves
- latest validation, tables as leaf
- 530,088
- latest validation, fair leaf
- 337,611
- latest paired margin
- +192,478 (lower bound +113,016)
- wins / ties / losses
- 43 / 0 / 21
- latest validation, direct play
- 320,977
- table entries updated at least once
- 119,007,526
- best validation point
- +270,023 at 1,400,240,319 moves
- validation block
- undefined paired games, training role
- illegal / incomplete decisions
- 0 / 0
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260905T193006Z-4fbeb4e5.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/analysis.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/progress.jsonlruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-000200027819.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-000400060957.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-000600095322.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-000800131078.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-001000167066.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-001200203606.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-001400240319.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-001600277123.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-001800315771.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-002000352773.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-002200391703.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-002400429413.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-002600469503.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-002800506807.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-003000545916.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-003200585530.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-003400627531.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-003600668274.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-003800707333.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/val-004000004271.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/candidate-weights.sha256
The main run trained for four billion moves in 42 minutes, about 46 million one-ply games, and all twenty validation points beat the fair leaf. The margin on the 64-game block was noisy from point to point, between 116,000 and 270,000, and the largest, at 1.4 billion moves, became the candidate. About 99 million of the billion table entries had been updated at that point.
Held-out screen: tables as the depth-3 leaf minus the fair leaf in the same search
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean +170,139 (band: 95 % bootstrap)
- paired mean difference
- +170,139 points
- bootstrap 95% lower bound
- +130,499
- Student-t 95% lower bound
- +130,560
- bootstrap 95% upper bound
- +209,881
- wins / ties / losses
- 167 / 0 / 89
- first half / second half
- +198,575 / +141,704
- paired sd
- 383,607
- detection floor
- 39,440
- moves, paired mean difference
- +47.63
- tables as the depth-3 leaf: mean
- 484,577
- fair leaf in the depth-3 search: mean
- 314,438
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260905T193006Z-4fbeb4e5.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/screen/heldout.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.json
Held-out screen: tables as the depth-3 leaf minus the fair leaf in the depth-4 search
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean +106,775 (band: 95 % bootstrap)
- paired mean difference
- +106,775 points
- bootstrap 95% lower bound
- +62,574
- Student-t 95% lower bound
- +61,891
- bootstrap 95% upper bound
- +151,706
- wins / ties / losses
- 160 / 0 / 96
- first half / second half
- +109,211 / +104,338
- paired sd
- 435,009
- detection floor
- 44,724
- moves, paired mean difference
- +30.88
- tables as the depth-3 leaf: mean
- 484,577
- fair leaf in the depth-4 search: mean
- 377,803
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260905T193006Z-4fbeb4e5.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/screen/heldout.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.json
The screen arms and the preregistered gate
| arm | mean | median | lower quartile | best game | moves | clears / move | reveals / move |
|---|---|---|---|---|---|---|---|
| tables as the depth-3 leaf | 484,577 | 407,474 | 212,820 | 2,295,869 | 140.2 | 2.107 | 1.190 |
| tables played directly, one ply | 281,441 | 230,850 | 157,751 | 815,564 | 84.3 | 1.922 | 1.061 |
| fair leaf in the depth-3 search | 314,438 | 250,821 | 175,832 | 1,221,000 | 92.6 | 1.985 | 1.103 |
| fair leaf in the depth-4 search | 377,803 | 282,077 | 192,562 | 1,794,652 | 109.3 | 2.049 | 1.150 |
- pass screen artifact: illegalDecisions 0 and incompleteDecisions 0 in every arm
- pass bootstrap 95% lower bound of candidate-d3s7 minus fair-d3s7 > 0 · observed +130,499
- pass Student-t 95% lower bound > 0 · observed +130,560
- pass paired mean delta > 0 in both halves · observed [198574.609375,141704.171875]
- pass candidate-d3s7 Q25 >= fair-d3s7 Q25 · observed [212819.75,175831.5]
- pass every criterion
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260905T193006Z-4fbeb4e5.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/screen/heldout.jsonruns/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.json
The replication at larger scale
The first run left two questions open: whether the margin holds on seeds nothing has ever read, and whether more scale helps. A second experiment, EX-20260906-ntuple-scale-replication-wide-plateau-f627f07a, asks both on the same screen. It trains a wider evaluator from scratch on a fresh training block: the same rows, columns and small windows as before, plus 2-by-4 and 4-by-2 windows with a hundred million patterns each, 5.8 billion table entries in all. There is no fixed move budget. Every five hundred million moves the tables are dropped into the depth-3 search and played on a fresh block of 256 training-role games against the fair leaf, and training stops once the mean margin of the last four validation points is no longer above the mean of the four before them. The frozen candidate then plays 512 held-out games beside the first run's frozen tables on the identical seeds, so one screen reads the replication of the first result and the effect of the extra scale at the same time.
RUN-20260906T013222Z-ba0ee34f under EX-20260906-ntuple-scale-replication-wide-plateau-f627f07a · run record lifecycle: completedsnapshot 2026-09-06T04:01:15Z- 0 · CHECK gatesdone18 gates passed on the probe block
- A · throughput smokedone40,002,639 moves on the probe block at 1,240,481 moves per second, 5,800,000,000 table entries; tables discarded
- B · main run, until the margins plateaudone4,500,370,590 moves, 9 validation points on 256 paired games; best margin +187,500 at 2,000,153,332 moves; stopped by the plateau rule at point 9: last 4 points mean +165,666, the 4 before +173,783
- C · freezedonecandidate frozen, SHA-256 824b0a39a90d…; first run's tables verified, SHA-256 0ade9d4e4080…
- D · held-out screendonepreregistered gate passed; replication of the first run passed; scale verdict inconclusive
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T013222Z-ba0ee34f.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts.
The result came in two parts. On the 512 fresh games, the first run's frozen tables, unchanged, scored 487,066 as the depth-3 leaf against 326,717 for the fair leaf in the same search: a paired margin of 160,349 with a bootstrap 95% lower bound of 129,753, both halves positive, 330 wins to 182 and a higher lower quartile (RS-20260906T040113Z-6ba93171, run valid, outcome pass, screen tier on public development seeds). The first result replicates on seeds nothing had read, within a few thousand points of its own screen.
The wider tables passed the same gate on the same games, 481,869 against 326,717, a margin of 155,153 with a lower bound of 126,819. Against the first run's tables they came out 5,196 behind, with bootstrap bounds from minus 40,535 to plus 29,158 and 267 wins to 244, so the preregistered scale verdict is inconclusive. Six times the entries, and a run that stopped on its own, bought nothing this screen could see. Both sets of tables beat the fair leaf at depth 4 on these games by more than 84,000.
One thing did move with scale. Played directly, one move ahead and with no search at all, the wide tables averaged 328,039, level with the fair leaf's depth-3 search (a margin of 1,323 with bounds either side of zero), where the first run's tables lost to that search by 32,394 on the same games. The extra windows made a better one-ply player and the same leaf.
Main run: the validation line-up as training proceeds
- tables as the depth-3 leaf
- fair leaf in the same search (same games)
- tables played directly, one ply
- training games (one-ply play, mean per chunk)
- training moves
- 4,500,370,590
- training games
- 47,477,538
- table entries
- 5,800,000,000
- moves per second
- 1,184,973
- wall time
- 1.2 h
- training-game mean (latest chunk)
- 344,087 / 101.7 moves
- latest validation, tables as leaf
- 498,951
- latest validation, fair leaf
- 337,539
- latest paired margin
- +161,412 (lower bound +120,449)
- wins / ties / losses
- 159 / 0 / 97
- plateau rule, mean of the last 4 points / the 4 before
- +165,666 / +173,783 (stopped)
- latest validation, direct play
- 362,132
- table entries updated at least once
- 279,110,607
- best validation point
- +187,500 at 2,000,153,332 moves
- stopped by
- the plateau rule after 9 validation points
- validation block
- 256 paired games, training role
- illegal / incomplete decisions
- 0 / 0
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T013222Z-ba0ee34f.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/analysis.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/progress.jsonlruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/config.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/val-000500034572.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/val-001000072627.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/val-001500111255.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/val-002000153332.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/val-002500198069.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/val-003000240102.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/val-003500281390.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/val-004000326496.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/val-004500370590.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/stop.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/candidate-weights.sha256runs/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/prior-weights.sha256
The main run stopped itself at the ninth validation point, 4.5 billion moves, when the last four margins averaged 165,666 against 173,783 for the four before them. The candidate is the fourth point, 2 billion moves, where the margin on the 256 fresh validation games was 187,500. All nine points beat the fair leaf; the curve rose for the first two billion moves and then wandered between 142,000 and 188,000. About 231 million of the 5.8 billion entries had been updated at the candidate's point.
Held-out screen: tables as the depth-3 leaf minus the fair leaf in the same search
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean +155,153 (band: 95 % bootstrap)
- paired mean difference
- +155,153 points
- bootstrap 95% lower bound
- +126,819
- Student-t 95% lower bound
- +126,919
- bootstrap 95% upper bound
- +183,307
- wins / ties / losses
- 333 / 0 / 179
- first half / second half
- +159,105 / +151,201
- paired sd
- 387,690
- detection floor
- 28,185
- moves, paired mean difference
- +43.52
- tables as the depth-3 leaf: mean
- 481,869
- fair leaf in the depth-3 search: mean
- 326,717
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T013222Z-ba0ee34f.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-fair-d4s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-candidate-1ply.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d4s7.json
Held-out screen: first run's tables as the depth-3 leaf minus the fair leaf in the same search
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean +160,349 (band: 95 % bootstrap)
- paired mean difference
- +160,349 points
- bootstrap 95% lower bound
- +129,753
- Student-t 95% lower bound
- +129,626
- bootstrap 95% upper bound
- +191,264
- wins / ties / losses
- 330 / 0 / 182
- first half / second half
- +133,349 / +187,349
- paired sd
- 421,880
- detection floor
- 30,670
- moves, paired mean difference
- +44.97
- first run's tables as the depth-3 leaf: mean
- 487,066
- fair leaf in the depth-3 search: mean
- 326,717
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T013222Z-ba0ee34f.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-fair-d4s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-candidate-1ply.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d4s7.json
Held-out screen: wider tables minus the first run's tables, both as the depth-3 leaf
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean -5,196 (band: 95 % bootstrap)
- paired mean difference
- -5,196 points
- bootstrap 95% lower bound
- -40,535
- Student-t 95% lower bound
- -40,060
- bootstrap 95% upper bound
- +29,158
- wins / ties / losses
- 267 / 1 / 244
- first half / second half
- +25,756 / -36,148
- paired sd
- 478,728
- detection floor
- 34,803
- moves, paired mean difference
- -1.45
- tables as the depth-3 leaf: mean
- 481,869
- first run's tables as the depth-3 leaf: mean
- 487,066
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T013222Z-ba0ee34f.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-fair-d4s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-candidate-1ply.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d4s7.json
The screen arms and the preregistered gate
| arm | mean | median | lower quartile | best game | moves | clears / move | reveals / move |
|---|---|---|---|---|---|---|---|
| tables as the depth-3 leaf | 481,869 | 393,375 | 241,610 | 2,487,485 | 139.4 | 2.109 | 1.193 |
| tables played directly, one ply | 328,039 | 282,097 | 178,990 | 1,224,664 | 97.3 | 1.976 | 1.095 |
| first run's tables as the depth-3 leaf | 487,066 | 385,961 | 232,825 | 3,236,265 | 140.8 | 2.112 | 1.195 |
| first run's tables played directly, one ply | 294,323 | 247,261 | 173,121 | 1,270,003 | 87.9 | 1.935 | 1.066 |
| fair leaf in the depth-3 search | 326,717 | 269,648 | 192,040 | 1,714,793 | 95.9 | 2.003 | 1.114 |
| fair leaf in the depth-4 search | 397,154 | 320,815 | 202,360 | 1,707,841 | 114.5 | 2.060 | 1.155 |
- pass screen artifact: illegalDecisions 0 and incompleteDecisions 0 in every arm
- pass bootstrap 95% lower bound of candidate-d3s7 minus fair-d3s7 > 0 · observed +126,819
- pass Student-t 95% lower bound > 0 · observed +126,919
- pass paired mean delta > 0 in both halves · observed [159104.70703125,151200.68359375]
- pass candidate-d3s7 Q25 >= fair-d3s7 Q25 · observed [241609.5,192039.5]
- pass every criterion
Replication: the first run's frozen tables on this fresh block
- pass screen artifact: illegalDecisions 0 and incompleteDecisions 0 in every arm
- pass bootstrap 95% lower bound of prior-d3s7 minus fair-d3s7 > 0 · observed +129,753
- pass Student-t 95% lower bound > 0 · observed +129,626
- pass paired mean delta > 0 in both halves · observed [133348.80078125,187349.16796875]
- pass prior-d3s7 Q25 >= fair-d3s7 Q25 · observed [232825,192039.5]
- pass every replication criterion
Scale: the wider tables against the first run's tables, same seeds
- preregistered verdict
- inconclusive
- paired mean difference
- -5,196 points
- bootstrap 95% lower bound
- -40,535
- Student-t 95% lower bound
- -40,060
- bootstrap 95% upper bound
- +29,158
- detection floor
- 34,803
- wins / ties / losses
- 267 / 1 / 244
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T013222Z-ba0ee34f.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-fair-d4s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-candidate-1ply.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-candidate-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d4s7.json
The fourth ply
Both screens played the tables inside the depth-3 search. A third experiment, EX-20260906-ntuple-scale-depth4-frozen-tables-54aed6a3, asks what one more completed ply is worth to this leaf. Nothing is trained: the first run's frozen tables, hash-verified, play as the leaf of the depth-4 search with seven chance strata (the reference search's exact configuration) and as the depth-3 leaf on 512 games from a fourth block nothing had read, beside the fair leaf in both searches on the same games. The gate reads the tables' own depth step; two readings sit beside it, fixed in advance: whether the tables still beat the fair leaf at depth 4, and whether the fourth ply is worth more, less or the same on the tables as on the fair leaf, from the per-game difference of the two depth steps.
RUN-20260906T081306Z-e62d9837 under EX-20260906-ntuple-scale-depth4-frozen-tables-54aed6a3 · run record lifecycle: runningsnapshot 2026-09-06T17:27:33Z- 0 · CHECK gatesdone19 gates passed on the probe block, on the frozen tables
- A · freezedonethe first run's tables verified unchanged, SHA-256 0ade9d4e4080…; nothing is trained
- B · held-out screen, four armsdonepreregistered gate passed; margin over the fair leaf at depth 4 kept; depth-step interaction inconclusive
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T081306Z-e62d9837.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts.
The fourth ply lifted the tables from 465,675 to 516,155 points and from 135 to 149 moves on the 512 games, a paired gain of 50,479 with a bootstrap 95% lower bound of 14,707, both halves positive and a higher lower quartile (RS-20260906T171746Z-1623f833, run valid, outcome pass, screen tier on public development seeds). The gate passes. On the same games the fair leaf's fourth ply was worth 49,599, and the per-game difference between the two depth steps is 881 points with bounds from minus 40,932 to plus 42,867: the preregistered verdict is inconclusive, so the tables pay for depth about as well as the hand-written leaf does, and no better or worse than this screen can see. At depth 4 the tables beat the fair leaf in the same search by 133,588 with a lower bound of 102,051, so the margin survives the extra ply intact. The depth-4 search costs about 36 times the depth-3 search's logical work on these games.
Held-out screen: tables as the depth-4 leaf minus the same tables as the depth-3 leaf
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean +50,479 (band: 95 % bootstrap)
- paired mean difference
- +50,479 points
- bootstrap 95% lower bound
- +14,707
- Student-t 95% lower bound
- +14,086
- bootstrap 95% upper bound
- +86,224
- wins / ties / losses
- 284 / 0 / 228
- first half / second half
- +67,335 / +33,623
- paired sd
- 499,740
- detection floor
- 36,331
- moves, paired mean difference
- +13.93
- first run's tables as the depth-4 leaf: mean
- 516,155
- first run's tables as the depth-3 leaf: mean
- 465,675
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T081306Z-e62d9837.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d4s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-prior-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-fair-d4s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-fair-d3s7.json
Held-out screen: fair leaf at depth 4 minus fair leaf at depth 3
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean +49,599 (band: 95 % bootstrap)
- paired mean difference
- +49,599 points
- bootstrap 95% lower bound
- +25,751
- Student-t 95% lower bound
- +25,578
- bootstrap 95% upper bound
- +73,244
- wins / ties / losses
- 289 / 0 / 223
- first half / second half
- +45,189 / +54,009
- paired sd
- 329,836
- detection floor
- 23,979
- moves, paired mean difference
- +12.72
- fair leaf in the depth-4 search: mean
- 382,567
- fair leaf in the depth-3 search: mean
- 332,968
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T081306Z-e62d9837.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d4s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-prior-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-fair-d4s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-fair-d3s7.json
Held-out screen: tables as the depth-4 leaf minus the fair leaf in the same depth-4 search
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean +133,588 (band: 95 % bootstrap)
- paired mean difference
- +133,588 points
- bootstrap 95% lower bound
- +102,051
- Student-t 95% lower bound
- +101,161
- bootstrap 95% upper bound
- +165,801
- wins / ties / losses
- 314 / 0 / 198
- first half / second half
- +137,477 / +129,699
- paired sd
- 445,273
- detection floor
- 32,371
- moves, paired mean difference
- +38.3
- first run's tables as the depth-4 leaf: mean
- 516,155
- fair leaf in the depth-4 search: mean
- 382,567
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T081306Z-e62d9837.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d4s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-prior-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-fair-d4s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-fair-d3s7.json
The screen arms and the preregistered gate
| arm | mean | median | lower quartile | best game | moves | clears / move | reveals / move |
|---|---|---|---|---|---|---|---|
| first run's tables as the depth-3 leaf | 465,675 | 352,447 | 212,969 | 2,674,728 | 134.8 | 2.099 | 1.185 |
| first run's tables as the depth-4 leaf | 516,155 | 392,497 | 233,182 | 2,716,683 | 148.7 | 2.126 | 1.203 |
| fair leaf in the depth-3 search | 332,968 | 262,339 | 174,599 | 1,745,301 | 97.7 | 2.011 | 1.122 |
| fair leaf in the depth-4 search | 382,567 | 303,015 | 208,481 | 2,634,604 | 110.4 | 2.046 | 1.146 |
- pass screen artifact: illegalDecisions 0 and incompleteDecisions 0 in every arm
- pass bootstrap 95% lower bound of prior-d4s7 minus prior-d3s7 > 0 · observed +14,707
- pass Student-t 95% lower bound > 0 · observed +14,086
- pass paired mean delta > 0 in both halves · observed [67335.2890625,33623.49609375]
- pass prior-d4s7 Q25 >= prior-d3s7 Q25 · observed [233181.75,212968.75]
- pass every criterion
The fourth ply on the tables and on the fair leaf
The fourth ply's paired gain on the tables is +50,479 (bounds +14,707 to +86,224), and on the fair leaf on the same games +49,599 (bounds +25,751 to +73,244). Their per-game difference is +881 with bounds -40,932 to +42,867 and a detection floor of 42,550; the preregistered verdict is inconclusive.
Persistence: the tables against the fair leaf, both at depth 4
- pass screen artifact: illegalDecisions 0 and incompleteDecisions 0 in every arm
- pass bootstrap 95% lower bound of prior-d4s7 minus fair-d4s7 > 0 · observed +102,051
- pass Student-t 95% lower bound > 0 · observed +101,161
- pass paired mean delta > 0 in both halves · observed [137477.09765625,129699.0859375]
- pass prior-d4s7 Q25 >= fair-d4s7 Q25 · observed [233181.75,208481.25]
- pass every criterion
Replication: the first run's frozen tables on this fresh block
- pass screen artifact: illegalDecisions 0 and incompleteDecisions 0 in every arm
- pass bootstrap 95% lower bound of prior-d3s7 minus fair-d3s7 > 0 · observed +102,193
- pass Student-t 95% lower bound > 0 · observed +101,741
- pass paired mean delta > 0 in both halves · observed [115330.6640625,150084.1171875]
- pass prior-d3s7 Q25 >= fair-d3s7 Q25 · observed [212968.75,174598.75]
- pass every replication criterion
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T081306Z-e62d9837.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-fair-d4s7-vs-fair-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d4s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-prior-d3s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-fair-d4s7.jsonruns/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/compare-prior-d4s7-vs-fair-d3s7.json
Tables keyed to how full the board is
The three screens above share one leaf, and its training record shows where it is weakest. The first run saved, beside its tables, the accumulators that temporal coherence keeps for every entry, and a seed-free pass over them counts how many patterns of each shape were ever updated. Of the legal seven-high column patterns, 0.98% were touched; of top-row patterns holding five or more discs, 1.06%; of column patterns with three or fewer discs, 68% to 100%. The touched entries of full lines still average the starting value, 20/74 of a rise, about 4,600 points each. A search that looks three plies ahead from a crowded board reads many entries that training never reached, each carrying the value of a fresh board, so the leaf is most optimistic where the next few moves decide whether the game goes on. And because the leaf is a sum of 74 lookups, a pattern cannot be worth one amount on an empty board and another under a rise on a full one.
A fourth experiment, EX-20260906-ntuple-fill-conditioned-continuation-a9e5cbd3, tests two repairs on one fresh block of 512 games, with the frozen tables as the comparator. The cheap one trains nothing. Every entry of the frozen file still sitting at the starting value bit for bit, 901,259,321 of the billion, is replaced: by zero, so an unfamiliar board is priced below a familiar one, or by the mean of the touched entries of the same table, rise phase and pattern occupancy, so it is priced like a typical familiar board of the same shape. The second repair gives every table five copies keyed to a global measure of fill, either the number of occupied cells (0 to 13, 14 to 20, 21 to 27, 28 to 34, 35 to 49) or the tallest column (up to 3, 4, 5, 6, 7). The copies start as exact copies of the frozen tables, so the conditioned evaluator agrees with the frozen one on every board until training pulls the copies apart. The same temporal-difference play then continues from that start with fresh step sizes, on a training block nothing had read, validated every two hundred million moves on a fresh 256-game block and stopped by a plateau rule. The 2048 literature calls this multi-stage weight promotion. A third arm continues the frozen tables the same way without any copies, so the screen can tell continued training from conditioning. The fill arm with the larger best validation margin is the candidate; the control arm's best point is the control.
The screen plays eleven arms on the 512 games: the frozen tables, the fill candidate, the control and both edits as the depth-3 leaf; the frozen tables, the fill candidate and the zeroed edit as the depth-4 leaf; the frozen and the fill tables played directly; and the fair leaf at depth 3. The gate reads the fill candidate against the frozen tables at depth 3, and six readings beside it each carry a verdict fixed in advance: the fill candidate against the control, the control against the frozen tables, each edit against the frozen tables, and the fill candidate and the zeroed edit against the frozen tables at depth 4.
RUN-20260906T201104Z-a96ea6c8 under EX-20260906-ntuple-fill-conditioned-continuation-a9e5cbd3 · run record lifecycle: completedsnapshot 2026-09-07T00:04:32Z- 0 · CHECK gatesdone27 gates passed on the probe block for each fill layout
- A · two edits of the frozen tablesdone901,259,321 of 1,000,000,000 entries were never updated; zeroed edit changed 901,259,321, class-mean edit 877,344,474
- B · three warm-started armsdone3 of 3 arms done · control: 6 validation points, best margin +210,990 (plateau) · hgt5: 10 validation points, best margin +179,760 (plateau) · occ5: 8 validation points, best margin +203,193 (plateau)
- C · selection and freezedonecandidate arm occ5, best margin +203,193 against the control arm's +210,990; training-signal check not passed; candidate SHA-256 4f2e7ccf5c14…, gates re-run on every frozen file
- D · held-out screen, eleven armsdonepreregistered gate not passed; conditioning inconclusive; zeroed edit supported; at depth 4 inconclusive
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T201104Z-a96ea6c8.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts.
Three warm-started arms, one rule each
Training arms: paired margin over the fair leaf at the final validation point
- positive: candidate above its reference
- negative: candidate below its reference
- recorded detection floor (±)
- control: rows,cols,win23,win32,phase=all, alpha 1
- final +197,769, best +210,990 at 600,112,060 moves after 1,200,228,265 moves
- hgt5: rows,cols,win23,win32,phase=all,fill=hgt5, alpha 1
- final +157,846, best +179,760 at 1,600,283,262 moves after 2,000,004,221 moves
- occ5: rows,cols,win23,win32,phase=all,fill=occ5, alpha 1
- final +150,272, best +203,193 at 1,400,252,568 moves after 1,600,289,700 moves
- selected fill candidate
- arm occ5, best margin +203,193 at 1,400,252,568 moves
- control candidate
- best margin +210,990 at 600,112,060 moves
- training-signal check
- not passed: neither fill arm beat the control arm's best margin
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T201104Z-a96ea6c8.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/analysis.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/progress.jsonlruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/config.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-000200037439.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-000400073347.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-000600112060.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-000800150452.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-001000189400.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-001200228265.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/stop.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/progress.jsonlruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/config.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/val-000200028295.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/val-000400060509.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/val-000600096150.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/val-000800131115.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/val-001000167008.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/val-001200208525.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/val-001400244137.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/val-001600283262.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/val-001800319931.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/val-002000004221.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/hgt5/stop.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/progress.jsonlruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/config.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-000200030322.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-000400061818.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-000600097906.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-000800135553.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-001000173026.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-001200212497.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-001400252568.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-001600289700.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/stop.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/selection.json
All three arms started from the frozen tables and kept their margin over the fair leaf from the first validation point. The control arm, the frozen tables reloaded with fresh step sizes and no buckets, stopped by the plateau rule at 1.2 billion moves after six points; its best point, at 600 million moves, was 210,990 ahead of the fair leaf on the 256 validation games, more than either fill arm ever reached. The occupied-cells arm stopped at 1.6 billion moves after eight points with its best at 1.4 billion (203,193), and the tallest-column arm ran to the two-billion cap with its best at 1.6 billion (179,760). By the fixed rule the occupied-cells arm became the candidate, and the pilot-tier training-signal check reads not passed: neither fill arm's best validation margin exceeded the control arm's. Each arm trained at about two million moves per second, the five-billion-entry tables no slower than the one-billion-entry control.
Pilot arm occ5: the validation line-up as training proceeds
- tables as the depth-3 leaf
- fair leaf in the same search (same games)
- tables played directly, one ply
- training games (one-ply play, mean per chunk)
- training moves
- 1,600,289,700
- training games
- 18,838,964
- table entries
- 5,000,000,000
- moves per second
- 2,125,289
- wall time
- 19 min
- training-game mean (latest chunk)
- 306,087 / 91.1 moves
- latest validation, tables as leaf
- 463,039
- latest validation, fair leaf
- 312,767
- latest paired margin
- +150,272 (lower bound +114,342)
- wins / ties / losses
- 160 / 0 / 96
- plateau rule, mean of the last 3 points / the 3 before
- +174,446 / +179,681 (stopped)
- latest validation, direct play
- 294,770
- table entries updated at least once
- 164,510,583
- best validation point
- +203,193 at 1,400,252,568 moves
- stopped by
- the plateau rule after 8 validation points
- validation block
- 256 paired games, training role
- illegal / incomplete decisions
- 0 / 0
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T201104Z-a96ea6c8.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/analysis.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/progress.jsonlruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/config.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-000200030322.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-000400061818.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-000600097906.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-000800135553.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-001000173026.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-001200212497.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-001400252568.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/val-001600289700.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/occ5/stop.json
Pilot arm control: the validation line-up as training proceeds
- tables as the depth-3 leaf
- fair leaf in the same search (same games)
- tables played directly, one ply
- training games (one-ply play, mean per chunk)
- training moves
- 1,200,228,265
- training games
- 13,419,520
- table entries
- 1,000,000,000
- moves per second
- 2,017,917
- wall time
- 14 min
- training-game mean (latest chunk)
- 307,841 / 91.6 moves
- latest validation, tables as leaf
- 510,536
- latest validation, fair leaf
- 312,767
- latest paired margin
- +197,769 (lower bound +158,765)
- wins / ties / losses
- 174 / 0 / 82
- plateau rule, mean of the last 3 points / the 3 before
- +176,417 / +188,502 (stopped)
- latest validation, direct play
- 302,966
- table entries updated at least once
- 91,509,124
- best validation point
- +210,990 at 600,112,060 moves
- stopped by
- the plateau rule after 6 validation points
- validation block
- 256 paired games, training role
- illegal / incomplete decisions
- 0 / 0
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T201104Z-a96ea6c8.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/analysis.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/progress.jsonlruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/config.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-000200037439.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-000400073347.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-000600112060.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-000800150452.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-001000189400.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/val-001200228265.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/pilot/control/stop.json
The screen opened the 512-game block once, after the CHECK gates had passed again on each of the four new table files. Nothing broke: no arm made an illegal or incomplete decision and no game hit the move cap.
Held-out screen: fill-conditioned tables minus the frozen tables, both as the depth-3 leaf
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean +21,039 (band: 95 % bootstrap)
- paired mean difference
- +21,039 points
- bootstrap 95% lower bound
- -16,864
- Student-t 95% lower bound
- -16,982
- bootstrap 95% upper bound
- +59,230
- wins / ties / losses
- 271 / 0 / 241
- first half / second half
- +6,466 / +35,613
- paired sd
- 522,096
- detection floor
- 37,956
- moves, paired mean difference
- +5.95
- fill-conditioned tables as the depth-3 leaf: mean
- 506,494
- first run's tables as the depth-3 leaf: mean
- 485,455
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T201104Z-a96ea6c8.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-d4s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-control-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-control-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-classmean-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-prior-d4s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d4s7-vs-prior-d4s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-fill-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d4s7-vs-zeroed-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-control-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-classmean-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-1ply-vs-prior-1ply.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-fair-d3s7.json
The fill candidate as the depth-3 leaf averaged 506,494 points and 146 moves against 485,455 and 140 for the frozen tables on the same games: a paired difference of 21,039 with bootstrap bounds from minus 16,864 to plus 59,230, 271 wins to 241, both halves positive, and a lower quartile 490 points lower. Three of the gate's five criteria fail, so the preregistered gate fails (RS-20260906T234914Z-a3fae1a9, run valid, outcome fail, screen tier on public development seeds). The reading is a non-measurement rather than a refutation: a gain or loss larger than about 38,000 would have shown, and neither did. The two readings that were meant to attribute a gain say the same thing at smaller size. The candidate against the control continuation is +15,093 with bounds from minus 22,431 to plus 52,817, and the control against the frozen tables is +5,946 with bounds from minus 29,891 to plus 41,989. Continued training and five fill buckets together moved the depth-3 leaf by less than a 512-game screen can see.
Held-out screen: zeroed edit minus the frozen tables, both as the depth-3 leaf
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean +29,442 (band: 95 % bootstrap)
- paired mean difference
- +29,442 points
- bootstrap 95% lower bound
- +5,813
- Student-t 95% lower bound
- +5,246
- bootstrap 95% upper bound
- +54,179
- wins / ties / losses
- 102 / 318 / 92
- first half / second half
- +12,168 / +46,716
- paired sd
- 332,245
- detection floor
- 24,154
- moves, paired mean difference
- +8.13
- frozen tables with never-updated entries zeroed, depth-3 leaf: mean
- 514,897
- first run's tables as the depth-3 leaf: mean
- 485,455
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T201104Z-a96ea6c8.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-d4s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-control-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-control-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-classmean-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-prior-d4s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d4s7-vs-prior-d4s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-fill-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d4s7-vs-zeroed-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-control-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-classmean-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-1ply-vs-prior-1ply.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-fair-d3s7.json
The cheap repair did better. The zeroed edit, the frozen file with its 901,259,321 never-updated entries set to zero and nothing trained, averaged 514,897 as the depth-3 leaf: 29,442 ahead of the frozen tables with a bootstrap lower bound of 5,813, an upper bound of 54,179 and a detection floor of 24,154. The verdict fixed for this reading is supported. The edit only matters when the search reads a never-updated entry at a decision that is close, and in 318 of the 512 games it never did; across the 194 games it touched, the mean gain was about 77,700 points. Its lower quartile sits 490 points under the frozen tables', so under the gate's four criteria this reading would have failed on that line alone. The class-mean edit, which replaces the same entries with the mean of the touched entries of the same shape, changed six games and scored 931 more: the touched entries of full lines average the starting value, so the swap is nearly a no-op.
Held-out screen: fill-conditioned tables minus the frozen tables, both as the depth-4 leaf
- candidate scored higher on that game
- reference scored higher on that game
- recorded paired mean -22,631 (band: 95 % bootstrap)
- paired mean difference
- -22,631 points
- bootstrap 95% lower bound
- -57,779
- Student-t 95% lower bound
- -58,306
- bootstrap 95% upper bound
- +12,806
- wins / ties / losses
- 236 / 0 / 276
- first half / second half
- +37,523 / -82,786
- paired sd
- 489,868
- detection floor
- 35,613
- moves, paired mean difference
- -6.12
- fill-conditioned tables as the depth-4 leaf: mean
- 499,324
- first run's tables as the depth-4 leaf: mean
- 521,956
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T201104Z-a96ea6c8.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-d4s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-control-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-control-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-classmean-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-prior-d4s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d4s7-vs-prior-d4s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-fill-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d4s7-vs-zeroed-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-control-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-classmean-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-1ply-vs-prior-1ply.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-fair-d3s7.json
One ply deeper, both repairs gave their gains back. As the depth-4 leaf the fill candidate averaged 499,324 against 521,956 for the frozen tables, 22,631 behind with bounds from minus 57,779 to plus 12,806, and below its own depth-3 score by 7,170. The zeroed edit at depth 4 averaged 511,364, 10,592 behind the frozen tables with bounds from minus 32,045 to plus 11,133, and 3,534 below its own depth-3 score. Both depth-4 verdicts are inconclusive, but the sign is the same for both repairs and for both depth steps, while the frozen tables' own fourth ply on these games was worth 36,500 (bounds minus 249 to plus 72,651). A deeper search reads far more boards that training never visited, and pricing them at zero, or at the value of a bucket that had 1.4 billion moves to relearn its share, served the depth-4 search worse than the fresh-board value did. The frozen tables at depth 4 stay the candidate to carry forward.
The screen arms and the preregistered gate
| arm | mean | median | lower quartile | best game | moves | clears / move | reveals / move |
|---|---|---|---|---|---|---|---|
| first run's tables as the depth-3 leaf | 485,455 | 358,257 | 230,374 | 3,329,202 | 140.4 | 2.110 | 1.194 |
| first run's tables played directly, one ply | 293,390 | 238,459 | 157,932 | 1,706,990 | 87.5 | 1.931 | 1.064 |
| fill-conditioned tables as the depth-3 leaf | 506,494 | 388,587 | 229,450 | 2,751,523 | 146.3 | 2.122 | 1.201 |
| fill-conditioned tables played directly, one ply | 298,199 | 262,235 | 190,084 | 1,165,434 | 88.9 | 1.939 | 1.065 |
| unconditioned continuation as the depth-3 leaf | 491,401 | 389,192 | 229,197 | 2,662,558 | 141.9 | 2.113 | 1.194 |
| frozen tables with never-updated entries zeroed, depth-3 leaf | 514,897 | 370,697 | 229,885 | 3,088,440 | 148.5 | 2.126 | 1.206 |
| frozen tables with never-updated entries at the class mean, depth-3 leaf | 486,386 | 358,257 | 230,374 | 3,329,202 | 140.6 | 2.110 | 1.194 |
| first run's tables as the depth-4 leaf | 521,956 | 393,323 | 244,332 | 2,469,625 | 150.2 | 2.127 | 1.205 |
| fill-conditioned tables as the depth-4 leaf | 499,324 | 391,662 | 242,349 | 2,934,902 | 144.1 | 2.117 | 1.196 |
| frozen tables with never-updated entries zeroed, depth-4 leaf | 511,364 | 391,800 | 230,407 | 3,016,304 | 147.4 | 2.124 | 1.203 |
| fair leaf in the depth-3 search | 329,895 | 268,113 | 176,683 | 1,540,436 | 96.8 | 2.002 | 1.114 |
- pass screen artifact: illegalDecisions 0 and incompleteDecisions 0 in every arm
- fail bootstrap 95% lower bound of fill-d3s7 minus prior-d3s7 > 0 · observed -16,864
- fail Student-t 95% lower bound > 0 · observed -16,982
- pass paired mean delta > 0 in both halves · observed [6465.9375,35612.62109375]
- fail fill-d3s7 Q25 >= prior-d3s7 Q25 · observed [229449.5,230374]
- fail every criterion
The readings beside the gate, each with its preregistered verdict
| reading | verdict | paired mean | bootstrap lower bound | upper bound | detection floor | wins / ties / losses |
|---|---|---|---|---|---|---|
| conditioning: fill-conditioned tables minus the unconditioned continuation, depth 3 | inconclusive | +15,093 | -22,431 | +52,817 | 37,507 | 265 / 2 / 245 |
| continuation: unconditioned continuation minus the frozen tables, depth 3 | inconclusive (four criteria not passed) | +5,946 | -29,891 | +41,989 | 35,821 | 255 / 6 / 251 |
| zeroed edit minus the frozen tables, depth 3 | supported | +29,442 | +5,813 | +54,179 | 24,154 | 102 / 318 / 92 |
| class-mean edit minus the frozen tables, depth 3 | inconclusive | +931 | -530 | +2,954 | 1,797 | 4 / 506 / 2 |
| fill-conditioned tables minus the frozen tables, depth 4 | inconclusive | -22,631 | -57,779 | +12,806 | 35,613 | 236 / 0 / 276 |
| zeroed edit minus the frozen tables, depth 4 | inconclusive | -10,592 | -32,045 | +11,133 | 21,531 | 93 / 320 / 99 |
Replication: the first run's frozen tables on this fresh block
- pass screen artifact: illegalDecisions 0 and incompleteDecisions 0 in every arm
- pass bootstrap 95% lower bound of prior-d3s7 minus fair-d3s7 > 0 · observed +123,422
- pass Student-t 95% lower bound > 0 · observed +123,162
- pass paired mean delta > 0 in both halves · observed [175955.66015625,135165.58203125]
- pass prior-d3s7 Q25 >= fair-d3s7 Q25 · observed [230374,176683]
- pass every replication criterion
Source
Values copied from the run snapshot web/content/figures/ntuple-scale/RUN-20260906T201104Z-a96ea6c8.json, which web/scripts/extract-ntuple-scale.ts writes from the run's artifacts:
runs/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/heldout.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-prior-d4s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-control-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-control-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-classmean-d3s7-vs-prior-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-prior-d4s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d4s7-vs-prior-d4s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-fill-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d4s7-vs-zeroed-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-control-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-zeroed-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-classmean-d3s7-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-1ply-vs-prior-1ply.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-1ply-vs-fair-d3s7.jsonruns/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/compare-fill-d4s7-vs-fair-d3s7.json
What we learned
The evaluator was the bottleneck, and a lookup table can be a better one than eighteen hand-written terms once it can see whole lines. Each part of the recipe was needed: the windows-only arm lost, the arms without rise-phase column tables lost, and the tables played without any search lost too. What worked was full rows and columns, conditioned on the rise clock, learned from the engine's own returns at a scale of billions of moves, and then placed inside the fair chance-averaging search, which turned a one-ply policy that trails the fair leaf into a leaf that beats the depth-4 reference.
The result is a screen-tier finding, now on two blocks of public development games, 256 and then 512, with the same frozen tables ahead of the fair leaf by 170,139 and then 160,349. It is not a qualification, and a mean near 485,000 is still less than half the million-point target. Both candidates won on their training-role validation blocks by more than they won on the screens, which is the selection bias the screens exist to measure.
The replication also drew a line under scale, at least in this direction. Six times the entries, trained until a 256-game validation curve stopped rising, produced a leaf the 512-game screen could not tell apart from the first one, while the same tables played without any search improved by about 34,000 on the same games. The value function got better at the thing the search does for it and no better at the thing the search needs from it. The fourth ply answered one of the two questions the replication left. The same frozen tables one ply deeper gained 50,479 points on 512 fresh games, the fair leaf gained 49,599 on the same games, and the difference between those two steps is inside its detection floor. The learned leaf pays for search depth the way the hand-written one does, and it keeps its whole margin over the fair leaf at depth 4. Search depth is a lever for this evaluator, at the usual price: about 36 times the logical work per game for the fourth ply. The tables at depth 4, averaging 516,155 on that block, are now the candidate to carry forward.
The fourth experiment asked the leaf to know how full the board is, and the answer at this budget is that it did not help where it could be measured. Five fill buckets warm-started from the frozen tables and trained for another 1.4 billion moves were 21,039 ahead of the frozen tables at depth 3, inside a 38,000-point floor, and 22,631 behind at depth 4; the same warm start continued without buckets landed in the same place. The mechanism the experiment was built on was half right. The frozen leaf does price never-updated entries at a fresh board's value, and setting those entries to zero, with no training at all, was worth 29,442 points at depth 3 with a lower bound above zero, by changing only 194 of 512 games. But the same edit gave that back at depth 4, and so did the buckets: the deeper search reads far more unfamiliar boards, and a pessimistic price for them served it worse than the optimistic one. What that leaves open is a leaf trained on the boards the search evaluates rather than the ones one-ply play visits, which is the other half of the question the replication left, and a depth-aware version of the edit that prices unfamiliar boards between zero and a fresh board's value.
Agent contextRecords and provenance
Theory
TH-20260905-ntuple-line-tuples-tc-td-leaf-bcb25133,
experiment
EX-20260905-ntuple-scale-tc-td-leaf-d3-535b2620
(frozen protocol SHA-256 ee8eabb0512f459bb0acbb717e335d5e6953d2ac7ec57400f2a35b9f1c76b65d),
run RUN-20260905T193006Z-4fbeb4e5, machine profile
MACH-20260905T192901Z-83559f62, contribution CT-20260905T192505Z-c487efca.
Replication at larger scale: experiment
EX-20260906-ntuple-scale-replication-wide-plateau-f627f07a
(frozen protocol SHA-256 0284abf064ef24fe47ae1ee1b3a7d63245b9f470bdcdcbf00976576bb1d67df8),
run RUN-20260906T013222Z-ba0ee34f on branch
claude/n-tuple-scale-replication, machine profile
MACH-20260906T014136Z-58c2ebe0, contribution CT-20260906T014308Z-21df88ae.
Its seed leases: training SL-20260906T013222Z-ce319097 (0xa5500000 to
0xa56f0000, read in order and wrapped), validation
SL-20260906T013222Z-6cce6192 (0xa52f2280, 256 games, training role,
re-read at every validation point), screen SL-20260906T013222Z-f34b23c0
(0xa52f2380, 512 games, public development, opened once). All three are
disjoint from every block the first experiment read. Stage driver
approaches/ntuple-rl/ntuple-scale/scripts/pipeline2.sh; artifacts under
runs/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/ (gitignored); web snapshot
web/content/figures/ntuple-scale/RUN-20260906T013222Z-ba0ee34f.json. The
wide layout is rows,cols,win23,win32,win24,win42,phase=all: 5.8 x 10^9
entries, 122 active per state, 23.2 GB of weights and 69.6 GB with the
coherence accumulators; table files stay on the workstation with their
SHA-256 in the result record.
The fourth ply: theory
TH-20260906-ntuple-leaf-fourth-ply-search-compatible-ace4fe2a,
experiment
EX-20260906-ntuple-scale-depth4-frozen-tables-54aed6a3
(frozen protocol SHA-256 18733b1875bd5fe93f8625a22d617e6aa77a611b88b306d62c64e5d9196091bb),
run RUN-20260906T081306Z-e62d9837 on branch
claude/n-tuple-continuation-4-ply, machine profile
MACH-20260906T081306Z-e87b3f5a, contribution CT-20260906T081306Z-c70f4648,
result
RS-20260906T171746Z-1623f833.
One lease, the screen SL-20260906T081306Z-1aaec419 (0xa52f2580, 512
games, public development, opened once), disjoint from every block the two
earlier experiments read. No training: the screened tables are the first
experiment's frozen candidate (SHA-256 verified before the lease opened),
played through Arm::NTupleD4 (the reference d4s7 parameters, 1M-entry
table) and Arm::NTupleD3. Stage driver
approaches/ntuple-rl/ntuple-scale/scripts/pipeline3.sh (gates, freeze,
screen, compare, analyze); artifacts under
runs/RUN-20260906T081306Z-e62d9837/ntuple-scale/ and promoted under
artifacts/results/EX-20260906-ntuple-scale-depth4-frozen-tables-54aed6a3/RUN-20260906T081306Z-e62d9837/;
web snapshot
web/content/figures/ntuple-scale/RUN-20260906T081306Z-e62d9837.json.
The fill-conditioned tables: theory
TH-20260906-ntuple-fill-conditioned-leaf-28cb0ae2,
experiment
EX-20260906-ntuple-fill-conditioned-continuation-a9e5cbd3
(frozen protocol SHA-256 974bdae371b7dab5835003c8b62e26b4ab303f01761e5846880c6b10eee1aa14),
run RUN-20260906T201104Z-a96ea6c8 on branch
claude/n-tuple-fill-conditioned (preregistration commit 7aa1db7), machine
profile MACH-20260906T201104Z-c51a782f, contribution
CT-20260906T201547Z-705074a5, result
RS-20260906T234914Z-a3fae1a9.
Leases: training SL-20260906T201104Z-88b984ce (0xa5800000 to
0xa59f0000, read in order and wrapped by all three arms), validation
SL-20260906T201104Z-26371f8b (0xa52f2780, 256 games, training role,
re-read at every validation point of every arm), screen
SL-20260906T201104Z-53350936 (0xa52f2880, 512 games, public
development, opened once). All three are disjoint from every block the
three earlier experiments read. Layouts rows,cols,win23,win32,phase=all,fill=occ5
and ...,fill=hgt5 (5 x 10^9 entries, 74 active per state, 20 GB frozen, 60
GB trainable; Model::promote copies the frozen tables into every bucket;
the trainer's --init-from loads or promotes a frozen file with fresh
accumulators). Table files: the candidate (occupied-cells arm, best point,
SHA-256 4f2e7ccf5c14fed8dd19563965e3937e8784b487f2de9eb70fe0e86830edae24)
and the control (SHA-256
92dd1cb2d2a74b026270606c18c5f0d6e4f4ccc74e64c3c4e0f0d2043cdddd90) are
published compressed under the run's archive prefix
(ntuple-scale/pilot/occ5/best-weights.bin.zst,
ntuple-scale/pilot/control/best-weights.bin.zst; dataset record
DS-20260906-ntuple-fill-conditioned-candidate-tables-860c310b); the zeroed
(e9248b1a...) and class-mean (c3f05eee...) edits are reproduced from the
frozen tables by scripts/edit-tables.py and are not published; the
tallest-column arm's tables stay on the workstation. Stage driver
scripts/pipeline4.sh (gates, edit, train, select, freeze, screen, compare,
analyze); artifacts under runs/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/
(gitignored), the compact ones promoted under
artifacts/results/EX-20260906-ntuple-fill-conditioned-continuation-a9e5cbd3/RUN-20260906T201104Z-a96ea6c8/
and published under the run's archive prefix
(runs/RUN-20260906T201104Z-a96ea6c8/published.jsonl); web snapshot
web/content/figures/ntuple-scale/RUN-20260906T201104Z-a96ea6c8.json. The
seed-free diagnostic behind the theory is scripts/touched-by-fill.py, its
output retained as main/touched-by-fill.txt of the run.
Published artifacts (the public research archive, immutable run-scoped keys,
SHA-256 in each reference's fragment; runs/<run-id>/published.jsonl lists
them): the first run's frozen tables as
https://data.drop7.dev/runs/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/main/best-weights.bin.zst
(zstd; the decompressed file's SHA-256 is 0ade9d4e..., dataset record
DS-20260906-ntuple-scale-frozen-tables-ff977178), the wide tables as
https://data.drop7.dev/runs/RUN-20260906T013222Z-ba0ee34f/ntuple-scale/main/best-weights.bin.zst
(decompressed SHA-256 824b0a39..., dataset record
DS-20260906-ntuple-scale-wide-frozen-tables-c5eb52a6), and the three
screens' per-game artifacts (screen/heldout.json) and analyses under the
same run prefixes. Download with plain HTTPS, check the digest, zstd -d,
check the decompressed digest, then Model::load.
Seed leases: training SL-20260905T191317Z-09895ea2 (0xa5300000
to 0xa54f0000, read in order and wrapped; wrap counts in each
progress.jsonl), validation SL-20260905T191317Z-549265de (0xa52f2240,
64 games, training role, re-read at every validation point), screen
SL-20260905T191317Z-c25f58cd (0xa52f2140, 256 games, public development,
opened once). CHECK gates and the throughput smoke run read only the
already-opened probe block 0xa5277000.
Run artifacts live under runs/RUN-20260905T193006Z-4fbeb4e5/ntuple-scale/
(gitignored): gates.log, pilot/<arm>/, main/, screen/, rusage.jsonl,
analysis.json, analysis.md. The web snapshot is
web/content/figures/ntuple-scale/RUN-20260905T193006Z-4fbeb4e5.json, written
by web/scripts/extract-ntuple-scale.ts. Table files are 1.9 GB (weights) and
5.8 GB (with coherence accumulators) and are retained on the workstation with
their SHA-256 in the result record; they are not committed.
Reproduce:
approaches/ntuple-rl/ntuple-scale/build.sh
cd approaches/ntuple-rl/ntuple-scale && cargo test --release
RUN_ID=RUN-... THREADS=32 scripts/pipeline.sh chain
# the replication (fresh blocks, wide layout, plateau rule):
RUN_ID=RUN-... EXPERIMENT_ID=EX-20260906-ntuple-scale-replication-wide-plateau-f627f07a \
SCREEN_LEASE=research/seeds/leases/SL-20260906T013222Z-f34b23c0.json THREADS=32 \
scripts/pipeline2.sh gates && scripts/pipeline2.sh smoke && scripts/pipeline2.sh chain
Agent contextFull results table
Held-out screen, 256 paired games on 0xa52f2140, 2,000-move cap, from
screen/heldout.json and the compare.py reports
(RS-20260905T215332Z-95d18a5a):
| arm | mean | median | Q25 | max | moves | clears/move | reveals/move |
|---|---|---|---|---|---|---|---|
| candidate-d3s7 | 484,577 | 407,474 | 212,820 | 2,295,869 | 140.21 | 2.1074 | 1.1899 |
| candidate-1ply | 281,441 | 230,850 | 157,750 | 815,564 | 84.30 | 1.9217 | 1.0608 |
| fair-d3s7 | 314,438 | 250,821 | 175,832 | 1,221,000 | 92.58 | 1.9848 | 1.1026 |
| fair-d4s7 | 377,803 | 282,076 | 192,562 | 1,794,652 | 109.34 | 2.0492 | 1.1499 |
| contrast | paired delta | bootstrap LB95 | t LB95 | UB95 | W-T-L | halves | floor |
|---|---|---|---|---|---|---|---|
| candidate-d3s7 minus fair-d3s7 (gate) | +170,139 | +130,499 | +130,560 | +209,881 | 167-0-89 | +198,575 / +141,704 | 39,440 |
| candidate-d3s7 minus fair-d4s7 | +106,775 | +62,574 | +61,891 | +151,706 | 160-0-96 | +109,211 / +104,338 | 44,724 |
| candidate-1ply minus fair-d3s7 | -32,997 | -58,536 | -58,451 | -7,597 | 114-0-142 | -11,749 / -54,246 | 25,363 |
| fair-d4s7 minus fair-d3s7 | +63,365 | +31,538 | +31,238 | +95,449 | 138-0-118 | +89,363 / +37,366 | 32,013 |
| candidate-d3s7 minus candidate-1ply | +203,137 | +167,199 | +166,028 | +240,598 | 185-0-71 | +210,323 / +195,950 | 36,977 |
Pilot arms, 2 x 10^8 training moves each, paired margin of the tables in
d3s7 over fair-d3s7 on the 64-game training-role validation block
(pilot/<arm>/val-*.json; the block's fair-d3s7 mean is 337,611):
| arm | layout | alpha | entries | final margin | best margin |
|---|---|---|---|---|---|
| A | rows,cols,win23,win32,phase=cols | 1.0 | 480,000,000 | +95,051 | +170,874 |
| B | rows,cols,win23,win32,phase=none | 1.0 | 200,000,000 | -70,587 | -35,091 |
| C (selected) | rows,cols,win23,win32,phase=all | 1.0 | 1,000,000,000 | +123,950 | +123,950 |
| D | rows,cols,phase=cols | 1.0 | 420,000,000 | +26,951 | +94,015 |
| E (ablation) | win23,win32,phase=none | 1.0 | 60,000,000 | -83,261 | -80,696 |
| F | rows,cols,win23,win32,phase=cols | 0.25 | 480,000,000 | +73,116 | +112,886 |
Main run (arm C layout): 4,000,004,271 moves, 45,852,198 games, 2,497 s wall
at a mean 1,956,636 moves per second, 20 validation points every 2 x 10^8
moves, all with a positive paired margin (116,000 to 270,023); the candidate
is the point at 1,400,240,319 moves (607,633 vs 337,611 on the block, 47-17),
SHA-256 0ade9d4e4080ebdd52a1474b1a13410dc8dfb77f5eba24b078aa7703c92ace0b.
Replication at larger scale, held-out screen, 512 paired games on
0xa52f2380, 2,000-move cap, from screen/heldout.json and the compare.py
reports of RUN-20260906T013222Z-ba0ee34f
(RS-20260906T040113Z-6ba93171):
| arm | mean | median | Q25 | max | moves | clears/move | reveals/move |
|---|---|---|---|---|---|---|---|
| candidate-d3s7 (wide) | 481,869 | 393,375 | 241,610 | 2,487,485 | 139.39 | 2.1088 | 1.1927 |
| candidate-1ply (wide) | 328,039 | 282,096 | 178,990 | 1,224,664 | 97.27 | 1.9762 | 1.0946 |
| prior-d3s7 (first run's tables) | 487,066 | 385,960 | 232,825 | 3,236,265 | 140.83 | 2.1123 | 1.1949 |
| prior-1ply (first run's tables) | 294,323 | 247,261 | 173,121 | 1,270,003 | 87.91 | 1.9353 | 1.0665 |
| fair-d3s7 | 326,717 | 269,648 | 192,040 | 1,714,793 | 95.87 | 2.0033 | 1.1138 |
| fair-d4s7 | 397,154 | 320,815 | 202,360 | 1,707,841 | 114.55 | 2.0598 | 1.1550 |
| contrast | paired delta | bootstrap LB95 | t LB95 | UB95 | W-T-L | halves | floor | | --- | ---: | ---: | ---: | ---: | ---: | --- | --- | ---: | | candidate-d3s7 minus fair-d3s7 (gate) | +155,153 | +126,819 | +126,919 | +183,307 | 333-0-179 | +159,105 / +151,201 | 28,185 | | prior-d3s7 minus fair-d3s7 (replication) | +160,349 | +129,753 | +129,626 | +191,264 | 330-0-182 | +133,349 / +187,349 | 30,670 | | candidate-d3s7 minus prior-d3s7 (scale, inconclusive) | -5,196 | -40,535 | -40,060 | +29,158 | 267-1-244 | +25,756 / -36,148 | 34,803 | | candidate-d3s7 minus fair-d4s7 | +84,716 | +54,794 | +54,672 | +114,355 | 298-0-214 | +92,759 / +76,672 | 29,992 | | prior-d3s7 minus fair-d4s7 | +89,912 | +58,243 | +58,255 | +121,567 | 290-0-222 | +67,003 / +112,821 | 31,602 | | fair-d4s7 minus fair-d3s7 | +70,437 | +46,917 | +47,196 | +93,486 | 302-0-210 | +66,346 / +74,528 | 23,201 | | candidate-1ply minus fair-d3s7 | +1,323 | -17,545 | -17,456 | +20,096 | 268-0-244 | -21,521 / +24,166 | 18,746 | | prior-1ply minus fair-d3s7 | -32,394 | -51,190 | -51,084 | -13,948 | 219-0-293 | -50,576 / -14,211 | 18,658 | | candidate-d3s7 minus candidate-1ply | +153,830 | +127,665 | +127,508 | +180,357 | 333-0-179 | +180,625 / +127,035 | 26,277 |
The fourth ply, held-out screen, 512 paired games on 0xa52f2580,
2,000-move cap, four arms on identical seeds, from screen/heldout.json and
the compare.py reports of RUN-20260906T081306Z-e62d9837
(RS-20260906T171746Z-1623f833):
| arm | mean | median | Q25 | max | moves | clears/move | reveals/move | work/game | wall s/game |
|---|---|---|---|---|---|---|---|---|---|
| prior-d4s7 (candidate) | 516,155 | 392,496 | 233,182 | 2,716,683 | 148.75 | 2.1255 | 1.2033 | 7.96e8 | 152.3 |
| prior-d3s7 (comparator) | 465,675 | 352,446 | 212,969 | 2,674,728 | 134.82 | 2.0987 | 1.1851 | 2.22e7 | 4.1 |
| fair-d4s7 | 382,567 | 303,015 | 208,481 | 2,634,604 | 110.45 | 2.0459 | 1.1460 | 5.59e8 | 175.7 |
| fair-d3s7 | 332,968 | 262,338 | 174,599 | 1,745,301 | 97.72 | 2.0115 | 1.1225 | 1.56e7 | 4.5 |
| contrast | paired delta | bootstrap LB95 | t LB95 | UB95 | W-T-L | halves | floor |
|---|---|---|---|---|---|---|---|
| prior-d4s7 minus prior-d3s7 (gate) | +50,479 | +14,707 | +14,086 | +86,224 | 284-0-228 | +67,335 / +33,623 | 36,331 |
| fair-d4s7 minus fair-d3s7 | +49,599 | +25,751 | +25,578 | +73,244 | 289-0-223 | +45,189 / +54,009 | 23,979 |
| (tables d4 minus d3) minus (fair d4 minus d3), interaction | +881 | -40,932 | -41,742 | +42,867 | 250-0-262 | +22,146 / -20,385 | 42,550 |
| prior-d4s7 minus fair-d4s7 (persistence) | +133,588 | +102,051 | +101,161 | +165,801 | 314-0-198 | +137,477 / +129,699 | 32,371 |
| prior-d4s7 minus fair-d3s7 | +183,187 | +150,976 | +150,210 | +216,400 | 345-0-167 | +182,666 / +183,708 | 32,920 |
| prior-d3s7 minus fair-d3s7 | +132,707 | +102,193 | +101,741 | +163,903 | 309-0-203 | +115,331 / +150,084 | 30,913 |
| prior-d3s7 minus fair-d4s7 | +83,109 | +51,349 | +51,365 | +114,439 | 282-0-230 | +70,142 / +96,076 | 31,689 |
Wall seconds are observations on a shared workstation (32 threads, the four arms in sequence); logical work is the cost quantity.
Replication main run (wide layout, 5.8 x 10^9 entries): 4,500,370,590 moves,
47,477,538 games, 4,462 s wall at a mean 1,184,973 moves per second, nine
validation points every 5 x 10^8 moves on the 256-game block (fair-d3s7 mean
337,539): paired margins +154,572, +145,989, +177,860, +187,500, +183,785,
+186,631, +172,106, +142,514, +161,412; the plateau rule fired at the ninth
point (last four +165,666, previous four +173,783); the candidate is the
fourth point at 2,000,153,332 moves (525,039 vs 337,539, 168-88), SHA-256
824b0a39a90d8a5aae63438c1538d4c5022f0e0f09c75fb7e2d758a1d6c6fb8a.
Agent contextValidity, gates and limitations
CHECK gates (all pass, gates.log): the two-table base-10 codec against a
Horner reference on two million random line words; the row gather against the
engine's cell accessor; feature indices against an independent reference for
every layout, with distinctness and range; information-boundary blindness
(score, level, moves played and the visible next disc leave the leaf value
unchanged; score, level and moves played leave the direct decision unchanged);
reflection (mirrored boards share the value and the direct decision mirrors);
direct-policy legality; the tables inside the depth-3 search play legal,
complete, deterministic games that are identical at one and four workers; two
single-thread training runs on the same games produce identical tables; values
finite.
Known limitations, fixed before any leased seed was read: training uses lock-free asynchronous updates from 32 threads, so a training run is not bit-reproducible (the serial update rule is); the validation block is training-role data read many times, so validation margins select and cannot confirm; the pilot's configuration choice is made on the same 64 games; the one-shot screen is 256 games, whose detection floor for this contrast is recorded in the analysis; the candidate is chosen at the validation point with the best margin, which is an upward-biased estimate the screen exists to correct.
Replication gates (19, all pass, gates.log of the second run): the same
list with feature-index references for the 2x4 and 4x2 families and the wide
layout. The first invocation of that gate binary panicked: the
information-boundary gate values terminal states, a state whose rise ended
the game carries a rise phase of 0, and the wide layout's 64-bit index then
left the table. The phase is now clamped inside the feature function; the
search never values a terminal state (it returns the terminal utility
first), training and the direct policy guard the same way, so no recorded
game is affected. In the first experiment the same gate read an in-range
entry of the phase-conditioned column tables for those terminal states
because its 32-bit index wrapped; the gate's conclusion (hidden fields leave
the value unchanged) held because the wrong entry was the same wrong entry
for every perturbation. The replication's validation block is 256 games
(the rule that stops training reads it, so it selects and cannot confirm);
its screen is 512 games opened once; the replication arm is the first
experiment's exact frozen tables, verified by SHA-256 before the screen
lease opened.
The fourth ply's gates (20, all pass, gates.log of the third run, on the
frozen tables through gate --weights): the same list plus
leaf-in-d4-search-determinism, two probe games over 40-move caps at one
and two workers, identical scores, moves and work, no illegal or incomplete
decision, and more work than the depth-3 arm on every game. Limitations,
fixed before the lease opened: no table was trained or changed, so the
screen inherits the first experiment's candidate selection and adds none of
its own; the depth-4 search is the standing reference configuration (1M-entry
table, seven strata, terminal utility -1,000,000), and a different terminal
utility, table size or stratum count is a different configuration; the
fair-leaf arms are context for the interaction reading, whose detection
floor (42,550) is larger than the depth steps' own floors because it is a
difference of differences; the screen is 512 games opened once.
Agent contextScoring mode
Corrected five-move Hardcore scoring, 17,000 points per row rise and 70,000 per board clear, 2,000-move cap, on the Rust bitboard engine that is trace-identical to the frozen C++ reference. All scores on this page are on that scale. Table values are learned in units of one row rise and multiplied by 17,000 inside the search.
RecordsTheories, experiments and results that reference this directory
Claim: An n-tuple value function over the public board, made of absolute-position seven-cell row tuples, seven-cell column tuples (rise-phase conditioned) and two-by-three and three-by-two window tuples (about 4.8 x 10^8 table entries), trained on-policy by TD(0) with temporal-coherence step sizes from at least 10^9 engine moves of one-ply chance-state play on the Rust bitboard engine, and deployed as the leaf of the stock depth-3 seven-stratum fair expectimax, achieves a higher mean whole-game score than the identical search with the frozen fair leaf on never-read paired development games.
This theory is currently supported-as-tested at the public-development (a cohort for deciding what to try next, not confirmation) level.
Claim: The frozen row-and-column n-tuple leaf of RUN-20260905T193006Z-4fbeb4e5 (layout rows,cols,win23,win32,phase=all, 10^9 entries, SHA-256 0ade9d4e4080ebdd52a1474b1a13410dc8dfb77f5eba24b078aa7703c92ace0b) is least trained exactly on the fullest boards: its coherence accumulators at the end of training show about 1% of legal seven-high column patterns and of top-row patterns with five or more discs ever updated, against 50-100% of patterns with three or fewer discs, and the touched full-line entries still average the optimistic starting value (20/74 rise units, about 4,600 points each). Because the evaluator is an additive sum over lines and windows, no pattern can be worth a different amount when the board around it is nearly full. Claim: an evaluator that keys every table on a five-way global fill bucket of the public board (occupied cells, or the tallest column), built by copying the frozen tables into every bucket (multi-stage weight promotion) and continuing on-policy temporal-coherence TD(0) training from that warm start with fresh accumulators, scores a higher paired mean whole-game score than the unchanged frozen tables as the leaf of the identical depth-3 seven-stratum fair search on never-read public-development games, and higher than the same continuation without buckets, so the gain is the conditioning and not the extra training.
This theory is currently mixed at the public-development (a cohort for deciding what to try next, not confirmation) level.
Claim: Placed as the leaf of the completed depth-4 seven-stratum fair expectimax search (the program's reference d4s7 configuration, unchanged: terminal utility -1,000,000, policy seed 0xd7075eed, completion-guaranteeing work bound, 1M-entry direct-mapped table), the frozen lookup tables of RUN-20260905T193006Z-4fbeb4e5 (SHA-256 0ade9d4e4080ebdd52a1474b1a13410dc8dfb77f5eba24b078aa7703c92ace0b) score a higher paired mean over complete public-development games than the same tables as the leaf of the depth-3 search (the deployment d3s7 configuration), and the fourth ply's paired gain on the tables is at least as large as the fourth ply's paired gain on the frozen fair leaf measured on the same seeds.
This theory is currently supported-as-tested at the public-development (a cohort for deciding what to try next, not confirmation) level.
It compares d3s7-ntuple-scale-leaf against fair-d3s7 at the SCREEN (a 32-game paired screen) level, using public-development data.
valid run outcome: pass The run was valid and the outcome was pass (public-development (a cohort for deciding what to try next, not confirmation)). Read the result.
It compares fill-d3s7 against prior-d3s7 at the SCREEN (a 32-game paired screen) level, using public-development data.
valid run outcome: fail The run was valid and the outcome was fail (public-development (a cohort for deciding what to try next, not confirmation)). Read the result.
It compares prior-d4s7 against prior-d3s7 at the SCREEN (a 32-game paired screen) level, using public-development data.
valid run outcome: pass The run was valid and the outcome was pass (public-development (a cohort for deciding what to try next, not confirmation)). Read the result.
It compares d3s7-ntuple-scale-wide-leaf against fair-d3s7 at the SCREEN (a 32-game paired screen) level, using public-development data.
valid run outcome: pass The run was valid and the outcome was pass (public-development (a cohort for deciding what to try next, not confirmation)). Read the result.
The run was valid; the outcome was pass, at the public-development (a cohort for deciding what to try next, not confirmation) level. Of 7 preregistered checks, 7 passed and 0 failed.
Held-out screen, 256 never-read paired public-development games (0xa52f2140+): the frozen n-tuple tables as the leaf of the depth-3 seven-stratum fair search averaged 484,577 points and 140.21 moves against 314,438 points and 92.58 moves for the identical search with the frozen fair leaf: paired +170,139 points (bootstrap 95% lower bound +130,499, Student-t lower bound +130,560, upper bound +209,881, detection floor 39,440), W-T-L 167-0-89, halves +198,575 / +141,704, lower quartile 212,820 vs 175,832, moves +47.63. The preregistered gate PASSES. Against the program's standing reference, the fair leaf at depth 4 on the same seeds (377,803 points), the candidate is +106,775 paired (bootstrap LB +62,574, UB +151,706, W-T-L 160-0-96); diagnostic only. The same tables played directly one ply averaged 281,441 points, -32,997 paired against fair-d3s7 (LB -58,536); diagnostic. Fair-d4s7 minus fair-d3s7 on these seeds: +63,365 (LB +31,538). Candidate: the tables of the main run's validation point at 1,400,240,319 training moves (layout rows,cols,win23,win32,phase=all, alpha 1.0, selected from six pilot arms by the preregistered rule with a final validation margin of +123,950), whose paired margin on the 64-game training-role validation block was +270,023; SHA-256 0ade9d4e4080ebdd52a1474b1a13410dc8dfb77f5eba24b078aa7703c92ace0b. Main run: 4,000,004,271 training moves, 45,852,198 games, 20 validation points, mean 1,956,636 moves per second. Mechanism ablation (pilot, windows-only arm E): final validation margin -83,261 against the full layout's +95,051 (arm A) and +123,950 (arm C, selected). Training-signal check: at least one validation point of the main run had a positive paired margin.
Technical recordLimitations recorded with the result
- Public-development SCREEN tier, 256 paired games opened once; nothing here is a qualification claim, and protected and final cohorts stay sealed.
- The candidate is the validation point with the largest paired margin on a 64-game training-role block that was read at every validation point and also chose the configuration; that selection is upward-biased, which is why the held-out screen exists.
- Training used lock-free asynchronous updates from 32 threads, so the training run is not bit-reproducible; the frozen tables are hashed and every gameplay arm is deterministic and worker-count independent.
- The fair-d4s7 arm is the program's standing reference for context only; the preregistered comparator is the identical depth-3 search with the frozen fair leaf.
- Table files (1.9 GB weights, 5.8 GB with accumulators for the pilot layouts; 4.0 GB and 12 GB for the selected phase=all layout) are retained on the workstation with their SHA-256 and are not committed.
- Wall times were measured on a shared workstation with the web console building concurrently for part of the run; ratios between arms on the same seeds are the trustworthy quantity.
The run was valid; the outcome was pass, at the public-development (a cohort for deciding what to try next, not confirmation) level. Of 12 preregistered checks, 12 passed and 0 failed.
Held-out screen, 512 never-read paired public-development games (0xa52f2380+): the frozen n-tuple tables as the leaf of the depth-3 seven-stratum fair search averaged 481,869 points and 139.39 moves against 326,717 points and 95.87 moves for the identical search with the frozen fair leaf: paired +155,153 points (bootstrap 95% lower bound +126,819, Student-t lower bound +126,919, upper bound +183,307, detection floor 28,185), W-T-L 333-0-179, halves +159,105 / +151,201, lower quartile 241,610 vs 192,040, moves +43.52. The preregistered gate PASSES. Replication: the first experiment's frozen tables (SHA-256 0ade9d4e4080ebdd52a1474b1a13410dc8dfb77f5eba24b078aa7703c92ace0b) as the same leaf on these fresh seeds averaged 487,066 points and 140.83 moves; prior-d3s7 minus fair-d3s7: paired +160,349 (bootstrap 95% lower bound +129,753, Student-t lower bound +129,626, upper bound +191,264, detection floor 30,670), W-T-L 330-0-182, halves +133,349 / +187,349. The replication criteria PASS. Scale: the wider, longer-trained candidate against the first candidate on the same seeds is -5,196 paired (bootstrap LB -40,535, t LB -40,060, UB +29,158, floor 34,803, W-T-L 267-1-244): the preregistered scale verdict is inconclusive. Against the program's standing reference, the fair leaf at depth 4 on the same seeds (397,154 points), the candidate is +84,716 paired (bootstrap LB +54,794, UB +114,355, W-T-L 298-0-214); diagnostic only. The first candidate against fair-d4s7 on these seeds: +89,912 (LB +58,243); diagnostic. The same tables played directly one ply averaged 328,039 points, +1,323 paired against fair-d3s7 (LB -17,545); diagnostic. Fair-d4s7 minus fair-d3s7 on these seeds: +70,437 (LB +46,917). Candidate: the tables of the main run's validation point at 2,000,153,332 training moves (layout rows,cols,win23,win32,win24,win42,phase=all, alpha 1, 5,800,000,000 entries), whose paired margin on the 256-game training-role validation block was +187,500; SHA-256 824b0a39a90d8a5aae63438c1538d4c5022f0e0f09c75fb7e2d758a1d6c6fb8a. Main run: 4,500,370,590 training moves, 47,477,538 games, 9 validation points, mean 1,184,973 moves per second, stopped by the plateau rule (last 4 validation points mean +165,666, the 4 before them +173,783). Training-signal check: at least one validation point of the main run had a positive paired margin.
Technical recordLimitations recorded with the result
- Public-development SCREEN tier, 512 paired games opened once; nothing here is a qualification claim, and protected and final cohorts stay sealed.
- The candidate is the validation point with the largest paired margin on a 256-game training-role block that was read at every validation point and drove the plateau stop rule; that selection is upward-biased, which is why the held-out screen exists.
- Training used lock-free asynchronous updates from 32 threads, so the training run is not bit-reproducible; the frozen tables are hashed and every gameplay arm is deterministic and worker-count independent.
- The fair-d4s7 arm is the program's standing reference for context only; the preregistered comparator is the identical depth-3 search with the frozen fair leaf.
- Table files (23.2 GB weights, 69.6 GB with accumulators) are retained on the workstation with their SHA-256 and are not committed.
- Wall times were measured on a shared workstation; ratios between arms on the same seeds are the trustworthy quantity.
- The replication arm re-screens tables frozen by the first experiment on a block that experiment never read; it is a fresh-block replication by the same runner on the same machine, not by an independent runner.
The run was valid; the outcome was pass, at the public-development (a cohort for deciding what to try next, not confirmation) level. Of 12 preregistered checks, 11 passed and 0 failed.
Held-out screen, 512 never-read paired public-development games (0xa52f2580+), four arms on identical seeds, no training. The frozen tables (SHA-256 0ade9d4e4080ebdd52a1474b1a13410dc8dfb77f5eba24b078aa7703c92ace0b) as the leaf of the depth-4 seven-stratum fair search averaged 516,155 points and 148.75 moves against 465,675 points and 134.82 moves for the same tables as the depth-3 leaf: paired +50,479 points (bootstrap 95% lower bound +14,707, Student-t lower bound +14,086, upper bound +86,224, detection floor 36,331), W-T-L 284-0-228, halves +67,335 / +33,623, lower quartile 233,182 vs 212,969, moves +13.93. The preregistered gate PASSES. The fair leaf's own fourth ply on these seeds: fair-d4s7 382,567 against fair-d3s7 332,968, fair-d4s7 minus fair-d3s7: paired +49,599 (bootstrap 95% lower bound +25,751, Student-t lower bound +25,578, upper bound +73,244, detection floor 23,979), W-T-L 289-0-223, halves +45,189 / +54,009. Depth-step interaction, per game (tables d4 minus tables d3) minus (fair d4 minus fair d3): +881 (bootstrap LB -40,932, t LB -41,742, UB +42,867, floor 42,550, W-T-L 250-0-262): the preregistered verdict is 'inconclusive'. Persistence: prior-d4s7 minus fair-d4s7: paired +133,588 (bootstrap 95% lower bound +102,051, Student-t lower bound +101,161, upper bound +165,801, detection floor 32,371), W-T-L 314-0-198, halves +137,477 / +129,699. The persistence criteria PASS. The tables' depth-3 margin on these seeds: prior-d3s7 minus fair-d3s7: paired +132,707 (bootstrap 95% lower bound +102,193, Student-t lower bound +101,741, upper bound +163,903, detection floor 30,913), W-T-L 309-0-203, halves +115,331 / +150,084. prior-d4s7 minus fair-d3s7: +183,187 (LB +150,976). Logical work per game: prior-d4s7 795,922,316, prior-d3s7 22,193,672, fair-d4s7 558,924,581, fair-d3s7 15,568,331; mean wall seconds per game on the shared 32-thread workstation: 152.3, 4.1, 175.7, 4.5. Theory falsifiers: primary upper bound below zero False; second leg upper bound below zero False; persistence lower bound at or below zero False.
Technical recordLimitations recorded with the result
- Public-development SCREEN tier, 512 paired games opened once; nothing here is a qualification claim, and protected and final cohorts stay sealed.
- No table was trained or changed: both table arms are the first experiment's frozen candidate, selected there at the best of twenty training-role validation points; this screen inherits that selection but adds none of its own.
- The depth-4 search is the standing reference configuration (1M-entry table, seven strata, terminal utility -1,000,000); a different terminal utility, table size or stratum count is a different configuration and is not tested here.
- The fair-d3s7 and fair-d4s7 arms are context for the interaction reading; the preregistered comparator is the identical tables at depth 3.
- Wall times were measured on a shared workstation with all four arms run in sequence at 32 threads; logical work and the ratios between arms on the same seeds are the trustworthy cost quantities.
- The per-game artifact is cited by its public archive reference (data.drop7.dev, immutable run-scoped key, digest in the fragment); a byte-identical copy remains under runs/RUN-20260906T081306Z-e62d9837/ntuple-scale/screen/heldout.json on the workstation and a promoted copy under artifacts/results/.
The run was valid; the outcome was fail, at the public-development (a cohort for deciding what to try next, not confirmation) level. Of 15 preregistered checks, 5 passed and 3 failed.
Held-out screen, 512 never-read paired public-development games (0xa52f2880+), 11 arms on identical seeds. Candidate arm occ5 (best validation margin 203,193 at 1,400,252,568 moves against the control arm's best 210,990; training-signal check passed False). The fill-conditioned tables (SHA-256 4f2e7ccf5c14fed8dd19563965e3937e8784b487f2de9eb70fe0e86830edae24) as the depth-3 leaf averaged 506,494 points and 146.33 moves against 485,455 and 140.38 for the unchanged frozen tables (SHA-256 0ade9d4e4080ebdd52a1474b1a13410dc8dfb77f5eba24b078aa7703c92ace0b) in the same search: fill-d3s7 minus prior-d3s7: paired +21,039 (bootstrap 95% lower bound -16,864, Student-t lower bound -16,982, upper bound +59,230, detection floor 37,956), W-T-L 271-0-241, halves +6,466 / +35,613, lower quartile 229,450 vs 230,374, moves +5.95. The preregistered gate FAILS. Conditioning, fill-d3s7 minus control-d3s7: paired +15,093 (bootstrap 95% lower bound -22,431, Student-t lower bound -22,479, upper bound +52,817, detection floor 37,507), W-T-L 265-2-245, halves +21,802 / +8,385: verdict 'inconclusive'. Continuation, control-d3s7 minus prior-d3s7: paired +5,946 (bootstrap 95% lower bound -29,891, Student-t lower bound -29,937, upper bound +41,989, detection floor 35,821), W-T-L 255-6-251, halves -15,336 / +27,228: verdict 'inconclusive' (four criteria FAIL). Zeroed edit, zeroed-d3s7 minus prior-d3s7: paired +29,442 (bootstrap 95% lower bound +5,813, Student-t lower bound +5,246, upper bound +54,179, detection floor 24,154), W-T-L 102-318-92, halves +12,168 / +46,716: verdict 'supported'. Class-mean edit, classmean-d3s7 minus prior-d3s7: paired +931 (bootstrap 95% lower bound -530, Student-t lower bound -869, upper bound +2,954, detection floor 1,797), W-T-L 4-506-2, halves -690 / +2,551: verdict 'inconclusive'. At depth 4, fill-d4s7 minus prior-d4s7: paired -22,631 (bootstrap 95% lower bound -57,779, Student-t lower bound -58,306, upper bound +12,806, detection floor 35,613), W-T-L 236-0-276, halves +37,523 / -82,786: verdict 'inconclusive'. At depth 4, zeroed-d4s7 minus prior-d4s7: paired -10,592 (bootstrap 95% lower bound -32,045, Student-t lower bound -32,160, upper bound +11,133, detection floor 21,531), W-T-L 93-320-99, halves -16,117 / -5,066: verdict 'inconclusive'. fill-d3s7 506,494 / 146.33 moves; control-d3s7 491,401 / 141.92 moves; zeroed-d3s7 514,897 / 148.50 moves; classmean-d3s7 486,386 / 140.64 moves; prior-d3s7 485,455 / 140.38 moves; prior-d4s7 521,956 / 150.20 moves; fill-d4s7 499,324 / 144.08 moves; zeroed-d4s7 511,364 / 147.36 moves; fill-1ply 298,199 / 88.90 moves; prior-1ply 293,390 / 87.53 moves; fair-d3s7 329,895 / 96.85 moves; fill-d4s7-vs-fill-d3s7: -7,170 (LB -45,566, UB +31,331). prior-d4s7-vs-prior-d3s7: +36,500 (LB -249, UB +72,651). zeroed-d4s7-vs-zeroed-d3s7: -3,534 (LB -43,880, UB +36,834). prior-d3s7-vs-fair-d3s7: +155,561 (LB +123,422, UB +187,991). fill-d3s7-vs-fair-d3s7: +176,600 (LB +143,625, UB +210,258). fill-1ply-vs-prior-1ply: +4,809 (LB -13,189, UB +22,386). Edits: 901,259,321 of 1,000,000,000 entries of the frozen file sit at the starting value 0.27027 rise units; the zeroed edit changed 901,259,321 entries and the class-mean edit 877,344,474, none of them touched entries. Arm control: 1,200,228,265 moves, 6 validation points, best margin 210,990 at 600,112,060 moves, final 197,769, stop plateau, 2,017,917 moves/s. Arm occ5: 1,600,289,700 moves, 8 validation points, best margin 203,193 at 1,400,252,568 moves, final 150,272, stop plateau, 2,125,289 moves/s. Arm hgt5: 2,000,004,221 moves, 10 validation points, best margin 179,760 at 1,600,283,262 moves, final 157,846, stop plateau, 2,153,323 moves/s. Logical work per game: fill-d3s7 24,138,811, prior-d3s7 23,117,640, fill-d4s7 764,278,797, prior-d4s7 803,086,972. Theory falsifiers: {"primaryFalsifierUpperBoundBelowZero": false, "conditioningUpperBoundBelowZero": false, "gainIsContinuationNotConditioning": false, "optimismLegRefuted": false, "depthCompounding": false}.
Technical recordLimitations recorded with the result
- Public-development SCREEN tier, 512 paired games opened once; nothing here is a qualification claim, and protected and final cohorts stay sealed.
- The candidate and the control are each the best of their arm's validation points, and the candidate arm is the better of two, all chosen on the 256-game training-role validation block; the screen inherits that selection and measures what survives it.
- The training arms are Hogwild (32 lock-free workers) and are not bit-reproducible; a re-run trains different tables from the same warm start and seeds.
- Five buckets with fixed edges are the only conditioning tested; a different bucket count, different edges, or a bucket variable other than occupied cells and tallest column is a different configuration.
- The depth-4 arms use the standing reference configuration (1M-entry table, seven strata, terminal utility -1,000,000); the fair-d3s7 arm is context, and the fair leaf at depth 4 was not played on this block.
- Wall times were measured on a shared workstation with every arm run in sequence at 32 threads; logical work and the ratios between arms on the same seeds are the trustworthy cost quantities.
- The per-game artifact is cited by its public archive reference (data.drop7.dev, immutable run-scoped key, digest in the fragment); a byte-identical copy remains under runs/RUN-20260906T201104Z-a96ea6c8/ntuple-scale/screen/heldout.json on the workstation and a promoted copy under artifacts/results/.
Agent contextSource files, operational notes and how to reproduce
Directory: approaches/ntuple-rl/ntuple-scale