diff options
| author | Scott Gasch <[email protected]> | 2026-08-26 11:50:25 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2026-08-26 11:50:25 -0700 |
| commit | 7857096f39e16619a42ee85b4aa593abd846b74a (patch) | |
| tree | ce697561b7e6c0978f53323256c0ab9038662e3e /src/build.sh | |
| parent | 01f5b71fd484801f7b06df3bfb0156f5bb69fef7 (diff) | |
Replace ctx->uPositional with a data-calibrated Eval() return value.
uPositional was a per-thread EWMA of abs(material - true score) used to
size lazy-eval and futility margins. It was history-derived (reflecting
whatever recent, unrelated positions looked like) rather than derived
from the position actually being margined, and its update/consumption
was tangled with EVAL_HASH (now disabled).
Eval() now takes an optional SCORE *piPositional out-param and fills it
in on every return path: exact (abs(material-delta)) on a full eval,
or an estimate from a new EstimatePositionalScore() on a lazy exit.
EstimatePositionalScore()'s two terms (king-safety-defect-bucketed, and
a flat residual for mobility/passers/everything else) are calibrated
from ~1.6M measured full-eval samples (p90 of the actual swing), not
guessed -- an initial guessed version measurably regressed ECM solve
rate (630 vs a 650 baseline at sn=4M); the recalibrated version is back
at parity (649/879).
search.c's qsearch futility now reads the value Eval() just computed
instead of the stale/shared ctx field. Also removes QSearchInDangerNoStandPat
and SideCanStandPat, dead since the danger-hash check that fed them was
already commented out (e08387a) -- they depended on the same enprise/
trapped-piece data this conversation is about to move off of
g_PositionHash entirely.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
Diffstat (limited to 'src/build.sh')
0 files changed, 0 insertions, 0 deletions
