Skip to content

Tune shallow search jointly - #264

Merged
thomasahle merged 1 commit into
masterfrom
codex/tune-shallow-search
Aug 26, 2026
Merged

Tune shallow search jointly#264
thomasahle merged 1 commit into
masterfrom
codex/tune-shallow-search

Conversation

@thomasahle

Copy link
Copy Markdown
Owner

Result

Jointly tunes five existing search constants with no new mechanism and no
Python/C engine line increase:

Parameter Master Candidate
QS 40 36
QS_A 140 180
LMR 75 70
LMR_MIN_DEPTH 6 7
FUT_CAP_DEPTH 3 4

The combination searches slightly more around the depth-six LMR boundary,
reduces a slightly broader intrinsic-value tail from depth seven, and keeps
the monotone shallow move cap for one additional finite depth. The changes
were selected jointly; the PR does not claim that any coordinate is valuable
in isolation.

The checked-in C-twin defaults receive the same substitutions. Regenerating
compressed.py is mechanical.

Strength

All matches used the classic C twin at 3+0.1, paired openings, and no engine
failure.

  • Pentanomial SPRT [0,+10], alpha/beta 0.05: H1 accepted after 1,314 games.
    Score 559-286-469; pentanomial [71,95,266,123,102]; LLR 2.96 / 2.94.
  • Independent fixed 1,000 games: 420-253-327,
    +32.41 +/- 18.52 Elo, pentanomial [55,75,177,108,85], LOS 99.97%.
  • Pinned Stockfish-1800 panel arms, 400 opening pairs per configuration:
    candidate-minus-master +16.10 Elo.
  • Pinned ChessIdle panel arms, 400 opening pairs per configuration:
    candidate-minus-master +6.96 Elo.
  • Frozen 2:1:1 master/Stockfish/ChessIdle panel, paired cluster bootstrap:
    +21.84 Elo, 90% interval [+11.11,+30.22] over 100,000 resamples.

The SPRT decides promotion; the fixed-N match supplies the quoted Elo
magnitude. Both external matchup point estimates are non-negative, and the
weighted panel's lower bound is positive.

Correctness and search model

Extending the static-cap horizon changes the selective recurrence but keeps
the existing monotone-cap proof. The Lean model is updated in the same commit:

  • forced mate in k plies is found uniformly by D >= 3k + 2;
  • the forced-loss dual is found by D >= 3k + 5;
  • a concrete mate-in-three witness still fails at depth 10, proving the first
    bound sharp for this recurrence;
  • executable eventual-mate depths move to 5, 11, and 17.

No gamma-dependent semantics or new TT premise is introduced.

Verification

  • full Lean build: passed;
  • model/source audit: passed;
  • Python tests: 576 passed, 2 skipped;
  • NNUE-side tests: 28 passed;
  • C/Python twin gate: 5,220 bound reports and 1,042 move lists, zero mismatch;
  • TT consistency: 48 passed;
  • terminal corpus at depth 5: 149 passed;
  • deterministic corpora: WAC d8 170/300, Bratko-Kopec d8 11/24,
    Lichess regressions d8 451/1736;
  • no added line exceeds 120 characters;
  • git diff --check: passed.

The repository diff is net -23 lines because the generalized mate-depth proof
is shorter; executable engine line count is unchanged.

@thomasahle
thomasahle merged commit fa12246 into master Aug 26, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant