Rollout
rejectedevidence: task-record onlypublic informationInstead of judging a column by how the board looks afterwards, play the game on from there — twenty-five more moves, several imagined disc streams — and judge it by how that went.
Instead of judging a column by how the board looks afterwards, play the game on from there — twenty-five more moves, several imagined disc streams — and judge it by how that went.
The intuition
Every hand evaluator is a guess about the future compressed into a number. A rollout replaces the guess with a rehearsal: take the board that a column produces, keep playing with some quick policy for twenty-five more moves, and see whether you are still alive and how much you scored. Do that for each column over several imagined disc streams, and the column that survives its rehearsals is the one to play.
Twenty-five moves is not an arbitrary number. It is five complete rise cycles, so a rollout of that length sees the consequences of a decision through the events that actually kill policies in this game.
The idea has the best single anecdote in the repository behind it, and also the clearest demonstration of why an anecdote is not a result — see below.
How it works, step by step
- Read the public position — board, next disc, rise clock.
- For each legal column, build a set of scenarios: synthetic streams of future discs and gray-disc reveals, generated from a hash of the visible position so that every column is rehearsed against the same luck.
- Play each rehearsal forward to the horizon with a quick continuation policy, accumulating the points actually scored.
- Charge a large penalty if the branch dies, and add one evaluation of the final board if it survives.
- Collapse each column's rehearsals into a mean, a lower bound, or a worst-quarter average, and play the best.
A second program in this directory does the same thing more expensively and for a different purpose: it beam-searches each root column across fourteen fixed synthetic tapes and votes across them, to produce labels — a stronger opinion about which column is best — for training and distillation work rather than for playing.
What happened, in plain English
The playing version was retired. With a weak continuation policy driving the rehearsals, the rehearsals inherit that policy's mistakes: you are not seeing what would happen, you are seeing what a weak player would do, twenty-five times over, and preferring the columns that suit it.
The labelling version was kept, with an explicit warning attached: it is a useful teacher and benchmark, and it is not a policy anyone may deploy. It costs far too much per decision, and every one of its plans is made inside a future it has been told in advance — which is the classic way to make a plan look better than any real player could achieve.
The strongest version of this idea lives in a different family, and it is worth knowing what happened to it, because it is the most instructive number in the repository.
The technical record
This directory. The experiment index records the planner as rejected, task-record only — "the tested 25-move control reproduced the weak continuation policy's mistakes" — and the teacher as completed, task-record only — "useful as a teacher/benchmark, not a deployable policy." Task-record only means both outcomes are reported in a research conversation and neither was promoted into the experiment history. No cohort, score, or per-game result for either program is retained in this repository.
Repository-verified from the source: rollout.cpp defaults to a 25-move
horizon and 7 scenarios, with root aggregation selectable as mean, lower
bound, CVaR25 or a blend, one to seven continuation samples, and a scaled
phase-style leaf for surviving branches. teacher.cpp defaults to a 25-move
horizon, 14 tapes and a beam of 8 per root action, with optional cross-tape
voting; its tapes are keyed on a hash of the canonical observable state —
board, next disc, rise clock — so it reads no hidden value and no real future
disc, but it does plan inside a future it has fixed in advance.
The properly recorded version of this idea, in the D4 long-outcome family. A 25-move, seven-scenario continuation driven by a completed depth-2 search, used to veto the reference search's move, produced a single pilot game of 404,047 points in 250 moves against 159,616 in 105 for the reference. That is ledger-recorded and labelled signal only — one game, and far outside its runtime limit. It was rescored to the corrected 17,000-point Hardcore award as 894,047 against 359,616 in audit 04, which called it the single largest unexploited number in the repository.
It was then tested properly.
Finding 03 is a 32-game
paired screen at corrected scoring — run validity valid, scientific outcome
fail, evidence tier development. The reference search averaged 339,290
points and 98.66 moves; the rollout veto averaged 292,780 and 86.34. The
paired mean difference was −46,510.5 points and −12.31 moves, with a
one-sided 95% bootstrap lower bound of −91,924.6, a 9–4–19 win record and a
sign test at p = 0.0436. Clear and reveal rates both fell. The same document
diagnoses why the veto almost never fired: its confidence test required the
mean advantage to exceed 0.92 standard deviations over seven scenarios, and
99.1% of the 12,314 candidate alternatives failed that one condition.
So the honest summary of the family is: one spectacular game, and a properly powered retest that went the other way.
What this taught us, and what is still open
- A rollout is only as good as the player inside it. This is the same diagnosis the MCTS work reached independently: the bottleneck was the weak continuation policy and the reused chance samples, not the number of simulations. Increasing the budget buys more of the wrong future.
- One long game is not evidence, and the repository has now proved that on itself. Score in this game is heavy-tailed; a policy can win a cohort because a single game ran unusually long. Finding 03 exists precisely because someone refused to let the 404,047-point game stand as a result.
- What is still open is affordability. The strategy catalog's second open direction is to make multi-cycle sibling comparison cheap by design — a cheaper verified continuation, batched transitions, admissible early elimination — while keeping the one positive pilot out of parameter selection. Multi-cycle comparison remains one of the more informative directions in the repository; this implementation of it is not the way to get there.
Source files
README.mdxrollout.cppteacher.cpp