Repository navigation
A drive step can aim: moveMouse, look and aimAt move the real crosshair - #2320
Merged
Merged
Conversation
Proved on Scrap Signal: firing at the spawn crosshair leaves the staged Foreman at 217/420, a 300px look puts the crosshair on it, and the same hold drops it to 208.
Noisemaker111
enabled auto-merge
October 24, 2026 02:51
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A shooter proof could fire but not aim: the step vocabulary had click, key, clickAt, fill, wait, waitFor, shot, probe, rpc, reload and assert, and none of them turn the camera. Scrap Signal's front fight showed it — six taps spent ammo and the Foreman's health never moved.
captureArgs.ts:moveMouse: [x, y],look: [dx, dy]andaimAt: "<page expression>"(withtolerancePx, default 6) parse into the existing step list, list in--check, and carrybefore/afterlike any step.--checkand--helpname them; a bad coordinate names its index.driveAim.ts(shared with the bundleddrive.mjsthroughgameFiles.ts):looktakes pointer lock on the play canvas inside a CDP user gesture, so it never clicks and never fires; it measures themovementX/movementYthe page actually received, falls back to a page-delivered move when the browser sends none, and refuses a turn that produced nothing.aimAtreads the target's projected{x, y}, measures the page's own pixel response, and corrects until the crosshair is on it.Scrap Signal,
--state boss, step filefront-aim.json:The starter pistol works once the crosshair is on the body; the earlier "no damage" was aim, not the gun.
Verification:
bun run verify:fast(typecheck + 8 test files + 8 gates, pass),bun run check-skills(pass),bun run drive scrap-signal --state boss --steps .scratch/front-aim.json(6/6 steps, 217 -> 208).Remaining: Scrap exposes no projected screen point, so its proof uses
look;aimAtis covered by a fake-page test at two different pixel costs. The step file lives in.scratch/— it belongs inJGengine-gamesasscrap-signal/proofs/flows/front-fight.json.