Baselines and diagnostics
The measuring instruments — simple reference players, cross-checks between the two rules engines, and per-move counters that say what a policy is actually doing.
Not every program in this repository is trying to win a game of Drop7. The seven listed here are the instruments: reference players that a candidate has to beat, cross-checks that the two implementations of the rules still agree, and counters that describe how a policy survives rather than how much it scored.
Three jobs
A baseline is a player you keep deliberately simple and frozen. Its only purpose is to give a number meaning. "Averaged 267,000 points" says nothing on its own; "averaged 267,000 where the frozen one-move-ahead search averaged 157,000 on the same 32 games" is a measurement. Comparisons here are made game by game against a fixed comparator and paired by seed, because Drop7 scores vary enormously from one game to the next.
A cross-check compares two implementations of the same rules. The rules exist twice here — once in TypeScript, once in C++ — because the C++ version is fast enough to play millions of games and the TypeScript version is the one that is easy to read and test. If they ever disagreed, every recorded score would be ambiguous. So the same games are replayed through both and the resulting traces are compared character by character.
A flow counter measures discs, not points. "Throughput" in this repository never means games per second; it means the rate at which the board is being cleared, per move. Two numbers do most of the work: how many numbered discs clear per move, and how many gray discs get their hidden number exposed per move.
What a flow counter counts, on one engine-verified move. Three 3s in a row clear; the two already-cracked gray discs beneath them are hit again and show their numbers (4 and 5); the gray to their right is hit for the first time and cracks. The move scores 21 points — which is why flow, not score, is the useful description of it.
Every board on these pages is the rules engine's own output for the position shown, not a drawing.
Why the flow numbers matter more than they look
A Drop7 game ends when the board fills. Every five drops, five discs have been placed by the player and seven more arrive underneath as a new gray row: twelve discs onto a 49-cell board. A policy therefore survives indefinitely only if it removes at least 12/5 = 2.400 numbered discs per move and opens at least 7/5 = 1.400 covered discs per move. That arithmetic is why the counters exist, and it is recorded in finding 01 together with the measurement that the depth-4 reference sustains 1.973 clears and 1.090 reveals per move — an 18% and 22% structural deficit — over 64 paired games at the exploratory development tier.
Score follows from that. In those same 64 games, 94.3% of all points came from the flat 17,000-point bonus paid at each rise, 5.7% from chains, and none at all from board clears, with score and moves-survived correlated at r = 0.9995.
What the records say
The technical record
| Instrument | What it produces | Status and evidence |
|---|---|---|
| Native parity | Byte-for-byte comparison of native and TypeScript traces | Completed — reproduced; 256 seeds and 6,852 transitions matched in this checkout |
| Heuristic benchmark | Paired complete-game comparisons among named TypeScript profiles | Support-only — repository-verified |
| Phase benchmark | Score, survival, flow, height, work, censoring for the shared phase policy | Support-only — repository-verified; no durable standalone result was located |
| D4 flow audit | Per-move geometry, flow and root-value traces for the depth-4 reference | Support-only — repository-verified |
| Trajectory throughput | Matched windows from public policies and a privileged ceiling | Completed — task-record only; motivated the ~2.4-clear / ~1.4-reveal targets |
| Tie-breaking | Sensitivity to the fixed legal-column ordering | Support-only — repository-verified |
| Cover-throughput probe | Five crack/reveal weight profiles over 256 historical games | Rejected — task-record only; the strongest profile was nearly flat |
Sources: experiment index §"Baselines and diagnostics"; reproducibility guide; audit 01; audit 04 §B.2, which lists five of these seven sources as "support-only — real questions with no lane".
What this taught us, and what is still open
- The two engines agree exactly on 6,852 transitions of random play. That is a determinism and portability result, and a real one.
- Agreement is not fidelity. Two engines can agree exactly on the wrong rules, and audit 01 demonstrates three places where this engine's scoring and opening differ from the reference implementation the repository itself cites. Its verdict on the hypothesis "the simulator is a faithful model of the target game" is recorded as fail, at the mechanics evidence tier; the divergences are one-sided and computable rather than invalidating.
- The cross-check also has blind spots that matter: in those 256 games the board was never cleared, no game was censored, and no chain went past depth 9, so the board-clear and censoring code paths have zero cross-engine coverage.
- Five of these instruments have no retained output at all. They can be run again — they are cheap — but nothing in this repository records what they said.
Approaches in this family
Replays the reference search over already-used games and writes down, for every single move, what the board looked like and what the search thought — so its habits can be studied instead of guessed at.
A harness that makes several simple hand-written players play the same games and reports who won each one, so a new idea can be compared against a fixed opponent instead of against luck.
Play the same games in both copies of the rules — the readable TypeScript one and the fast C++ one — and require the two write-ups to match character for character.
Plays complete games with the shared hand-written policy and reports not only its score but how it survived — clears, reveals, board height, search work and how many games were cut short.
Asks whether telling a simple player to care much more about breaking open gray discs makes it live longer — and finds that turning that dial up barely moves anything.
When two columns are worth exactly the same, something has to choose — this measures how much that arbitrary choice is worth over a whole game.
Runs a cheating player that can see the hidden numbers alongside honest players on the same games, and compares what each one's board looks like five moves at a time — to find out what a self-sustaining game actually looks like.