Commit Graph
100 Commits
Author SHA1 Message Date
ciregenz 19d991413d [eric] browser: compose-surface poll waits while the page is still arriving, stops when it settles 2026-07-29 10:52:03 -07:00
ciregenz 7e79c9622b [eric] browser: the compose tier now requires the caller's write verdict so a quoted READ never opens it 2026-07-29 10:38:19 -07:00
ciregenz 98fed22b63 [eric] browser: split the opener-wait tests out at the file cap 2026-07-29 10:28:48 -07:00
ciregenz 1675176ac5 [eric] browser: wait for the compose surface to stop moving, not for a fixed number of seconds 2026-07-29 10:27:29 -07:00
ciregenz 47beb38fd9 [eric] browser: a compose URL that lands on a sign-in wall is not a reached composer 2026-07-29 09:44:58 -07:00
ciregenz 1fb9cb4ab0 [eric] browser: drop a stale comment about which text the compose veto reads 2026-07-29 09:39:49 -07:00
ciregenz f6ac1abbf2 [eric] browser: recognise LinkedIn's post editor by name and say why a compose surface came up empty 2026-07-29 09:33:16 -07:00
ciregenz 1c9755c0f2 [eric] onboarding: prove the Windows cookie path against real DPAPI on a Windows runner 2026-07-29 09:28:17 -07:00
ciregenz 7c9b0e61d4 [eric] browser: CDP teardown rechecks the target between awaits and stops latching live cards 2026-07-29 09:28:17 -07:00
ciregenz 42410e0a05 [eric] browser: open the site's own compose URL for a top-level write instead of hunting the button 2026-07-29 09:28:07 -07:00
ciregenz a5a363cbce [eric] browser: the post-is-not-a-comment rule now guards the opener, and the composer poll waits ~5s 2026-07-29 01:23:11 -07:00
ciregenz da6e84dc74 [eric] browser: poll for the composer on a stale-index retry instead of one snapshot 2026-07-29 00:24:44 -07:00
ciregenz b63d57ca6a [eric] browser: a check that could not observe returns unknown, never a false negative 2026-07-28 23:58:43 -07:00
ciregenz af503d7af2 [eric] browser: retry a fill once when the composer index went stale under a re-render 2026-07-28 22:28:36 -07:00
ciregenz 0d917e5141 [eric] browser: a learned skill no longer disarms the fast write path on sends 2026-07-28 20:27:14 -07:00
ciregenz 1828719f85 [eric] browser: a cleared composer plus a failure toast is a refusal, not a delivery 2026-07-28 19:16:17 -07:00
ciregenz 7f2f03c980 [eric] oauth: build the redirect uri from the port we are actually served on, not a guessed 8324 2026-07-28 18:41:23 -07:00
ciregenz bfc57d686a [eric] browser: prove the windows cookie crypto layout on mac; make the tested helpers public 2026-07-28 18:22:46 -07:00
ciregenz 6034be1e40 [eric] browser: drop dead claude-only MODEL_MAP; guard aux calls to tiers not model ids 2026-07-28 18:16:36 -07:00
ciregenz 43cef02b17 [eric] browser: a post task never fills a comment box, even when it is the only one listed 2026-07-28 16:49:24 -07:00
ciregenz 1056613f80 [eric] browser: pin the guessed-submit guard, red-tested against the live LinkedIn false positive 2026-07-28 16:35:30 -07:00
ciregenz 9a1106bcb5 [eric] browser: a guessed submit click must prove the payload rendered, and questions never post 2026-07-28 15:27:36 -07:00
ciregenz 95b0e00d51 [eric] browser: stop the caller starving the send-script, which silently killed every write 2026-07-28 14:42:35 -07:00
ciregenz 49e935e3bd [eric] browser: a send may only claim success on evidence, and every completion is composed not templated 2026-07-28 14:05:00 -07:00
ciregenz c93ddf70ad [eric] browser: read-script defaults on with a kill switch; write-side stays off pending a fix 2026-07-28 13:35:36 -07:00
ciregenz c0c15b4c9c [eric] browser: every tier emits the same auditable trace, so the bubble never expands to nothing 2026-07-28 12:02:50 -07:00
ciregenz b99bc6cc3c [eric] browser: make a read wait until the page stops growing, not just until it looks long enough 2026-07-28 11:02:27 -07:00
ciregenz b2198776f6 [eric] browser: persist which sites we borrowed a sign-in for, so a restart cannot desync it 2026-07-28 10:28:23 -07:00
ciregenz 687d52a4cf [eric] settings: collapse the system prompt, and make Account a flat row like its neighbours 2026-07-27 20:58:27 -07:00
ciregenz e28392b7bd [eric] settings: snap type onto the shared scale, 17 ad-hoc sizes down to 6 steps 2026-07-27 20:35:28 -07:00
ciregenz 59b07cd575 [eric] browser: let a hidden window take the bot challenge before the card loads a borrowed site 2026-07-27 20:15:39 -07:00
ciregenz 3003b1cd06 [eric] browser: present a borrowed site plain Chrome, and carry the whole jar 2026-07-27 19:33:52 -07:00
ciregenz 4ee276f9cf [eric] browser: borrow the sign-in at navigation time, not after the agent is already stuck 2026-07-27 16:29:19 -07:00
ciregenz c4987b0f13 [eric] browser: don't replay fingerprint-bound clearance tokens into the app partition 2026-07-27 14:57:28 -07:00
ciregenz 514aef45d6 [eric] browser: borrow the user's existing browser sign-in at a login wall (opt-in) 2026-07-27 14:01:05 -07:00
ciregenz 404ca418a3 [eric] browser: narrow the signed-in veto (notifications/profile appear logged out too) 2026-07-26 22:56:47 -07:00
ciregenz eea5ea3bd6 [eric] browser: seal today's three bug classes (mute aux lane, finder budget, soft signed-out) 2026-07-26 22:53:41 -07:00
ciregenz 253604672a [eric] browser: drift canary (post, receipt, delete, verify-gone per site; discovery-only by default) 2026-07-26 22:33:57 -07:00
ciregenz da886afcdb [eric] browser: detect soft signed-out sites so the sign-in pause fires instead of a composer miss 2026-07-26 22:33:57 -07:00
ciregenz acab50115b [eric] browser: empty aux body is a broken lane, not a NO (gpt fast path was silently off) 2026-07-26 22:33:57 -07:00
ciregenz cb0b46e582 [eric] browser: composer finder self-budgets its reveal ladder + 30s find_composer timeout 2026-07-26 22:09:09 -07:00
ciregenz 9e11f128d3 [eric] browser: login-once handoff (pause on wall, sign in once, remember the site) 2026-07-23 17:14:14 -07:00
ciregenz 57a6954758 [eric] browser: honest delivery-check for ghost-drop sites + split send_script parsing 2026-07-23 14:53:58 -07:00
ciregenz 724763d3d8 [eric] browser: composer finder waits out code-split modals + retop re-pass (linkedin 50%->100%) 2026-07-22 15:54:49 -07:00
ciregenz ae42f50203 [eric] browser: button-name cleaning (gmail Send shortcut suffix) + direct-delete row tier 2026-07-22 13:41:59 -07:00
ciregenz 113e8d220c [eric] browser: delete+submit act via trusted input; reddit delete fast path proven live 2026-07-21 23:38:21 -07:00
ciregenz 10f9c12a8a [eric] browser: submit picker below-composer scope + container tier; readonly guard sealed 2026-07-21 21:02:55 -07:00
ciregenz bfc6a350dd [eric] browser: delete script pierces shadow DOM (shreddit/web-component sites), X-verified 2026-07-21 20:24:24 -07:00
ciregenz 0217a71631 [eric] browser: removal tasks never record or replay a skill (stale delete-skill ghost-succeeded) 2026-07-19 11:22:01 -07:00
ciregenz 4f76c7abdd [eric] browser: code-side delete dispatch so removal tasks auto-fire the verified remove flow 2026-07-18 06:08:54 -07:00
ciregenz 83792f0c0e [eric] browser: reach below-fold/lazy composers (progressive scroll + placeholder trigger) 2026-07-18 03:51:32 -07:00
ciregenz e04acfd5e3 [eric] browser: advisory brief no longer disarms or read-only-flags a real send 2026-07-18 03:51:32 -07:00
ciregenz 0d36f6d0fe [eric] browser: BrowserDeleteItem tool + no-repost-on-delete + composer late-render poll 2026-07-17 18:55:32 -07:00
ciregenz 1dd4d5ef78 [eric] browser: login-wall guard so the scripted send never fills an auth page 2026-07-17 16:43:54 -07:00
ciregenz 19734e1eac [eric] browser: repeat-write recipe tier (learn on verified DOM write, replay on repeat; default-off) 2026-07-17 11:50:07 -07:00
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