Crimsonland: ordinary relative pointer reaches controlled Tutorial gameplay

Run scratch/runs/20261008T0105Z-crimsonland-relative-input qualifies Tutorial entry, keyboard movement and relative aiming in the original executable using reference source f62ab3c9f and module 4dc5ac2c477c71c64a42530562e4cf51e145bd966232e15330acfc01753d54de. Original EXE remains 93cdcdc8. The prior normal WinMain exit diagnosis stands; this run used no Enter and made no production repair.

Actual input route

The corrected ?app=crimsonland&debug&d3d9-renderer=webgl route and reviewed original launcher Play322,295/750ms reached the real main menu. Host and owning render Worker independently reported neutral/WebGL. The actual HTTP module response has the expected full SHA and complete stream receipt.

An initial actual desktop relative move landed on the log DIV: Pointer Lock was false and CDP's pointer position differed from the desktop pointer. The passive DOM listener recorded trusted client856,477, not a game-targeted move. Desktop geometry showed screen870,670 for that point: viewport screen origin14,193. Ordinary desktop mousemove232,643 correctly landed at page218,450 on the canvas, but the DirectInput game cursor remained296,338 while unlocked. Neither move was treated as a qualified menu target or followed by a Play click.

An ordinary desktop move310,531 and 750ms button hold clicked reviewed neutral ground at page296,338, outside all menu targets, acquiring Pointer Lock. This outside-driver input is retained in neutral-capture-click.json; desktop placement/geometry receipts are retained separately from commands.jsonl. No focus, cursor state, guest command, CPU state or return was forced.

Locked xdotool mousemove_relative -- -90 130 produced a trusted CANVAS DOM event with movementX=-90/movementY=130. The game-drawn cursor moved from296,338 onto PLAY GAME near218,450, visibly highlighting it. Only after reviewing locked-play-hover.png did a 750ms desktop down/up open the Play submenu. Locked relative -10,-18 then placed the cursor on highlighted Tutorial near 209,432, with “Learn how to play Crimsonland.” visible. The reviewed 750ms desktop click opened actual terrain, player and aiming reticle.

Player control evidence

tutorial-before-movement.png shows the player near351,459 and the instruction to move using arrow keys. Ordinary browser ArrowRight held1500ms moved the player right (near387,459 after release), shifted terrain and advanced the lesson to picking up bonuses. Both held/released images and keydown/up receipts are retained. ArrowUp2500ms then moved the player upward and scrolled terrain: the 1000PTS bonus moved from roughly332,374 to332,547, while the player reached roughly396,425. This is movement relative to terrain, not an animation-only inference. The held shot is retained too.

Locked relative150,60 produced another trusted CANVAS event with exactly those deltas and moved the aiming reticle from284,325 to412,376; the player orientation changed toward it. tutorial-aim-controlled.png is the reviewed final scene. The bounded DOM observer collected12 rows without reaching its128-row cap. Some button-up events are absent from this document listener; the existing host input trace records ordinary DOWN/UP pairs and menu transitions provide the positive behavior evidence. No absence claim is made from DOM coverage.

Tutorial entry and player movement/aiming pass. Tutorial completion, combat, shooting, long-session correctness, FPS, physical GPU and audio are unknown. No owning DirectInput memory probe was needed to establish this positive route. The preserved passive owning-exit observer emitted no rows in this run; that is not used as an exception-absence claim.

Harness, validation and cleanup

relative-input.js provides bounded shell-free xdotool argv, a fresh reviewed scene gate, explicit target review for menu clicks, a25s deadline reserve and passive trusted DOM motion collection. Browser desktop clicks use750ms and the existing release-on-error helper. Tests cover invalid deltas, stale/missing review, deadline reserve, target review, exact desktop argv, actual desktop errors, passive listeners, bounded capture and listener removal. Node syntax checks pass. Remote preflight authenticates530 pins/530HEAD/8GET/range/optional 404/drained streams. No local build, native test or local browser ran.

One remote browser ran01:03:30–01:07:08, before its01:08:30 guard. Ordinary quit closed browser/server, Chrome exit0 and streams0. Independent01:07:21 checks found driver31528/Chrome31546 absent, no Chrome, baseline sockets, all530 pins unchanged and49.99GB free. All52 capture files were copied and SHA checked before the owned prefix was removed01:07:54 and the slot released. Box bx_43wuxzx3 and retained Antara Puppeteer are handed to root/queued Tiberian, expiry01:28:12. Four existing optional asset request errors are retained without causal claims.