Original CMR3 replay after line-list support

The original game now passes the previous Stages line-list rejection and reaches the UK Warwick Special Stage 1 loading screen through ordinary menu input. Loading then reaches D3D9 software: invalid native free list; the captured frame becomes dark gray. No race, driving controls, audio, logical FPS or browser execution is qualified. This was one bounded software CLI run on bx_9ef2wdsw.

tools/cmr3-lines-gameplay-stage.js creates the previously nonexistent /home/user/cmr3-lines-gameplay, detached at 78a06540f49dec6a8061354b5b3baf08d27be55b. It verifies the clean tested donor /home/user/cmr3-software-lines at 750bc13fd, rejects differences outside the explicitly named non-build files/docs, and compares actual bytes for all other tracked files. Only then does it copy the regular 1,803,537-byte canonical module SHA-256 937466db3545b9d016fb90dfd8a414eb82653b5ebbf7cc2db7c53d8cc87d49eb. It verifies package manifests before copying the existing dependency directory. Actual staging compared 6,506 identical tracked files, with twelve allowed non-build differences. Both source trees were clean. The original shared-clone attempt failed because donor history lacked an ancestor needed by fetch. Its directory remains at /home/user/cmr3-lines-gameplay-failed-shared-clone. A fresh independent git init / shallow fetch succeeded. A dependency symlink then failed the clean-worktree gate, so it was replaced by a regular directory copy. All these preguest receipts and exact recovery scripts are retained. The committed stager now uses those successful operations; this consolidated recipe was syntax checked, not rerun into another checkout.

The controller tools/cmr3-lines-gameplay.js ran from an external script path so the pinned checkout remained clean. It used a fresh scratch/runs/20261015-cmr3-lines-gameplay under the new checkout, validates the exact 302 originals, twelve native dependencies, 972-entry registry and 316,640-byte generated profile, then performs actual PNG encode/decode before guest spawn. Source, module and fixture identities are recorded before/after. The controller retained the established 540-second guest/590-second outer bounds. Owner 85638 started at 12:42:50.921 UTC; child 85684 launched at 12:42:51.819. Node v24.18.1/linux x64, software programmable D3D9, cooperative threads, 640x480, 200,000 blocks/batch and synthetic 200 ms/batch match the prior route.

Screenshots used node tools/ctl.js -s :8137 png OUTPUT. Each next ordinary keydown/keyup followed visual inspection; there was no batch replay, guest memory write, forced transition, tracing patch or fake dependency.

Input Down/up batches Observed screen
Escape 494 / 502 Title: PRESS RETURN TO CONTINUE
Return 788 / 799 Main menu, STAGES highlighted
Return 1099 / 1110 NUMBER OF PLAYERS, 1 PLAYER
Return 1203 / 1213 Ford Focus RS WRC 02
Return 1366 / 1375 Automatic transmission
Return 1458 / 1467 Country select, Spain unavailable in demo
Right 1608 / 1620 UK selected
Return 1718 / 1726 Special Stage 1, Warwick
Return 1843 / 1853 Stage loading map, screenshot batch 2246

Menus after the main menu had plain gray preview areas but readable responsive labels. Screenshot 13 at batch 7933 and final.png show a dark gray frame. The first explicit renderer error is output.log line 1653, immediately after batch 2402: Error: D3D9 software: invalid native free list. There are 2,725 copies in the final log. Device.prepare at lib/d3d9-software-backend.js:495 rejects a negative return from d3d_render_coalesce_heap (src/09ai-d3d-render-lifetime.wat:159). The exact damaged allocator node/state and causal allocation are not captured; do not infer that line rasterization itself corrupts the heap from this progression. Shutdown additionally reports QueueError code RECLAIM, native render heap handoff rejected, and eight abandoned parked Enter calls. Preserve these as observations, not a proven common cause. No driving input was attempted.

Harness quit was requested on the identified failure at 12:46:34.693. Child 85684 exited zero at 12:46:34.803 and controller 85638 at 12:46:35.289. All 6,518 tracked source hashes, module, original302/native12/registry/profile identities remained unchanged. Sanitized PID/PPID/comm inventory at 12:46:56.583 contained no runtime survivors; sole-runtime ownership was released to root. Zero here establishes cleanup, not game success.

Shared evidence: scratch/runs/20261015-cmr3-lines-gameplay/. All thirteen screenshots and final.png were inspected. The archive is 863,863 bytes, SHA-256 b57928030d70840875bead6deb0b8e634ce4a8ca2dd5053eff23d9b0d91ceace; all 26 remote artifacts / 2,044,242 bytes were independently hash verified after extraction. Local action/staging/owner receipts supplement that archive. No corpus ID exists; investigation metadata is published last without attaching to another game. Git preserves recipes/notes, not ignored fixtures or artifacts.

Preparation checks: both scripts pass node --check; git diff --check passes. Actual fixture verification, PNG preflight and postflight passed. Stage loading is established; gameplay remains blocked as described above. Future runtime requires a fresh sole-owner grant and enough sandbox lifetime for cleanup.