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 |
|