Summary
- capture the original search depth before any dynamic adjustments inside Search::Worker::search
- reuse the stored depth for transposition table writes and depth-based heuristics after move processing
- restore the mutable depth before node exit to prevent local reductions from leaking outside the move loop
- Converted the probed child transposition-table value before reuse and limited the cutoff validation to successful probes, reusing the transformed score for validity and beta comparisons.
- Sanitized the TT move during the main search by checking pseudo-legal and legal status before reusing it, and recalculated the capture flag from the validated move to keep heuristics consistent.
- Applied the same TT move sanitization in quiescence search so its move ordering never receives invalid cached moves
- add a TTLookupResult helper struct and Worker::probe_tt to centralize TT lookups and move sanitization
- refactor search() and qsearch() to reuse the shared TT probing logic and rely on sanitized move data
Download Wordfish uci chess engine