Packet 178: Reversi cooperative endgame deadline repair.
Upstream engine/model: Egaroucid 7.8.3, commit 16af86c07f05c9baeaa4881acfb077cd901eaac7.
Hard external engine pin: retain Packet 166 search policy, full evaluation and book.
Compiler: Emscripten 6.0.12, latest stable official release checked 2026-10-12.
Playwright 1.64.0 and Vite 8.3.4 verified against the official npm registry.
Original Packet 166 source archive SHA256: 57d121674ed37cc17e04c6aa121bfca5b88a083494e4fe1d667a03fd0ff2a2ed.
Only search changes: recursive endgame NWS deadline polling, interrupted local-table write guards,
shared expiry across threads, immediate clock checks at iteration acceptance, and rejection of
interrupted early-break verification. No budget, level, book, model or thread reduction.
Hash-node heap allocations use new[]/delete[] so their atomic spinlocks are constructed unlocked;
the previous malloc/free allocation skipped that member initialization and could spin forever.
Corresponding source includes the complete patched engine, bridge, original build inputs and both repair helpers.
Rebuild: extract this archive to webpage_tools/output/packet178/rebuild/source, then run
pwsh -NoProfile -File scripts/build-reversi178.ps1 -SdkPath <emsdk-6.0.12> -SourceDirectory output/packet178/rebuild/source
or place the included build-reversi178.ps1 and patch-reversi178.py in webpage_tools/scripts.
Build uses one compiler core, a private cache, a 4 MiB main stack, full 1 GiB maximum WASM heap,
unchanged initial memory and unchanged bounded pthread pool. No deployment command is included.
Source directory paths in assertions are normalized with -ffile-prefix-map to /reversi178.
