# Proof audit, pass 2

Findings first: no blocking proof defects. V1–V4 satisfy the requested matrix. Independent reconstruction of the after V1 resting, focused/typed, and open-menu frames matched every pixel. This is proof sufficiency for the scoped fallback change, not a new merge authorization or a fresh code-review verdict.

Audited clean branch `fix/issue-23497` in `/home/ubuntu/wt/issue-23497`, HEAD [be2c111076](https://git.cafe/pingdotgg/t3code/commit/be2c1110767f535e2430c766e4013aa51b45bd4d). Capture sources are [ff525478e2](https://git.cafe/pingdotgg/t3code/commit/ff525478e236ec0df4c4920eb03ac3961ea714a2) before and [4c7f479ac9](https://git.cafe/pingdotgg/t3code/commit/4c7f479ac95b503f906c26eb949e8812c615c136) after. Git comparison confirms be2 adds only the 42-line fixture; all production and test files are byte-identical to 4c. The capture-source diff is exactly the fallback expression/comment and its regression test. Historical capture SHAs are attested by the manifest; the independent rebuild directly verifies the current head's rendered after behavior.

## Row status

Every row has before/after continuous recordings, R/F/O raw stills, two full-frame diffs per pair, optionless persisted thread.create evidence, matching successful message.dispatch receipt, and a completed persisted Claude run. Recordings were inspected through time-sampled frames plus ending frames; menu selection, prompt, close/send, busy state and returned assistant response agree with the milestone sidecars. They are silent screen recordings; the step narrative is in the index/manifest, not an audio track.

| Row | Status | Independent t0 counts R / F / O | Independent t26 counts R / F / O |
|---|---|---|---|
| V1 1440×900 light | PASS | 1103 / 1103 / 11738 | 792 / 792 / 773 |
| V2 1440×900 dark | PASS | 1094 / 1094 / 12189 | 743 / 743 / 681 |
| V3 390×844 light | PASS | 2974 / 0 / 56243 | 2306 / 0 / 0 |
| V4 390×844 dark | PASS | 2956 / 0 / 60032 | 2158 / 0 / 0 |

All 24 diff PNGs independently recomputed exactly: max absolute RGB channel delta >0 or >=26, gain 8, saturation 255, black below threshold. No masks, resizing or registration. Changed-pixel bounds stay within the trait value, selected menu rows and neighboring controls shifted by Medium's label width. Narrow F is exactly identical. Narrow O changes only selected-row backgrounds below 26; blank threshold-26 diffs do not mean the selection failed to change.

The selected model remains Claude Opus 5.5. Every before dispatch includes effort high and fastMode false; every after dispatch omits effort and includes fastMode false. Live descriptor exports identify Medium as the default, while environment defaults are High and project overrides inherit. R/F/O draft metadata contains no option/sticky override. Opening and closing menus did not select an option or bake an override. Receipt IDs match dispatch IDs, and completed run selections match dispatch. All completion timestamps precede recording stop. All eight source videos independently decode with no errors using passthrough timing and a microsecond encoder time base. Ending frames show OK and the restored send control.

## Integrity and claim limits

84/84 public files match checksums and byte sizes; fetching all 84 published URLs with curl also reproduced their SHA-256 hashes. All 24 stills and eight videos are byte-identical to their original app-owned paths in retained-captures.json. The exact diff computation confirms the delivered count/fraction claims. Manifest and seed exports agree on optionless initial selections and retake IDs; final projections legitimately contain sent normalized selections.

The documented dimensions are accurate: Linux Chrome 154, DPR 2, zoom 1; CSS viewports 1440×900 and 390×844; wide raw snapshot 1280×800, narrow snapshot 780×1688; video 2880×1800 or 780×1688. Wide snapshots are capped by the capture tool, not presented as full-resolution video frames. The original matrix recommended DPR 1; the explicit, consistent DPR 2 disclosure is an acceptable documented departure, independently reproduced here. Narrow web is not native mobile proof. Electron shell, other providers and remote/tunnel modes were not separately certified. Those exclusions match the shared web-only fallback scope.

The what-else-changed disclosure is adequate: separate synthetic homes/workspace, before-only bootstrap project hidden by collapsed sidebar, retake thread IDs, theme preference, dismissed update notification, transparent caret CSS in both revisions, and naturally different environment/command/run IDs and completion timing. None produces unrelated deltas in the paired keyframes. Source images remain unchanged. Exact helper boundary shapes are correctly labelled helper checks; persisted A2 [] and B low are not falsely described as extra UI/provider runs.

## Independent reconstruction

One dev server, one new incognito preview tab, entirely fresh `/tmp/issue-23497-audit/home`, new empty Git workspace `/tmp/issue-23497-audit/project` on master. Started the audited worktree at be2 with explicit isolated home and auto-bootstrap disabled. Paired through its own startup URL; installed the delivered RPC observer; imported and executed the committed fixture through Vite. Used the real existing Claude installation/catalog. Set light appearance, exact 1440×900 CSS viewport, collapsed sidebar, dismissed the native update toast, awaited fonts, used transparent caret CSS and pointer 0,450. Captured R, typed Reply with OK. for F, opened Medium without selection for O, then closed it. No new provider turn was needed or sent.

| Frame | Compared pixels | Changed >0 | Changed >=26 | Maximum channel delta |
|---|---:|---:|---:|---:|
| R | 1,024,000 | 0 | 0 | 0 |
| F | 1,024,000 | 0 | 0 | 0 |
| O | 1,024,000 | 0 | 0 | 0 |

[Reconstruction measurements](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/10e59314f1473e07/reconstruction.json) · [Independent delivered-diff measurements](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fc8011d030ea8d82/pixel-verification.json)

![Left: delivered after V1 open menu. Right: independent reconstruction; zero changed pixels.](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/da86d9be472ac052/reconstruction-pair.png)

Fixture review: fixed six-row loop, no parser or regex, no descriptor spoof, authentication or send logic. It sets High defaults and creates omitted/empty/Low selections through real RPC. It requires a fresh home and the documented ready model; fixed command/project/thread IDs make it unsuitable as a general repeatable migration, but that is not its purpose. No blocking fixture issue found. Server normalizes createdBy to user in persisted create events; this does not affect the saved model selection or fallback proof.

## Cleanup and retained artifacts

Stopped retained server session 94898 with Ctrl-C. Confirmed ports 15033 and 6993 unbound. Closed only audit tab `tab_4_718af28e-b901-447a-834c-af7f6f2e4896`; preview_status confirms no tab. No audit recording started. No other worktree or live runtime database was written. Delivered state files were only read, SQLite using mode=ro. No source edit, commit, push, public comment, PR or merge. Final worktree remains clean at be2.

Scratch retained at `/tmp/issue-23497-audit/`: isolated home/project, report, verification scripts/results, video inspection frames/contact sheets, last frames, rebuilt PNGs and zero-delta images. No scratch is committed. Tool-generated audit screenshots remain under `/home/ubuntu/.t3/userdata/browser-artifacts/`: `browser-screenshot-localhost-mvjd4qfc-1b86443d.png`, `browser-screenshot-localhost-mvjd586v-51f9a2bd.png`, `browser-screenshot-localhost-mvjd5z1q-028ca070.png`, `browser-screenshot-localhost-mvjd69vr-8311dfe0.png`, `browser-screenshot-localhost-mvjd6icg-484c7dda.png`. These are app-owned capture outputs; no manual cleanup of live userdata was attempted. Published audit artifacts persist through ghdrop.

## FRICTION

| Category | Happened | Avoidance |
|---|---|---|
| Evaluation arguments | Observer expression rejected for trailing whitespace | Trim expressions before preview_evaluate |
| Locator | Toggle Sidebar role lookup hit a hidden duplicate and timed out | Inspect DOM/snapshot; use visible button locator |
| Transient capture | First R attempts caught toast exit/hover pixels | Dismiss natively, move pointer to recorded position, recapture after transition; no masking. Final R/F/O all exact |
| Fresh-state navigation | Empty-root route materialized an unrelated unsent draft | Navigate directly to fixture thread; verify target has prompt-only draft and no sticky/option override |
| Published retrieval | Python urllib default agent received HTTP 403 | curl with ordinary browser User-Agent fetched and verified all 84 artifacts |
| Inspection scale | Wide contact sheets made final response hard to read | Inspect original-resolution ending frame; completion present in all rows |

VERDICT: SUFFICIENT
