Skip to content

Add ACT evals for five untested pointer methods - #32

Merged
brynary merged 2 commits into
pointer-buttonsfrom
pointer-evals
Oct 5, 2026
Merged

brynary merged 2 commits into
pointer-buttonsfrom
pointer-evals

Conversation

@brynary

@brynary brynary commented Sep 27, 2026

Copy link
Copy Markdown
Contributor

Stacked on #31. Five ACT paths from this stack had no eval task. This PR adds one for each, with a realistic page, and runs them on the five models the earlier sessions compared.

Tasks

Task Page Instruction Assert
scroll-into-view a landing page whose Pricing section loads its plans only when it scrolls into view "scroll to the pricing section" role:heading Team visible
scroll-sideways a cabin listing with a photo strip that scrolls sideways "scroll the photo strip to the right" the strip scrolled; the page did not
middle-click-tab a helpdesk tab strip: a middle click closes a tab, a left click only selects it "middle-click the Reports tab to close it" the Reports tab is gone
pointer-drag-distance a hiring board whose own pointer-event drag starts after an 8 px move "move Priya Patel to the Onsite column" Priya is in Onsite
pointer-drag-delay a trip planner whose drag starts after a 300 ms press and cancels on an earlier move "move the tram ride to Sunday" the tram ride is on Sunday

Each page was checked first without a model. The 11 right deterministic lines pass, such as MIDDLECLICK role:tab Reports and DRAG onto the column, its heading, a card, or its list. The 17 wrong ones fail at the assert: a left or right click on the tab, a page scroll instead of the strip, SCROLL to 100% instead of into view, a drop on the wrong column. The boards' own rules hold with raw Playwright mouse input: the planner cancels a 0 ms or 200 ms hold and accepts 400 ms, and the hiring board starts no drag on a 6 px move.

Results

Every task and model passes 3/3: 75 of 75 runs, for about $0.05. Summary: evals/act/results/2026-09-27-local-pointer-tasks.md.

Task Lines chosen (15 runs) Jev chose (jev:flash-lite, jev:luna)
scroll-into-view SCROLL role:heading "Pricing" 11, SCROLL role:region (the section) 4 3/3, 3/3
scroll-sideways SCROLL role:region "Photos" right 15 3/3, 3/3
middle-click-tab MIDDLECLICK role:tab "Reports" 15 3/3, 3/3
pointer-drag-distance the card to role:region "Onsite" 9; Jev drags the name inside the card 6, which also works 3/3, 3/3
pointer-drag-delay onto the Sunday list 7, region 4, heading 4 0/3, 0/3

Jev chose 24 of 30 actions overall. On pointer-drag-delay, Jev split its vote on the kind of action for "move the tram ride to Sunday" (drag 0.44, click 0.28, select 0.17), so the model planned the step, as designed. The task keeps its wording rather than being tuned for Jev.

Found, not fixed

Playwright's snapshot drops a region's name when aria-labelledby points at its own heading. Jev's descriptions then give the region the nearest heading before it, so the Sunday region reached Jev described as heading: Saturday, May 10. Jev still dropped correctly here, by choosing the Sunday list. On a page where only the region takes a drop, it could choose the wrong column.

🤖 Generated with Claude Code

@brynary
brynary added this pull request to stack #55 October 5, 2026 13:05
Base automatically changed from snapshot-quoted-lines to pointer-buttons October 5, 2026 14:02
brynary and others added 2 commits October 5, 2026 10:02
No eval task ran these ACT paths: scrollIntoView, scrollRight, a middle
click, and dragAndDrop on boards with their own pointer-event drag code.
Each new task has its own page:

- scroll-into-view: "scroll to the pricing section" on a product page.
  Its Pricing section fetches its plans only when an
  IntersectionObserver sees it. The assert checks that the Team plan
  shows.
- scroll-sideways: "scroll the photo strip to the right" on a rental
  listing with an overflow-x photo strip. The strip must scroll, and
  the page must not.
- middle-click-tab: "middle-click the Reports tab to close it" in a
  support console. A middle click closes a tab through auxclick, and a
  left click only selects it. Only the active tab has a close button.
- pointer-drag-distance: "move Priya Patel to the Onsite column" on a
  hiring board whose drag starts after an 8px move.
- pointer-drag-delay: "move the tram ride to Sunday" in a trip planner
  whose drag starts after a 300ms press. A move of more than 5px before
  that cancels the drag.

Both boards use pointer events and no native drag and drop. They drop
on the column under the pointer, with the dragged card set to
pointer-events: none, as the DRAG test page does.

Each flow was run with its ACT line replaced by the line it should
produce, such as MIDDLECLICK role:tab Reports. Those lines pass. Wrong
actions fail the asserts: a left or right click on the tab, a scroll of
the page, a click on a card, and a drop on the wrong column. With raw
mouse input, the planner cancels a drag held for less than 300ms, and
the hiring board starts no drag on a 6px move.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Five models ran the five new tasks three times each. All 75 runs pass.
The models and Jev chose these lines:

- scroll-into-view: SCROLL role:heading "Pricing" 11 times, and the
  Pricing section's own region 4 times (gpt-5.6-terra 3, gpt-5.6-luna
  1). The region has no name in the snapshot, because its name comes
  from its own heading.
- scroll-sideways: SCROLL role:region "Photos" right every time.
- middle-click-tab: MIDDLECLICK role:tab "Reports" every time.
- pointer-drag-distance: DRAG from Priya Patel's card to role:region
  "Onsite". Jev dragged the name inside the card, which also works,
  because the pointerdown reaches the card.
- pointer-drag-delay: DRAG from the Tram 28 ride item to the Sunday
  heading, list, or region.

With --jev, Jev planned 24 of 30 actions without the model: every
action in the first four tasks. For "move the tram ride to Sunday",
Jev split its vote on the kind of action (drag 0.44, click 0.28,
select 0.17), so the model planned all 6 runs of pointer-drag-delay.
For "move Priya Patel to the Onsite column", Jev voted drag 1.0.

The session cost $0.0525, and gpt-5.6-terra spent $0.0350 of it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@brynary
brynary merged commit 1048681 into pointer-buttons Oct 5, 2026
3 checks passed
@brynary
brynary deleted the pointer-evals branch October 5, 2026 18:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant