ciregenz and Claude Opus 5
a982e3361f
[eric] browser: an approval nobody can answer declines now instead of parking a turn for 5 minutes
...
The wait was a bare `timeout=300.0` at the call site: invisible, unchangeable, and
longer than WALL_BUDGET_S (180s) itself, so a single prompt could outlive the whole
run's budget.
Measured 2026-08-08. deepl bot-detected the browser profile, the agent correctly
refused to solve the challenge ("handing to the user, not solving it") and asked for
help via RequestHumanIntervention. Headless, nobody answered, so it burned the full
306s and then denied -- the identical verdict it can reach instantly. That single
wait consumed the entire 420s task budget and was the whole of what looked like a
"249s spawn stall" while profiling. Cron runs, scheduled agents, CI and benchmarks
all sit in exactly this position.
Two changes, neither of which weakens the gate:
- ws_manager.has_listener(session_id) reports whether ANY socket would receive the
session's events, reading the same two lists send_to_session broadcasts to so it
cannot drift from where messages actually go.
- p_request_browser_approval checks it BEFORE building a request, and declines with
an honest reason when no UI is attached. The decision is unchanged (deny); only
the five minutes of waiting for it are gone.
The timeout is now P_APPROVAL_TIMEOUT_S, overridable via OSW_APPROVAL_TIMEOUT_S for
automation contexts that want a different budget.
A human at the keyboard sees no change: with a socket attached the request is sent
and awaited exactly as before.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-08 09:28:53 -07:00
ciregenz
013bf663ef
[eric] browser: a post that never confirmed is not a skill worth learning
2026-07-31 01:27:55 -07:00
ciregenz
e989517c6c
[eric] lint: de-private the wall budget, trim error_classify under cap, drop stray ws_manager
2026-07-30 20:58:16 -07:00
ciregenz
f6ad6cfb91
[eric] browser: a run out of wall time delivers what it has instead of nothing
2026-07-30 20:50:37 -07:00
ciregenz
3d5c287139
[eric] merge: bring eric/browser onto eric/dev (30 conflicts resolved, gates green)
2026-07-30 13:18:11 -07:00
ciregenz
f0229bef50
[eric] tests: land the 3 stranded browser capacity-retry tests from the windows-churn batch (64 green)
2026-07-29 16:38:32 -07:00
ciregenz
bb31d359ee
[eric] analytics: retire the old session-snapshot cloud path (sync_session_close); full transcript + classification now come from Haik's per-message product-analytics bridge, and it was 413ing the 100KB /sync edge
2026-06-25 03:40:35 -07:00
ciregenz
36626be089
[eric] backend: one-line comments + collapse blank runs across backend root + tests (AST-verified, 1 test skipped: embedded #-lines)
2026-06-25 03:04:16 -07:00
ciregenz
6721c39719
[eric] backend: leading-_ -> p_/public for remaining module-level fns/classes/consts + test helpers across apps + tests (p-private 0, 1441 green)
2026-06-23 21:30:47 -07:00
ciregenz
621a2c661f
[eric] tests: leading-_ -> p_ for function-local vars/args/nested-fns + import aliases across 56 test files (scope-aware AST rename)
2026-06-23 21:22:57 -07:00
ciregenz
a407e6578f
[eric] dashboards+modes: leading-_ -> p_/public; promote cross-file public (load/save/load_all/migrate_if_needed/strip_orphan_session_cards), fix qualified test refs
2026-06-23 20:47:13 -07:00
ciregenz
1767389cbb
[eric] browser: leading-_ -> p_/P_/public for module functions+constants+state across browser subsystem; promote cross-file symbols public (detect_loop, BROWSER_HISTORY, TRUSTED, etc.), align analyze-browser-metrics.py + tests
2026-06-23 19:37:40 -07:00
ciregenz
394dcd7492
[eric] agents: leading-_ -> p_/public in providers+core+tools (registry/pricing/seq_log/mcp_preflight/openai_passthrough/web/ssrf_guard); promote cross-module fns public, fix monkeypatch string refs
2026-06-23 18:39:11 -07:00
ciregenz
751bb77032
[eric] agents: publicize cross-mixin members (p_run_agent_loop, p_build_mcp_servers, etc.) + safe_resp_text so the decomposition passes p-private
2026-06-23 16:44:41 -07:00
ciregenz
0f94f3feaf
[eric] agents: fix 6 callers of renamed p_ methods (browser_agent/agents/main) that the suite masked
2026-06-23 11:30:07 -07:00
ciregenz
bfcad98b76
[eric] browser: BrowserSaveData writes a big page dataset to one sandboxed file, ending the dispatch-per-chunk waste
2026-06-09 02:05:26 -07:00
ciregenz
9eb0e2cb2b
[eric] browser: new gathered data resets the spin backstop, so a page-by-page gather runs to completion instead of getting cut with partial results
2026-06-08 23:47:26 -07:00
ciregenz
ba41409577
[eric] browser: spin backstop nudges a clean Done wrap-up, not a mid-thought cutoff
2026-06-08 23:26:15 -07:00
ciregenz
438d1e36d4
[eric] browser: arm the send-completion shortcut only for send tasks, not gathers (cookie click faked a send)
2026-06-08 23:02:55 -07:00
ciregenz
07f911d200
[eric] browser: a clean success needs an explicit Done; recognize gather asks, steer them to BrowserExtract
2026-06-08 22:37:33 -07:00
ciregenz
91073becec
[eric] browser: finish via a Done(message) tool so the user gets a plain conversational reply, not the OUTCOME tag
2026-06-08 22:15:52 -07:00
ciregenz
8d9c75803c
[eric] browser: restore the Send-button handoff (points the model at the Send index after a fill); deleting it brought the Send-hunt back, it was NOT redundant with the wait
2026-06-08 00:58:38 -07:00
ciregenz
f8c812353e
[eric] browser: agent writes a plain human final message (no UI jargon/OUTCOME mechanics); delete the leaky send-ready advisory, dead prefix flag, and humanize aux experiment
2026-06-08 00:09:50 -07:00
ciregenz
d5fc146123
[eric] browser: never leave a tool_use unanswered (backfill mid-turn + validate both directions) so a 30s upstream reset stops 400-killing the run
2026-06-07 23:04:59 -07:00
ciregenz
7ec05613fe
[eric] browser: hand the Send button to the model after a composer fill, and commit to an already-open thread instead of re-verifying
2026-06-07 19:28:51 -07:00
ciregenz
1204e733b5
[eric] browser: stall backstop only fires after a real action, never cuts short early orientation
2026-06-07 19:12:43 -07:00
ciregenz
889c7707e4
[eric] browser: a confirmed send ends the run, no more stalling to re-verify what the confirm proved
2026-06-07 18:52:20 -07:00
ciregenz
a54b4c0452
[eric] browser: run the action and remind on a missing ReportProgress instead of rejecting the turn
2026-06-07 18:19:39 -07:00
ciregenz
59658ddb46
[eric] browser: strip orphan surrogates from webview text so emoji pages don't crash a turn
2026-06-06 22:06:07 -07:00
ciregenz
4664065767
[eric] browser: converge speed-lever A/B, ship the winners, cut the dead-end flags
2026-06-06 18:29:03 -07:00
ciregenz
6380480502
[eric] browser: on a recoverable error (stale index/occlusion) attach fresh page state so the model recovers in one turn, never retries the action
2026-06-06 18:03:52 -07:00
ciregenz
5741e8f946
[eric] browser: endgame helper locates Send after a composer fill (never clicks it), behind OSW_BROWSER_COMPOSE_HELPER
2026-06-06 12:41:08 -07:00
ciregenz
9972171c05
[eric] browser: cheap-model laps behind OSW_BROWSER_CHEAP_LAPS, escalate to primary at the irreversible endgame
2026-06-06 12:32:04 -07:00
ciregenz
581af5b128
[eric] browser: auto-dismiss junk interstitials (cookie/upsell/coachmark) by generic close-vocabulary, conservative
2026-06-06 12:05:37 -07:00
ciregenz
e37ba6c66b
[eric] browser: skill recording judges the task ask, OUTCOME boilerplate no longer blocks learning
2026-06-05 13:09:02 -07:00
ciregenz
99bd15fdb1
[eric] browser: attached page state shrinks to changed rows, unchanged indices stay valid
2026-06-05 11:14:13 -07:00
ciregenz
20e1558d70
[eric] browser: auto-settle mutating actions and attach fresh page state to results, act and see in one turn
2026-06-05 09:35:51 -07:00
ciregenz
65427f33a0
[eric] browser: reuse the parent's same-host card on re-dispatch, stacked webviews wedge each other
2026-06-05 01:38:58 -07:00
ciregenz
262d48ff6c
[eric] browser: refuse zero-LLM replay of send/submit skills, the live agent confirms those instead
2026-06-05 00:54:31 -07:00
ciregenz
9b6e45f365
[eric] browser: act-and-confirm, declare the expected change and verify it instead of assuming
2026-06-04 15:14:58 -07:00
ciregenz
bb422c0fe8
[eric] browser: treat a hung tab (repeated timeouts) as card-unavailable so it aborts fast, not a 20-min spin
2026-06-03 15:18:18 -07:00
ciregenz
9080f256c9
[eric] browser: log front-loaded perception reads so a read answered from them isn't flagged a ghost
2026-06-03 13:45:34 -07:00
ciregenz
61826d441a
[eric] browser: BrowserRepeatFlow hands back capped per-item read data so batch-read actually delivers
2026-06-03 13:05:49 -07:00
ciregenz
50230c88c5
[eric] browser: also sample route count on evaluate (the agent's real read path), not just get_text
2026-06-03 02:11:11 -07:00
ciregenz
7175f4b27b
[eric] browser: sample captured-route count on read, not navigate, so the network nudge actually fires
2026-06-03 02:05:11 -07:00
ciregenz
21b225ded4
[eric] browser: nudge the agent toward the fast captured-API tier once per host
2026-06-03 00:50:23 -07:00
ciregenz
186c6cf72e
[eric] browser: smart-wait returns when the page's network settles instead of a blind fixed sleep
2026-06-03 00:46:30 -07:00
ciregenz
7572462116
[eric] browser: intra-run batch replay (BrowserRepeatFlow) with verify gate, send-gate, network-route steps
2026-06-03 00:35:48 -07:00
ciregenz
3a601ba3ad
[eric] browser: calm zero-click signals so the user feels the agent recall + learn site memory
2026-06-02 23:46:49 -07:00
ciregenz
fe082c492c
[eric] browser: durable reflective per-site playbook (tier-2 memory, mem0-style distill+reconcile)
2026-06-02 23:11:47 -07:00