Real Linux desktop build (Electron 44.9.3, Xvfb 1920x1080, --no-sandbox --disable-gpu), seeded real user state (vp run migrate-dev-db).
Probe: CDP, new empty chat, 300 keystrokes at 40 ms, renderer CPU profile (500 us) + longtask observer.
"busy" = main process runs a 1 s blocking task every 3 s via its inspector (main-process contention).

before = origin/main 07d38b8d17 ; after = fix/issue-12689
run          sendSync sampled  longest sendSync  renderer long tasks >200 ms     keystroke p99
before idle   69 ms            13.9 ms           228, 216                        186 ms
before busy  888 ms           428 ms             885, 554, 476, 464, 350         1167 ms
after idle     0 ms             0 ms             none (max 176)                  104 ms
after busy     0 ms             0 ms             none (max 81)                   1064 ms
sendSync callers before: getLocalEnvironmentEnabled@preload.cjs:320, getLocalEnvironmentBootstraps@preload.cjs:314; after: none.
Keystroke p99 under busy main stays ~1.06 s both ways: Electron routes input through the main (browser UI) thread itself.

desktop.trace.ndjson topology IPC per session:
before (810 s): 693 invokeSync
after (live):   2 invokeSync (startup), async invoke every ~3 s on the same channel
