summaryrefslogtreecommitdiff
path: root/tests/ecm_hard_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_hard_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_hard_quick.ep_')
-rw-r--r--tests/ecm_hard_quick.ep_360
1 files changed, 360 insertions, 0 deletions
diff --git a/tests/ecm_hard_quick.ep_ b/tests/ecm_hard_quick.ep_
new file mode 100644
index 0000000..521e1ae
--- /dev/null
+++ b/tests/ecm_hard_quick.ep_
@@ -0,0 +1,360 @@
+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 3r2k1/1q1P1ppp/r2R2n1/p4Q2/1ppB2R1/6P1/PP3PP1/6K1 w - -
+solution Rgxg6
+id "ECM.029"
+go
+setboard r1b2rk1/pp2b3/2pn1n1p/3pNppq/3P4/BP1N2P1/P3PPBP/R1Q2RK1 w - -
+solution Nxc6
+id "ECM.040"
+go
+setboard r1b2rk1/1p2bppp/p3pn2/4B3/1qBR4/2N5/P3QPPP/R5K1 w - -
+solution Bd3
+id "ECM.068"
+go
+setboard b1n1r1k1/2q2p1p/p4Pp1/1pBP4/4B1P1/2P1Q3/P4K1P/4R3 w - -
+solution Qh6
+id "ECM.071"
+go
+setboard 4r1k1/1b4pp/p7/1prP3q/2P1B3/5P2/P3Q2P/3RR2K w - -
+solution Bg6
+id "ECM.084"
+go
+setboard r1bn1rk1/pp3p1p/6p1/2bR2N1/2B2B2/q1P1P3/2Q2PPP/4K2R w K -
+solution Nxh7
+id "ECM.115"
+go
+setboard rn2qbr1/2p4k/p2p1nb1/1p1Pp2p/2P4P/2NBBPN1/PP1Q4/2KR2R1 w - -
+solution Nxh5
+id "ECM.128"
+go
+setboard 2rq1rk1/pp2bppp/1npp1n2/3PpN1b/2P5/2N3PP/PP2PPB1/R1BQ1RK1 w - -
+solution c5
+id "ECM.131"
+go
+setboard b3r3/q2B2k1/3Q2p1/1p5p/3pP3/5P2/1p4PP/5RK1 b - -
+solution d3+
+id "ECM.142"
+go
+setboard 6k1/4ppbp/p5p1/1B1Q4/2P2Pn1/8/qr4PP/2B2RK1 b - -
+solution Bd4+
+id "ECM.145"
+go
+setboard 1R3b2/3r3k/2p1bp1p/r1q1pNpQ/2PpP2P/6B1/P4PP1/1R4K1 w - -
+solution Nxh6
+id "ECM.186"
+go
+setboard 5rk1/5pbp/b5p1/p1nNN3/1p2n3/1P4PP/P4PB1/2BR2K1 w - -
+solution Nd7
+id "ECM.190"
+go
+setboard r2r1bk1/3qp2p/3pp1p1/p2n2N1/2N3Q1/BP4P1/P4PP1/2R3K1 w - -
+solution Nb6
+id "ECM.193"
+go
+setboard r1k3r1/pppnb1p1/4N3/3QP2p/3P3q/4B3/PPP2P2/R3KB2 w Q -
+solution Ba6
+id "ECM.198"
+go
+setboard r1bq1rk1/pppn2bp/3p2p1/3N1p2/8/BP1BRQ1P/P1PP1PP1/4R1K1 w - -
+solution Nxc7
+id "ECM.206"
+go
+setboard 3rr1k1/1b5p/p6p/1p3N2/6Pb/P1Q1p3/1PP4P/R5K1 b - -
+solution Bf2+
+id "ECM.237"
+go
+setboard 1k1r1r2/2b2R2/Bppp2p1/2q4p/Q2pP3/P2P4/2P3PP/1R4K1 w - -
+solution Bb7
+id "ECM.251"
+go
+setboard 4n1q1/1k1b4/2p4R/2Pp4/1p1N1rpQ/3B4/PPP2P2/2K5 w - -
+solution Nxc6
+id "ECM.271"
+go
+setboard r3r1k1/pp3pp1/2bb1q2/3p4/4n1Pp/2P1BB1P/PP2NPK1/R1Q4R b - -
+solution Qxf3+
+id "ECM.274"
+go
+setboard rn4k1/pp2p1b1/4b3/q2p2Q1/2B2P2/8/P1P1K1P1/R6R w - -
+solution Rh8+
+id "ECM.277"
+go
+setboard 2b1qr1k/7p/p1pR2p1/1pP1p1Q1/4P3/1B6/PP4PP/6K1 w - -
+solution Re6
+id "ECM.298"
+go
+setboard r1b2rk1/p3bppp/2q5/8/2p1NR2/PnB1P3/1PB1Q1PP/3R2K1 w - -
+solution Rd6
+id "ECM.315"
+go
+setboard r1bqr1k1/pp3pp1/2p4p/3PN1n1/3P1b2/2NB4/PPQ2PPP/3R1RK1 b - -
+solution Rxe5
+id "ECM.336"
+go
+setboard 2r2rbk/6bp/5qp1/1N1p1n2/4p3/1p5P/1P3PP1/RBBQ1RK1 b - -
+solution Ng3
+id "ECM.338"
+go
+setboard 2r3k1/p1r1ppb1/2bp1np1/q5N1/1p1BP2Q/3P4/PP2N1PP/2R2R1K w - -
+solution Bxf6
+id "ECM.360"
+go
+setboard r4rk1/5p2/p1b1pQpq/8/1B2P3/2NR4/PPP3PP/1K6 w - -
+solution Rd5
+id "ECM.367"
+go
+setboard 1r2r1k1/1pqb2pp/p2bp1n1/2p3BQ/3pN3/1P1P2P1/P1P3BP/4RRK1 w - -
+solution Bd8
+id "ECM.370"
+go
+setboard 3rr1k1/1p1qb2p/pP4p1/2p2p2/4RQ2/3P4/1PPB2PP/4R1K1 w - -
+solution Bc3
+id "ECM.420"
+go
+setboard 6k1/rnqb3p/5ppQ/2pPp3/p1N1P3/2PB3P/5PP1/1R4K1 w - -
+solution f4
+id "ECM.422"
+go
+setboard 6k1/p4p1p/3pqp2/2p1r3/2Pnr1N1/P6P/1P1Q1PP1/3R1RK1 b - -
+solution Ne2+
+id "ECM.427"
+go
+setboard 4qn1k/1b3rpp/pb2pB2/1pp1P2P/3p1NQ1/P2P2PB/1PP4K/5R2 w - -
+solution Ng6+
+id "ECM.442"
+go
+setboard 2b5/2qrrpk1/5Rp1/2p4p/1pB1PR1P/1P1P2P1/5Q1K/8 w - -
+solution Qb2
+id "ECM.443"
+go
+setboard 2k5/1p1b4/2n1p1r1/7q/4RP2/3BQN2/2P2K1P/8 w - -
+solution f5
+id "ECM.447"
+go
+setboard 2rq2k1/pp1bpp1p/3p1np1/8/3NPPnQ/1BP5/P1P3P1/1K1R3R w - -
+solution e5
+id "ECM.464"
+go
+setboard r1b3k1/3nqp1p/p1n1p1pP/3pP1N1/Pp3QN1/1Pr3P1/2PR1P2/4RBK1 w - -
+solution Rxd5
+id "ECM.465"
+go
+setboard 2rr2k1/5pn1/1b2q1pp/pP1pP3/2pP1PP1/2R1B2P/2Q3B1/3R3K w - -
+solution f5
+id "ECM.468"
+go
+setboard 4r3/pb3pk1/6p1/8/6P1/1PNrB2K/P4P1P/2R5 b - -
+solution Rexe3+
+id "ECM.476"
+go
+setboard 2b3k1/5qp1/p2r1n1p/3p4/3B4/1RP3QP/P2Nr1P1/3R2K1 b - -
+solution Ne4
+id "ECM.489"
+go
+setboard 1r2r1k1/p4ppb/q1pbnn1p/4p3/N1P1P3/pPB2NP1/2Q1RPBP/R5K1 b - -
+solution Nxe4
+id "ECM.491"
+go
+setboard rq1r2k1/3nbp1p/p2p2p1/1p1Pp1P1/3B1P2/3B3Q/PPP4P/2KR2R1 w - -
+solution f5
+id "ECM.497"
+go
+setboard r3rk2/pb2bpp1/1n5p/q1pP1B2/1p3B2/5N2/PPQ2PPP/R2R2K1 w - -
+solution Bc8
+id "ECM.503"
+go
+setboard 4qrk1/pp1bbppp/4pn2/2r1Q1B1/7P/2N3R1/PPP2PP1/2KR1B2 w - -
+solution Bxf6
+id "ECM.516"
+go
+setboard r5n1/pppb1B2/2k1pb2/3p2B1/5P2/2N5/PPP3P1/2KR4 w - -
+solution Nxd5
+id "ECM.517"
+go
+setboard 8/4Ppk1/6p1/1p6/1Pb1Q3/6pq/8/6K1 w - -
+solution Qe5+
+id "ECM.544"
+go
+setboard r1b2rk1/ppp2ppp/2n3q1/b2N2N1/2BP4/4p2P/PPP3P1/R2Q1RK1 w - -
+solution Nxf7
+id "ECM.553"
+go
+setboard 2rr2k1/1p3p2/p2n2p1/P2PnNq1/3QP1p1/1RN5/6PP/5RK1 b - -
+solution Nf3+
+id "ECM.560"
+go
+setboard rnb2rk1/pp4pp/2pb1n2/3N1p1q/2P5/3N2P1/P1Q1PPBP/R1B2RK1 w - -
+solution Bf4
+id "ECM.597"
+go
+setboard 8/p5k1/2p2p2/4p1p1/1p2P3/1P4PP/1PP5/5K2 b - -
+solution g4
+id "ECM.601"
+go
+setboard 8/8/4b1p1/2Bp3p/5P1P/1pK1Pk2/8/8 b - -
+solution g5
+id "ECM.605"
+go
+setboard 6k1/2q3p1/1n2Pp1p/pBp2P2/Pp2P3/1P1Q1KP1/8/8 w - -
+solution e5
+id "ECM.613"
+go
+setboard 6k1/1q2rpp1/p6p/P7/1PB1n3/5Q2/6PP/5R1K w - -
+solution b5
+id "ECM.615"
+go
+setboard 3rr1k1/pppRn1pp/4Pp2/1P5q/1QB5/4P3/P4P1P/4K1R1 w - -
+solution Qxe7
+id "ECM.627"
+go
+setboard r3qr1k/1b4pp/p2RQ3/Bp2p3/4p3/6P1/PPP2P1P/3R2K1 b - -
+solution Qh5
+id "ECM.637"
+go
+setboard 8/pR4pk/1b6/2p5/N1p5/8/PP1r2PP/6K1 b - -
+solution Rxb2
+id "ECM.640"
+go
+setboard r2qrbk1/5ppp/pn1p4/np2P1P1/3p4/5N2/PPB2PP1/R1BQR1K1 w - -
+solution Bxh7+
+id "ECM.654"
+go
+setboard 2rqr1k1/1p1bbppp/p3p3/n7/3P2Q1/2PB1N2/P4PPP/R1B1R1K1 w - -
+solution Bxh7+
+id "ECM.673"
+go
+setboard rn1q1rk1/pb1p1ppp/4p3/2pnP3/1bp5/2N2N2/PP3PPP/RBBQK2R w KQ -
+solution Bxh7+
+id "ECM.675"
+go
+setboard 3rr1k1/1pq1nppp/p1p2b2/4pB2/2QPP3/P1P1B3/1P4PP/3R1RK1 w - -
+solution Bxh7+
+id "ECM.680"
+go
+setboard 2rq1rk1/pp1bnpbp/4p1p1/3pP1N1/3P2Q1/2PB4/P4PPP/R1B1R1K1 w - -
+solution Nxh7
+id "ECM.684"
+go
+setboard r4rk1/pp1n1ppp/3qp3/3nN1P1/b2P4/P2B1Q2/3B1P1P/1R2R1K1 w - -
+solution Bxh7+
+id "ECM.687"
+go
+setboard r2qrnk1/4bppp/b1p5/1p1p2P1/p2P1N1P/2NBP3/PPQ2P2/2K3RR w - -
+solution Bxh7+
+id "ECM.693"
+go
+setboard 3qr1k1/1br2ppp/p2b4/8/PpNp4/3P4/1PP2PPP/R1BQ1RK1 b - -
+solution Bxh2+
+id "ECM.699"
+go
+setboard r3r1k1/pp3pp1/3p4/2q4p/2P5/1PB2Q1P/n4PP1/3R1RK1 w - -
+solution Bxg7
+id "ECM.713"
+go
+setboard r5k1/pn1q1rpp/2pp4/5R1N/bP6/4BQ2/P4PPP/2R3K1 w - -
+solution Nxg7
+id "ECM.714"
+go
+setboard r3r1k1/p3bppp/q1b2n2/5Q2/1p1B4/1BNR4/PPP3PP/2K2R2 w - -
+solution Rg3
+id "ECM.722"
+go
+setboard 3q1r2/1p1b1pk1/pn5p/3pN1pQ/3P3P/2r3B1/P4PP1/3RR1K1 w - -
+solution Nxf7
+id "ECM.730"
+go
+setboard r3r1k1/1bqn1ppp/1pp2p2/8/3P4/1B4N1/PP3PPP/R2QR1K1 w - -
+solution Bxf7+
+id "ECM.734"
+go
+setboard r3r1k1/pp3ppp/8/1Nbp3q/3NnBn1/2P5/PPQ2PPP/3R1RK1 b - -
+solution Ngxf2
+id "ECM.735"
+go
+setboard rqb1k2r/1p1nbp1p/p4pp1/8/1PBN1P2/P1N1P3/7P/2RQ1RK1 w kq -
+solution Bxf7+
+id "ECM.754"
+go
+setboard r2rn3/1p3pk1/p1pNn1pp/q3P3/P7/1PN4P/2QR1PP1/3R2K1 w - -
+solution Nxf7
+id "ECM.764"
+go
+setboard rnb2rk1/pp3pbp/2p3pB/2q5/4P3/1BN5/PPP3PP/R2Q1R1K w - -
+solution Rxf7
+id "ECM.770"
+go
+setboard 3qr1k1/1br1bp1p/p3p1pB/1p1nN3/3PB3/7Q/PP3PPP/3RR1K1 w - -
+solution Nxf7
+id "ECM.771"
+go
+setboard r2r2k1/pb1nbpp1/1qp1pn1p/1p2N3/3P1B2/P1N1P3/BPQ2PPP/2R2RK1 w - -
+solution Bxh6
+id "ECM.774"
+go
+setboard 1rbqnr2/5p1k/p1np3p/1p1Np3/4P2P/1Q2B3/PPP1BP2/2KR3R w - -
+solution Bxh6
+id "ECM.779"
+go
+setboard r1br2k1/p1q2pp1/4p1np/2ppP2Q/2n5/2PB1N2/2P2PPP/R1B1R1K1 w - -
+solution Bxh6
+id "ECM.780"
+go
+setboard 2r1r1k1/pb1n1pp1/1p1qpn1p/4N1B1/2PP4/3B4/P2Q1PPP/3RR1K1 w - -
+solution Bxh6
+id "ECM.789"
+go
+setboard r2qr3/2p1b1pk/p5pp/1p2p3/nP2P1P1/1BP2RP1/P3QPK1/R1B5 w - -
+solution Bxh6
+id "ECM.792"
+go
+setboard 2b2r1k/2p3pp/2Nb4/pP5q/2PP4/P4pP1/5P1P/R1BQ2K1 b - -
+solution Bxg3
+id "ECM.803"
+go
+setboard 1rb2rk1/p1p1qppp/2p2n2/3P4/1b3P2/2NB4/PPPBQ1PP/2KR3R b - -
+solution Ba3
+id "ECM.822"
+go
+setboard r1bq1rk1/ppp3p1/7p/3P2n1/2PQ1p2/1N5P/PPP2PPK/R1B2R2 b - -
+solution Nf3+
+id "ECM.831"
+go
+setboard rqbn1rk1/1p3ppp/p3p3/8/4NP2/8/PPP1BQPP/1K1R3R w - -
+solution Nf6+
+id "ECM.833"
+go
+setboard 3qr1k1/rp3pbp/2p3p1/3p1b2/N1nP4/P2NP3/1PQ2PPP/1BRR2K1 b - -
+solution Rxe3
+id "ECM.846"
+go
+setboard 3r1rk1/p3q1pp/2Rb4/3P4/8/1P2Qp2/PB3PPP/3R2K1 b - -
+solution Bxh2+
+id "ECM.858"
+go
+setboard 1r4k1/1q3pb1/r1b3p1/pp1Qp3/P3P3/1B2BP2/1PP3P1/1K1R3R w - -
+solution Qd8+
+id "ECM.860"
+go
+setboard 8/2q1np1k/6p1/1PPn3p/8/P2Q3P/6P1/2R4K b - -
+solution Nf5
+id "ECM.864"
+go
+setboard 7R/1p1r4/2b2p2/2Pp1qk1/3P1bp1/3N4/2Q2PB1/6K1 w - -
+solution Rg8+
+id "ECM.866"
+go
+setboard 2kr1br1/ppp2p1p/2n1p1q1/2Nn4/3P4/1Q2PB2/PP1B1P1P/2R1K2R b K -
+solution Qg1+
+id "ECM.875"
+go
+setboard r2r2k1/pp3ppp/2q5/2p5/2P1P1n1/P4P1b/1BQ1BP1P/R3R2K b - -
+solution Rd2
+id "ECM.879"
+go