# Fresh native desktop evidence — issue 15579

Candidate [f1c7a8df](https://git.cafe/pingdotgg/t3code/commit/f1c7a8dfed4aca60afec1dbc9672a2bd0e17b095); baseline [b3d382e1](https://git.cafe/pingdotgg/t3code/commit/b3d382e1009d5430de8c528aef99a39854a7cbc4). Linux X11 (Xvfb), Electron 44.9.3 / Chromium 152.0.7977.167, `--no-sandbox --disable-gpu`. Read/test only; no implementation edits, forge operations, push, merge or watching. Exact-revision baseline build was separate; candidate reused the packed bundle made at the stated head. Bundle hashes and launch arguments are in provenance files. Lead web 6013 was reused; lead 14053 was untouched.

This is a partial proof pack, not an all-six-rows pass. The original minimum matrix remains the scope contract. GNOME Wayland and macOS are UNVERIFIED. No new source audit was performed. Maintainer-reported 79 Manager/Host tests were not rerun here.

## Evidence interpretation

All saved agent screenshots came from real Codex turns using `t3-code.preview_snapshot` on the native desktop tab. They are not direct `webContents.capturePage` calls. Native window capture was used only for external C stills and viewer indexing; the independent continuous recording is X11 ffmpeg, 8 fps. No Playwright Electron launch or guest DevTools attachment was used. Inspector automation attached only to the Electron main process. Shared node_modules was not patched.

Counters are fixture HTTP ticks, not CPU/GPU measurements. Quiet phases did not poll guest CDP. Native renderer reads of geometry/state and SQLite reads do not query the guest. A direct guest B evaluation at 08:22 was a harness mistake; its subsequent control rates cannot establish a healthy negative control. The fixture server was terminated twice (exit 143, cause not established); affected samples are invalid and reset boundaries remain in the raw file. The final fixture/observer were spawned as captured children of the inspector process to avoid reliance on terminal session lifetime.

A is native webContents 3 / `proof-0` / `tab_1_aa0cc41a-7136-4a62-9f15-b0a8d673f5f5`; B is webContents 4 / `proof-1` / `tab_2_aa0cc41a-7136-4a62-9f15-b0a8d673f5f5`. Native C is `proof-2`, with unsent `FRESH-C-SENTINEL`. Offscreen wrappers were at −100000,−100000 between activity; capture temporarily used 0,0 behind the app. The persistent synthetic nonce was `seed-15579`; navigation changed the displayed fixture ID and reset the clock, rather than generating a random load nonce.

B had no viewer/recording, its wrapper was offscreen, and its last real snapshot control turn completed 08:29:34.991. Its earlier native `document.visibilityState` was `visible` despite physical offscreen placement. Rates varied 0/1/20 Hz around direct evaluation, real snapshot and fixture restarts. It is not accepted as a healthy hidden control. A cleanup samples are independently measured; comparison with untouched healthy B remains a gate.

## Core results

- First real turn 08:21:12 snapshot succeeded in 148 ms. Viewer attachment then took human control and blocked the post-wait input. This attempt is excluded from R1 success.
- Clean repeat: input/dropdown succeeded, shell wait ran 08:22:51.910–08:23:11.797, post-wait `clean-after` screenshot returned 08:23:15.079. A semantic snapshot verified the value. The initial late-idle sample was interrupted by fixture loss; restart-affected 20 Hz results are retained as failed/invalid evidence, not silently omitted.
- Authenticated remote viewer returned decoded clock frames 990→1098, then 4511→4721. First normal close sample was contaminated by a new turn; excluded. Clean normal close 08:27:17.221: A 0.99986 Hz at 31+ seconds. Abrupt renderer crash 08:26:00.176: A 0.99974 Hz at 31+ seconds. Baseline A measured 19.99548 Hz after viewer close. Reconnect returned fresh frames with retained `clean-after` value.
- Hidden navigation via a real Codex turn 08:28:17 changed A to `fresh-nav-A-0828`, saved decoded screenshots, typed `nav-value`, selected Second and verified semantically. Late idle A 0.99987 Hz. Native C sentinel remained focused and unchanged at boundaries; no reveal was observed in the 8 fps native evidence. Sub-frame flashes are outside this recording's resolution.

## Final repeat, controls, and overlap

The last full R1 repeat dispatched 08:30:30, typed `final-before`, selected Second, performed a foreground `sleep 20` with no browser commands, then typed `final-after` and saved/verified it. This is a browser-command-free shell wait, not a claim of 20 seconds of model thinking. The 08:30:46.030–08:30:58.032 external sample was A 19.99663 Hz / B 0 Hz. The 08:32:00.096–08:32:12.098 late sample was A 0.99983 Hz / B 0 Hz. Native UI reopening retained webContents 3, same server tab and `final-after`; the reopened still was visually inspected. It was an intentional reveal on A, outside the hidden-capture segment.

API recording started 08:32:42.035 while hidden; its real agent snapshot returned at 08:32:42.147. The authenticated viewer was then attached. An inspector-only wrapper in the viewer renderer counted JPEG `createImageBitmap` completions and canvas `drawImage` calls: 545 decoded and drawn frames, 4,860,505 JPEG bytes, 08:32:45.898–08:33:12.842. It observed the viewer, not the native guest, and was installed only for the active stream segment. The expanded final trace contains 1,148 decoded/drawn frames and 10,249,192 bytes. These are a bounded observed segment, not the stream's lifetime total. Saved frame PNGs were decoded and opened. No credentials were recorded in this instrumentation.

Viewer control blocked the original recording-stop tool. After releasing control while leaving the viewer open, a new real Codex turn stopped recording at 08:33:43.396. The returned 468,823-byte H.264 MP4 is 61.2945 seconds, 382×870; it decoded, and the opened contact sheet shows clocks 1716→2837. The viewer's last decoded frame was 08:33:45.056, clock 2897. At 08:34:04 its frame count was unchanged despite a remaining Watching canvas. Surviving-viewer advancement is therefore FAILED/INCONCLUSIVE; no root cause is assigned. Native PiP, native UI recording, reverse consumer order and a baseline overlap comparison were not executed. Baseline had already been stopped and its checkout removed when an overlap attribution comparison was requested; rebuilding was deferred to preserve the hard cutoff. Pre-existing shared stream behavior versus regression is unresolved.

Remote viewer mouse/key/insertText attempts did not produce a verified input change; saved canvas still showed `final-after`. R3 remote input is FAILED/UNVERIFIED, not passed on the strength of agent input.

The replacement D control was created through native UI at 08:35:08 (webContents 9 / `tab_3_aa0cc41a-7136-4a62-9f15-b0a8d673f5f5`). However, a native parent-window `capturePage` still was taken at 08:35:59 during the quiet sample. Its rate increased late in that interval. The D sample (A 19.996 Hz / D 8.498 Hz) is INVALID due to that observer intervention. Parent-window `capturePage` may also explain earlier irregular rates; that is a hypothesis, not an established product defect. No further `capturePage` calls were made. Earlier anomalous rates remain in the raw logs.

A second replacement E was created solely by native UI at 08:36:41.257, hidden by 08:36:46.290: webContents 10 / `proof-1` / `tab_4_aa0cc41a-7136-4a62-9f15-b0a8d673f5f5`, URL fixture ID `untouched-E-0836`. It received no guest evaluate, CDP inspection, screenshot, recording, viewer, or agent command. Mapping was read only from the native parent DOM. C retained its sentinel; every guest wrapper was offscreen at −100000,−100000. A real Codex snapshot on A completed 08:36:56.066 in 145 ms and the turn completed 08:36:59.031. The final quiet comparison uses only fixture HTTP counts plus the already-running external X11 video.


**Final uncontaminated comparison:** 08:37:41.996–08:37:53.998, A **0.99988 Hz**, untouched E **0.58326 Hz** (7 real ticks / 12 seconds). This begins 45.93 seconds after A's snapshot completed and 42.97 seconds after its real turn ended. E remained alive at a reduced rate; it was not a frozen-zero control. B still measured 19.99764 Hz and D zero, and neither is substituted for E. The final C sentinel was unchanged and focused at 08:38:11.096. This supports A's final post-capture cleanup against a fresh control, not the earlier R1 thinking-gap control that was missing.

## Exact matrix status

| Row | Candidate | Baseline | Remaining gate |
|---|---|---|---|
| R1 real turn / browser-command-free pause / reopen | **PARTIAL**: real Codex input/dropdown, 20-second shell gap, A ~20 Hz in gap, ~1 Hz after end, same guest/value on native reopen | **FAILED** at first hidden snapshot, twice; no input/shell wait performed | Healthy simultaneous unused control during the R1 gap was not established; later E only closes the post-capture comparison. No claim of model-thinking duration. |
| R2 hidden snapshot/input/navigation | **PASSED** for the captured synthetic fixture: decoded fresh native agent PNGs, input/dropdown values, hidden navigation to new fixture ID, preserved C, late idle A/E | **FAILED**: snapshot timed out twice, no decoded screenshot | Random per-load nonce was not implemented; changed fixture ID/reset clock identifies the fresh document. Only the light input/select field core was exercised. |
| R3 authenticated hidden viewer / exits | **PARTIAL**: advancing decoded frames and byte counts; normal close and abrupt renderer loss returned A ~1 Hz; reconnect returned fresh clock/value | **FAILED**: authenticated UI but Connecting/black default 300×150 canvas | Remote input attempt did not visibly change value. No full-session wire-byte count; bounded decoded-JPEG segment counted instead. |
| R4 consumer overlap | **FAILED/PARTIAL**: valid API MP4 and hidden screenshot, concurrent viewer frames; recording stop succeeded after control release | **NOT EXECUTED** | Remaining viewer stopped advancing after recording stop; attribution unresolved. Reverse order, native UI recording and native PiP not executed. |
| R5 cancellation / overlap | **NOT EXECUTED** | **NOT EXECUTED** | Real cancellation/recovery and A/B ownership overlap remain. |
| R6 backend reconnect / destruction | **NOT EXECUTED** | **NOT EXECUTED** | Viewer renderer reconnect in R3 is not a backend restart/destruction test. |

**Overall: PARTIAL; no all-matrix pass or merge-readiness verdict.** Linux X11 evidence only. GNOME Wayland and macOS remain UNVERIFIED. Full deterministic D1–D5 obligations were not audited or rerun in this capture step.

## FRICTION and limits

- The first renderer/WebSocket harness accidentally selected Vite's HMR socket; corrected to an authenticated isolated RPC connection with protocol version 2 and a one-use websocket ticket. No secrets were printed or published.
- Viewer authentication was prepared via isolated native bearer → pairing credential → browser session, then an ordinary web BrowserWindow. A localhost proxy sent UI requests to lead Vite and API/media/RPC to the isolated backend; it did not alter product code. Initial hydration timing caused retries. An unhandled ECONNRESET crashed the first proxy; the scratch driver was corrected to handle socket errors. The final proxy/fixture/observer were owned child processes with captured PIDs.
- Two fixture terminal-session exits (143) reset counters and invalidated samples. Resets are preserved in raw observations. No cause was established.
- Direct guest B evaluation and native parent-window still capture are observer confounds. B/D's irregular 0/1/20 Hz history is retained. No direct native guest evaluation was used on E, and no capturePage call occurred during its final comparison.
- Viewer control correctly blocked agent write/recording-stop tools. After release, stop succeeded. Remote viewer input delivery was attempted but not verified; it is a gap/failure, not an agent-input success.
- Exact baseline source was built/packed separately, then removed. The current candidate bundle was reused at the requested clean head. Prior standard-build libsecret friction is historical; this step used direct `vp pack` for baseline. No shared dependency patch, source change, PR action, push or merge occurred.
- 8 fps external video can show the captured native state and visible transitions, not rule out sub-frame flashes. No CPU/GPU savings are inferred from fixture timer rates. No theme/responsive expansion was attempted.

## Cleanup and scope

Own candidate Electron 1342038, recorder 1342059, driver 1342018, backend 1342386; baseline Electron 1352045, recorder 1352066, driver 1352025, backend 1352401; baseline Vite 1351984; final fixture 1370116, observer 1370117 and proxy 1372335 were stopped. Baseline backend lingered after app quit without a listening port; its recorded ownership and deleted baseline cwd were verified before SIGTERM. It did not exit after SIGTERM, so the same verified PID was stopped with SIGKILL. All owned test ports 18971/18981/18982/18983/18984/18991/18993/19192 are closed. Lead 6013 PID1162159 and 14053 PID1237975 remained listening. The baseline backend is non-running and remained a zombie awaiting parent reaping at the final check. The detached baseline worktree was removed. Candidate remained clean at the requested head. The empty browser tab created by this session was closed.

No live userdata was opened read-write. Only copies of existing isolated synthetic test homes were used. Runtime homes, credentials, cookies, bearer/pairing tickets and full private logs are excluded from the public bundle. Driver commands, synthetic current-turn records, mappings, action timestamps, counters, frame statistics and provenance are included.

## Public evidence

[Complete evidence index](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c98bc89d7bbfc37/evidence-index.md) · [Drivers, raw records and cleanup bundle](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6ad1b2500bad4a5e/fresh-evidence-bundle-final.tar.gz)

[Before: exact baseline external recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/880a77178ef10c63/before-pure.mp4)

[After: exact candidate external recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/59dfc837458b13c8/after-pure.mp4)

[Candidate API recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/86edef975430bed3/api-recording.mp4)

![Before — native C composer preserved](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cafab4a96fef982b/before-native-idle-final.png)

![After — native C composer preserved](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/08ed6bc58c4eedfb/after-native-idle-final.png)

![Zero-threshold pixel differences](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3c2f596a88d908f3/diff-zero-final.png)

![Differences above 16 of 255](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0619d7e2eacc1b2d/diff-threshold16-final.png)

![Fresh real-agent hidden snapshot](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/261b7e9d40a65cc6/browser-screenshot-127-0-0-1-mvnkqk54-1a7de0fa.png)

![Authenticated viewer earlier decoded frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dd5e6c14abb56a37/instrumented-frame1.png)

![Authenticated viewer later decoded frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7ff7895446a32e2b/instrumented-frame2.png)

![Final independent X11 frame with C composer sentinel](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aeae86aa92ff4155/final-external-native.png)

The native C before/after pair differs in 177 pixels at zero threshold and 149 above 16/255; inspected differences are sidebar age text and caret. No composer content change was observed. Viewer frame clocks advance in the paired images. These are bounded observations; the recording-stop survivor stall remains unresolved.
