arena: v28 verdict (fail; both loop-diff halves dead) + StepRecord.target instrumentation

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WsbS5x2rYsMDxP2kW3qqmQ
This commit is contained in:
ciregenz
2026-08-14 03:38:01 -07:00
co-authored by Claude Fable 5
parent 331fc738d9
commit bf3b78fecc
4 changed files with 22 additions and 1 deletions
+10
View File
@@ -261,6 +261,16 @@ Ungated (cost is ~1 line) — the pilot's 12 controls decide if that is a tax. P
8 targets (incl >=1 five-plus-part), controls 12/12. This is the second half of the
browser-use loop diff (step verdicts); the first half (plan state) is dead.
VERDICT (same day): **fail — targets 1/8 (first-ever pilot target win, but a 3-part; pre-reg
required >=2 incl a >=5-part), controls 10/12 (both login-popup variants lost).** Both halves
of the browser-use loop diff are now tested and neither transfers into our loop. Escalation per
method: stop guessing mechanisms; trace-level diff of their WIN vs our LOSS on the same 6-part
task. First finding from our side: the loss is 8 confident, error-free clicks scoring 0 — and
step records did not store WHAT was clicked. Instrumentation fixed (StepRecord.target: resolved
accessible names per action); labeled diagnostic episode next. Their side shows a self-authored
running done-list in the memory field, persisted verbatim — possibly the real carrier, but no
v29 until the labeled trace says where ours actually diverges.
## Positioning vs public generic-harness baselines (user-supplied 2026 survey)
The comparable class is generic agents, NOT MiniWoB-specialized systems (HTML-T5++ 95.2 trained
+1
View File
@@ -0,0 +1 @@
/Users/eric/.cache/arena/webchorearena/BrowserGym/config_files
+3
View File
@@ -24,6 +24,9 @@ class StepRecord:
step: int
action: str = ""
# Accessible name(s) of the element(s) the action targeted, resolved at act time. Added after
# a 6-part CompWoB loss read as 8 anonymous clicks -- a trace nobody can diagnose is data lost.
target: str = ""
action_ms: float = 0.0
perceive_ms: float = 0.0
think_ms: float = 0.0
+8 -1
View File
@@ -10,6 +10,7 @@ from __future__ import annotations
import argparse
import os
import re
import signal
import sys
import time
@@ -172,8 +173,14 @@ def run_episode(arm: str, task: str, seed: int, rec: Recorder, args: argparse.Na
# The LLM call rides inside act(); urlopen's timeout does not cover every hang mode.
decision = with_deadline(lambda: policy.act(obs, ep.goal), args.step_timeout + 90)
perceive_ms = (time.time() - t_perc) * 1000
tgt = ""
i2b, rnames = getattr(policy, "index_to_bid", None), getattr(policy, "row_names", None)
if i2b and rnames:
b2n = {b: rnames.get(i, "") for i, b in i2b.items()}
hit = [n for n in (b2n.get(m) for m in re.findall(r'"([^"]+)"', decision.action)) if n]
tgt = " | ".join(hit)[:160]
rec_step = StepRecord(
step=step, action=decision.action, perceive_ms=perceive_ms,
step=step, action=decision.action, target=tgt, perceive_ms=perceive_ms,
think_ms=getattr(decision, "think_ms", 0.0),
axtree_chars=ax_chars, axtree_nodes=nodes,
dom_chars=perception.dom_chars(obs) if args.dom_metrics else 0,