ciregenz
102a35c39b
[eric] browser: difference needs a quantity cue (bare which-is-taller got a number headline) + drop dead brief param
2026-07-17 10:55:27 -07:00
ciregenz
8ddd03a9c3
[eric] browser: delete dead OSW_PRESTAGE_WARMUP block (default-off, set nowhere, can never run)
2026-07-17 10:55:27 -07:00
ciregenz
9e478e9c2e
[eric] browser: map-reduce difference/sum computed in code (aux flipped its own arithmetic twice live)
2026-07-17 10:37:08 -07:00
ciregenz
2a5fa50f13
[eric] browser: send text now matches the receipt, unverified click = truthful verify pass not a done claim
2026-07-17 10:37:07 -07:00
ciregenz
f14f989912
[eric] ws: timer fallback flush when rAF stalls (frameless window buffered card spawns forever)
2026-07-17 09:50:03 -07:00
ciregenz
1cecd2c80f
[eric] browser: catch dead webview at prestage, evict+recover early (was ~70s silent ghost)
2026-07-17 00:26:57 -07:00
ciregenz
2ee9720a5c
[eric] browser: map-reduce read tier for multi-source public reads (64s loop to ~8s, fail-open)
2026-07-16 22:54:04 -07:00
ciregenz
fe88bdca43
[eric] browser: classifier sees the named site's seed facts (aux sent walmart to the homepage while the seed had /search?q=)
2026-07-16 19:14:46 -07:00
ciregenz
d055898e39
[eric] browser: a shown placeholder value IS the answer (aux declined 1/10 despite seeing it; decline reply captured)
2026-07-16 17:17:37 -07:00
ciregenz
fb8a4d297f
[eric] browser: plan aux sees the current URL + already-there emits [] (pointless click failed verification); read-script logs decline replies
2026-07-16 17:12:00 -07:00
ciregenz
fbcb617297
[eric] browser: INSUFFICIENT means wrong page, not disappointing truth (strict-completeness declined the correct profile 2/2 soak runs)
2026-07-16 17:03:55 -07:00
ciregenz
1c5c764a0c
[eric] browser: read-script judges the results-list gate on the LIVE url (caller's stale url suppressed the hydration retry post-click)
2026-07-16 16:09:35 -07:00
ciregenz
d7fe6e35f0
[eric] browser: salvage a max_tokens-truncated plan array + 1000-token headroom (verbose pretty-print cut the closing bracket live)
2026-07-16 16:05:14 -07:00
ciregenz
706a93e0e9
[eric] browser: prefill [ so the plan aux can't waffle in prose (caught live) + read-script skips the settle-retry on results lists
2026-07-16 16:02:41 -07:00
ciregenz
d786d7fdea
[eric] browser: perceive-only waits for page substance (aux asks were accidental settle time; thin list starved plan-dispatch) + log empty plan replies
2026-07-16 15:54:40 -07:00
ciregenz
3fa98e73a3
[eric] browser: verified-step smart-wait polls the expectation early instead of sleeping the flat settle
2026-07-16 15:51:47 -07:00
ciregenz
e6b6d1a1a0
[eric] browser: prestage runs perceive-only for read tasks when plan-dispatch owns the click-through (its aux asks measured ~2s of nothing there)
2026-07-16 15:51:47 -07:00
ciregenz
15edeee9fe
[eric] browser: prestage overrules READY once on a results-list URL (aux stalled at search 2/4 cold runs; deterministic, fail-open)
2026-07-16 15:35:55 -07:00
ciregenz
3e2b779c34
[eric] browser: read-script demands complete answers + one settle-retry on INSUFFICIENT (partial hydration answered with the title missing)
2026-07-16 15:27:35 -07:00
ciregenz
f1bf6c78af
[eric] browser: read-script waits out SPA hydration on a thin page (184-char LinkedIn profile mid-render, measured)
2026-07-16 15:24:07 -07:00
ciregenz
e4938044a4
[eric] browser: prestage clicks through to the person's own page for READ tasks too (search results are not the staged page)
2026-07-16 15:22:13 -07:00
ciregenz
77181665c5
[eric] browser: read-script answers a read task from the staged authed page in one aux call (answer-or-INSUFFICIENT, fail-open)
2026-07-16 15:06:49 -07:00
ciregenz
59edd9db2d
[eric] browser: 1st-degree outranks all cues when picking a person to message (run 2 chose a 2nd-degree stranger first)
2026-07-16 14:49:38 -07:00
ciregenz
80ccdfc76e
[eric] browser: skip plan-dispatch when the send composer is already staged (4.7s of aux poking for nothing)
2026-07-16 14:35:08 -07:00
ciregenz
493b58eca5
[eric] browser: plan-dispatch compiles cross-page chains + marked chosen picks (disambiguation turn-collapser); irreversible wall unchanged
2026-07-16 14:30:15 -07:00
ciregenz
f7472b3dbf
[eric] browser: recover a card that opens straight onto a JSON URL (initial-load path + homepage fallback)
2026-07-16 10:37:32 -07:00
ciregenz
6bec61eda4
[eric] browser: steer the model to page URLs, not raw JSON/API endpoints (read APIs via BrowserReplayRoute)
2026-07-15 23:07:41 -07:00
ciregenz
de3261d2d9
[eric] browser: a navigate landing on a raw JSON/API URL hands data to the agent and recovers the card off the wall
2026-07-15 23:06:02 -07:00
ciregenz
72ddb07b59
[eric] browser: mid-loop post-fill code-send (model types, code finishes the send + verifies), so un-quoted sends skip the ~3-4 stale-Send-button turns
2026-07-15 20:02:57 -07:00
ciregenz
fd1d312a91
[eric] browser: extract the send-script's send tail into shared complete_send (find Send + click + two-sided receipt)
2026-07-15 19:57:30 -07:00
ciregenz
2357111ac8
[eric] browser: skip the blocking candidate scan on send tasks (it never ranks candidates for a message/reply, so it was ~4s of dead first-turn latency)
2026-07-15 19:30:17 -07:00
ciregenz
424ff22ce3
[eric] test: fix compose-confirmation test (asyncio.run, no leading-underscore attr)
2026-07-15 19:15:02 -07:00
ciregenz
32215136d2
[eric] browser: model-written send confirmation (cheap aux call, validated + fail-open to template) instead of a hardcoded line
2026-07-15 19:14:31 -07:00
ciregenz
7edb81a6cc
[eric] test: warm-send summary assert case-insensitive for the friendly confirmation
2026-07-15 19:09:18 -07:00
ciregenz
37d4cf23f5
[eric] browser: friendly non-dev send confirmation ('Done, I sent "X" for you' vs 'the send registered and the composer cleared')
2026-07-15 19:07:15 -07:00
ciregenz
3a9474e77d
[eric] browser: cap+timeout the candidate scan (kill the 8s empty-scan idle) + send-script enables prestage opener (fixes ~50% fire-rate miss on search-page landings)
2026-07-15 18:26:52 -07:00
ciregenz
363124e0d5
[eric] browser: goodrx seed is drug-name lookup not free-text search (caught by live URL validation: /coffee 404s)
2026-07-15 17:36:04 -07:00
ciregenz
fe02b4ce91
[eric] browser: log write-tier failures (adapter bug=WARNING, site-reject=INFO) so a systemically-broken fast path isn't silently invisible to ops
2026-07-15 17:10:57 -07:00
ciregenz
449f66057d
[eric] browser: scope broadened submit vocab to the receipt-gated send-script; keep the always-on Send hint tight (broadening it regressed the default config with the send-script off)
2026-07-15 16:22:10 -07:00
ciregenz
5196ba77e3
[eric] browser: fire the 'from a previous visit' recall line only on a LEARNED playbook, not a shipped seed (else a first visit to a seeded site lies)
2026-07-15 15:46:35 -07:00
ciregenz
efb84daefc
[eric] browser: unknown-model fallback resolves a capable (sonnet) tier, not haiku (browser is agentic; haiku 50.7% vs sonnet 72.5% OSWorld)
2026-07-15 14:26:05 -07:00
ciregenz
9b7b972fef
[eric] browser: retract haiku loop-pin recommendation (OSWorld 50.7% vs sonnet 72.5%; per-turn speed is the wrong metric; fewer-turns is the real, provider-agnostic cold lever)
2026-07-15 14:18:11 -07:00
ciregenz
78fd61475a
[eric] browser: fix weather.com seed URL (404; keys on internal location code, use search box)
2026-07-15 14:09:45 -07:00
ciregenz
e877afd3c8
[eric] browser: seed 117 popular sites (search/shop/food/stream/productivity/health/gov/AI); money sites read-only-never-transact; split data into seed_playbooks.py
2026-07-15 14:05:21 -07:00
ciregenz
06744e39c4
[eric] browser: +12 seed sites & write-mechanics; correct loop-tier comment (Haiku is the ~2x lever, not Sonnet, measured n=10)
2026-07-15 13:49:58 -07:00
ciregenz
1e68aa5d7b
[eric] browser: send-script completes on X/IG/FB (submit-button vocab beyond LinkedIn Send)
2026-07-15 11:54:49 -07:00
ciregenz
1f74cc13de
[eric] browser: general capture-replay write tier (site's own captured route, same-origin + gated, default off)
2026-07-14 23:47:17 -07:00
ciregenz
d445543430
[eric] browser: wire BrowserApiWrite agent tool + robust Reddit write receipt
2026-07-14 23:27:39 -07:00
ciregenz
8bc7e479e8
[eric] browser: unified API-first write registry (site's own write API via borrowed session) + Reddit adapter
...
The general agent writes via UI puppeteering + the model loop (fire-rate ~50%, 13-52s); the deterministic alternative (cookie-borrow -> the site's OWN write API -> typed receipt) lived only in isolated MCP shims, and only Reddit's was genuinely API-first (X's shim is UI-driving). site_write_registry unifies it: has_api_write(domain,action) + api_write() route a write to a per-domain adapter (Reddit reuses reddit_writes, no fork), time it, and return a typed WriteResult (ok + the site's id/permalink receipt + latency); any failure becomes a typed ok=False so the agent falls back to the UI path, never a crash. A site with no adapter is a clean miss; adding one (X GraphQL, etc.) is one row. LIVE-VALIDATED end to end on Reddit through the registry: comment ok=True + reversible delete ok=True 196ms, verified [deleted] (deterministic, no captcha/DOM/selector, ~50-190x faster than UI). 6 unit tests (routing/receipt/fail-safe), linter clean, no import cycles. NOT yet wired as a browser-agent MCP tool (that path isn't live-testable on the wedged dev bench); receipt-string extraction returned 'ok' on the live run (write succeeded + verified reversible; id/permalink parse is a follow-up).
2026-07-14 19:51:53 -07:00
ciregenz
42a3249976
[eric] browser: broaden compose-trigger vocabulary (create/new-thread/start-a-thread variants)
...
The reveal opener regex only matched 'create a post', missing bare 'Create' and 'New thread' / 'Start a thread' buttons that real compose surfaces use. Adds those; safe by construction (a broadened trigger can never produce a false success, a fill against a real composer is still required, so a trigger that opens a signup/join upsell instead of a composer yields found:false). Validated CDP-direct: LinkedIn-post and YouTube-comment still flip (no regression), and Threads (which gates posting behind a 'Join Threads' upsell for this session) correctly does NOT false-fill
2026-07-13 14:59:21 -07:00