diff options
| author | Scott Gasch <[email protected]> | 2026-09-04 09:55:15 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2026-09-04 09:55:15 -0700 |
| commit | 550ea81a5a2ee2561c3feb91dc55686f4d3cb872 (patch) | |
| tree | 29e70ecf9fd2e115754bca4635b9ddd493f9f33d /src/board_representation/MIGRATION.md | |
| parent | 5c3e541b3bf62704eb8950441646deacaea6f887 (diff) | |
Add seescores diagnostic command, verify zero SEE-value drift
Board-representation migration section 4 item 4: seescores <filename>
(command.c, registered alongside script/sd) reads setboard lines from
an EPD file (same convention tests/ecm*.ep_ already use), generates
legal moves per position, and prints (FEN, SAN move, SEE value) for
every capture -- meant to be run once per GetAttacksBB toggle state
and diffed, closing a gap TestGetAttacks's attacker-list comparison
can't: whether _GetAttacksBB's attacker lists, though set-identical to
asm GetAttacks, still produce identical SEE() output once fed through
_MinLegalPiece's exchange simulation.
Run against all three curated suites (747 captures total: 51 + 351 +
345), same-commit asm-vs-GETATTACKS_BITBOARD=1 A/B build (same pair
used for the earlier sd10 comparison) -- output byte-identical, zero
diff, on all three. Confirms _GetAttacksBB is correct all the way
through to the final SEE() score every move-ordering decision actually
uses, not just at the raw attacker-list level.
precommit_check.sh clean. Default (no flag) release binary restored
after testing.
Only match_play.py remains unmet before full retirement of the old
mailbox GetAttacks implementation (section 7) -- deliberately deferred,
not run this pass.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Jntky4yGUTyQVaGCXms4F2
Diffstat (limited to 'src/board_representation/MIGRATION.md')
| -rw-r--r-- | src/board_representation/MIGRATION.md | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/board_representation/MIGRATION.md b/src/board_representation/MIGRATION.md index 313c74d..c6673ce 100644 --- a/src/board_representation/MIGRATION.md +++ b/src/board_representation/MIGRATION.md @@ -15,12 +15,13 @@ inline as a note rather than deleted, so a future session designing the separate migration doesn't have to rediscover it from git history. **Status: sections 1-3 (`bbPieces`/`bbPawns`-backed -`_WhoAttacksSquareBB`/`_GetAttacksBB`), section 4 items 1-3 and 5, and -section 6 (the `GETATTACKS_BITBOARD` toggle) all implemented, verified, -and committed -- including a whole-engine `sd10` check across all three -curated suites showing zero solve-count regression and +8.38% -aggregate NPS. Only `match_play.py` (section 4 item 6 / section 7) -remains unmet before full retirement of the old mailbox +`_WhoAttacksSquareBB`/`_GetAttacksBB`), all of section 4, and section 6 +(the `GETATTACKS_BITBOARD` toggle) implemented, verified, and +committed -- including a whole-engine `sd10` check across all three +curated suites (zero solve-count regression, +8.38% aggregate NPS) and +a `seescores` SEE-value diff across all 747 captures in those suites +(byte-identical, zero diff). Only `match_play.py` (section 4 item 6 / +section 7) remains unmet before full retirement of the old mailbox implementation, deliberately deferred for now. Section 5's whole-engine item and section 7's remaining items are otherwise done; section 8 not started.** See the per-section status notes below for specifics. @@ -461,7 +462,18 @@ sequence. ECM/random positions, run once per `GetAttacksBB` toggle state, diffed. Catches any behavioral drift `TestGetAttacks`'s raw-list comparison might miss once results feed into `_MinLegalPiece`'s - exchange simulation. Not started. + exchange simulation. **DONE.** `seescores <filename>` (`command.c`, + registered alongside `script`/`sd`) reads `setboard` lines from an + EPD file (the same convention `tests/ecm*.ep_` already use), + generates legal moves per position, and prints `(FEN, SAN move, SEE + value)` for every capture. Run against all three curated suites (747 + captures total: 51 + 351 + 345), once per binary from section 4 item + 5's same-commit asm-vs-`GETATTACKS_BITBOARD=1` A/B build -- output + **byte-identical, zero diff**, on all three. Confirms `_GetAttacksBB` + is correct not just at the attacker-list level (`TestGetAttacks`) + but all the way through `SEE()`/`_MinLegalPiece`'s exchange + simulation to the final score every move-ordering decision actually + uses. 5. **Full-suite behavioral check is mandatory here, not optional** -- this is the one place this migration is *riskier* than the Eval constant work: `GetAttacks` feeds move ordering and pruning decisions |
