Skip to content

Reduce shallow null searches one more ply - #265

Merged
thomasahle merged 3 commits into
masterfrom
codex/final-tuning-report
Aug 27, 2026
Merged

Reduce shallow null searches one more ply#265
thomasahle merged 3 commits into
masterfrom
codex/final-tuning-report

Conversation

@thomasahle

@thomasahle thomasahle commented Aug 26, 2026

Copy link
Copy Markdown
Owner

What

Search the shallow scoring-null child one ply less:

score = min(cap, -self.bound(pos.rotate(nullmove=True), 1 - gamma, depth - 4))

For eligible parent depths 3, 4, and 5, the pass-child schedule changes from 0, 1, 2 to 0, 0, 1. The deep fixed-target null reduction is unchanged.

The one-sided static cap is unchanged. There is deliberately no max(1 - MATE_LOWER, ...) floor: a negative mate-band pass is inert in the node maximum, while the static cap already prevents a positive virtual mate claim. NullRed.lean proves the mate results for every positive reduction, including even R4.

This changes one executable expression and adds no executable line.

Strength evidence

A registered C-twin 3+0.1 pentanomial SPRT measured this exact R4-versus-R3 coordinate and accepted H1 [0,+10]:

3046 games: 1230 wins / 702 draws / 1114 losses
+13.24 +/- 10.29 Elo; LOS 99.42%
Ptnml [173, 254, 610, 256, 230]
LLR +2.99 for [0,+10]: H1 accepted

An independent fixed 1,000-game R4 match measured +18.4 Elo with a 95% interval of [-0.2,+37.1].

A fresh confirmation against the jointly tuned current defaults remains pending. The earlier apparent FUEL_NULL=0 lead was rejected by its direct match at -60.14 +/- 19.51 Elo over 986 games, so this PR leaves deep null-guided reduction intact.

Proof and model

  • CappedNull.lean keeps the existing generic min report transport unchanged.
  • NullRed.lean proves that null-reduction parity is not load-bearing and includes dtm_optimal_R4.
  • The R4 child depth is synchronized through the fuel/capped recurrence and sharpness witnesses.
  • The existing uniform eventual-mate bounds remain unchanged.
  • The C twin and live full-search tuning defaults use NULL_CUT_RED=4; frozen benchmark manifests retain historical values.

Verification

  • Lean: all 26 modules build.
  • Python: 584 passed, 2 skipped.
  • Capped-null/model regressions: 35 passed.
  • Model/source audit: passed.
  • C twin quick identity: 246 probes and 423 move lists, zero mismatches.
  • Wide C/Python identity: first three sweeps had zero mismatches; the pathological QS=0 sweep was stopped after 10 minutes locally.
  • git diff --check: passed.

@thomasahle

Copy link
Copy Markdown
Owner Author

Update (2026-08-26): the corrected full-space CTT/MES follow-up reached 83/83/85 points across three independent seeds (251 paired observations, 502 games). It was paused when unrelated high-CPU work appeared on the shared host. The surrogate recommendations remained close to the incumbent and no new setting cleared validation.

One repeated observed lead was the incumbent with FUEL_NULL=0 (three pairs, noisy point estimate +67.4 Elo). A held-out check was started but, for the same resource-priority reason, stopped after 16 games: 7-5-4, posterior +33 Elo with a 90% interval of [-72,+146]. That is not evidence to merge. The validated #264 five-value combination remains the best result, so this PR documents it and explicitly records the inconclusive follow-up rather than claiming a new engine change.

@thomasahle thomasahle changed the title Document global search tuning campaign Document and synchronize global search tuning campaign Aug 26, 2026
@thomasahle thomasahle changed the title Document and synchronize global search tuning campaign Reduce and clamp shallow null searches Aug 27, 2026
@thomasahle
thomasahle force-pushed the codex/final-tuning-report branch 2 times, most recently from c51487a to ddda0ab Compare August 27, 2026 08:48
@thomasahle thomasahle changed the title Reduce and clamp shallow null searches Reduce shallow null searches one more ply Aug 27, 2026
@thomasahle
thomasahle force-pushed the codex/final-tuning-report branch from ddda0ab to 436f2d1 Compare August 27, 2026 09:00
@thomasahle
thomasahle marked this pull request as ready for review August 27, 2026 11:54
@thomasahle
thomasahle merged commit e396948 into master Aug 27, 2026
3 checks passed
@thomasahle
thomasahle deleted the codex/final-tuning-report branch August 27, 2026 12:09
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