Rarog 2.1.0
The release focuses on a repo-contained SPRT/SPSA testing
harness and a long sequence of individually gated search-tuning and
robustness fixes. The single largest change is a Stockfish-style
time-management rewrite that fixed a movetime budget bug — by far the
dominant contributor to the cumulative strength gain.
Highlights
- Time management rewrite (+81 Elo, confirmed by SPRT): fixed a bug where
a small movetime budget (e.g. 100 ms/move) collapsed search to depth 1
because the move-overhead subtraction could reduce the budget to ~1 ms.
Clock-mode budgeting now follows Stockfish's structure (optimum/maximum
scaling, falling-eval / best-move-instability / effort-factor stopping). - Time-safety valve: eliminated clock-mode time forfeits at fast time
controls (28 forfeits in a ~2,200-game gauntlet → 0), without regressing
normal-time allocation. Re-confirmed across two independent test harnesses. - Search tuning, each independently SPRT-confirmed: quiescence TT-bound
stand-pat refinement (+6.5 Elo), per-move quiet futility pruning (+8 Elo),
a harness-corrected LMR retune (+4 Elo), and an SPSA-tuned pruning/margin
pass (+6 Elo). - New repo-local testing/tuning harness: fastchess-based SPRT, SPSA via
weather-factory, PGO test-build scripts — all repo-contained, no
machine-global paths. - Minor robustness/perf cleanup: shrunk a hot-path struct, removed a
per-call board allocation, removed a provably-dead search arm.
Evaluated and rejected (for transparency)
Several speculative ports were tried and did not survive SPRT testing, so
they were reverted rather than shipped: a ProbCut port (−24.5 Elo), history
persistence across searches (−12.4 Elo), a singular-extension
double-extension cap (inconclusive), and an LMR "do-deeper" re-search margin
(−1.4 Elo).
Full changelog: see CHANGELOG.md