Skip to content

Search: add main-search SEE pruning for quiet moves #3

Description

@sebhofmann

Motivation

Stockfish, Reckless, and Akimbo use SEE pruning for quiet moves as well as captures. This removes quiet moves whose destination immediately loses material and complements LMP/history pruning.

Scope

  • Add quiet main-search SEE pruning as a separate feature from capture SEE pruning.
  • Use a depth-dependent quadratic threshold.
  • Restrict initially to non-root, non-check, shallow nodes after at least one legal move.
  • Add independent UCI parameters and a search-stat counter.
  • Do not change capture pruning in this patch.

Suggested starting point

threshold = -quiet_margin * depth * depth, enabled through depth 6-8.

Acceptance criteria

  • All correctness and mate tests pass.
  • Fixed-depth diagnostics show plausible pruning counts.
  • Run an isolated SPRT against the accepted capture-SEE baseline.
  • Do not combine the SPRT with History Pruning or LMP changes.

Dependencies

Depends on threshold-aware see_ge(). Test after capture SEE pruning so interactions are measured incrementally.

Mandatory SPRT workflow

This issue is not complete after implementation and unit/regression testing. The implementing agent must test it through the repository's variant workflow:

  1. Build the unchanged parent and snapshot it with ./variants.sh create <issue>_base.
  2. Implement only this issue, rebuild, and snapshot it with ./variants.sh create <issue>_new.
  3. Run LTC SPRT with TC=60+0.6 ./tournament.sh sprt <issue>_new <issue>_base.
  4. Use the existing defaults H0=0, H1=+5, alpha=beta=0.05 unless the issue explicitly justifies otherwise.
  5. tournament.sh must use /home/paschty/Downloads/2moves_v2.pgn, paired colors, and -repeat.
  6. Record final W/L/D, Elo estimate/error, LLR decision, TC, base commit, and test commit in the issue.
  7. A failed or inconclusive SPRT must not be presented as an accepted Elo gain.

Build requirement

Always perform a clean build of the engine and training binary with make clean && make both (not plain make) before testing or creating a variant snapshot.

Branch, PR, and SPRT documentation

Implement this issue on a dedicated branch and submit it through a pull request. Document the final SPRT result in the PR, including W/L/D, Elo estimate/error, LLR decision, TC, base commit, and test commit. If the SPRT fails, still create the PR to preserve the implementation and result, then close the PR without merging.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions