Skip to content
Home » Wordfish-5.20-040826

Wordfish-5.20-040826

Wordfish 5.20-040826 — Exact Stockfish-dev Alignment & Evaluation-Correctness Closure
Stockfish-derived • Release ID unchanged • Exact target: stockfish-dev-20260803-762dd1da • Default NNUE: nn-ab28990d4ea3.nnue • Protected Wordfish overlay preserved
✓ IJCCRL Verified

Wordfish-5.20-040826 remains the public UCI and package identity of the current IJCCRL-verified Wordfish release. The release ID has intentionally not been changed. What changed is more important than a cosmetic version increment: the Stockfish-derived portion of the source tree was forensically reconstructed against the exact authority stockfish-dev-20260803-762dd1da (762dd1da9a5db458180b2c5db6c53dc40ec61e1a) and the protected Wordfish functionality was then rebased on top of that exact target.

The reconstruction was required because the earlier 5.20 tree still contained a hybrid source state: chronological updates had been integrated, but a full-tree comparison showed that substantial Stockfish-derived areas were still not semantically closed against the exact August target. Before the reconstruction, 68 common files under src/ differed, including all 21 common NNUE source files, together with important search, position, history, transposition-table, memory, thread and NUMA surfaces. The correction therefore was not a parameter tweak or a new evaluation term; it was a target-first source reconstruction.

The practical symptom observed by the maintainer was erratic play in positions from games that Wordfish had previously lost, including choices consistent with an incorrect or unstable evaluation/search state. After the source reconstruction, the same critical game positions were replayed from the GUI and Wordfish now selects the expected moves instead of reproducing the earlier bad choices. This is a direct regression check of the corrected behavior. It is not presented as an Elo claim and does not assign the former losses to one isolated one-line bug; the forensic audit showed that the underlying problem was the broader hybrid upstream-derived source state.

Current release identity
  • Release name: Wordfish-5.20-040826.
  • UCI identity: id name Wordfish-5.20-040826.
  • Canonical post-R7 source merge: 33636985d23bcaabe60e6293aa1f5157d0d7a80a.
  • Architecture-aware Windows executable: Wordfish-5.20-040826-sse41popcnt.exe.
  • Architecture-aware GUI / analysis banner: Wordfish-5.20-040826-sse41popcnt.
  • Maintainer and UCI author identity: Jorge Ruiz, together with the Stockfish developers credited by the project.
  • Default NNUE: nn-ab28990d4ea3.nnue.
  • NNUE SHA-256: ab28990d4ea3d5c97f7d3918bc5dd5061609330369fe00c2d93a34d4777b5552.
  • Public small-net option: EvalFileSmall remains absent.
Same release ID, materially corrected source authority
  • Public identity retained: Wordfish-5.20-040826. No artificial version bump was introduced solely to reflect the reconstruction work.
  • Exact Stockfish authority: stockfish-dev-20260803-762dd1da, SHA 762dd1da9a5db458180b2c5db6c53dc40ec61e1a.
  • Final canonical Wordfish merge after R7: 33636985d23bcaabe60e6293aa1f5157d0d7a80a.
  • Reconstruction invariant: if the protected Wordfish overlay is conceptually removed, the remaining Stockfish-derived engine source is semantically equivalent to the exact target.
  • Protected overlay retained: Experience, Book1/Book2, Wordfish_zobrist.h compatibility, MCTS/MonteCarlo, sparsehash, lichess tablebase extensions, Syzygy, Contempt, King Safety and Wordfish UCI identity.
  • Current NNUE: nn-ab28990d4ea3.nnue, with the common NNUE source subtree reconstructed to exact target.
Evaluation / search correctness incident and fix

The important correction in this update is behavioral, not cosmetic. The previous tree had reached the August chronology but still mixed older Stockfish-derived implementations with newer interfaces. That hybrid state crossed evaluation-sensitive subsystems: NNUE, search, position state, histories, transposition-table semantics and thread/NUMA ownership.

Before full reconstruction:
- 68 differing common files under src/
- 21/21 common NNUE source files differed from the exact target
- search.cpp / search.h retained older upstream-derived topology around Wordfish hooks
- position.cpp / types.h / history.h still contained stale target-era structures
- TT generation/depth packing was from an older topology
- memory/thread/NUMA and network ownership APIs were not fully at the exact target state

After R6 + R7:
- exact target types / position / history / TT / memory / NUMA baseline restored
- 21/21 common NNUE source files byte-identical to target
- final target search skeleton restored, then MCTS / Experience / Contempt / King Safety rebased
- target single-network API restored
- attacks.h byte-identical to target
- PolyBook and King Safety use explicit Attacks::attacks_bb qualification
- no unresolved Stockfish-derived source gap remains

Observed regression result: the maintainer replayed positions from games that the older build had lost and confirmed in the GUI that the corrected build now evaluates/handles those positions coherently and proposes the expected moves. This supports the practical correctness fix, while controlled match testing remains necessary for any statistical strength conclusion.

The central difference from the version in the previous HTML
Previous HTML: Wordfish 5.0-120626
- Release boundary: 12 June 2026
- Main role: strict single-net closure plus selected Stockfish-dev work through June 10
- Default NNUE: nn-71d6d32cb962.nnue
- Public NNUE option: EvalFile
- EvalFileSmall: absent
- Major documented corrections:
  FEN pawn-rank validation
  HalfKA / Threats accumulator merge
  TT depth underflow protection
  L3 / NUMA topology
  atomic do_move / material-key correction
- Release identity:
  Wordfish-5.0-120626
- The old page did not include the later June, July or August topology blocks
- The old page did not include the final MSYS2 CLANG64 PGO validation
Current release: Wordfish 5.20-040826
- Public release identity remains: Wordfish-5.20-040826
- Exact upstream authority: stockfish-dev-20260803-762dd1da
- Exact target SHA: 762dd1da9a5db458180b2c5db6c53dc40ec61e1a
- Default NNUE: nn-ab28990d4ea3.nnue
- Public NNUE option: EvalFile
- EvalFileSmall: still absent
- June–August chronological work retained
- Full R6 target-tree reconstruction completed after chronological integration
- 21/21 common NNUE source files aligned byte-for-byte with target
- target search / position / history / TT / memory / thread / NUMA topology restored
- Wordfish Experience / Book / Zobrist / MCTS / Contempt / King Safety rebased and preserved
- R7 removed the last unnecessary attacks.h compatibility layer
- canonical post-R7 merge: 33636985d23bcaabe60e6293aa1f5157d0d7a80a
- maintainer GUI replay confirms corrected choices in previously problematic lost-game positions

Interpretation: Wordfish 5.0 established the June strict single-net and correctness baseline. Wordfish 5.20 retains that baseline and the same public release identity, but the source authority has now been closed against the exact August target rather than inferred from chronological patch coverage alone. The decisive change is the removal of the remaining hybrid upstream-derived state and the rebase of the Wordfish overlay onto the final Stockfish target skeleton.

Chronological engineering work after Wordfish 5.0-120626

The following table records both the chronological integration phases and the later forensic recovery sequence that closed the exact-target gaps. The R6 reconstruction is the decisive source-authority step: chronology alone was no longer accepted as proof of equivalence. The labels are repository phase identifiers, not Elo claims.

PhasePublic mergeEngineering role in Wordfish 5.20-040826
P7H146f32b2Closed the Stockfish-authority attacks compile blocker affecting AVX2, BMI2 and AVX-512 paths.
P7Ie09086edClosed remaining June 9–10 topology coverage, including the official do_move reordering while preserving the later material-key correction.
P8A0 / P8A58e4ef28 / 258edb28Imported prerequisite shared pawn/correction-history topology and the June 14 source block, including the final MultiPV mate-PV corner-case closure.
P8Bedd1f0d0Applied the June 25 color-specific piece-validation deduplication while preserving FEN safety checks.
P8C373bec80Normalized the dev25 types and attacks topology and established architecture-aware release naming.
P8D2cb99d6fClosed the Clang diagnostic around transposition-table clearing without changing TT semantics.
P8E91d21dbdApplied the June 27 topology block and moved the main network authority to nn-1b6a82263149.nnue at that stage.
P8F0a152378Advanced the main NNUE authority to nn-af1339a6dea3.nnue.
P8Gd32bfcf9Applied the June 30 PSQT simplification.
P8H-A0 / P8H9f97464b / e30562beRestored the required AVX-512 ICL MoveSorter antecedent and applied the July 3 topology block.
P8Ic28b526eApplied the July 6 Stockfish topology block.
P8J-A0 / P8J787f7005 / 7d90c58cRestored the dense VNNI split antecedent and applied the July 10 topology block.
P8K3a1978b3Added the tracked-diff version marker and reverted the temporary dynamic null-move-pruning change in accordance with upstream chronology.
P8L21c03a06Applied the July 16 topology block.
P8M4a2a59b0Applied the July 20 block and the SFNNv16 feature topology, including PP_3Wide integration and revised NNUE feature surfaces.
P8NefbdfbdfApplied the complete July 26 topology block and established nn-ab28990d4ea3.nnue as the current network authority.
P8O7d5b4f73Applied the August 1 topology block, covering the next NNUE, search-history and platform-optimization stage.
P8Pe6a5a5dcApplied the August 2 topology block, including the later shared-memory ownership design and associated NNUE/search cleanups.
P8Qc7f884a7Applied the August 3 block: paired-activation simplification, move-generation cleanup, memfd_create support checks and SIGPIPE protection for disappearing shared-memory clients.
P8Rcb77ec28Rebranded all authorized identity surfaces to Wordfish-5.20-040826 while preserving architecture suffix handling.
P8S40e57b24Corrected the Win32 header dependency order so windows.h precedes shellapi.h under MSYS2 CLANG64.
R0bdea03d3Closed shared correction/pawn-history and nonPawnKey correctness gaps against the final target topology.
R1be50eb47Reconciled the final L3-aware NUMA/shared-history default while preserving Wordfish NUMA extensions.
R255879591Restored the exact final WDL reporting coefficients in uci.cpp.
R3546b7f96Restored deterministic shared-memory/NUMA discriminator hashing.
R4e71cce8cRepaired the final compile-time RankAttacks / DualMagic factory and AVX2 DualHyperbola path.
R551f7dc75Reconciled the final compiler-flag contract for GCC, Clang, MinGW and ICX without changing the Wordfish feature overlay.
R6ef8599d6Full target-tree reconstruction: rebuilt the Stockfish-derived engine source against exact target 762dd1da and then rebased the protected Wordfish overlay.
R733636985Final attacks namespace normalization: attacks.h made byte-identical to target; PolyBook and King Safety explicitly qualified their local attack calls.
Current NNUE and strict single-net authority
  • Active network: nn-ab28990d4ea3.nnue.
  • Network generation: the current tree contains the later NNUE feature topology associated with the July 20 SFNNv16 phase and the July 26 network update.
  • Public runtime selector: EvalFile.
  • Strict single-net rule: EvalFileSmall remains absent and the retired dual-network runtime surfaces remain excluded.
  • Runtime verification: the validated binary reported NNUE evaluation using nn-ab28990d4ea3.nnue.
  • Shared-memory verification: the first network replica initialized through shared memory during the runtime smoke test.
Major technical differences and final exact-target reconstruction
  • Exact-target reconstruction supersedes patch-count confidence: the final audit compared the complete Wordfish and Stockfish trees and rebuilt stale/hybrid Stockfish-derived areas from the exact 762dd1da target before reapplying the Wordfish overlay.
  • Evaluation-sensitive source closure: the complete common NNUE subtree, final network API, target search skeleton, position-state pipeline, histories and TT semantics were aligned as one coherent target state rather than as isolated historical hunks.
  • Network authority changed several times during the audited chronology: the June nn-71d6d32cb962.nnue authority was superseded by later June and July networks, ending with nn-ab28990d4ea3.nnue.
  • SFNNv16-era feature topology: PP_3Wide, revised FullThreats dimensions and related accumulator/architecture surfaces are now represented.
  • Later SIMD work: the tree includes the required AVX-512 ICL and dense VNNI antecedents, paired-activation work and later platform-specific NNUE paths.
  • Move generation and attacks: RankAttacks and dual-hyperbola surfaces were normalized further, with later compile-time and lookup-table refinements.
  • Search chronology: the July blocks include upstream search-formula, pruning, history and negative-extension evolution, including the explicit reversion of the temporary dynamic NMP change.
  • Version integrity: the build system tracks a dirty source tree through the GIT_DIFFINDEX marker while preserving a clean release identity after commit.
  • Shared memory: the August blocks advance Unix shared-memory ownership and lifecycle handling, verify memfd_create support and prevent SIGPIPE termination when a client disconnects.
  • Windows CLANG64 compatibility: the Win32 include topology was corrected so windows.h supplies the declarations required by shellapi.h.
Current R6/R7 reconstruction validation

The exact-target reconstruction and final attacks normalization were validated separately from the earlier P8S Windows profile-build evidence. No ARM matrix is part of this closure.

  • R6 GCC BMI2: build passed.
  • R6 GCC AVX2: build passed.
  • R6 Clang BMI2: build passed in the available environment.
  • R6 runtime: UCI, readiness, bench, depth-8 search, NNUE loading, Experience, Book, MCTS and Threads>1 smokes passed.
  • R7 GCC BMI2: build passed after removing the global attacks aliases.
  • R7 GCC AVX2: build passed, confirming the DualHyperbola/RankAttacks path remained healthy.
  • R7 King Safety regression: non-default King Safety search completed normally.
  • R7 PolyBook regression: an en-passant book key position exercised the explicit Attacks::attacks_bb<PAWN>() path successfully.
  • Final attacks API: src/attacks.h is byte-identical to the exact Stockfish target.
  • GUI regression: the maintainer replayed previously problematic lost-game positions and confirmed corrected move choices in those tested positions.
Previously documented MSYS2 CLANG64 platform validation (P8S baseline)

The P8S-era 5.20 tree was compiled locally on Windows 10 under MSYS2 CLANG64 using the project’s Clang/MinGW-w64 route. This remains valid platform evidence for the corrected _WIN32 include path and the SSE4.1/POPCNT PGO workflow. It predates the later R6/R7 full source reconstruction and is therefore recorded here as historical platform evidence rather than as a claim that the post-R7 tree has already repeated the same local PGO run.

Compiler x86_64-w64-mingw32-clang++
Architecture x86-64-sse41-popcnt
Optimization PGO + full LTO
Linker LLD
Validated build command
make -j profile-build \
  ARCH=x86-64-sse41-popcnt \
  COMP=clang \
  EXTRALDFLAGS="-fuse-ld=lld"
Four-stage PGO result
Step 1/4 — instrumented executable: PASS
Step 2/4 — benchmark and profile collection: PASS
Step 3/4 — optimized executable using profile data: PASS
Step 4/4 — profile-data cleanup: PASS

Instrumented benchmark:
Nodes searched : 2471425
Nodes/second   : 248984

Final executable:
Wordfish-5.20-040826-sse41popcnt.exe

Warning gate        : PASS
Compiler error gate : PASS
Linker blocker gate : PASS
Win32 CLANG64 correction retained from the P8S platform closure

Before P8S, src/misc.cpp included shellapi.h before windows.h. Under the current MSYS2 CLANG64 headers, that left declarations such as DECLARE_HANDLE and EXTERN_C unavailable when shellapi.h was parsed.

Correct final order:

#include <direct.h>
#include <windows.h>
#include <shellapi.h>

Result at P8S: the same source file that previously stopped the profile build compiled in both the instrumented and profile-use stages. R6 later reconstructed misc.cpp against the exact target while preserving the required Windows include order and Wordfish identity.

Previously documented P8S UCI and runtime evidence
Identity and readiness
Wordfish-5.20-040826-sse41popcnt
id name Wordfish-5.20-040826
id author Jorge Ruiz and the Stockfish developers (see AUTHORS file)
uciok
readyok
NNUE and search smoke
option name EvalFile type string default nn-ab28990d4ea3.nnue
info string NNUE evaluation using nn-ab28990d4ea3.nnue
info string Network replica 1: Shared memory.
info string Using 1 thread
bestmove a2a3

Interpretation: the release identity, network authority and architecture suffix are not inferred from filenames alone. They were observed in the executable’s own UCI and runtime output.

Preserved Wordfish-specific UCI surfaces

The Stockfish-derived chronology did not remove the accepted Wordfish extensions. The final UCI inspection confirmed the following families:

  • Experience: enable/disable, file, read-only mode, book mode, width, evaluation importance, depth range, move limit, status and synchronization.
  • Opening books: Book1 and Book2, each with file, best-move, depth and width controls.
  • Syzygy: path, probe depth, 50-move rule and probe limit.
  • MCTS / MonteCarlo: search-strategy selection, enable switch, rollout depth, simulations and exploration controls.
  • Standard controls: Threads, Hash, Ponder, MultiPV, skill, time-management controls, Chess960 and UCI strength limiting.
  • NNUE: one public EvalFile authority and no EvalFileSmall.
