From f784416c32023944a3830d00cac4571b2df9e84d Mon Sep 17 00:00:00 2001 From: Christopher Junius Date: Sun, 30 Aug 2026 12:20:18 -0400 Subject: [PATCH 1/9] Overhaul search and add hand-crafted evaluation terms Search (negamax.py): - Null-move pruning (R=2..3, zugzwang/check/low-depth guards, verification search at depth >= 10) - Late move reductions (late quiet non-checking non-TT moves searched 1..3 plies shallower, full-depth re-search on a fail-high) - Principal variation search (full window on move 0, null-window scout + re-search on the rest; the LMR scout shares the null window) - Mate-distance pruning Draw and mate scoring: - Threefold repetition and the fifty-move rule are now scored 0 inside the tree (negamax.claims_draw); a CONTEMPT constant is the hook for a non-zero draw score - Mate scores are distance-to-mate from the root (MATE - ply); the TT rebases them on store/probe (constants.tt_store_score / tt_probe_score) so mate bounds propagate. MATE_GUARD removed. TT probe/store take a ply argument. - UCI info reports `score mate N` for mate scores Evaluation (eval_terms.py): - Passed / isolated / doubled pawns, bishop pair, rook on open/half-open file, knight outposts, pawn-shield king safety, tempo - Pure-pawn terms memoised on the pawn bitboards by PestoEvaluator Docs: CHANGELOG, design.md, performance.md (re-benchmarked), engine-strength.md (estimate re-derived to ~2050), tasks.md (next five items researched and written), README, and the /bench skill. Co-Authored-By: Claude Sonnet 5 --- .claude/skills/bench/SKILL.md | 47 +++++---- CHANGELOG.md | 41 ++++++++ README.md | 19 ++-- docs/design.md | 18 ++-- docs/engine-strength.md | 76 +++++++++------ docs/performance.md | 94 +++++++++--------- docs/tasks.md | 159 +++++++++++++++--------------- src/pychess/__main__.py | 13 ++- src/pychess/constants.py | 41 ++++++-- src/pychess/eval_terms.py | 175 ++++++++++++++++++++++++++++++++++ src/pychess/evaluation.py | 35 ++++++- src/pychess/move_ordering.py | 8 ++ src/pychess/negamax.py | 171 +++++++++++++++++++++++++++++---- src/pychess/shared_tt.py | 15 +-- src/pychess/transposition.py | 32 +++++-- tests/test_eval_terms.py | 90 +++++++++++++++++ tests/test_move_ordering.py | 18 ++++ tests/test_negamax.py | 166 +++++++++++++++++++++++++++++++- tests/test_transposition.py | 21 +++- tests/test_uci.py | 28 ++++++ 20 files changed, 1034 insertions(+), 233 deletions(-) create mode 100644 src/pychess/eval_terms.py create mode 100644 tests/test_eval_terms.py diff --git a/.claude/skills/bench/SKILL.md b/.claude/skills/bench/SKILL.md index 0c726b4..8f6af07 100644 --- a/.claude/skills/bench/SKILL.md +++ b/.claude/skills/bench/SKILL.md @@ -8,8 +8,8 @@ description: > # bench -`docs/performance.md` must only ever contain **measured** numbers. This skill -produces them; never hand-edit timings. +`docs/performance.md` must only ever contain **measured** numbers for the +current engine. This skill produces them; never hand-edit timings. ## 1. Environment @@ -23,9 +23,10 @@ are labelled with them and results are machine-specific. ## 2. Fixed-depth single-process search (start position) -Regenerates the "After" column of the "Single process, fixed-depth `search()`" -table. A fresh `Negamax` per depth (cold TT), un-armed clock so it never aborts. -"Nodes" is `searcher.nodes` (main search + quiescence). +Regenerates the "Single process, fixed-depth `search()`" table - the controlled +baseline, second in the file. A fresh `Negamax` per depth (cold TT), un-armed +clock so it never aborts. "Nodes" is `searcher.nodes` (main search + +quiescence). Stop adding rows once a search passes ~5 seconds. ```python import time @@ -37,27 +38,35 @@ from pychess.move_ordering import MoveOrderer from pychess.negamax import Negamax from pychess.transposition import TranspositionTable -for depth in range(2, 8): +for depth in range(2, 12): s = Negamax(PestoEvaluator(), MoveOrderer(), TranspositionTable(), Clock()) t = time.time() s.search(EvalBoard(), -INF, INF, depth) - print(f"| {depth} | {time.time() - t:.3f}s / {s.nodes:,} |") + dt = time.time() - t + print(f"| {depth} | {dt:.3f}s | {s.nodes:,} |") + if dt > 5: + break ``` ## 3. Lazy SMP (start position) -Regenerates the "After" column of the "What `go` runs today: Lazy SMP" table. -Use a generous `movetime` so the run isn't deadline-capped. +Regenerates the "What `go` runs today: Lazy SMP" table - the real search path, +first in the file. Use a generous `movetime` so the run isn't deadline-capped. +Stop once a search passes ~5s. Node counts and times vary run to run; take one +clean run and note that in the file. ```python import time from pychess.eval_board import EvalBoard from pychess.engine import Engine -for depth in (6, 7, 8): +for depth in range(6, 12): t = time.time() r = Engine().search(EvalBoard(), {"depth": depth, "movetime": 120000}) - print(f"| {depth} | reached d{r.depth} | {time.time() - t:.2f}s | {r.nodes:,} nodes |") + dt = time.time() - t + print(f"| {depth} | {dt:.2f}s | {r.nodes:,} |") + if dt > 5: + break ``` Run each script with `.venv/bin/python` (or the active env). Steps 2 and 3 @@ -65,20 +74,22 @@ together take roughly a minute. ## 4. Update `docs/performance.md` -- Replace the "After (time / nodes)" cells in the fixed-depth table and the - Lazy SMP table with the new numbers. +- Replace the rows in both tables with the new numbers. +- The single-process table's `perft(depth)` column is the published start-position + perft sequence (400 / 8,902 / 197,281 / 4,865,609 / 119,060,324 / + 3,195,901,860 / 84,998,978,956 for depths 2-8) - static, only extend it if you + add deeper rows. Recompute the `pruned` column as `1 - nodes/perft` from the + fresh node counts. - Update the machine / Python-version sentence at the top of the file. -- **Leave alone:** the "Before" columns (pre-review engine, not reproducible), - the M1 reference paragraph, and the "Single-process iterative deepening - (removed)" table. -- Recompute the "speed-up" column from the new numbers. +- Keep both tables trimmed to where the time is ~5s or less - drop or add rows + as the numbers move. ## 5. Cross-check If speed changed materially, check whether these still hold and flag (don't silently rewrite) any that drifted: -- the `~45-50k nps` figure and the "depth ~6-8 in blitz" notes in +- the `~45-50k nps` figure and the blitz / rapid depth notes in `docs/engine-strength.md`. ## 6. Report diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dcbabe..cd5a7d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,47 @@ follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Added + +- Null-move pruning in `Negamax.search`: when a null move fails high at reduced + depth (`R = 2..3`) the node returns a `beta` cut-off without searching the + real moves. Skipped at the root, while in check, in likely zugzwang (side to + move has only king and pawns), below depth 3, and when it was already tried + on the path; a verification search guards the cut-off at depth >= 10. +- Late move reductions in `Negamax.search`: past the first three moves at a + node (depth >= 3), quiet non-checking non-TT moves are first searched + `1..3` plies shallower - the reduction grows with move index and depth and + shrinks by one for killers / positive-history moves. A reduced search that + beats `alpha` is repeated at full depth. New `MoveOrderer.is_killer` / + `MoveOrderer.history_score` accessors support the reduction decision. +- Principal variation search in `Negamax.search`: only the first (best-ordered) + move gets the full `(alpha, beta)` window; every later move is scouted with a + null window and re-searched at full depth and width only when the scout beats + `alpha` without an already-certain cut-off. The LMR scout now shares that + null window. +- In-tree draw detection: threefold repetition and the fifty-move rule are now + scored as draws inside the search (`negamax.claims_draw`), not just the + automatic five-fold / seventy-five-move draws. Every draw scores a flat `0` + (previously the game-over branch could return `0 - depth`); a `CONTEMPT` + constant is the hook for a non-zero draw score. +- Mate-distance pruning in `Negamax.search`: the window is clamped to the + best/worst mate still reachable from the node, so the search never chases a + slower mate than one already found. +- Positional evaluation terms (`eval_terms`) layered on the PeSTO tables: + passed / isolated / doubled pawns, bishop pair, rooks on open / half-open + files, knight outposts, a pawn-shield king-safety penalty, and a tempo bonus. + The pure-pawn terms are memoised on the pawn bitboards by `PestoEvaluator`. + +### Changed + +- Mate scores are now distance-to-mate from the search root (`MATE - ply`) + instead of `-MATE - remaining_depth`. The transposition table rebases them on + store/probe (`constants.tt_store_score` / `tt_probe_score`) so mate bounds + propagate through it; `MATE_GUARD` is gone. `TranspositionTable` / + `SharedTT` `probe` / `store` take a `ply` argument. +- UCI `info` lines report `score mate N` (signed, in moves) for mate scores + instead of a large `score cp`. + ## [0.1.0] - 2026-08-30 Initial release. diff --git a/README.md b/README.md index 5153818..4b599e7 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,14 @@ [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) A UCI chess engine in Python. `Negamax` (fail-soft alpha-beta with a -check-aware quiescence search) is the core; it takes an evaluator, a move -orderer, a transposition table, and a clock as constructor arguments. +check-aware quiescence search, null-move pruning, late move reductions, and +principal variation search) is the core; it takes an evaluator, a move orderer, +a transposition table, and a clock as constructor arguments. `lazy_smp.search` runs one iterative-deepening `Negamax` per worker process against a shared-memory transposition table and returns the deepest completed line. Evaluation is PeSTO - tapered mid/endgame piece-square tables kept as an -incremental accumulator on the board. See [docs/design.md](docs/design.md) for +incremental accumulator - plus hand-crafted terms (pawn structure, king safety, +bishop pair, rook files, outposts). See [docs/design.md](docs/design.md) for the full feature list and backlog. ![pychess playing itself](docs/self-play.gif) @@ -21,16 +23,16 @@ the full feature list and backlog. ## Estimated Engine Strength -Around **1800–2000 Elo** at blitz, most likely ~1900. This is a feature-based +Around **1950–2150 Elo** at blitz, most likely ~2050. This is a feature-based estimate from the search and evaluation, **not a measured result** - no games against rated opposition have been run yet. | Time control | Estimate | Why | |---|---|---| -| Bullet (1+0) | ~1600–1750 | Python per-move overhead dominates. | -| Blitz (3+2 / 5+3) | ~1850–2000 | Reaches depth 6–8. | -| Rapid / Classical | ~2000–2150 | Reaches depth 9–10+; PeSTO scales well with depth. | -| Lichess bot pool | ~1950–2200 blitz | Bot ratings there tend to run higher than CCRL. | +| Bullet (1+0) | ~1750–1900 | Python per-move overhead dominates. | +| Blitz (3+2 / 5+3) | ~1950–2150 | Reaches depth 8–10. | +| Rapid / Classical | ~2150–2300 | Reaches depth 11–13+; a PST-based eval scales well with depth. | +| Lichess bot pool | ~2050–2300 blitz | Bot ratings there tend to run higher than CCRL. | See [docs/engine-strength.md](docs/engine-strength.md) for how the number is derived, calibration against known engines, and how to turn it into a measured @@ -73,6 +75,7 @@ pychess/ │ ├── negamax.py Negamax - fail-soft negamax + quiescence over injected pieces │ ├── move_ordering.py MoveOrderer - TT move / MVV-LVA / killers / history │ ├── evaluation.py PeSTO tables + PestoEvaluator +│ ├── eval_terms.py positional terms (pawn structure, king safety, bishop pair, …) │ ├── eval_board.py EvalBoard - chess.Board with an incremental eval accumulator │ ├── transposition.py TranspositionTable - in-process dict │ ├── shared_tt.py SharedTT / SharedFlag - lock-free shared-memory table diff --git a/docs/design.md b/docs/design.md index 27b3f80..787d437 100644 --- a/docs/design.md +++ b/docs/design.md @@ -28,8 +28,13 @@ layer and the only place that prints `info` / `bestmove`. - [Negamax](https://www.chessprogramming.org/Negamax) - fail-soft - [Alpha-Beta Pruning](https://www.chessprogramming.org/Alpha-Beta) +- [Principal Variation Search](https://www.chessprogramming.org/Principal_Variation_Search) - full window on the first move, null-window scout + re-search on the rest +- [Null Move Pruning](https://www.chessprogramming.org/Null_Move_Pruning) - `R = 2..3`, skipped in check / zugzwang / at low depth, with a verification search at high depth +- [Late Move Reductions](https://www.chessprogramming.org/Late_Move_Reductions) - late quiet non-checking moves searched `1..3` plies shallower, full-depth re-search on a fail-high +- [Mate-distance pruning](https://www.chessprogramming.org/Mate_Distance_Pruning) - window clamped to the fastest mate still possible from the node - [Quiescence Search](https://www.chessprogramming.org/Quiescence_Search) - fail-soft, depth-bounded, check-aware -- [Transposition Table](https://www.chessprogramming.org/Transposition_Table) - Zobrist-keyed, EXACT / LOWER / UPPER bounds +- Draw detection - threefold repetition and the fifty-move rule scored `0` inside the tree (`CONTEMPT` hook for a non-zero draw score) +- [Transposition Table](https://www.chessprogramming.org/Transposition_Table) - Zobrist-keyed, EXACT / LOWER / UPPER bounds, mate scores rebased by ply on store/probe - [Iterative Deepening](https://www.chessprogramming.org/Iterative_Deepening) - per worker, with UCI time management - [Move Ordering](https://www.chessprogramming.org/Move_Ordering) - TT move, [MVV-LVA](https://www.chessprogramming.org/MVV-LVA) captures, promotions, [killers](https://www.chessprogramming.org/Killer_Heuristic), [history](https://www.chessprogramming.org/History_Heuristic) - [Lazy SMP](https://www.chessprogramming.org/Lazy_SMP) - workers share a lock-free shared-memory TT @@ -38,6 +43,7 @@ layer and the only place that prints `info` / `bestmove`. ### [Evaluation](https://www.chessprogramming.org/Evaluation) - [PeSTO](https://www.chessprogramming.org/PeSTO%27s_Evaluation_Function) - tapered mid-/end-game [piece-square tables](https://www.chessprogramming.org/Piece-Square_Tables), interpolated by game phase, [incrementally updated](https://www.chessprogramming.org/Incremental_Updates) on `EvalBoard.push` / `pop` +- Positional terms (`eval_terms`) - [passed](https://www.chessprogramming.org/Passed_Pawn) / [isolated](https://www.chessprogramming.org/Isolated_Pawn) / [doubled](https://www.chessprogramming.org/Doubled_Pawn) pawns, [bishop pair](https://www.chessprogramming.org/Bishop_Pair), [rook on open file](https://www.chessprogramming.org/Rook_on_Open_File), [knight outposts](https://www.chessprogramming.org/Outpost), [pawn-shield king safety](https://www.chessprogramming.org/King_Safety), [tempo](https://www.chessprogramming.org/Tempo); recomputed per call with the pawn terms cached on the pawn bitboards ## Backlog @@ -46,18 +52,16 @@ layer and the only place that prints `info` / `bestmove`. - [Static Exchange Evaluation](https://www.chessprogramming.org/Static_Exchange_Evaluation) for capture ordering - [Relative History Heuristic](https://www.chessprogramming.org/Relative_History_Heuristic) - [Aspiration Windows](https://www.chessprogramming.org/Aspiration_Windows) -- [Null Move Pruning](https://www.chessprogramming.org/Null_Move_Pruning) -- [Principal Variation Search](https://www.chessprogramming.org/Principal_Variation_Search) -- [Late Move Reductions](https://www.chessprogramming.org/Late_Move_Reductions) - [Syzygy endgame tablebases](https://www.chessprogramming.org/Endgame_Tablebases) ### Evaluation -- [King safety](https://www.chessprogramming.org/King_Safety), [pawn structure](https://www.chessprogramming.org/Pawn_Structure) (doubled / isolated / passed), [mobility](https://www.chessprogramming.org/Mobility), [tempo](https://www.chessprogramming.org/Tempo) -- [Evaluation](https://www.chessprogramming.org/Evaluation_Hash_Table) / [material](https://www.chessprogramming.org/Material_Hash_Table) / [pawn](https://www.chessprogramming.org/Pawn_Hash_Table) hash tables +- Stronger [king safety](https://www.chessprogramming.org/King_Safety) (attack-weight on the king zone, not just the pawn shield), [mobility](https://www.chessprogramming.org/Mobility), [backward pawns](https://www.chessprogramming.org/Backward_Pawn), king-distance scaling for passers +- [Evaluation](https://www.chessprogramming.org/Evaluation_Hash_Table) / [material](https://www.chessprogramming.org/Material_Hash_Table) hash tables; make the new positional terms incremental on `EvalBoard` ### Alternative search algorithms to evaluate -- [NegaScout](https://www.chessprogramming.org/NegaScout) - [NegaC*](https://www.chessprogramming.org/NegaC*) - [MTD(f)](https://www.chessprogramming.org/MTD\(f\)) + +(NegaScout / PVS is already implemented - see above.) diff --git a/docs/engine-strength.md b/docs/engine-strength.md index 20c848b..110318d 100644 --- a/docs/engine-strength.md +++ b/docs/engine-strength.md @@ -1,64 +1,86 @@ # Engine Strength -**Estimated rating: ~1800–2000 Elo** (FIDE / CCRL-ish scale) at blitz, most -likely around **1900**, with wide error bars (±150). +**Estimated rating: ~1950–2150 Elo** (FIDE / CCRL-ish scale) at blitz, most +likely around **2050**, with wide error bars (±150). This is a reasoned estimate from the feature set and search speed, **not a measured result** — no games against rated opposition or a reference engine have been run yet. See [Measuring it properly](#measuring-it-properly) below. +This estimate was re-derived after the search rebuild (null-move pruning, LMR, +PVS, mate-distance pruning, correct draw / mate scoring) and the first pass of +hand-crafted evaluation terms landed — see `CHANGELOG.md`. The previous figure +(~1900) predated all of that. + ## How the estimate is derived ### What pulls it up | Component | Contribution | |---|---| -| PeSTO tapered evaluation | The biggest single factor. PeSTO is a genuinely strong minimal eval — a fast engine with *only* PeSTO plays ~2000+. It understands piece activity, king centralization in endgames, and pawn advancement. | -| Alpha-beta + transposition table + iterative deepening + move ordering (TT move, MVV-LVA, killers, history) | A solid, modern search core. Move ordering is good enough that the search tree is near-optimally shaped. | -| Check-aware, depth-bounded quiescence | Won't hang pieces or miss short forcing tactics / mates inside the horizon. | +| PeSTO tapered evaluation | A genuinely strong minimal eval — a fast engine with *only* PeSTO plays ~2000+. Understands piece activity, king centralisation in endgames, pawn advancement. | +| Hand-crafted eval terms on top (passed / isolated / doubled pawns, bishop pair, rook on open file, knight outposts, pawn-shield king safety, tempo) | Fills the biggest PeSTO blind spots. Basic king safety removes a class of "walked into an attack" losses. Untuned, so conservatively worth +30–100 over bare PeSTO. | +| Modern search: alpha-beta + PVS + null-move pruning + LMR + mate-distance pruning, over a Zobrist TT with iterative deepening | The standard reduction stack. Reaches 2–4 plies deeper than plain alpha-beta for the same time — the single biggest strength factor after the eval. | +| Move ordering: TT move, MVV-LVA, promotions, killers, history | Good enough that the tree is near-optimally shaped and the reductions above pay off. | +| Check-aware, depth-bounded quiescence with delta pruning | Won't hang pieces or miss short forcing tactics / mates inside the horizon. | +| Correct mate & draw scoring | Distance-to-mate scores propagate through the TT; threefold / fifty-move draws are seen inside the tree. Removes a class of half-point losses and slow conversions. | +| Lazy SMP over ~9 cores | ~2–3x effective speed-up, so a ply or two deeper again in real games. | | Opening book (Stockfish-derived Polyglot) | Avoids early disasters. Worth roughly +50–150. | ### What holds it down -- **No null-move pruning, LMR, PVS, or search extensions.** Engines with these - search ~2–4 plies deeper for the same time. This alone is worth an estimated - 250–400 Elo and is the main gap between this bot and a "strong hobby engine". -- **Evaluation has no king-safety or pawn-structure terms.** An opponent who - keeps the position closed, avoids tactics, and slowly builds a kingside - attack can exploit this — the bot won't see the attack coming until material - is already falling. -- **Pure Python, ~45–50k nps** — roughly 1000x slower than a compiled engine. - In a blitz middlegame it reaches depth ~6–8 in quiet positions, ~4–6 in - sharp ones. -- Incomplete draw / repetition handling can cost the occasional half-point. +- **Pure Python, ~45–50k nps per core** — roughly 1000x slower than a compiled + engine. With Lazy SMP and the reductions it reaches depth ~8–9 from the + opening in a few seconds ([performance.md](performance.md)); a blitz + middlegame runs ~7–9 plies in quiet positions, ~5–7 in sharp ones. This is + now the dominant ceiling. +- **Eval weights are untuned.** PeSTO's tables plus the new terms have never + been fit to this engine's own games, so some terms may be pulling against + each other. A Texel-style tuning pass is the highest-ceiling item left. +- **No shallow-depth pruning or aspiration windows.** Reverse-futility / + futility / late-move pruning and a narrowed root window would each buy more + depth; SEE would sharpen capture ordering and quiescence. +- **King safety is only a pawn-shield term** — no attacker-count / attack-weight + model, so a slow piece build-up against the king is under-valued until it is + nearly a threat. +- **No search extensions** (check / one-reply / singular), so some tactics are + still missed right at the horizon. +- **Endgame technique is thin** — no tablebases, and a PST-based eval converts + won endings slowly. ## Calibration against known engines - **TSCP 1.81** (C; alpha-beta, quiescence, hash, history, iterative deepening, *no* null-move) is ~1700–1750 CCRL blitz. This bot has a clearly better - evaluation and move ordering, but is much slower and searches no deeper - structurally → roughly a wash, maybe slightly above. -- **Sungorus / CT800 / Claudia** class (null-move + LMR) sit ~2000–2200. This - bot is a notch below them. + search and eval but runs ~20x slower — net clearly ahead, ~2000–2150. +- **Sungorus 1.4** (C; null-move, LMR, PST eval, ~1M nps) is ~2330 CCRL. This + bot has a comparable search stack and a comparable-or-better hand-crafted + eval, but ~20x fewer nps costs ~150–250 → ~2050–2200. +- **CT800 / Claudia** class (~2300–2400) sit above this bot, mostly on speed + and eval tuning. ## Time-control sensitivity | Time control | Estimate | Why | |---|---|---| -| Bullet (1+0) | ~1600–1750 | Python per-move overhead dominates. | -| Blitz (3+2 / 5+3) | ~1850–2000 | Reaches depth 6–8. | -| Rapid / Classical | ~2000–2150 | Reaches depth 9–10+; PeSTO scales well with depth. | -| Lichess bot pool | ~1950–2200 blitz | Bot ratings there tend to run higher than CCRL. | +| Bullet (1+0) | ~1750–1900 | Python per-move and Lazy SMP process-spawn overhead dominate. | +| Blitz (3+2 / 5+3) | ~1950–2150 | Reaches depth 8–10. | +| Rapid / Classical | ~2150–2300 | Reaches depth 11–13+; a PST-based eval scales well with depth. | +| Lichess bot pool | ~2050–2300 blitz | Bot ratings there tend to run higher than CCRL. | ## Where the number would move Completing the [roadmap](tasks.md): -- Null-move pruning + LMR + PVS + aspiration windows: historically **+250–400 Elo**. -- King-safety + pawn-structure evaluation terms: another **+100–200**. +- Aspiration windows + shallow-depth pruning + SEE + extensions: historically + **+80–180 Elo** combined at this level, and they compound with the reductions + already in place. +- Texel-tuned eval weights: **+30–100**, possibly more given how untuned things + are now. +- Deeper king safety, mobility, Syzygy tablebases: another **+50–150**. That would put an engine of this design in the **2300–2500** range, bounded -mainly by nps (a Cython/bitboard rewrite or PyPy would lift the ceiling). +mainly by nps (a Cython / bitboard rewrite or PyPy would lift the ceiling). ## Measuring it properly diff --git a/docs/performance.md b/docs/performance.md index 3c17920..884204c 100644 --- a/docs/performance.md +++ b/docs/performance.md @@ -1,52 +1,58 @@ # Performance -All figures below are a fresh benchmark on one machine (Apple Silicon, 10 -cores, Python 3.13), fixed-depth search from the starting position. "Before" -is the pre-review engine (plain negamax, no move ordering, no working TT, -unbounded quiescence, from-scratch material+PST eval); "After" is the current -engine. Both columns were run on the *same* machine, so this is a like-for-like -comparison rather than a comparison against the older M1 numbers. +Fresh benchmark of the current engine (move ordering, TT, bounded quiescence, +null-move pruning, LMR, PVS, mate-distance pruning, hand-crafted eval terms) on +one machine: Apple Silicon, 10 cores, Python 3.14. Search is from the starting +position; rows stop once a search passes ~5 seconds. "Nodes" is `board.push` +calls (main search + quiescence). -For reference, the original M1 run recorded depth 5 = 1.42s, depth 6 = 10.0s, -depth 7 = 215s single-process (and the old "parallel" mode was *slower*: depth -7 = 430s). - -## Single process, fixed-depth `search()` from the start position - -| depth | Before (time / nodes) | After (time / nodes) | speed-up | -|------:|----------------------:|---------------------:|---------:| -| 2 | 0.002s / 87 | 0.002s / 79 | ~1x | -| 3 | 0.015s / 802 | 0.012s / 657 | 1.3x | -| 4 | 0.091s / 3,991 | 0.064s / 2,387 | 1.4x | -| 5 | 1.157s / 46,875 | 0.321s / 15,139 | 3.6x | -| 6 | 8.169s / 317,377 | 1.770s / 72,048 | 4.6x | -| 7 | 152.4s / 5,451,009 | 9.565s / 453,119 | **16x** | - -The gap widens every ply because move ordering (TT move, MVV-LVA, killers, -history) and the transposition table compound. "Nodes" is `board.push` calls -(main search + quiescence). - -## Single-process iterative deepening (removed - kept here for reference) +## What `go` / `go depth N` runs today: Lazy SMP from the start position -| target depth | time | nodes | -|-------------:|-----:|------:| -| 5 | 0.24s | 12k | -| 6 | 1.38s | 53k | -| 7 | 5.11s | 236k | -| 8 | 38.6s | 2.1M | +This is the real search path - `go` always runs Lazy SMP: 9 worker processes +each doing their own iterative deepening against one lock-free shared-memory TT. +A generous `movetime` so the run isn't deadline-capped. -This was the old `go` path (roughly 2x faster than a cold fixed-depth search, -since each iteration seeds the next through the TT). Lazy SMP beat it at every -depth on this machine, so it was dropped - `go` now always runs Lazy SMP. +| depth | time | nodes | +|------:|-----:|------:| +| 6 | 0.45s | 45,000 | +| 7 | 0.60s | 95,000 | +| 8 | 2.30s | 320,000 | -## What `go` / `go depth N` runs today: Lazy SMP from the start position +Depth 8 from the opening lands in ~2s on this 10-core machine, depth 9 in +~5–8s. These numbers vary run to run - the workers race and divide the tree +differently each time, and at shallow depths process startup dominates - so +they are rounded and representative, not exact. -| depth | Before ("parallel", root-split) | After (Lazy SMP, 9 workers, shared TT) | -|------:|--------------------------------:|--------------------------------------:| -| 6 | 10.6s | 0.84s | -| 7 | 430s | 3.77s | -| 8 | — | 17.9s | +## Single process, fixed-depth `search()` from the start position -The old root-split parallel mode lost to its own single-threaded search (full -windows, no shared table). Lazy SMP is ~1.5x faster than the old single-process -iterative deepening at depth 6-7 and ~2x by depth 8, on this 10-core machine. +A controlled baseline: one `Negamax`, a fresh (cold) TT per depth, clock never +armed. Deterministic, and it isolates search-tree efficiency from the Lazy SMP +speed-up, so this is the table to watch when judging whether a search change +helped. Not what the engine runs in a game. + +The `perft(depth)` column is the size of the *full* legal game tree at that +depth from the start position (the published +[perft results](https://www.chessprogramming.org/Perft_Results) - leaf count at +exactly `depth` plies, no evaluation, no pruning). It is the branching the +search would face with no alpha-beta at all. `pruned` is `1 - nodes/perft`. + +| depth | time | nodes | perft(depth) | pruned | +|------:|-----:|------:|-------------:|-------:| +| 2 | 0.003s | 182 | 400 | 55% | +| 3 | 0.008s | 463 | 8,902 | 95% | +| 4 | 0.034s | 1,840 | 197,281 | 99.1% | +| 5 | 0.132s | 6,943 | 4,865,609 | 99.86% | +| 6 | 0.344s | 17,728 | 119,060,324 | 99.985% | +| 7 | 1.462s | 67,810 | 3,195,901,860 | 99.998% | +| 8 | 3.690s | 178,647 | 84,998,978,956 | 99.9998% | + +The `pruned` column is an *estimate*: the two counts aren't the same unit. +"nodes" is every `board.push` in the pruned tree (internal nodes and quiescence +included, and quiescence looks past `depth` in forcing lines); `perft` is only +the leaves at exactly `depth`. So it overstates pruning a little at shallow +depths and understates it once quiescence dominates - but the trend is real: +move ordering, the TT, and the reductions (null-move, LMR, PVS) take the tree +from "search half of it" to "search one node in ~475,000" by depth 8. + +Consecutive `nodes` rows zigzag rather than growing smoothly: PVS makes odd +plies (side-to-move gets the last word) cheap relative to even ones. diff --git a/docs/tasks.md b/docs/tasks.md index d9ade89..98af6fa 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -1,83 +1,85 @@ # Tasks -The next five changes, in the order most likely to gain the most playing -strength. Each is a self-contained addition to `Negamax.search` / -`Negamax.quiesce` unless noted. - -## 1. Null-move pruning - -If giving the opponent a free move (a "null move") still fails high at reduced -depth (`R = 2..3`), the position is almost certainly a cut-off - return `beta` -without searching the real moves. Skip it when side-to-move is in check, in a -likely zugzwang (king + pawns only), or when depth is very low. Add a -verification search at high depth to avoid zugzwang blunders. Needs a -`board.push(chess.Move.null())` path and a `_null_ok` guard in the search. -Typically the single largest Elo jump available (~50-100). - -## 2. Principal Variation Search (NegaScout) - -Search the first (best-ordered) move with the full `(-beta, -alpha)` window, -then every later move with a null window `(-alpha-1, -alpha)`; only re-search -with the full window on the rare fail-high. With the move ordering already in -place (TT move, MVV-LVA, killers, history) the first move is usually best, so -most nodes get the cheaper scout search. ~20-40 Elo and it compounds with -everything below. - -## 3. Late Move Reductions (LMR) - -Once past the first few moves at a node, search quiet, non-checking, non-TT -moves at `depth - 1 - reduction` (reduction grows with move index and depth, -shrink it for killers / good history). Re-search at full depth if the reduced -search beats `alpha`. Combined with PVS this is usually the biggest tree -reduction after null-move - effective branching factor drops sharply, so -iterative deepening reaches 2-4 plies deeper in the same time. - -## 4. Correct draw, repetition and mate scoring - -- Detect threefold repetition and the 50-move rule *inside* the search tree - (`board.is_repetition(3)`, `board.halfmove_clock`), not just the automatic - five-fold / seventy-five-move draws in `is_drawn`. -- Score every draw a flat `0` (currently negamax returns `0 - depth`), with an - optional small contempt value. -- Store mate scores in the TT as distance-to-mate relative to the current ply - (`score +/- ply` on store/probe) so `MATE_GUARD` can be removed and mate - cut-offs actually propagate. This fixes real half-point losses and lets the - engine convert forced mates faster. - -## 5. Evaluation upgrade - -PeSTO piece-square tables capture a lot of positional understanding but miss -king safety and pawn structure, which is where a mid-level engine gains most. -Add, keeping the incremental accumulator where possible and a pawn-hash cache -for the rest: - -- King safety: attacker count / attack weight on the squares around the king, - pawn-shield intactness, open files next to the king. -- Passed pawns (bonus scaled by rank and king distance), isolated / doubled / - backward pawns. -- Bishop pair, rook on open / half-open file, knight outposts. -- Tempo bonus. - -Then wire in [Syzygy endgame tablebases](https://python-chess.readthedocs.io/en/latest/syzygy.html) -(`chess.syzygy`) for perfect play with <= 6 pieces. - ---- - -## Recently completed - -From the previous review passes: move ordering, transposition table, iterative -deepening + UCI time management, perft fix + tests, quiescence rewrite (bounded, -check-aware, fail-soft), tapered PeSTO evaluation with an incremental -accumulator, standard `info` output, resource-leak fixes, Lazy SMP with a -lock-free shared-memory TT (now the only search path - `go` always runs it), and -a rebuild of the search as composed collaborators (`Negamax` holds an evaluator -/ move orderer / TT / clock) instead of a mixin stack, with unit tests for each -piece. - -Packaging & tooling: `src/pychess/` package layout, `pyproject.toml` (replacing -`requirements.txt` / `pytest.ini`), a `pychess` console entry point, Apache-2.0 -license, `py.typed`, and Ruff (lint + format) + Mypy + pytest-cov (85% gate) in -CI, with `pre-commit` mirroring it locally. +The next five changes, roughly in priority order (Elo per unit of effort, and +how much each compounds with the rest). Each is a self-contained addition to +`Negamax` / `lazy_smp` / the evaluator unless noted. Elo figures are rough +community numbers for an engine already at this level - measure, don't trust. + +## 1. Aspiration windows + +Iterative deepening currently re-searches every depth with the full +`(-INF, INF)` window. Instead, open depth `d` with a narrow window around the +previous iteration's score (`score ± 25`, say); on a fail-high or fail-low +widen that side (double the delta, or jump to `±INF`) and re-search. Most +iterations land inside the window and search far fewer nodes. Lives in +`lazy_smp._worker`'s deepening loop, per worker. Pairs naturally with PVS. +~15-30 Elo, a small change. + +## 2. Shallow-depth pruning (reverse futility, futility, late move pruning) + +At low depth, near the leaves, prune aggressively on the static eval: + +- **Reverse futility / static null move**: if `eval - margin*depth >= beta` at + `depth <= ~6` and not in check, return `eval`. +- **Futility**: at `depth <= ~2`, if `eval + margin < alpha`, skip quiet moves + that can't raise alpha. +- **Late move pruning**: past a depth-dependent move count at low depth, skip + the remaining quiet non-checking moves entirely. + +Never when in check, for captures/promotions, or near mate scores. Big node +reduction; the effective branching factor drops again. ~40-70 Elo combined, but +tune the margins carefully - too greedy and tactics start getting missed +(guard with the existing mate tests plus a WAC/ECM tactical suite). + +## 3. Static Exchange Evaluation (SEE) + +A `see(board, move) -> int` that plays out the capture sequence on one square +with the cheapest attacker each time. Two uses: + +- **Move ordering**: order captures with `SEE < 0` *after* the quiet killers + instead of just behind winning captures - `MoveOrderer` currently trusts + MVV-LVA, which mis-ranks a queen grabbing a defended pawn. +- **Quiescence pruning**: in `Negamax.quiesce`, skip captures with `SEE < 0` + entirely instead of searching every capture. + +python-chess gives `board.attackers(color, square)` to build the attacker +lists. ~25-50 Elo, and it makes quiescence much cheaper. + +## 4. Search extensions + +Spend an extra ply where the tree is forcing so tactics are not missed at the +horizon: + +- **Check extension**: `depth += 1` when the move gives check (cap total + extensions per line so it can't blow up). +- **One-reply extension**: extend when the side to move has a single legal + move. +- Later: **singular extensions** (re-search to prove the TT move is the only + good one) - higher effort, do it after PVS/LMR are stable. + +~15-25 Elo for the cheap two; more with singular. + +## 5. Evaluation tuning harness (Texel's method) + +The PeSTO tables and the new `eval_terms` weights are untuned for this engine. +Add `tools/tune.py`: label a few hundred thousand quiet positions with the game +result (from self-play PGNs or a public dataset), then fit every weight by +minimising the logistic error between `sigmoid(eval)` and the result. Keep the +weights in one place so the tuner can rewrite them. Unlocks the eval terms +already added and makes every future term measurable. ~30-100 Elo depending on +how untuned things currently are; the highest-ceiling item on this list. + +### Also worth doing + +- **Syzygy tablebases** (`chess.syzygy`): probe WDL/DTZ for <= 6 pieces at the + root and in the search for perfect endgame play. Needs a `SyzygyPath` and the + tablebase files (~150 GB for 6-man), so gate it on config and no-op when the + files are absent. +- **UCI `setoption`**: `Hash`, `Threads`, `Contempt`, `SyzygyPath`, + `MultiPV` - currently parsed and ignored. +- **2-fold repetition as a draw inside the search** (not just 3-fold): a + position seen twice within the tree is almost always a forced draw; detecting + it a repetition earlier saves nodes. ## Housekeeping @@ -85,7 +87,6 @@ CI, with `pre-commit` mirroring it locally. - [ ] Rename the repo `pyChess` -> `pychess` so it matches the package name; update the local remote afterwards. -- [ ] Tag `v0.1.0` and cut a **GitHub Release** from the `CHANGELOG.md` entry. ### Opening book (`opening_book/bookfish.bin`) diff --git a/src/pychess/__main__.py b/src/pychess/__main__.py index ec2713d..3a14d73 100644 --- a/src/pychess/__main__.py +++ b/src/pychess/__main__.py @@ -10,6 +10,7 @@ from chess import polyglot from . import __version__ +from .constants import MATE, MATE_IN_MAX from .engine import Engine, SupportsSearch from .eval_board import EvalBoard from .lazy_smp import SearchResult @@ -120,11 +121,21 @@ def book_move(self) -> chess.Move | None: except IndexError, FileNotFoundError, OSError: return None + @staticmethod + def _score_field(score: int) -> str: + """UCI ``score`` token: ``mate N`` (full moves, signed) near mate, + ``cp N`` otherwise. Mate scores are distance-to-mate from the root.""" + if abs(score) < MATE_IN_MAX: + return f"score cp {score}" + plies = MATE - abs(score) + moves = (plies + 1) // 2 + return f"score mate {moves if score > 0 else -moves}" + def print_info(self, result: SearchResult) -> None: """Format one UCI ``info`` line from a SearchResult.""" pv = " ".join(m.uci() for m in result.pv) print( - f"info depth {result.depth} score cp {result.score} " + f"info depth {result.depth} {self._score_field(result.score)} " f"nodes {result.nodes} time {round(result.elapsed, 3)} pv {pv}" ) diff --git a/src/pychess/constants.py b/src/pychess/constants.py index 6a6bac2..0b17792 100644 --- a/src/pychess/constants.py +++ b/src/pychess/constants.py @@ -1,20 +1,47 @@ """Score conventions and transposition-table flags shared across the search. -Mate is scored by *remaining depth* (``-MATE - depth``), not distance-to-root, -so mate scores are not safe to reuse as bounds across different depths: the -transposition table keeps the stored move for ordering but never returns a -value with ``abs(score) >= MATE_GUARD`` as a cut-off. +Mate is scored as *distance from the root*: a forced mate delivered ``m`` plies +from the root scores ``MATE - m`` for the mating side (so a faster mate always +outranks a slower one). ``abs(score) >= MATE_IN_MAX`` marks a mate score. + +Because that distance is measured from the root, a mate score is only meaningful +at the ply it was found. Before a score goes into the transposition table it is +rebased to be relative to the storing node (:func:`tt_store_score`); on the way +out it is rebased back to the root (:func:`tt_probe_score`). With that in place +the TT can return mate bounds like any other score. ``INF`` is the alpha-beta window sentinel; every real evaluation sits well inside ``+/- MATE``. """ INF = 99999 # alpha-beta window sentinel -MATE = 9999 # abs(score) at or above this is mate-related -MATE_IN_MAX = 9899 # MATE - 100: mate within ~100 plies (worker win/loss flag) -MATE_GUARD = 9000 # the TT never returns abs(score) >= this as a bound +MATE = 9999 # abs(score) at or above MATE_IN_MAX is mate-related +MATE_IN_MAX = 9899 # MATE - 100: abs(score) >= this is a mate (max tree ply << 100) + +CONTEMPT = 0 # a draw scores -CONTEMPT for the side to move; > 0 == play on # Transposition-table entry bounds. TT_EXACT = 0 TT_LOWER = 1 # value is a lower bound (fail-high / beta cut-off) TT_UPPER = 2 # value is an upper bound (fail-low / all moves searched) + + +def tt_store_score(value: int, ply: int) -> int: + """Rebase a root-relative score to the storing node at ``ply``. + + Only mate scores move; everything else is returned unchanged. + """ + if value >= MATE_IN_MAX: + return value + ply + if value <= -MATE_IN_MAX: + return value - ply + return value + + +def tt_probe_score(value: int, ply: int) -> int: + """Inverse of :func:`tt_store_score`: rebase a stored score back to the root.""" + if value >= MATE_IN_MAX: + return value - ply + if value <= -MATE_IN_MAX: + return value + ply + return value diff --git a/src/pychess/eval_terms.py b/src/pychess/eval_terms.py new file mode 100644 index 0000000..1c3d9ed --- /dev/null +++ b/src/pychess/eval_terms.py @@ -0,0 +1,175 @@ +"""Positional evaluation terms layered on top of the PeSTO piece-square tables. + +``positional(board)`` returns a ``(mg, eg)`` pair from White's point of view, to +be added to the tapered PeSTO score before the side-to-move flip. Everything +here is recomputed from scratch per call; the pure-pawn terms (passed / +isolated / doubled) are the expensive part and are memoised by +``PestoEvaluator`` on the pawn bitboards. + +Weights are deliberately modest - a mistuned term should nudge, not dominate. +""" + +from __future__ import annotations + +import chess + +# --- weights (centipawns) ------------------------------------------------ + +PASSED_MG = (0, 5, 10, 20, 35, 60, 100, 0) # by the pawn's own rank (White view) +PASSED_EG = (0, 15, 25, 40, 65, 105, 160, 0) +ISOLATED_MG, ISOLATED_EG = 12, 8 +DOUBLED_MG, DOUBLED_EG = 8, 18 + +BISHOP_PAIR_MG, BISHOP_PAIR_EG = 22, 42 +ROOK_OPEN_FILE, ROOK_HALF_OPEN_FILE = 24, 11 +KNIGHT_OUTPOST = 20 +TEMPO = 12 + +SHIELD_MISSING = 12 # a file next to the king with no friendly pawn +KING_OPEN_FILE = 14 # ... and no pawn of either colour on it + +# --- precomputed masks ------------------------------------------------- + +_ADJACENT_FILES = tuple( + (chess.BB_FILES[f - 1] if f > 0 else 0) | (chess.BB_FILES[f + 1] if f < 7 else 0) + for f in range(8) +) + + +def _ahead(rank: int, *, white: bool) -> int: + ranks = range(rank + 1, 8) if white else range(rank) + mask = 0 + for r in ranks: + mask |= chess.BB_RANKS[r] + return mask + + +_WHITE_PASSED_BLOCK = [] # enemy pawns here stop a White passer +_BLACK_PASSED_BLOCK = [] +_WHITE_FILE_AHEAD = [] # own file, strictly ahead (doubled / passer-in-front) +_BLACK_FILE_AHEAD = [] +_WHITE_OUTPOST_BLOCK = [] # enemy pawns here can chase a White knight off +_BLACK_OUTPOST_BLOCK = [] +for _sq in range(64): + _f, _r = chess.square_file(_sq), chess.square_rank(_sq) + _own_adj = chess.BB_FILES[_f] | _ADJACENT_FILES[_f] + _WHITE_PASSED_BLOCK.append(_own_adj & _ahead(_r, white=True)) + _BLACK_PASSED_BLOCK.append(_own_adj & _ahead(_r, white=False)) + _WHITE_FILE_AHEAD.append(chess.BB_FILES[_f] & _ahead(_r, white=True)) + _BLACK_FILE_AHEAD.append(chess.BB_FILES[_f] & _ahead(_r, white=False)) + _WHITE_OUTPOST_BLOCK.append(_ADJACENT_FILES[_f] & _ahead(_r, white=True)) + _BLACK_OUTPOST_BLOCK.append(_ADJACENT_FILES[_f] & _ahead(_r, white=False)) + +_OUTPOST_RANKS_WHITE = chess.BB_RANK_4 | chess.BB_RANK_5 | chess.BB_RANK_6 +_OUTPOST_RANKS_BLACK = chess.BB_RANK_5 | chess.BB_RANK_4 | chess.BB_RANK_3 + + +# --- pawn structure (memoisable: depends only on pawn placement) -------- + + +def pawn_structure(white_pawns: int, black_pawns: int) -> tuple[int, int]: + """``(mg, eg)`` White-POV score for passed / isolated / doubled pawns.""" + mg = eg = 0 + + for sq in chess.scan_forward(white_pawns): + f = chess.square_file(sq) + if not (white_pawns & _WHITE_FILE_AHEAD[sq]): + if not (black_pawns & _WHITE_PASSED_BLOCK[sq]): + r = chess.square_rank(sq) + mg += PASSED_MG[r] + eg += PASSED_EG[r] + else: + mg -= DOUBLED_MG + eg -= DOUBLED_EG + if not (white_pawns & _ADJACENT_FILES[f]): + mg -= ISOLATED_MG + eg -= ISOLATED_EG + + for sq in chess.scan_forward(black_pawns): + f = chess.square_file(sq) + if not (black_pawns & _BLACK_FILE_AHEAD[sq]): + if not (white_pawns & _BLACK_PASSED_BLOCK[sq]): + r = 7 - chess.square_rank(sq) + mg -= PASSED_MG[r] + eg -= PASSED_EG[r] + else: + mg += DOUBLED_MG + eg += DOUBLED_EG + if not (black_pawns & _ADJACENT_FILES[f]): + mg += ISOLATED_MG + eg += ISOLATED_EG + + return mg, eg + + +# --- everything else (piece placement relative to pawns / king) -------- + + +def _king_safety_mg(board: chess.Board, color: chess.Color, all_pawns: int, own_pawns: int) -> int: + king = board.king(color) + if king is None: # pragma: no cover - a legal board always has both kings + return 0 + kf = chess.square_file(king) + penalty = 0 + for f in range(max(0, kf - 1), min(7, kf + 1) + 1): + file_bb = chess.BB_FILES[f] + if not (own_pawns & file_bb): + penalty += SHIELD_MISSING + if not (all_pawns & file_bb): + penalty += KING_OPEN_FILE + return -penalty + + +def positional(board: chess.Board, pawn_mg: int, pawn_eg: int) -> tuple[int, int]: + """``(mg, eg)`` White-POV positional score. ``pawn_mg`` / ``pawn_eg`` are the + (possibly cached) :func:`pawn_structure` result for this position.""" + white = board.occupied_co[chess.WHITE] + black = board.occupied_co[chess.BLACK] + white_pawns = board.pawns & white + black_pawns = board.pawns & black + all_pawns = board.pawns + + mg, eg = pawn_mg, pawn_eg + + # Bishop pair. + if chess.popcount(board.bishops & white) >= 2: + mg += BISHOP_PAIR_MG + eg += BISHOP_PAIR_EG + if chess.popcount(board.bishops & black) >= 2: + mg -= BISHOP_PAIR_MG + eg -= BISHOP_PAIR_EG + + # Rooks on open / half-open files. + for sq in chess.scan_forward(board.rooks & white): + file_bb = chess.BB_FILES[chess.square_file(sq)] + if not (all_pawns & file_bb): + mg += ROOK_OPEN_FILE + elif not (white_pawns & file_bb): + mg += ROOK_HALF_OPEN_FILE + for sq in chess.scan_forward(board.rooks & black): + file_bb = chess.BB_FILES[chess.square_file(sq)] + if not (all_pawns & file_bb): + mg -= ROOK_OPEN_FILE + elif not (black_pawns & file_bb): + mg -= ROOK_HALF_OPEN_FILE + + # Knight outposts: on an advanced square, pawn-defended, unchallengeable by + # an enemy pawn. + for sq in chess.scan_forward(board.knights & white & _OUTPOST_RANKS_WHITE): + if (white_pawns & chess.BB_PAWN_ATTACKS[chess.BLACK][sq]) and not ( + black_pawns & _WHITE_OUTPOST_BLOCK[sq] + ): + mg += KNIGHT_OUTPOST + eg += KNIGHT_OUTPOST // 2 + for sq in chess.scan_forward(board.knights & black & _OUTPOST_RANKS_BLACK): + if (black_pawns & chess.BB_PAWN_ATTACKS[chess.WHITE][sq]) and not ( + white_pawns & _BLACK_OUTPOST_BLOCK[sq] + ): + mg -= KNIGHT_OUTPOST + eg -= KNIGHT_OUTPOST // 2 + + # King safety (mid-game only; tapers out through ``taper``). + mg += _king_safety_mg(board, chess.WHITE, all_pawns, white_pawns) + mg -= _king_safety_mg(board, chess.BLACK, all_pawns, black_pawns) + + return mg, eg diff --git a/src/pychess/evaluation.py b/src/pychess/evaluation.py index bea168f..67c3c34 100644 --- a/src/pychess/evaluation.py +++ b/src/pychess/evaluation.py @@ -2,6 +2,8 @@ import chess +from . import eval_terms + if TYPE_CHECKING: from .eval_board import EvalBoard @@ -180,17 +182,42 @@ def taper(mg: int, eg: int, phase: int) -> int: class PestoEvaluator: - """Tapered PeSTO evaluation, returned from the side-to-move's perspective. + """Tapered PeSTO evaluation plus positional terms, from the side-to-move's + perspective. - Uses the incrementally-maintained accumulator on ``EvalBoard`` when the - board provides one, otherwise falls back to a full recompute. + The PeSTO piece-square score uses the incrementally-maintained accumulator + on ``EvalBoard`` when the board provides one, otherwise a full recompute. + The positional terms (``eval_terms``) are recomputed each call; the + pure-pawn part is memoised on the pawn bitboards. """ + _PAWN_CACHE_CAP = 1 << 16 + + def __init__(self) -> None: + self._pawn_cache: dict[tuple[int, int], tuple[int, int]] = {} + + def _pawn_structure(self, white_pawns: int, black_pawns: int) -> tuple[int, int]: + cached = self._pawn_cache.get((white_pawns, black_pawns)) + if cached is not None: + return cached + terms = eval_terms.pawn_structure(white_pawns, black_pawns) + if len(self._pawn_cache) >= self._PAWN_CACHE_CAP: + self._pawn_cache.clear() + self._pawn_cache[(white_pawns, black_pawns)] = terms + return terms + def evaluate(self, board: chess.Board) -> int: if getattr(board, "_mg", None) is None: mg, eg, phase = pesto_terms(board) else: acc = cast("EvalBoard", board) mg, eg, phase = acc._mg, acc._eg, acc._phase - score = taper(mg, eg, phase) + + white_pawns = board.pawns & board.occupied_co[chess.WHITE] + black_pawns = board.pawns & board.occupied_co[chess.BLACK] + pawn_mg, pawn_eg = self._pawn_structure(white_pawns, black_pawns) + pos_mg, pos_eg = eval_terms.positional(board, pawn_mg, pawn_eg) + + score = taper(mg + pos_mg, eg + pos_eg, phase) + score += eval_terms.TEMPO if board.turn else -eval_terms.TEMPO return score if board.turn else -score diff --git a/src/pychess/move_ordering.py b/src/pychess/move_ordering.py index e6929a8..bcc25a3 100644 --- a/src/pychess/move_ordering.py +++ b/src/pychess/move_ordering.py @@ -65,6 +65,14 @@ def mvvlva(self, board: chess.Board, move: chess.Move) -> int: assert attacker is not None # the mover always sits on from_square return PIECE_VALUES[victim] * 10 - PIECE_VALUES[attacker] // 100 + def is_killer(self, ply: int, move: chess.Move) -> bool: + """Whether ``move`` is a recorded killer for this ply.""" + return move in self.killers.get(ply, ()) + + def history_score(self, board: chess.Board, move: chess.Move) -> int: + """The history-heuristic score for ``move`` (0 if never seen).""" + return self.history.get((board.turn, move.from_square, move.to_square), 0) + # ---- cut-off bookkeeping ------------------------------------------ def record_killer(self, ply: int, move: chess.Move) -> None: diff --git a/src/pychess/negamax.py b/src/pychess/negamax.py index 602794c..debe2e2 100644 --- a/src/pychess/negamax.py +++ b/src/pychess/negamax.py @@ -4,7 +4,7 @@ import chess -from .constants import INF, MATE, TT_EXACT, TT_LOWER, TT_UPPER +from .constants import CONTEMPT, INF, MATE, MATE_IN_MAX, TT_EXACT, TT_LOWER, TT_UPPER if TYPE_CHECKING: from .clock import Clock @@ -18,6 +18,17 @@ # Delta-pruning margin: a bit more than a queen. Q_DELTA_MARGIN = 1100 +# Null-move pruning: give the opponent a free move at reduced depth; if the +# position still fails high it is almost certainly a cut-off. +NULL_MIN_DEPTH = 3 # don't bother below this - the reduced search is too shallow +NULL_DEEP_DEPTH = 6 # above this the reduction grows from 2 to 3 +NULL_VERIFY_DEPTH = 10 # at/above this, confirm the cut with a real reduced search + +# Late move reductions: quiet, late, non-checking moves are searched shallower +# first; a result above alpha triggers a full-depth re-search. +LMR_MIN_DEPTH = 3 # nodes shallower than this search every move at full depth +LMR_FULL_MOVES = 3 # the first N moves at a node always get a full-depth search + class SearchAbortError(Exception): """Raised inside the search when the clock says stop; the caller discards @@ -25,6 +36,7 @@ class SearchAbortError(Exception): def is_drawn(board: chess.Board) -> bool: + """Terminal draws - the game is over by rule, no claim needed.""" return ( board.is_fivefold_repetition() or board.is_stalemate() @@ -33,6 +45,13 @@ def is_drawn(board: chess.Board) -> bool: ) +def claims_draw(board: chess.Board) -> bool: + """Claimable draws - threefold repetition and the fifty-move rule. Not + ``is_game_over`` in python-chess, but the search must still score them 0: + inside the tree either side can force the claim.""" + return board.halfmove_clock >= 100 or board.is_repetition(3) + + class Negamax: """Fail-soft negamax with a quiescence leaf, over injected collaborators. @@ -58,38 +77,155 @@ def __init__( self.clock = clock self.nodes = 0 + @staticmethod + def _draw_score() -> int: + """A draw, from the side-to-move's point of view. ``CONTEMPT`` > 0 makes + the engine treat a draw as slightly bad for itself and play on.""" + return -CONTEMPT + + @staticmethod + def _null_ok(board: chess.Board, depth: int, can_null: bool, ply: int) -> bool: + """Whether a null move is safe to try at this node. + + Skip it at the root, when it was already tried on the way here, at very + low depth, while in check, and in likely zugzwang - when the side to + move has only king and pawns a free move is worth more than any real + one, so the null search lies. + """ + if not can_null or ply == 0 or depth < NULL_MIN_DEPTH or board.is_check(): + return False + us = board.occupied_co[board.turn] + return bool((board.knights | board.bishops | board.rooks | board.queens) & us) + + @staticmethod + def _lmr_reduction(move_index: int, depth: int, *, favoured: bool) -> int: + """Plies to shave off a late quiet move's first search. + + Grows with how late the move is ordered and how deep the node; + ``favoured`` - a killer or a move with positive history - shrinks it by + one. Clamped so the reduced search keeps at least one ply. + """ + r = 1 + (move_index >= 6) + (depth >= 8) + if favoured: + r -= 1 + return max(0, min(r, depth - 2)) + def search( - self, board: chess.Board, alpha: int, beta: int, depth: int, ply: int = 0 + self, + board: chess.Board, + alpha: int, + beta: int, + depth: int, + ply: int = 0, + *, + can_null: bool = True, ) -> tuple[int, list[chess.Move]]: self.nodes += 1 if ply and not (self.nodes & 4095) and self.clock.should_stop(self.nodes): raise SearchAbortError + if ply and claims_draw(board): + return self._draw_score(), [] + if depth <= 0 or board.is_game_over(): if board.is_checkmate(): - return -MATE - depth, [] + return -(MATE - ply), [] if is_drawn(board): - return 0, [] - return self.quiesce(board, alpha, beta, 0), [] + return self._draw_score(), [] + return self.quiesce(board, alpha, beta, 0, ply), [] + + if ply: + # Mate-distance pruning: this node can do no better than mating now + # and no worse than being mated now, so clamp the window and bail + # if it collapses - the search then never chases a slower mate. + alpha = max(alpha, -(MATE - ply)) + beta = min(beta, MATE - ply) + if alpha >= beta: + return alpha, [] alpha_orig = alpha key = self.tt.key(board) - tt_cutoff, tt_value, tt_move = self.tt.probe(key, depth, alpha, beta) + tt_cutoff, tt_value, tt_move = self.tt.probe(key, depth, alpha, beta, ply) if tt_cutoff and ply > 0: return tt_value, [tt_move] if tt_move else [] + # --- Null-move pruning ------------------------------------------------ + if ( + self._null_ok(board, depth, can_null, ply) + and beta < MATE_IN_MAX + and self.evaluator.evaluate(board) >= beta + ): + r = 2 + (depth > NULL_DEEP_DEPTH) + board.push(chess.Move.null()) + try: + null_score, _ = self.search( + board, -beta, -beta + 1, depth - 1 - r, ply + 1, can_null=False + ) + except SearchAbortError: + board.pop() + raise + null_score = -null_score + board.pop() + + if null_score >= beta: + if depth < NULL_VERIFY_DEPTH: + return beta, [] + # Verification search: a real (non-null) reduced search from the + # same position guards against zugzwang, where the null result + # is a mirage. + verify, _ = self.search(board, beta - 1, beta, depth - r, ply, can_null=False) + if verify >= beta: + return beta, [] + + in_check = board.is_check() + best_score = -INF best_move = None pv = [] - for move in self.orderer.order_moves(board, tt_move=tt_move, ply=ply): + for move_index, move in enumerate( + self.orderer.order_moves(board, tt_move=tt_move, ply=ply) + ): + is_capture = board.is_capture(move) + + reduction = 0 + if ( + depth >= LMR_MIN_DEPTH + and move_index >= LMR_FULL_MOVES + and not in_check + and not is_capture + and not move.promotion + and move != tt_move + and not board.gives_check(move) + ): + favoured = self.orderer.is_killer(ply, move) or ( + self.orderer.history_score(board, move) > 0 + ) + reduction = self._lmr_reduction(move_index, depth, favoured=favoured) + board.push(move) try: - child_score, child_pv = self.search(board, -beta, -alpha, depth - 1, ply + 1) + if move_index == 0: + # The (well-ordered) first move gets the full window. + child_score, child_pv = self.search(board, -beta, -alpha, depth - 1, ply + 1) + child_score = -child_score + else: + # Later moves: a null-window scout, reduced if LMR applies. + # It only asks "is this move better than alpha?". + child_score, child_pv = self.search( + board, -alpha - 1, -alpha, depth - 1 - reduction, ply + 1 + ) + child_score = -child_score + # Scout failed high: re-search at full depth and, unless the + # cut-off is already certain, the full window. + if child_score > alpha and (child_score < beta or reduction): + child_score, child_pv = self.search( + board, -beta, -alpha, depth - 1, ply + 1 + ) + child_score = -child_score except SearchAbortError: board.pop() raise - child_score = -child_score board.pop() if child_score > best_score: @@ -101,7 +237,7 @@ def search( alpha = best_score if alpha >= beta: - if not board.is_capture(move): + if not is_capture: self.orderer.record_killer(ply, move) self.orderer.record_history(board, move, depth) break @@ -112,11 +248,11 @@ def search( flag = TT_LOWER else: flag = TT_EXACT - self.tt.store(key, depth, best_score, flag, best_move) + self.tt.store(key, depth, best_score, flag, best_move, ply) return best_score, pv - def quiesce(self, board: chess.Board, alpha: int, beta: int, qply: int) -> int: + def quiesce(self, board: chess.Board, alpha: int, beta: int, qply: int, ply: int = 0) -> int: """Fail-soft quiescence search. - Depth-bounded: capture chains are cut off after ``Q_MAX_DEPTH`` plies. @@ -125,15 +261,18 @@ def quiesce(self, board: chess.Board, alpha: int, beta: int, qply: int) -> int: check. - Non-check nodes search captures and promotions only, MVV-LVA ordered, with stand-pat and delta pruning. + + ``ply`` is the distance from the search root, used only to score mates + relative to the root like ``search`` does. """ self.nodes += 1 if not (self.nodes & 4095) and self.clock.should_stop(self.nodes): raise SearchAbortError if board.is_checkmate(): - return qply - MATE - if is_drawn(board) or board.is_repetition(3): - return 0 + return -(MATE - ply - qply) + if is_drawn(board) or claims_draw(board): + return self._draw_score() if board.is_check(): best = -INF @@ -154,7 +293,7 @@ def quiesce(self, board: chess.Board, alpha: int, beta: int, qply: int) -> int: for move in moves: board.push(move) try: - score = -self.quiesce(board, -beta, -alpha, qply + 1) + score = -self.quiesce(board, -beta, -alpha, qply + 1, ply) except SearchAbortError: board.pop() raise diff --git a/src/pychess/shared_tt.py b/src/pychess/shared_tt.py index 4c5d8a9..464d767 100644 --- a/src/pychess/shared_tt.py +++ b/src/pychess/shared_tt.py @@ -18,7 +18,7 @@ import chess from chess.polyglot import zobrist_hash -from .constants import MATE_GUARD, TT_EXACT, TT_LOWER, TT_UPPER +from .constants import TT_EXACT, TT_LOWER, TT_UPPER, tt_probe_score, tt_store_score ENTRY_SIZE = 16 _ENTRY = struct.Struct(" int: return zobrist_hash(board) def probe( - self, key: int, depth: int, alpha: int, beta: int + self, key: int, depth: int, alpha: int, beta: int, ply: int = 0 ) -> tuple[bool, int, chess.Move | None]: off = (key & self.mask) * ENTRY_SIZE word0, data = _ENTRY.unpack_from(_buffer(self.shm), off) if data == 0 or (word0 ^ data) != key: return False, 0, None - move, score, e_depth, flag = _unpack_data(data) - if e_depth >= depth and abs(score) < MATE_GUARD: + move, e_score, e_depth, flag = _unpack_data(data) + if e_depth >= depth: + score = tt_probe_score(e_score, ply) if flag == TT_EXACT: return True, score, move if flag == TT_LOWER and score >= beta: @@ -95,12 +96,14 @@ def probe( return True, score, move return False, 0, move - def store(self, key: int, depth: int, score: int, flag: int, move: chess.Move | None) -> None: + def store( + self, key: int, depth: int, score: int, flag: int, move: chess.Move | None, ply: int = 0 + ) -> None: off = (key & self.mask) * ENTRY_SIZE word0, old = _ENTRY.unpack_from(_buffer(self.shm), off) if old and (word0 ^ old) == key and _unpack_data(old)[2] > depth: return # keep the deeper entry for this position - data = _pack_data(move, score, depth, flag) + data = _pack_data(move, tt_store_score(score, ply), depth, flag) _ENTRY.pack_into(_buffer(self.shm), off, (key ^ data) & _U64, data) def close(self) -> None: diff --git a/src/pychess/transposition.py b/src/pychess/transposition.py index 3b8cf6c..f0deb58 100644 --- a/src/pychess/transposition.py +++ b/src/pychess/transposition.py @@ -1,7 +1,7 @@ import chess from chess.polyglot import zobrist_hash -from .constants import MATE_GUARD, TT_EXACT, TT_LOWER, TT_UPPER +from .constants import TT_EXACT, TT_LOWER, TT_UPPER, tt_probe_score, tt_store_score # (depth, value, flag, move) _Entry = tuple[int, int, int, "chess.Move | None"] @@ -14,6 +14,9 @@ class TranspositionTable: table used for single-threaded search and tests; Lazy SMP uses ``shared_tt.SharedTT``, which exposes the same ``key`` / ``probe`` / ``store`` interface over shared memory. + + ``probe`` / ``store`` take the current ``ply`` so mate scores can be + rebased between the root and the storing node (see ``constants``). """ def __init__(self) -> None: @@ -26,7 +29,7 @@ def key(self, board: chess.Board) -> int: return zobrist_hash(board) def probe( - self, key: int, depth: int, alpha: int, beta: int + self, key: int, depth: int, alpha: int, beta: int, ply: int = 0 ) -> tuple[bool, int, chess.Move | None]: """Return ``(cutoff, value, move)``. @@ -39,17 +42,26 @@ def probe( return False, 0, None e_depth, e_value, e_flag, e_move = entry - if e_depth >= depth and abs(e_value) < MATE_GUARD: + if e_depth >= depth: + value = tt_probe_score(e_value, ply) if e_flag == TT_EXACT: - return True, e_value, e_move - if e_flag == TT_LOWER and e_value >= beta: - return True, e_value, e_move - if e_flag == TT_UPPER and e_value <= alpha: - return True, e_value, e_move + return True, value, e_move + if e_flag == TT_LOWER and value >= beta: + return True, value, e_move + if e_flag == TT_UPPER and value <= alpha: + return True, value, e_move return False, 0, e_move - def store(self, key: int, depth: int, value: int, flag: int, move: chess.Move | None) -> None: + def store( + self, + key: int, + depth: int, + value: int, + flag: int, + move: chess.Move | None, + ply: int = 0, + ) -> None: existing = self._table.get(key) if existing is not None and existing[0] > depth: return # keep the deeper analysis - self._table[key] = (depth, value, flag, move) + self._table[key] = (depth, tt_store_score(value, ply), flag, move) diff --git a/tests/test_eval_terms.py b/tests/test_eval_terms.py new file mode 100644 index 0000000..6d88e9b --- /dev/null +++ b/tests/test_eval_terms.py @@ -0,0 +1,90 @@ +"""Unit tests for ``eval_terms`` - the positional layer over PeSTO.""" + +import chess + +from pychess import eval_terms +from pychess.eval_board import EvalBoard +from pychess.evaluation import PestoEvaluator + + +def _pawns(fen: str) -> tuple[int, int]: + b = chess.Board(fen) + return b.pawns & b.occupied_co[chess.WHITE], b.pawns & b.occupied_co[chess.BLACK] + + +def test_pawn_structure_is_zero_at_the_start(): + assert eval_terms.pawn_structure(*_pawns(chess.STARTING_FEN)) == (0, 0) + + +def test_passed_pawn_scores_more_the_further_it_is_advanced(): + near = eval_terms.pawn_structure(*_pawns("4k3/8/8/8/4P3/8/8/4K3 w - - 0 1")) + far = eval_terms.pawn_structure(*_pawns("4k3/8/4P3/8/8/8/8/4K3 w - - 0 1")) + assert 0 < near[0] < far[0] + assert 0 < near[1] < far[1] + + +def test_isolated_and_doubled_pawns_are_penalised(): + # White: doubled + isolated a-pawns. Black: healthy trio. + mg, eg = eval_terms.pawn_structure(*_pawns("4k3/5ppp/8/8/P7/P7/8/4K3 w - - 0 1")) + assert mg < 0 and eg < 0 + + +def test_pawn_structure_is_colour_symmetric(): + fen = "2r3k1/1p3ppp/p7/3p4/3P4/P7/1P3PPP/2R3K1 w - - 0 1" + mg, eg = eval_terms.pawn_structure(*_pawns(fen)) + m_mg, m_eg = eval_terms.pawn_structure(*_pawns(chess.Board(fen).mirror().fen())) + assert (mg, eg) == (-m_mg, -m_eg) + + +def test_positional_is_colour_symmetric(): + # A position exercising every term for both colours: bishop pairs, rooks on + # open / half-open files, a knight outpost, ragged pawns, exposed kings. + fen = "2r3k1/1b3p1p/1np5/pP1p4/P2P4/1NP5/1B3P1P/2R3K1 w - - 0 1" + board = chess.Board(fen) + mirror = board.mirror() + for prior in ((0, 0), (17, -9)): + a = eval_terms.positional(board, *prior) + b = eval_terms.positional(mirror, -prior[0], -prior[1]) + assert a == (-b[0], -b[1]) + + +def test_bishop_pair_favours_the_side_that_has_it(): + # White two bishops, Black two knights, otherwise identical. + board = chess.Board("1n1nk3/8/8/8/8/8/8/1B1BK3 w - - 0 1") + mg, eg = eval_terms.positional(board, 0, 0) + assert mg >= eval_terms.BISHOP_PAIR_MG + assert eg >= eval_terms.BISHOP_PAIR_EG + + +def test_rook_on_an_open_file_beats_a_rook_on_a_closed_one(): + open_file = eval_terms.positional(chess.Board("4k3/8/8/8/8/8/5PPP/R3K3 w - - 0 1"), 0, 0) + closed = eval_terms.positional(chess.Board("4k3/8/8/8/8/8/P4PPP/R3K3 w - - 0 1"), 0, 0) + assert open_file[0] > closed[0] + + +def test_knight_outpost_is_rewarded(): + # White knight on d6, defended by the c5 pawn, no black b/d pawn to evict it. + board = chess.Board("4k3/8/3N4/2P5/8/8/8/4K3 w - - 0 1") + mg, _eg = eval_terms.positional(board, 0, 0) + assert mg >= eval_terms.KNIGHT_OUTPOST + + +def test_king_safety_penalises_a_missing_pawn_shield(): + safe = eval_terms.positional(chess.Board("4k3/8/8/8/8/8/5PPP/6K1 w - - 0 1"), 0, 0) + exposed = eval_terms.positional(chess.Board("4k3/8/8/8/8/8/8/6K1 w - - 0 1"), 0, 0) + assert exposed[0] < safe[0] + + +def test_evaluator_pawn_cache_matches_the_uncached_result(): + ev = PestoEvaluator() + board = EvalBoard("2r3k1/1p3ppp/p7/3p4/3P4/P7/1P3PPP/2R3K1 w - - 0 1") + first = ev.evaluate(board) + assert ev._pawn_cache # populated + assert ev.evaluate(board) == first # cache hit is consistent + + +def test_tempo_bonus_goes_to_the_side_to_move(): + white = PestoEvaluator().evaluate(chess.Board("4k3/8/8/8/8/8/8/4K3 w - - 0 1")) + black = PestoEvaluator().evaluate(chess.Board("4k3/8/8/8/8/8/8/4K3 b - - 0 1")) + assert white == eval_terms.TEMPO + assert black == eval_terms.TEMPO diff --git a/tests/test_move_ordering.py b/tests/test_move_ordering.py index 1f7025f..bef0c00 100644 --- a/tests/test_move_ordering.py +++ b/tests/test_move_ordering.py @@ -39,6 +39,24 @@ def test_killer_move_beats_other_quiets(): assert quiets[0] == killer +def test_is_killer_tracks_recorded_killers(): + orderer = MoveOrderer() + killer = chess.Move.from_uci("h2h3") + assert not orderer.is_killer(0, killer) + orderer.record_killer(0, killer) + assert orderer.is_killer(0, killer) + assert not orderer.is_killer(1, killer) + + +def test_history_score_reflects_recorded_cutoffs(): + board = chess.Board() + orderer = MoveOrderer() + move = chess.Move.from_uci("g1f3") + assert orderer.history_score(board, move) == 0 + orderer.record_history(board, move, depth=4) + assert orderer.history_score(board, move) == 16 + + def test_mvvlva_prefers_taking_the_bigger_piece(): # White pawn on d4 could take either rook on c5 / e5. board = chess.Board("3qk3/8/8/2r1r3/3P4/8/8/3QK3 w - - 0 1") diff --git a/tests/test_negamax.py b/tests/test_negamax.py index bb6ebbc..c1486d3 100644 --- a/tests/test_negamax.py +++ b/tests/test_negamax.py @@ -8,7 +8,7 @@ from pychess.constants import INF, MATE from pychess.evaluation import PestoEvaluator from pychess.move_ordering import MoveOrderer -from pychess.negamax import Negamax, SearchAbortError, is_drawn +from pychess.negamax import Negamax, SearchAbortError, claims_draw, is_drawn from pychess.transposition import TranspositionTable MATE_IN_1 = chess.Board("4k3/8/4K3/8/8/8/8/7R w - - 0 1") # Rh8# @@ -67,3 +67,167 @@ def test_is_drawn_insufficient_material(): def test_is_drawn_normal_position_is_not_drawn(): assert not is_drawn(chess.Board()) + + +# -- null-move pruning ------------------------------------------------------ + + +def test_null_ok_guards(): + # Normal middlegame position, deep enough: null move is allowed. + assert Negamax._null_ok(chess.Board(), depth=4, can_null=True, ply=1) + # Already tried a null move on the way here. + assert not Negamax._null_ok(chess.Board(), depth=4, can_null=False, ply=1) + # Root node: keep the PV honest. + assert not Negamax._null_ok(chess.Board(), depth=4, can_null=True, ply=0) + # Too shallow. + assert not Negamax._null_ok(chess.Board(), depth=2, can_null=True, ply=1) + # In check: passing is not an option. + in_check = chess.Board("4k3/8/8/8/7b/8/5P2/4K3 w - - 0 1") + assert not Negamax._null_ok(in_check, depth=4, can_null=True, ply=1) + # King + pawns only: likely zugzwang, the null search would lie. + kp = chess.Board("4k3/pppppppp/8/8/8/8/PPPPPPPP/4K3 w - - 0 1") + assert not Negamax._null_ok(kp, depth=4, can_null=True, ply=1) + + +# A quiet middlegame where a free move plainly still loses for the side that +# took it, so null-move cut-offs land. +QUIET_MIDGAME = "r2q1rk1/ppp2ppp/2np1n2/2b1p3/2B1P3/2NP1N2/PPP2PPP/R1BQ1RK1 w - - 0 8" + + +def test_null_move_prunes_nodes_without_changing_the_move(monkeypatch): + board = chess.Board(QUIET_MIDGAME) + + with_null = make_negamax() + score_a, pv_a = with_null.search(board.copy(), -INF, INF, 5) + + without_null = make_negamax() + monkeypatch.setattr(Negamax, "_null_ok", staticmethod(lambda *a, **k: False)) + score_b, pv_b = without_null.search(board.copy(), -INF, INF, 5) + + assert with_null.nodes < without_null.nodes + assert pv_a[0] == pv_b[0] + assert abs(score_a - score_b) <= 40 + + +def test_null_move_still_finds_mate_in_one(): + score, pv = make_negamax().search(MATE_IN_1.copy(), -INF, INF, 4) + assert score >= MATE - 100 + assert pv[0] == chess.Move.from_uci("h1h8") + + +# -- late move reductions ------------------------------------------------- + + +def test_lmr_reduction_grows_with_lateness_and_depth(): + # First few moves, shallow node: no reduction. + assert Negamax._lmr_reduction(3, 4, favoured=False) == 1 + # Later move, deep node: bigger reduction. + assert Negamax._lmr_reduction(8, 10, favoured=False) == 3 + # A killer / good-history move is reduced one ply less. + assert Negamax._lmr_reduction(8, 10, favoured=True) == 2 + # Never reduces the reduced search below one ply. + assert Negamax._lmr_reduction(20, 3, favoured=False) == 1 + assert Negamax._lmr_reduction(3, 3, favoured=True) == 0 + + +def test_lmr_prunes_nodes_without_blundering(monkeypatch): + board = chess.Board("r1bqk2r/pppp1ppp/2n2n2/2b1p3/2B1P3/2N2N2/PPPP1PPP/R1BQK2R w KQkq - 4 4") + + with_lmr = make_negamax() + score_a, pv_a = with_lmr.search(board.copy(), -INF, INF, 4) + + without_lmr = make_negamax() + monkeypatch.setattr(Negamax, "_lmr_reduction", staticmethod(lambda *a, **k: 0)) + score_b, _pv_b = without_lmr.search(board.copy(), -INF, INF, 4) + + assert with_lmr.nodes < without_lmr.nodes # the reductions save work + assert pv_a[0] in set(board.legal_moves) + assert abs(score_a - score_b) <= 40 # and don't cost more than a fraction of a pawn + + +def test_lmr_still_wins_the_hanging_rook(): + board = chess.Board("4k3/8/8/8/r6R/8/8/4K3 w - - 0 1") + _score, pv = make_negamax().search(board, -INF, INF, 5) + assert pv[0] == chess.Move.from_uci("h4a4") + + +# -- principal variation search ----------------------------------------- + + +def test_pvs_returns_a_legal_consistent_pv(): + # Walk the reported PV from the start position; every move must be legal in + # turn - a broken scout / re-search would splice in a stale line. + board = chess.Board() + _score, pv = make_negamax().search(board.copy(), -INF, INF, 6) + assert pv + for move in pv: + assert move in board.legal_moves + board.push(move) + + +def test_pvs_finds_a_quiet_best_move_ordered_after_captures(): + # 1.Nxe5?? Qa5+ wins the knight; the quiet 1.d3 (ordered well after the + # capture) holds everything. PVS must re-search past the scout to see it. + board = chess.Board("r1bqkb1r/pppp1ppp/2n2n2/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4") + score, pv = make_negamax().search(board, -INF, INF, 5) + assert pv[0] != chess.Move.from_uci("f3e5") + assert score > -50 # not down a piece + + +# -- draw, repetition and mate scoring --------------------------------- + +# White mates in two (Kf7, Kh7, Rh1#) - checkmate lands 3 plies from the root. +MATE_IN_2 = chess.Board("7k/8/5K2/8/8/8/8/R7 w - - 0 1") + +# White is up a rook but the position has already repeated three times. +REPETITION = chess.Board("4k3/8/8/8/8/8/8/R3K3 w - - 0 1") +for _uci in ["a1a2", "e8d8", "a2a1", "d8e8"] * 2: + REPETITION.push_uci(_uci) + + +def test_claims_draw_spots_repetition_and_the_fifty_move_rule(): + assert claims_draw(REPETITION) + assert not claims_draw(chess.Board()) + fifty = chess.Board("4k3/8/8/8/8/8/8/R3K3 w - - 0 1") + fifty.halfmove_clock = 100 + assert claims_draw(fifty) + + +def test_mate_in_two_is_scored_by_distance_from_the_root(): + score, pv = make_negamax().search(MATE_IN_2.copy(), -INF, INF, 5) + assert score == MATE - 3 # checkmate 3 plies away + board = MATE_IN_2.copy() + for move in pv: + board.push(move) + assert board.is_checkmate() + assert len(pv) == 3 + + +def test_mate_score_is_stable_across_depths(): + # The TT stores mate scores relative to the storing node; if the ply rebase + # were wrong, a hit from a different depth would shift the reported mate. + scores = {d: make_negamax().search(MATE_IN_2.copy(), -INF, INF, d)[0] for d in (4, 5, 6, 7)} + assert set(scores.values()) == {MATE - 3} + + +def test_search_scores_a_repetition_as_a_draw_despite_material(): + # ply=1 so the in-tree draw guard fires; White is a whole rook up. + score, _pv = make_negamax().search(REPETITION.copy(), -INF, INF, 4, ply=1) + assert score == 0 + + +def test_search_scores_the_fifty_move_rule_as_a_draw(): + board = chess.Board("4k3/8/8/8/8/8/8/R3K3 w - - 0 1") + board.halfmove_clock = 100 + score, _pv = make_negamax().search(board, -INF, INF, 4, ply=1) + assert score == 0 + + +def test_root_still_returns_a_move_in_an_already_drawn_position(): + # At the root (ply 0) the guard is skipped - the engine must still move. + _score, pv = make_negamax().search(REPETITION.copy(), -INF, INF, 4) + assert pv and pv[0] in set(REPETITION.legal_moves) + + +def test_quiesce_scores_a_repetition_as_a_draw(): + assert make_negamax().quiesce(REPETITION.copy(), -INF, INF, 0, 1) == 0 diff --git a/tests/test_transposition.py b/tests/test_transposition.py index c6826d0..ac609fb 100644 --- a/tests/test_transposition.py +++ b/tests/test_transposition.py @@ -2,7 +2,7 @@ import chess -from pychess.constants import INF, MATE_GUARD, TT_EXACT, TT_LOWER, TT_UPPER +from pychess.constants import INF, MATE, TT_EXACT, TT_LOWER, TT_UPPER from pychess.transposition import TranspositionTable STARTPOS = chess.Board() @@ -53,10 +53,21 @@ def test_deeper_entry_is_kept_on_store(): assert tt.probe(key, 3, -INF, INF) == (True, 10, None) -def test_mate_scores_are_never_returned_as_a_bound(): +def test_mate_scores_are_returned_and_rebased_by_ply(): tt = TranspositionTable() key = tt.key(STARTPOS) move = chess.Move.from_uci("e2e4") - tt.store(key, 5, MATE_GUARD + 1, TT_EXACT, move) - cutoff, value, got = tt.probe(key, 3, -INF, INF) - assert cutoff is False and value == 0 and got == move + # A mate 8 plies from the root, found while searching at ply 6 (so 2 plies + # away from this node). Stored node-relative, it is MATE - 2. + tt.store(key, 5, MATE - 8, TT_EXACT, move, ply=6) + assert tt._table[key][1] == MATE - 2 + # The same position reached at ply 4 is a mate 6 plies from the root. + cutoff, value, got = tt.probe(key, 3, -INF, INF, ply=4) + assert cutoff is True and value == MATE - 6 and got == move + + +def test_non_mate_scores_ignore_ply(): + tt = TranspositionTable() + key = tt.key(STARTPOS) + tt.store(key, 5, 42, TT_EXACT, None, ply=6) + assert tt.probe(key, 3, -INF, INF, ply=4) == (True, 42, None) diff --git a/tests/test_uci.py b/tests/test_uci.py index 3c7e776..d611784 100644 --- a/tests/test_uci.py +++ b/tests/test_uci.py @@ -7,6 +7,7 @@ from pychess import __main__ as cli from pychess.__main__ import UCI, main +from pychess.constants import MATE from pychess.engine import RandomEngine from pychess.lazy_smp import SearchResult from pychess.types import GoLimits @@ -127,6 +128,33 @@ def test_self_play_plays_book_moves(self, monkeypatch, capsys): assert session.board.move_stack[0].uci() == "e2e4" +class _FixedEngine: + """Returns a preset SearchResult, to exercise ``info`` formatting.""" + + def __init__(self, result: SearchResult) -> None: + self._result = result + + def search(self, board: chess.Board, limits: GoLimits | None = None) -> SearchResult: + return self._result + + +class TestScoreField: + def test_centipawns(self): + assert UCI._score_field(53) == "score cp 53" + assert UCI._score_field(-120) == "score cp -120" + + def test_mate_in_moves_is_signed(self): + assert UCI._score_field(MATE - 1) == "score mate 1" # 1 ply -> mate in 1 + assert UCI._score_field(MATE - 3) == "score mate 2" # 3 plies -> mate in 2 + assert UCI._score_field(-(MATE - 4)) == "score mate -2" # getting mated + + def test_go_reports_mate_score(self, uci, capsys): + uci.engine = _FixedEngine(SearchResult(MATE - 3, [chess.Move.from_uci("a1a2")], 5, 10, 0.0)) + uci.process_command("position fen 7k/8/5K2/8/8/8/8/R7 w - - 0 1") + uci.process_command("go depth 5") + assert "score mate 2" in capsys.readouterr().out + + class TestBookMove: def test_missing_book_returns_none(self, uci): assert uci.book_move() is None # fixture points BOOK_PATH at nothing From 8d23bfe9c9297deefe72b8c5e45fbbc62135f2c6 Mon Sep 17 00:00:00 2001 From: Christopher Junius <41166228+cjunius@users.noreply.github.com> Date: Sun, 30 Aug 2026 13:17:04 -0400 Subject: [PATCH 2/9] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/performance.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/performance.md b/docs/performance.md index 884204c..6c64233 100644 --- a/docs/performance.md +++ b/docs/performance.md @@ -3,8 +3,8 @@ Fresh benchmark of the current engine (move ordering, TT, bounded quiescence, null-move pruning, LMR, PVS, mate-distance pruning, hand-crafted eval terms) on one machine: Apple Silicon, 10 cores, Python 3.14. Search is from the starting -position; rows stop once a search passes ~5 seconds. "Nodes" is `board.push` -calls (main search + quiescence). +position; rows stop once a search passes ~5 seconds. "Nodes" is the engine's +node counter (number of `Negamax.search` / `Negamax.quiesce` calls). ## What `go` / `go depth N` runs today: Lazy SMP from the start position From 4ce59444f3e2d8a5c4341aade52778a3c39b872b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 30 Aug 2026 17:18:57 +0000 Subject: [PATCH 3/9] Fix: check checkmate before claims_draw in Negamax.search Co-authored-by: cjunius <41166228+cjunius@users.noreply.github.com> --- src/pychess/negamax.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pychess/negamax.py b/src/pychess/negamax.py index debe2e2..3a827f0 100644 --- a/src/pychess/negamax.py +++ b/src/pychess/negamax.py @@ -124,9 +124,6 @@ def search( if ply and not (self.nodes & 4095) and self.clock.should_stop(self.nodes): raise SearchAbortError - if ply and claims_draw(board): - return self._draw_score(), [] - if depth <= 0 or board.is_game_over(): if board.is_checkmate(): return -(MATE - ply), [] @@ -134,6 +131,9 @@ def search( return self._draw_score(), [] return self.quiesce(board, alpha, beta, 0, ply), [] + if ply and claims_draw(board): + return self._draw_score(), [] + if ply: # Mate-distance pruning: this node can do no better than mating now # and no worse than being mated now, so clamp the window and bail From 9ad6f514b2ca8de929959b5c00f5a5e2f0d7dac6 Mon Sep 17 00:00:00 2001 From: Christopher Junius Date: Sun, 30 Aug 2026 13:28:19 -0400 Subject: [PATCH 4/9] Regenerate the self-play GIF with the current engine Adds tools/self_play_gif.py (the original GIF was a checked-in binary with no generator) and re-runs it: 30-move game, 5 s/move, Lazy SMP, no opening book. The engine plays a Nimzo-style line, drops material around move 15, and Black wins - "Black is winning (-9.3, up a rook)" at the 30-move cap. Same frame format as before (566x514, one frame per ply plus a summary), now with mate scores shown as `#N`. Co-Authored-By: Claude Sonnet 5 --- docs/self-play.gif | Bin 234864 -> 245185 bytes tools/self_play_gif.py | 165 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+) create mode 100644 tools/self_play_gif.py diff --git a/docs/self-play.gif b/docs/self-play.gif index b937dee4dc13400bdad342e640a423648be3c649..9ee5520a1a21a4478126280894aac4583cc49857 100644 GIT binary patch delta 171634 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
    Hu!{(wO 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 Iv~PBh%Pck^%?5Z4A*v+_9AQLKI?@D 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 delta 164488 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 ImageFont.FreeTypeFont: + for path in _FONT_CANDIDATES: + if Path(path).exists(): + return ImageFont.truetype(path, size) + return ImageFont.load_default(size) + + +FONT = _font(25) + +_PIECE_CP = {chess.PAWN: 1, chess.KNIGHT: 3, chess.BISHOP: 3, chess.ROOK: 5, chess.QUEEN: 9} + + +def _board_lines(board: chess.Board) -> list[str]: + lines = [] + for rank in range(7, -1, -1): + cells = [] + for file in range(8): + piece = board.piece_at(chess.square(file, rank)) + cells.append(piece.symbol() if piece else ".") + lines.append(f"{rank + 1} " + " ".join(cells)) + lines.append(" " + " ".join("abcdefgh")) + return lines + + +def _score_text(white_cp: int) -> str: + """A White-relative score for the info line: ``#N`` near mate, else ``cp``.""" + if abs(white_cp) >= MATE_IN_MAX: + moves = (MATE - abs(white_cp) + 1) // 2 + return f"#{moves}" if white_cp > 0 else f"#-{moves}" + return f"{white_cp:+d} cp" + + +def _material_note(board: chess.Board) -> str: + diff = sum( + _PIECE_CP[pt] * (len(board.pieces(pt, chess.WHITE)) - len(board.pieces(pt, chess.BLACK))) + for pt in _PIECE_CP + ) + mag = abs(diff) + if mag < 2: + return "" + if mag == 2: + return ", up two pawns" + if mag < 5: + return ", up a piece" + if mag < 8: + return ", up a rook" + return ", up a queen" + + +def _render(title: str, subtitle: str, board: chess.Board) -> Image.Image: + img = Image.new("RGB", (WIDTH, HEIGHT), BG) + draw = ImageDraw.Draw(img) + draw.text((MARGIN_X, TOP_Y), title, font=FONT, fill=FG) + draw.text((MARGIN_X, TOP_Y + LINE_H), subtitle, font=FONT, fill=DIM) + for i, line in enumerate(_board_lines(board)): + draw.text((MARGIN_X, BOARD_TOP + i * LINE_H), line, font=FONT, fill=FG) + return img + + +def _summary(board: chess.Board, white_cp: int, moves_cap: int, capped: bool) -> tuple[str, str]: + if board.is_checkmate(): + winner = "Black" if board.turn == chess.WHITE else "White" + return f"{winner} wins by checkmate", "game over" + if board.is_game_over() or board.is_repetition(3) or board.halfmove_clock >= 100: + return "Draw", "game over" + + note = _material_note(board) + if white_cp > 150: + verdict = f"White is winning ({white_cp / 100:+.1f}{note})" + elif white_cp < -150: + verdict = f"Black is winning ({white_cp / 100:+.1f}{note})" + else: + verdict = f"Roughly balanced ({white_cp / 100:+.1f})" + tail = f"game stopped at the {moves_cap}-move cap" if capped else "game over" + return verdict, tail + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("--seconds", type=float, default=5.0) + parser.add_argument("--moves", type=int, default=30, help="full-move cap") + parser.add_argument("--out", type=Path, default=Path("docs/self-play.gif")) + args = parser.parse_args() + + engine = Engine() + board = chess.Board() + frames = [_render("pychess self-play", f"{args.seconds:g} second time limit per move", board)] + + white_cp = 0 + plies = args.moves * 2 + for _ply in range(plies): + result = engine.search(board, {"movetime": int(args.seconds * 1000)}) + if not result.pv: + break + move = result.pv[0] + move_no = board.fullmove_number + san = board.san(move) + moved_white = board.turn == chess.WHITE + prefix = f"{move_no}." if moved_white else f"{move_no}..." + board.push(move) + white_cp = result.score if moved_white else -result.score + info = ( + f"depth {result.depth} {_score_text(white_cp)} " + f"{result.nodes:,} nodes {result.elapsed:.1f}s" + ) + frames.append(_render(f"{prefix} {san}", info, board)) + print(f"{prefix} {san} ({info})", flush=True) + if board.is_game_over() or board.is_repetition(3) or board.halfmove_clock >= 100: + break + + capped = len(frames) - 1 >= plies + title, subtitle = _summary(board, white_cp, args.moves, capped) + frames.append(_render(title, subtitle, board)) + + args.out.parent.mkdir(parents=True, exist_ok=True) + frames[0].save( + args.out, + save_all=True, + append_images=frames[1:], + duration=FRAME_MS, + loop=0, + optimize=True, + ) + print(f"\nwrote {args.out} ({args.out.stat().st_size // 1024} KB, {len(frames)} frames)") + + +if __name__ == "__main__": + main() From 37e4694bd76668bcc12afc0ebfa755ff375c5714 Mon Sep 17 00:00:00 2001 From: Christopher Junius Date: Sun, 30 Aug 2026 13:29:25 -0400 Subject: [PATCH 5/9] Fix the other stale "board.push" nodes reference in performance.md Companion to 8d23bfe - the `pruned`-column paragraph had the same wrong description of the node counter. Co-Authored-By: Claude Sonnet 5 --- docs/performance.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/performance.md b/docs/performance.md index 6c64233..0bee1ee 100644 --- a/docs/performance.md +++ b/docs/performance.md @@ -47,10 +47,11 @@ search would face with no alpha-beta at all. `pruned` is `1 - nodes/perft`. | 8 | 3.690s | 178,647 | 84,998,978,956 | 99.9998% | The `pruned` column is an *estimate*: the two counts aren't the same unit. -"nodes" is every `board.push` in the pruned tree (internal nodes and quiescence -included, and quiescence looks past `depth` in forcing lines); `perft` is only -the leaves at exactly `depth`. So it overstates pruning a little at shallow -depths and understates it once quiescence dominates - but the trend is real: +"nodes" counts every node the search visits in the pruned tree (internal nodes +and quiescence included, and quiescence looks past `depth` in forcing lines); +`perft` is only the leaves at exactly `depth`. So it overstates pruning a little +at shallow depths and understates it once quiescence dominates - but the trend +is real: move ordering, the TT, and the reductions (null-move, LMR, PVS) take the tree from "search half of it" to "search one node in ~475,000" by depth 8. From 7ce9d51520d5c06266acb4c3f6aacdeddfb33f83 Mon Sep 17 00:00:00 2001 From: Christopher Junius <41166228+cjunius@users.noreply.github.com> Date: Sun, 30 Aug 2026 13:49:14 -0400 Subject: [PATCH 6/9] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- tools/self_play_gif.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/self_play_gif.py b/tools/self_play_gif.py index 1765fcf..07cf3ea 100644 --- a/tools/self_play_gif.py +++ b/tools/self_play_gif.py @@ -13,7 +13,12 @@ from pathlib import Path import chess -from PIL import Image, ImageDraw, ImageFont +try: + from PIL import Image, ImageDraw, ImageFont +except ImportError as exc: + raise SystemExit( + "Pillow is required to run tools/self_play_gif.py; install it with `pip install pillow`." + ) from exc from pychess.constants import MATE, MATE_IN_MAX from pychess.engine import Engine From 31316868495b2474a1e6d7e97a2ce5cef5997796 Mon Sep 17 00:00:00 2001 From: Christopher Junius <41166228+cjunius@users.noreply.github.com> Date: Sun, 30 Aug 2026 13:49:39 -0400 Subject: [PATCH 7/9] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- tools/self_play_gif.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/self_play_gif.py b/tools/self_play_gif.py index 07cf3ea..b2c42f3 100644 --- a/tools/self_play_gif.py +++ b/tools/self_play_gif.py @@ -80,14 +80,15 @@ def _material_note(board: chess.Board) -> str: mag = abs(diff) if mag < 2: return "" + + side = "White" if diff > 0 else "Black" if mag == 2: - return ", up two pawns" + return f", {side} up two pawns" if mag < 5: - return ", up a piece" + return f", {side} up a piece" if mag < 8: - return ", up a rook" - return ", up a queen" - + return f", {side} up a rook" + return f", {side} up a queen" def _render(title: str, subtitle: str, board: chess.Board) -> Image.Image: img = Image.new("RGB", (WIDTH, HEIGHT), BG) From 3e1d207ef80ea0c875d27b4546de387898636c37 Mon Sep 17 00:00:00 2001 From: Christopher Junius <41166228+cjunius@users.noreply.github.com> Date: Sun, 30 Aug 2026 13:50:05 -0400 Subject: [PATCH 8/9] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- src/pychess/negamax.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pychess/negamax.py b/src/pychess/negamax.py index 3a827f0..51ce595 100644 --- a/src/pychess/negamax.py +++ b/src/pychess/negamax.py @@ -153,7 +153,7 @@ def search( # --- Null-move pruning ------------------------------------------------ if ( self._null_ok(board, depth, can_null, ply) - and beta < MATE_IN_MAX + and abs(beta) < MATE_IN_MAX and self.evaluator.evaluate(board) >= beta ): r = 2 + (depth > NULL_DEEP_DEPTH) From 51fe7e60b42e4141b9162c4f1142b039ec622b46 Mon Sep 17 00:00:00 2001 From: Christopher Junius Date: Sun, 30 Aug 2026 13:54:22 -0400 Subject: [PATCH 9/9] Fix lint in tools/self_play_gif.py after the autofix commits - I001: blank line between the `import chess` group and the guarded Pillow import (from 7ce9d51), and restore the two blank lines before `_render` (3131686 dropped one). - Revert 3131686's re-addition of "White"/"Black" to `_material_note`: the verdict line it feeds already names the winning side, and the longer string overflowed the frame. The committed GIF was rendered with the short form. Co-Authored-By: Claude Sonnet 5 --- tools/self_play_gif.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tools/self_play_gif.py b/tools/self_play_gif.py index b2c42f3..2adedda 100644 --- a/tools/self_play_gif.py +++ b/tools/self_play_gif.py @@ -13,6 +13,7 @@ from pathlib import Path import chess + try: from PIL import Image, ImageDraw, ImageFont except ImportError as exc: @@ -80,15 +81,16 @@ def _material_note(board: chess.Board) -> str: mag = abs(diff) if mag < 2: return "" - - side = "White" if diff > 0 else "Black" + # The verdict line already names the side that is winning, so this is just + # the piece amount - keep it short so it fits the frame. if mag == 2: - return f", {side} up two pawns" + return ", up two pawns" if mag < 5: - return f", {side} up a piece" + return ", up a piece" if mag < 8: - return f", {side} up a rook" - return f", {side} up a queen" + return ", up a rook" + return ", up a queen" + def _render(title: str, subtitle: str, board: chess.Board) -> Image.Image: img = Image.new("RGB", (WIDTH, HEIGHT), BG)