# Supplemental N3 — native Electron hit-testing captured

Evidence-only for [#24440](https://github.com/pingdotgg/t3code/pull/24440), pinned [69c6d53c30](https://github.com/pingdotgg/t3code/commit/69c6d53c30d974da83f21ed5d9142dc7afd5f224). Worktree `/home/ubuntu/wt/issue-7212` clean before/after. Capture 2026-10-25 06:44:25–06:44:34 UTC. Actual Linux Electron44.9.3 app, native webview/desktopBridge preview path, whole-app1440×900 light theme selected through Settings. Started through headless-desktop with --no-sandbox --disable-gpu; synthetic archived SQLite/environment only in /tmp scratch T3 home. No live userdata opened writable. No code edits, commit, push, forge reads/writes, merge or watch. Required app-local PR registration only.

## Proof

One continuous [native N3 recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/600a55d182827ec1/native-N3-wide-light.mp4), 8.966667s,1440×900,30fps,554688bytes. Decoded end-to-end with ffmpeg exit0; contact frames and whole-app endpoint stills inspected.

![Native failed float → Close → physical composer input → same-tab recovery/re-float](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/600a55d182827ec1/native-N3-wide-light.mp4)

1. Actual listener59999 served Healthy preview; Float; listener stopped; desktopBridge native navigation to same URL generated real Connection refused error. No injected failure state or DOM/CSS replacement.
2. At06:44:26.618 visible failure is320×320 at1108,568. Real X11 drag moves it to1048,568. At06:44:27.921 error/Close/Retry remain visible.
3. Physical X11 click on error Close removes float by06:44:28.788. The native webview remains retained but is offscreen at−100000,−100000.
4. Physical X11 click at1083,774, which was inside the prior failed float bounds1048..1368×568..888, followed by xdotool type reaches the now-expanded composer. Driver checks that same point is inside the exposed composer before typing. At06:44:30.911 activeElement is composer-editor and exact text is “N3 native X11 hit-test reaches uncovered chat composer.” No DOM value assignment, synthetic DOM input dispatch, or CDP insertText used for this proof. This establishes native guest cannot intercept that exposed click/typing path.
5. Physical click opens Browser panel; same native tab retained. Start listener59999 only after typed proof; actual Refresh recovers same URL/title Healthy preview by06:44:32.439. Float restores healthy native guest by06:44:33.558. Same data-preview-tab identity throughout: tab_1_5f0621c1-d5cd-4349-9d6f-893dc36c8659 (full compound identity in transcript).

Before Close:

![Before — actual native floating refusal](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0bfe0e4d51892faa/before-close.png)

After Close and physical input:

![After — uncovered composer accepts native X11 input](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f44826ad4a6832ac/after-close-typed.png)

![Same retained native tab recovered and re-floated](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5ea1b0663e66d400/refloated.png)

## Exact attempt and FRICTION

Read repository AGENTS, test-t3-app and ghdrop skills, supplied reports, connected driver archive and native bootstrap. Used user's explicit native Electron workflow overriding skill's default Browser-panel-only workflow. No connected-web proof substituted.

Electron absent: require(electron) downloaded pinned44.9.3 once. First `vp run --filter @t3tools/desktop build` passed web/server then failed Linux helper: `Package libsecret-1 was not found in the pkg-config search path` / `Building the Linux browser import helper requires pkg-config and libsecret development headers`. Bounded prerequisite recovery: `sudo -n apt-get install -y libsecret-1-dev xdotool` succeeded; desktop build retry succeeded. These installed host packages remain. No repo-wide checks.

First skill path was incorrect; corrected to repository .agents/skills/test-t3-app/SKILL.md. First physical capture asserted overlap against the shrunken composer; stopped honestly with `Error: composer point was not under native float`. Corrected assertion checks old float coverage then exposed composer bounds. Second attempt completed Close/typing and retained tab, but used nonexistent `Refresh preview` aria-label, causing null getBoundingClientRect. Read real controls, corrected to `Refresh`, reset through actual healthy→float→refused flow, and recorded full successful third attempt. No healthy-runtime blocker remained; prior archive's fresh failure-overlay gap did not reproduce here.

Instrumentation reads DOM/native webview URL/title/bounds and records timestamps. Setup uses actual native bridge navigation and Settings controls. All tested Close/composer/panel/Refresh/Float inputs are xdotool/XTest physical X11 input, not DOM clicks. Prior driver Client CDP is used for read-only observations, screenshots and setup UI. ffmpeg x11grab captures actual display, including native guest.

## Cleanup and limits

Captured13 owned runtime descendants before teardown, then stopped only these recorded PIDs. No remaining nonzombie owned process; ports19414,59999,3774 empty. Fixtures/recorders stopped in finally blocks. No other worktree/process touched. Worktree retained clean at pinned head; ignored desktop/server/web build artifacts retained. Scratch removed after uploads. No public PR mutation or watching.

This adds N3 native close/hit-test/recovery proof only. No baseline comparison, other OS, mobile or new full matrix repetition claimed. The small fs-07/project action popover visible in surrounding app chrome is incidental; it does not obscure the required failure/composer/native recovery proof.
