Skip to content

bench: task-first intents and time per step - #120

Merged
yummybomb merged 1 commit into
hypeship/bench-checkout-guardfrom
hypeship/bench-task-first
Oct 9, 2026
Merged

yummybomb merged 1 commit into
hypeship/bench-checkout-guardfrom
hypeship/bench-task-first

Conversation

@yummybomb

@yummybomb yummybomb commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #118.

Summary

Bench intents now describe what a user wants done on a site, not which tools exist. The bench measures the speedup where tools exist, and shows where on the site agents spend their time, so tools can be built for the steps that need them.

Task-first intents

Where the time goes

  • Each Kernel trial reads its top-frame navigations from browser telemetry and records agent time per step (page), with the calls made and WebMCP tools invoked on each. An intent's optional steps name pages by URL pattern; otherwise a step is host and path with id-like segments collapsed. delta-cart-main-classic names its search, results and Trip Summary steps.
  • The report adds, per intent, a steps table (seconds per trial in each arm, how many treatment trials invoked a tool there, and which tools); a table for tasks with no tools yet; and a tool backlog of steps where control spent at least 20s per trial and treatment invoked a tool in fewer than half its trials, or that have no tools at all.
  • kernel browsers telemetry events --all with --categories or --types stops after the first page with no matching event (it returned 8 of 24 navigations on a 6-minute trial), so the runner follows next_offset itself.

Limits

  • Navigations within a single-page app (pushState) aren't recorded, so their time lumps into one step. Blue Bottle's storefront shows this.
  • Local runs record no steps.

Testing

  • node --test "bench/**/*.test.mjs": 97 pass on Node 26.
    • New tests: step names and the timeline, task-first validation, default sources, the coverage tables and backlog.
    • Run tests against stubs: a task naming no tools registers the domain's tools and records steps; a domain with no tools runs control alone, then has nothing to resume.
  • Real runs on Kernel, pi with openai/gpt-5.4-mini:
    • delta-cart-main-classic: treatment correct in 86s. Control hit the turn cap after 409s on the results page; the steps table shows that, and that treatment used search_flights, list_flight_results, select_fare and select_fare_experience there.
    • bluebottle-checkout-espresso: treatment correct in 41s; control hit the turn cap.
  • The page-based grading these runs used moved down into bench: checkout intents graded from the page, with a submission guard #118.

@yummybomb
yummybomb added this pull request to stack #116 October 8, 2026 21:38
@yummybomb yummybomb changed the title Make bench intents task-first: grade from the page, register whatever tools a domain has, and report time per step bench: task-first intents, page-based grading, and time per step Oct 8, 2026
@yummybomb
yummybomb force-pushed the hypeship/bench-task-first branch from ed36ebb to fd8a0cf Compare October 9, 2026 02:25
@yummybomb
yummybomb removed this pull request from stack #116 October 9, 2026 02:25
@yummybomb
yummybomb added this pull request to stack #122 October 9, 2026 02:26
@yummybomb yummybomb changed the title bench: task-first intents, page-based grading, and time per step bench: task-first intents and time per step Oct 9, 2026
Intents describe what a user wants done; `tools`, `names` and
`entry_tool` are optional, and treatment gets every read-only tool the
domain has (plus its actions where allowed). A task on a domain with no
tools runs control alone. Kernel trials record agent time per step
(page) from browser telemetry, and the report adds per-intent step
tables, tasks with no tools yet, and a tool backlog.
@yummybomb
yummybomb force-pushed the hypeship/bench-task-first branch from fd8a0cf to bab5351 Compare October 9, 2026 06:09
@yummybomb
yummybomb marked this pull request as ready for review October 9, 2026 08:27
@yummybomb
yummybomb merged commit e70a8b1 into main Oct 9, 2026
1 check passed
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