MCTS / MonteCarlo experimental status

MCTS remains an experimental Wordfish surface. Its presence in the verified UCI output confirms that the option family was preserved; it does not constitute a guarantee of tournament strength, execution speed or production suitability. The standard UCI alpha-beta path, release identity, NNUE authority and build integrity are validated independently of any strength claim for MCTS.

Binary and package evidence policy

The current release page distinguishes source authority from binary evidence. The historical P8S validation directly certifies the previously built Windows SSE4.1/POPCNT PGO executable; it must not be silently promoted to post-R7 binary evidence. Binaries produced from the corrected R7 source tree should be listed publicly only after their own compilation logs and filenames have been checked.

Previously evidenced P8S binary:
Wordfish-5.20-040826-sse41popcnt.exe

Required package rule:
- Build only from the accepted Wordfish-5.20-040826 source tree.
- Preserve the current NNUE authority.
- Do not patch source code during package generation.
- Include only binaries with successful compilation and clean logs.
- Record architecture-specific filenames and SHA-256 checksums.
- Do not claim an untested target merely because it exists in the Makefile.
Strict single-net fossil-removal guarantees retained

The current source chronology does not reverse the strict single-net work inherited from Wordfish 4.90 and Wordfish 5.0. The following retired public or adapter surfaces remain outside the accepted runtime model:

EvalFileSmall
EvalFileDefaultNameSmall
NetworkSmall
SmallNetworkArchitecture
SmallFeatureTransformer
NNUE::Networks dual holder
active_network(...)
active_cache(...)
singlenet_adapter
onVerifyNetworks
load_networks(...)
verify_networks(...)
accumulatorSmall
caches.small / caches.big
networks.small / networks.big
Performance interpretation — supported and unsupported conclusions
  • Supported: the current Stockfish-derived source is closed against the exact target 762dd1da9a5db458180b2c5db6c53dc40ec61e1a, not merely against a checklist of historical commits.
  • Supported: the maintainer’s GUI replay of previously problematic lost-game positions no longer reproduces the former bad move choices and the corrected build proposes the expected continuations.
  • Supported: the default network is nn-ab28990d4ea3.nnue, not the former nn-71d6d32cb962.nnue.
  • Supported: the previously documented P8S Windows SSE4.1/POPCNT PGO build completed under MSYS2 CLANG64 without warning, compiler-error or linker-blocker findings.
  • Supported: that P8S executable initialized UCI, loaded the NNUE, used a shared-memory network replica and returned a legal move; the later R6/R7 tree has its own targeted build and runtime evidence listed above.
  • Not supported: attributing every former lost game to one isolated evaluation formula or one single source line. The forensic evidence identifies a broader hybrid source state, and the corrective action reconstructed all affected target-derived subsystems.
  • Not supported: a guaranteed Elo increase over Wordfish 5.0. Strength requires controlled match evidence.
  • Not supported: a universal speed increase on every processor. The chronology includes correctness, architecture, cleanup and platform changes as well as performance-oriented changes.
  • Not supported: production-grade MCTS behaviour.
  • Not supported: automatic certification of every Makefile target or every binary that may later be added to a ZIP.
Audit conclusion

Wordfish-5.20-040826 keeps the same release ID, but its accepted source authority is now materially stronger than in the previous page revision. The final work did not stop at chronological Stockfish-dev integration: the complete tree was compared against exact target 762dd1da9a5db458180b2c5db6c53dc40ec61e1a, stale/hybrid Stockfish-derived areas were reconstructed, and the Wordfish overlay was rebased on top. R6 closed the full source tree; R7 removed the last unnecessary global attacks compatibility layer while preserving PolyBook and King Safety through explicit target API calls. The current tree retains Experience, Book1/Book2, Wordfish Zobrist compatibility, MCTS/MonteCarlo, Syzygy, lichess tablebase extensions, sparsehash, Contempt, King Safety and the strict single-net model with nn-ab28990d4ea3.nnue. The maintainer’s GUI regression replay of previously lost/problematic games confirms that the corrected engine no longer reproduces the earlier erratic move choices in those tested positions. This closes the observed correctness defect while leaving Elo/strength conclusions to controlled match evidence.


Download