diff options
| author | Scott Gasch <[email protected]> | 2026-10-14 12:16:43 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2026-10-14 12:16:43 -0700 |
| commit | ac5cc078b71e94b21a8a843628045c745022aa75 (patch) | |
| tree | 1633412357651cd94e34b50c74f23ff06608db7f /src/GNUmakefile | |
| parent | 91f01c607338eabb10ae1f8c144be55071d174a5 (diff) | |
Remove PRUNE_VERIFY entirely -- never compiled in its current form
PRUNE_VERIFY (shadow verification for ShouldLatePrune's deep-prune
gate) is dead code that has apparently never been built successfully:
search.c's #if defined(PERF_COUNTERS) && defined(PRUNE_VERIFY) block
reads fVerifyFlagged/uVerifyBand/uVerifyDepthB/uVerifyAttB/
uVerifyRateB/uVerifyPred, none of which are declared or assigned
anywhere in the file. Confirmed by compiling search.c with
-DPRUNE_VERIFY directly: 7 "use of undeclared identifier" errors.
Since GNUmakefile never defines PRUNE_VERIFY on any path (it's
opt-in only, ifdef PRUNE_VERIFY / PROFILE += -DPRUNE_VERIFY), nothing
has ever caught this.
Removed rather than fixed: reconstructing fVerifyFlagged/uVerifyBand/
etc.'s intended semantics from scratch would be inventing behavior,
not restoring it -- there's no prior working version to recover.
Removed: the broken block in search.c's move loop; its two
PRUNE_VERIFY-exclusive helper functions (PruneVerifyBand,
PvAttBucket/PvRateBucket -- careful to keep ShipDepthBucketPublic/
JOINT_TABLE_SENTINEL_PUBLIC/ShipLateBucketPublic/PruneVerifyPredict,
which PRUNE_LIVE also uses via its PruneLivePredict alias, simplifying
that block's guard from "(PERF_COUNTERS && PRUNE_VERIFY) || PRUNE_LIVE"
to just "PRUNE_LIVE"); the COUNTERS and g_Options struct fields in
chess.h (u64PruneVerifyTries/FailHigh/MarginSum/PredSum/Dyn/DynMiss)
and PRUNE_VERIFY_BANDS/SHIP_DEPTH_BUCKETS (the latter was only ever
used by PRUNE_VERIFY code); root.c's dead counter copies; script.c's
report-printing block and SHIP_DEPTH_BUCKETS-sized suite-total fields;
GNUmakefile's flag wiring (left a comment explaining the removal).
Found while scoping the PRUNE_LIVE guard above: PRUNE_LIVE is ALSO
currently broken (separate, pre-existing, unrelated bug) --
PruneVerifyPredict (search.c) returns g_uJointFHThousandths[...]'s
element type as ULONG, but that array is declared USHORT in data.c,
producing an "incompatible pointer to integer conversion" error under
-DPRUNE_LIVE=<K>. Confirmed pre-existing (reproduces identically with
this commit reverted). Not fixed here -- out of scope, nobody's asked
to touch PRUNE_LIVE, flagging for awareness only.
Verified: standard profile (GENETIC=1 PERF_COUNTERS=1 MP=1 SIXTYFOUR=1)
builds clean, precommit_check.sh passes (TEST=1 self-test + DEBUG
smoke test). PRUNE_LIVE's build was already broken before this commit
and remains identically broken after (confirmed via git stash).
Co-Authored-By: Claude Sonnet 5 <[email protected]>
Diffstat (limited to 'src/GNUmakefile')
| -rw-r--r-- | src/GNUmakefile | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/src/GNUmakefile b/src/GNUmakefile index 2cd1462..c625fa6 100644 --- a/src/GNUmakefile +++ b/src/GNUmakefile @@ -246,21 +246,12 @@ endif # u64JointExtraVerifyNullBailoutSignature), once WITH it for the # corrected rate. # 2026-10-03: PRUNE_VERIFY -- shadow verification for the DEEP PRUNE gate -# (ShouldLatePrune), the question JOINT_EXTRA_VERIFY structurally cannot -# answer: "this move was about to be skipped ENTIRELY -- would searching -# it have failed high?" AUDIT-ONLY by construction: the gate runs, its -# verdict is recorded, and the move is then searched anyway, so the -# measurement needs no bespoke shadow Search() call and has no -# null-move-bailout exposure. Costs counter increments plus one extra -# ShouldLatePrune evaluation per eligible move; never part of a normal -# build. Pair with SILENT_MISS_TRACE to get a PRUNEMISS line (FEN, move, -# alpha/beta, predicted FH, margin) for every miss found, for direct -# manual investigation -- SPEC.md's agreed design requirement that any -# wrong guess gets looked at and reasoned about, not just counted. -# Requires PERF_COUNTERS. -ifdef PRUNE_VERIFY -PROFILE += -DPRUNE_VERIFY -endif +# (ShouldLatePrune) was removed (2026-10-14): it never actually compiled +# (fVerifyFlagged/uVerifyBand/etc. were used in search.c but never +# declared -- PRUNE_VERIFY is never defined by any path in this file, so +# nothing ever caught it). Dead, broken code, not a working diagnostic; +# removed rather than fixed since reconstructing its intended semantics +# from scratch would be inventing behavior, not restoring it. # 2026-10-03: PRUNE_LIVE=<K> -- actually prune any gate-1-eligible move # whose 4D-table predicted FH% (Wilson upper bound, see data.c) is <= K |
