summaryrefslogtreecommitdiff
path: root/src/chess.h
diff options
context:
space:
mode:
authorScott Gasch <[email protected]>2026-10-05 13:05:34 -0700
committerScott Gasch <[email protected]>2026-10-05 13:05:34 -0700
commitbb7cdcda4c8c30ad0ed71d0f60427daf05977b24 (patch)
tree99a5a3f9fa6edcced73d966df0af07274ff67962 /src/chess.h
parent5d9a5cf4036d07252e81d51e78e6dd36e65c9275 (diff)
New telemetry.
Diffstat (limited to 'src/chess.h')
-rwxr-xr-xsrc/chess.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/chess.h b/src/chess.h
index 420e313..b9cba3d 100755
--- a/src/chess.h
+++ b/src/chess.h
@@ -1014,6 +1014,14 @@ MOVE_STACK;
// which would have been a search-behavior change rather than a fix.
#define JOINT_EXTRA_TIER_COUNT (6)
+// Null-move R-factor breakdown (post-move dump, root.c) -- bucketed by
+// SelectNullmoveRFactor's whole-ply R value (searchsup.c). R is
+// currently TWO_PLY (sparse material) or THREE_PLY + depth/6 (Crafty-
+// style growth), so real traffic never gets near this bound; sized
+// with headroom and clamped at the top bucket rather than tied exactly
+// to a formula that might grow later.
+#define NULL_R_BUCKETS (12)
+
// 2026-10-03: PRUNE_VERIFY (GNUmakefile) -- shadow verification for the
// DEEP PRUNE gate (ShouldLatePrune), answering a question the LMR-side
// JOINT_EXTRA_VERIFY cannot: "this move was about to be skipped
@@ -1241,6 +1249,16 @@ typedef struct _COUNTERS
// leftover pool near the leaves. Counts every move this was
// applied to.
UINT64 u64LMPPruned;
+ // 2026-10-05: extended futility pruning (EFP, search.c) -- same
+ // shape as u64LMPPruned above, for the other overt-skip (not
+ // reduction) mechanism in the move loop.
+ UINT64 u64EFPPruned;
+ // 2026-10-05: null-move R-factor breakdown -- which whole-ply R
+ // SelectNullmoveRFactor chose, and how often the null-move
+ // search at that R actually failed high. Indexed by R/ONE_PLY,
+ // clamped to NULL_R_BUCKETS - 1.
+ UINT64 u64NullMoveTriesByR[NULL_R_BUCKETS];
+ UINT64 u64NullMoveSuccessByR[NULL_R_BUCKETS];
#ifdef PRUNE_VERIFY
// [predicted-FH band][shipped depth bucket] -- see
// PRUNE_VERIFY_BANDS above. Tries = moves the deep-prune gate
@@ -1985,6 +2003,9 @@ typedef struct _GAME_OPTIONS
UINT64 u64JointExtraTries[JOINT_EXTRA_TIER_COUNT];
UINT64 u64JointExtraResearch[JOINT_EXTRA_TIER_COUNT];
UINT64 u64LMPPruned;
+ UINT64 u64EFPPruned;
+ UINT64 u64NullMoveTriesByR[NULL_R_BUCKETS];
+ UINT64 u64NullMoveSuccessByR[NULL_R_BUCKETS];
#ifdef PRUNE_VERIFY
UINT64 u64PruneVerifyTries[PRUNE_VERIFY_BANDS][SHIP_DEPTH_BUCKETS];
UINT64 u64PruneVerifyFailHigh[PRUNE_VERIFY_BANDS][SHIP_DEPTH_BUCKETS];
@@ -3735,7 +3756,8 @@ TryNullmovePruning(IN OUT SEARCHER_THREAD_CONTEXT *ctx,
IN SCORE iBeta,
IN ULONG uNullDepth,
IN OUT INT *piOrigExtend,
- OUT SCORE *piNullScore);
+ OUT SCORE *piNullScore,
+ IN ULONG uNullRBucket);
void
UpdatePV(SEARCHER_THREAD_CONTEXT *ctx, MOVE mv);