Repository navigation
Read back ACT fills, type quoted text as written, and add an 80-row eval - #19
Merged
Merged
Conversation
A fill can pass while the field does not keep the value: a maxlength cuts it short, or a script clears it. After an ACT fill, Whirl now reads the field's value with the shim's read command. The line fails with act-fill-mismatch when the value is different. Case, spaces, and punctuation do not count, so a field that formats its value, such as a phone number, still passes. The check is skipped when the element has no value to read or is gone. A message never shows a masked value. Stagehand's Jev act path (browserbase/stagehand#2953) makes the same check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A model can change the case, spacing, or punctuation of text it copies from the instruction. When the text for fill or type matches a quoted string in the instruction, ignoring case, spaces, and punctuation, Whirl now types the instruction's characters. Only a match counts, because a quoted string can also name the field. A select option keeps the model's text, because it must match the page's option label. Quoted strings follow Stagehand's quotedStrings rules (Jev act path, browserbase/stagehand#2952): double quotes, curly quotes, and single quotes at word boundaries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
delete-account-among-80 asks ACT to delete the Acme account from a table of 80 rows, each with an identical Delete button. The 60 rows before the target all say "Account" twice, a trap for a model that matches words. It follows the hardest generated case in Stagehand's Jev ranking work (browserbase/stagehand#2960). The local summary is a new run of all 48 tasks with the three default models, on the code that reads back fills and grounds typed text. All three passed the new task in 3 of 3 runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Sep 27, 2026
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.
Stacked on #18.
Three ideas from Stagehand's experimental Jev act path (browserbase/stagehand#2952, #2953, #2960), one commit each.
1. Read back the value ACT fills
A fill can pass while the field does not keep the value: a
maxlengthcuts it short, or a script clears it. After an ACTfill, Whirl now reads the field's value with the shim's existingreadcommand. The step fails with the new codeact-fill-mismatchwhen the value is different:5551234567shown as(555) 123-4567) still passes. Jev compares exactly, but a mismatch there only hands the act to the LLM. Here it fails the step, so an exact comparison would fail valid fills.contenteditable), is gone, or the step budget is spent.2. Type the characters an instruction quotes
A model can change the case or spacing of text it copies. When the text for
fillortypematches a quoted string in the instruction, ignoring case, spaces, and punctuation, Whirl types the instruction's characters:ACT "type \"AbC 123\" into Search"typesAbC 123even if the model answersabc 123.quotedStringsrules: double quotes, curly quotes, and single quotes at word boundaries (souser'sopens no quote).3. An 80-row eval task
delete-account-among-80: delete the Acme account from 80 rows with identical Delete buttons. The 60 rows before the target all say "Account" twice. This follows Jev's hardest generated ranking case.The local summary is a fresh run of all 48 tasks with the three default models on this branch's code (
-n 3):All three passed the new task 3/3. The four failures are model mistakes; no run hit
act-fill-mismatch.Docs and tests
machine-output.md, and CHANGELOG describe both ACT changes and the new error code.mise run checkpasses.🤖 Generated with Claude Code