7a6e2d0e89
Phase P1 of the playtest harness design spec: * tools/playtest/run_playtest.py — replays a playtest YAML against the Runtime 3 IR and compares to (or updates) a snapshot JSON * game/scenarios/playtests/zacus_v3_60min_tech.playtest.yaml — first canonical playtest, resolves PUZZLE_LA_440 via the UNLOCK_LA_440 unlock event * game/scenarios/playtests/snapshots/ zacus_v3_60min_tech.snapshot.json — committed reference * Makefile: new "playtest" target wiring the runner via uv Critical-asserts evaluator and TS runner are out of P1 scope.