ci(web): add precise wasm-freshness gate; drop flawed drift heuristic #93
Reference in New Issue
Block a user
Delete Branch "ci/web-wasm-freshness-gate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
The web build shipped a ~3-week-stale
pkg/(fixed in #92). The existing "Check wasm pkg drift" step indocker-build.ymlshould have caught it but didn't: it only hard-failed on directsolitaire_web/edits, and treatedsolitaire_engine/+solitaire_core/changes as a non-blocking notice. The card_game migration's churn lived almost entirely in engine/core/data (plus the v4→v5 save schema), so it sailed through.What
A dedicated
web-wasm-freshnessworkflow that rebuilds the artifacts and diffs them against what's committed — the precise check, not a changed-files heuristic.git statusonpkg/). Pins:rust 1.95.0,wasm-bindgen 0.2.120,wasm-pack 0.14.0,binaryen 130(the wasm-opt version matters — it's applied tocanvas_bg.wasm).pull_requestas well as master push, so staleness is blocked before merge.The superseded heuristic is removed from
docker-build.yml; master stays fresh via the PR gate, so the deploy image always builds from current artifacts.Note
First CI run validates the pinned action/tool availability on the runner. The binaryen 130 asset URL was confirmed reachable (HTTP 200). When the artifacts are next regenerated with a newer toolchain, bump the four version pins in the workflow in lockstep.
🤖 Generated with Claude Code