New Lich Survivors session ("Lich Survivors 15"). Read lich-survivors/RECORD.md first (rounds 68-70 are the last session's), then a327ex-site/renderer/REDESIGN.md section 39 (the unlock's letters) and section 37 (the admin rung).
Where things stand: the unlock animation is built (a327ex-site renderer/unlock_fx.lua; the game reports its opened egg with site_unlock_from and asks site_game_start for the egg start) and deployed admin-only. On the desktop it works end to end (lich-survivors/scratch/unlock/film_probe.lua, film rounds/70-unlock-letters). On the live site the owner saw NO effect at all, and he wants to stop testing on the website: "The website is essentially an app, we would have a much easier time like this because loading the game on the website actually takes quite a while." So:
- Make local testing his loop: the site renderer run on the desktop, one click.
- renderer/run.bat runs renderer/anchor.exe from 2026-08-09, older than the gpu layer and physics3_mover that Lich needs: move it to the shared Anchor build (as megablock's run.bat did; the live site already runs the newer engine, 11 pages were checked pixel-identical on it).
- A launcher for the unlock test (e.g. renderer/run-unlock.bat): boots the site with the admin items from disk (site_debug.admin), VIEW AS PUBLIC on (site_debug.view_public), LICH_START=EGG; ideally a key to replay (hide the posts again, restart from the egg) without relaunching. On the desktop there is no admin token, so the Reading settings switches don't show there.
- Keep the game copy current automatically: the desktop runs data/admin/games/lich-survivors (the MIRROR made by tools/pack_games.py from tools/sync_lich_survivors.sh's package), not lich-survivors/ itself. He runs it himself; your checks stay headless (anchor drive).
- Then find why the live site showed nothing (a switch not taking effect on his device, the egg start not picked up, the reveal not firing...). Local can't catch web-only faults (last session's boot break: a new module needs its --preload line in renderer/tools/build-web.sh). Never load a327ex.com in a headless browser: its .wasm/.data downloads pop up in his download manager.
- His verdict on the letters themselves, then iterate the look.
Still open, his order: finish the sounds (18 red slots; lens_charge lost its 4 files on 10-11, possibly by his X; lens_shard_land has none), the unlock animation, then public: the site engine with FX voices (3D sound plays flat on the site today), async shader compiles (~4.6 s of the web boot), the game's entry Id (#?). Deploys are outward facing: he approved admin-only deploys for the unlock work last session; ask again for anything else. His running game rewrites sound_picks.lua from memory on each save: probes that drive the editor snapshot and restore it, others never write it.
Research the code yourself; this is a starting map, not a spec.