Tetrarch v1
v1 -- killer moves. The search had no quiet-move ordering whatsoever:
transposition move, MVV-LVA captures, then generation order. Two killers per
ply closes the largest single ordering gap, and it is the first measured Elo
gain in the engine.
Elo | +50.42 +- 6.41 (95%)
SPRT | none -- sprt.py not built yet; fixed-N campaign
Conf | FIXED NODES 20000, Hash=256MB, classic/Teams, 111 workers
Games | N: 10000 (2500 openings x 4 rotations) score 5720.5 (57.20%)
Dist | 57, 8, 388, 31, 969, 47, 763, 21, 216
Null | -2.64 +- 6.24 on the same harness, 10000 games
Base | vs the Phase 3 baseline: alpha-beta + TT + quiescence, no quiet ordering
Bench | 93,846,865 perft nodes (unchanged; the bench is perft, not search)
Pins | classic d5: 228,628 -> 83,805 search nodes (36.7%)
Screened +40.66 +- 14.50 over 2000 games first, and the confirm came in higher
rather than regressing toward zero.
Search
- Killers -- two quiet moves per ply that last caused a beta cutoff there.
Scores sit strictly between quiet and capture, so captures are never
displaced. Cleared per search, not per game: a table left over from another
position orders by moves that meant something somewhere else.
Harness
This is the first result measured on a harness whose null self-test passes.
Two bugs had to be fixed first, both found by that test and neither visible any
other way:
- The seat rotation cancelled nothing. Rotating the board and the team
assignment together handed engine A the original R+Y armies in all four
rotations. Measured +36.26 +- 18.37 with the same engine on both sides. - A null self-test collapsed both sides into one subprocess, so all four seats
shared one transposition table -- the one run that certifies the harness was
the one run not exercising it.