43076a48d6
Web WASM Freshness / freshness (pull_request) Failing after 7m14s
The web build shipped a ~3-week-stale pkg/ because the old "Check wasm pkg drift" step in docker-build.yml only hard-failed on direct solitaire_web/ edits and treated solitaire_engine/_core changes as a non-blocking notice — so the entire card_game migration (engine/core/data churn, v4->v5 save schema) slipped through. Replace it with a dedicated `web-wasm-freshness` workflow that rebuilds the artifacts and diffs them against what's committed. A fresh build on a pinned toolchain (rust 1.95.0 / wasm-bindgen 0.2.120 / wasm-pack 0.14.0 / binaryen 130) is byte-for-byte reproducible — verified locally — so this is precise: it fails on *any* real drift (including gameplay-logic changes that don't touch the JS API surface) and has no false positives on wasm-irrelevant edits. Runs on pull_request as well as master push, so staleness is caught before merge rather than only blocking the post-merge deploy. Remove the superseded heuristic from docker-build.yml; master stays fresh via the PR gate, so the deploy image is always built from current artifacts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>