summaryrefslogtreecommitdiff
path: root/tests/ecm_quick.ep_
diff options
context:
space:
mode:
authorScott Gasch <[email protected]>2026-08-29 00:30:53 -0700
committerScott Gasch <[email protected]>2026-08-29 00:30:53 -0700
commit917bf1260ae217bdcbdbc11c2c37cdb5d3a8eae9 (patch)
tree8013781f51e53eaf1fe3d4f45367e920d4c39786 /tests/ecm_quick.ep_
parent366eebaf6b72fc6b56ea06a71f0276069a501dc7 (diff)
Switch to Crafty-style killer ordering; fix mvNullmoveRefutations type-mixing bug and add a quiet-refutation killer backfill.
Killer tiers now try both of this ply's own killers before either ply-2-back one, matching Crafty's ordering. Two earlier attempts at this same swap were reverted for regressing; this pass lands on top of NumLeftoverMovesToSelect (more SelectBestWithHistory budget to reach these lower-tier slots) and a real bug fix below, and beats interleaved order head-to-head on solves, node count, and first-move beta cutoff across the three curated suites. The bug: mvNullmoveRefutations's empty-killer-slot backfill could only ever contain a capturing move (TryNullmovePruning only wrote it inside the capture-refutation branch), but IS_SAME_MOVE's mask includes the pCaptured bits, so that backfilled value could never match a real quiet candidate -- the backfill was silently dead code. Fixed by recording genuinely quiet null-move refutations into a new, separate mvNullmoveQuietRefutations array (kept separate so it can't clobber the capture history mvNullmoveRefutations still needs for the Botvinnik-Markoff same-piece-two-squares extension check) and backfilling the regular killer table from that instead. The check-evasion killer table intentionally does *not* get this backfill: a null-move refutation can never legitimately be an escaping-check move (null moves can't deliver check), so backfilling there risks IS_SAME_MOVE cross-context false positives instead of the old guaranteed-inert no-op. Measured at sd10 across ecm_ringers/ecm_confident_quick/ecm_hard_quick against head_reference (commit d11e973): 115/191 solves (vs. 116 baseline), 924.36M total nodes (vs. 933.23M), first-move beta cutoff within 0.1-0.9 points of baseline on all three suites -- and clearly better than the same fix under interleaved order (113/191 solves, 963.10M nodes), which loses to head_reference on every metric. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01EortUUkDVpsfrbqshBJYJg
Diffstat (limited to 'tests/ecm_quick.ep_')
-rw-r--r--tests/ecm_quick.ep_120
1 files changed, 120 insertions, 0 deletions
diff --git a/tests/ecm_quick.ep_ b/tests/ecm_quick.ep_
new file mode 100644
index 0000000..0fac36f
--- /dev/null
+++ b/tests/ecm_quick.ep_
@@ -0,0 +1,120 @@
+setboard 2q1r1k1/1ppb4/r2p1Pp1/p4n1p/2P1n3/5NPP/PP3Q1K/2BRRB2 w - -
+solution f7+
+id "ECM.001"
+go
+setboard 7r/1p2k3/2bpp3/p3np2/P1PR4/2N2PP1/1P4K1/3B4 b - -
+solution Bxf3+
+id "ECM.002"
+go
+setboard 4k3/p1P3p1/2q1np1p/3N4/8/1Q3PP1/6KP/8 w - -
+solution Qb5
+id "ECM.003"
+go
+setboard 2r1b1k1/R4pp1/4pb1p/1pBr4/1Pq2P2/3N4/2PQ2PP/5RK1 b - -
+solution Rcxc5
+id "ECM.004"
+go
+setboard 6k1/p1qb1p1p/1p3np1/2b2p2/2B5/2P3N1/PP2QPPP/4N1K1 b - -
+solution Bxf2+
+id "ECM.005"
+go
+setboard 3q4/pp3pkp/5npN/2bpr1B1/4r3/2P2Q2/PP3PPP/R4RK1 w - -
+solution Bxf6+
+id "ECM.006"
+go
+setboard 3rr1k1/pb3pp1/1p1q1b1p/1P2NQ2/3P4/P1NB4/3K1P1P/2R3R1 w - -
+solution Rxg7+
+id "ECM.007"
+go
+setboard r1b1r1k1/p1p3pp/2p2n2/2bp4/5P2/3BBQPq/PPPK3P/R4N1R b - -
+solution Bg4
+id "ECM.008"
+go
+setboard 3r4/1b2k3/1pq1pp2/p3n1pr/2P5/5PPN/PP1N1QP1/R2R2K1 b - -
+solution Rxh3
+id "ECM.009"
+go
+setboard 2r4k/pB4bp/6p1/6q1/1P1n4/2N5/P4PPP/2R1Q1K1 b - -
+solution Qxc1
+id "ECM.010"
+go
+setboard 1r5r/3b1pk1/3p1np1/p1qPp3/p1N1PbP1/2P2PN1/1PB1Q1K1/R3R3 b - -
+solution Nxg4
+id "ECM.011"
+go
+setboard 5rk1/7p/p1N5/3pNp2/2bPnqpQ/P7/1P3PPP/4R1K1 w - -
+solution Ne7+
+id "ECM.012"
+go
+setboard rnb2rk1/pp2np1p/2p2q1b/8/2BPPN2/2P2Q2/PP4PP/R1B2RK1 w - -
+solution Nd5
+id "ECM.013"
+go
+setboard 2k4r/1pp2ppp/p1p1bn2/4N3/1q1rP3/2N1Q3/PPP2PPP/R4RK1 w - -
+solution Nd5
+id "ECM.014"
+go
+setboard r3kb1r/pp2pppp/3q4/3Pn3/6b1/2N1BN2/PP3PPP/R2QKB1R w KQkq -
+solution Nxe5
+id "ECM.015"
+go
+setboard 2rr2k1/1b3p1p/p4qpb/2R1n3/3p4/BP2P3/P3QPPP/3R1BKN b - -
+solution Rxc5
+id "ECM.016"
+go
+setboard r1b1k3/5p1p/p1p5/3np3/1b2N3/4B3/PPP1BPrP/2KR3R w q -
+solution Rxd5
+id "ECM.017"
+go
+setboard r3rbk1/1pq2ppp/2ppbnn1/p3p3/P1PPN3/BP1BPN1P/2Q2PP1/R2R2K1 w - -
+solution Nxd6
+id "ECM.018"
+go
+setboard b7/2q2kp1/p3pbr1/1pPpP2Q/1P1N3P/6P1/P7/5RK1 w - -
+solution Rxf6+
+id "ECM.019"
+go
+setboard 1rr1nbk1/5ppp/3p4/1q1PpN2/np2P3/5Q1P/P1BB1PP1/2R1R1K1 w - -
+solution Bxa4
+id "ECM.020"
+go
+setboard r7/5kp1/2p1p2p/1p1n3P/2rP4/2P3R1/PK2RPP1/2B5 b - -
+solution Rxc3
+id "ECM.021"
+go
+setboard r1r3k1/p3qpp1/b1P4p/3p4/3Nn3/4P3/P1Q2PPP/1BR1K2R b K -
+solution Qb4+
+id "ECM.022"
+go
+setboard rn3rk1/4bppp/1q2p3/p2pP3/8/1PN2B1P/P4PP1/2RQ1RK1 w - -
+solution Bxd5
+id "ECM.023"
+go
+setboard 6rk/1p1br2p/pqp5/3pNP2/3Pp3/P5PR/5PKR/Q7 w - -
+solution Rxh7+
+id "ECM.024"
+go
+setboard 2b3k1/5p1p/7b/p2B3p/3P4/P2Q1N1P/1q3PP1/6K1 w - -
+solution Bxf7+
+id "ECM.025"
+go
+setboard r1b5/4k3/p7/3p1n2/3Bp3/2P2r1P/PPBK1P2/4R2R w - -
+solution Bc5+
+id "ECM.026"
+go
+setboard r4rk1/1b3Npp/p7/1p3Q2/3P4/1B2q3/P5PP/3n1R1K b - -
+solution Bxg2+
+id "ECM.027"
+go
+setboard r1b2rk1/2q2ppp/2pbp3/p7/4Nn2/3B4/PPPBQ1PP/R4R1K w - -
+solution Rxf4
+id "ECM.028"
+go
+setboard 3r2k1/1q1P1ppp/r2R2n1/p4Q2/1ppB2R1/6P1/PP3PP1/6K1 w - -
+solution Rgxg6
+id "ECM.029"
+go
+setboard r2q1rk1/p3b1pp/2p5/1pn5/1n1Bp1b1/1P6/PQ1PPP2/2RNKBNR b K -
+solution Bxe2
+id "ECM.030"
+go