Repository navigation
Pygin v63
v63 -- losing captures near the leaves are skipped, and v62's rejected TT rule is gone. v62 shipped a transposition-table replacement rule that had already been rejected; v63 reverts it, so the core is v61's again. On that clean core it adds FI-38: a capture that loses material by static exchange is not searched when it loses more than 50cp per remaining ply near the leaves.
Elo | +9.50 +/- 6.0 for FI-38 K=50 on the clean core (SPRT-stopped, biased up)
| +20.95 +/- 7.9 for the clean core + v62's window vs v61 (SPRT-stopped)
SPRT | [0,4] normalized, LLR +2.961 -> ACCEPT H1 (stopped early)
| and LLR +3.049 -> ACCEPT H1 for the clean-core run (stopped early)
Games | N: 6802 W: 1893 L: 1707 D: 3202 (FI-38, two tranches)
| N: 3006 W: 880 L: 699 D: 1427 (clean core vs v61)
Penta | [121, 759, 1491, 860, 165] 3396 pairs, pair ratio 1.16, norm Elo +15.19
| [49, 309, 620, 453, 69] 1500 pairs, pair ratio 1.46, norm Elo +33.53
Conf | TIMED 50+0.50, x86, workers 48, Threads=1, Hash=192MB BOTH SIDES
Base | vs Old Engine/61 (same nnue_v12 net both arms), SUBSET_SEED 62
| ledger HELD at ~+354 -- every verdict here stopped at a bound
Bench | 1,123,567 nodes (was 1,203,792)
What changed
- The b05 TT rule is reverted. v62 carried
b4339ae+a1a31cd, the FI-115 completion, which had measured ACCEPT H0 (LLR -5.98) against v61 before the release. The C core is v61's again, plus the FI-38 setter. - FI-38 depth-scaled SEE pruning of captures. At depth 6 or less, off the PV, not in check and not giving check, a capture whose SEE is below -50 x depth is skipped.
SEE_SCALED_K = 0restores v61's tree node-for-node. - Carries v62's aspiration-window repair (FI-21) unchanged.
Testing
- HEAD with v62's settings vs v61 at 50+0.5, same net both sides: ACCEPT H1 at 3,006 games, ptnml 49/309/620/453/69, nElo +33.53.
- FI-38 K=50 vs that: 10+0.1 screen ACCEPT H1 (LLR +2.946, 7,813 games, +9.34 +/- 5.3), then 50+0.5 ACCEPT H1 (LLR +2.961, 6,802 games over two tranches, ptnml 121/759/1491/860/165, nElo +15.19).
- The K sweep around 50: K=25 +6.15 at the 10k cap, K=75 +2.74 and K=100 +0.63, both NULL at the full budget. 50 is the setting.
selftest.pynow pins a retained-TT probe (28 plies at d10 with the table kept), the one check that sees a TT replacement rule: 2,479,366 on this core against v62's 3,294,864.Old Engine/63is node-exact against the live engine in a fresh process at d10/d12/d14.
Known limits
- Every verdict in this release stopped at an SPRT bound, so both magnitudes are biased upward and the ledger is NOT advanced on them. A fixed-budget 50+0.5 run of v63 vs v61 is owed for the size.
- Measured on x86 (2x EPYC 7443). The Mac is unmeasured.
- Rejected on the way: the FI-38 quiets half (K2=24 and K2=50, both ACCEPT H0) and E-04 material-scaled net output (-10.64 +/- 6.3, fixed-node).
- PGO (+3.9% NPS measured on x86) is not in this build; it ships separately with its own measurement.
Full Changelog: v62...v63