# Proof audit PASS2

Reviewed head: [3b5b338](https://github.com/pingdotgg/t3code/commit/3b5b33831afbfd8ae4eb875f097dc26bac4743bc), baseline [23bd753](https://github.com/pingdotgg/t3code/commit/23bd753806eb9db5a315fbf9ac6563d355f20b3a), for [#23832](https://git.cafe/pingdotgg/t3code/pulls/23832). Evidence audit only; no product edits, code-review redo, tests, uploads, forge operations, server lifecycle changes, worktrees, or delegation. All shell calls used explicit cwd `/home/ubuntu/wt/pr-23832`.

Read worktree AGENTS.md and all eight requested evidence documents. The required eight rows are sufficient for the narrow, explicitly disclosed synthetic-input loopback web claim. This is not a release/merge approval or verification of the excluded paths. Publication wording corrections and unfinished link substitutions are listed below.

## Independent rebuild and provenance

Executed exactly the requested existing-driver rebuild with `--rebuild-one --sha 3b5b33831afbfd8ae4eb875f097dc26bac4743bc --width 1440 --output-tag audit`. Exit 0, `invalid: null`, output `head-3b5b338-audit-1440/`. It recorded natural and bounded native-encode-hold videos, preparing/ready stills, enabled Preview readiness, and zero remaining attachments after removal. Viewed its preparing still: actual source thumbnail, 0%, removal control, preserved prompt, expanded real composer. Original matched captures were not modified; all 259 indexed original artifact hashes independently matched before audit.

Verified source file hashes against `git show` for all six original capture/matrix directories. Independently decoded served-module inline source maps: each of the seven head modules and six baseline modules contains the exact original committed source for its revision. Baseline correctly lacks preparingComposerImages.ts. Checked every saved served-module SHA256 against source-provenance.json, rather than treating repository HEAD as proof of served code.

The original browser-provenance resource arrays are empty; they do not establish loaded module hashes. To close that gap for my rebuilt capture, used a read-only CDP Debugger session on the existing owned page to read the seven scripts actually loaded by V8. Every script's full bytes exactly match its rebuilt served module, including HMR URL variants. Independently checked rebuilt served source maps against target commit. See `audit-inspection/loaded-module-hashes.json` (seven `servedExactMatch: true`), `loaded-modules.json`, and rebuilt `source-provenance.json`. No page/store/UI injection beyond the disclosed existing capture driver and native-result hold. Driver source uses the real composer and actual local server; no fabricated composer, upload result, receipt, or provider response.

## Required rows

Times below are recording navigation cues, not latency measurements. All matrix checkpoints independently checked to fall inside their corresponding original ffprobe duration. Sampled original frames as well as screenshots/state; auxiliary crops/contact sheets are inspection aids, not replacements for original full frames.

| Required row | Audited evidence and scope | Result |
| --- | --- | --- |
| One image | Head part-0, held 3.114s and ready 3.525s / 16.733s: one disabled Preview becomes one enabled Preview, text survives, sameImageNode true. Actual frames show source tile then inline reference. Baseline corresponding gap and eventual tile retained. Initial filename fallback is disclosed. | SUFFICIENT |
| Several images | Head part-0 15.278s held, 15.937s ready: four previews, initially three disabled then zero disabled. Original video frames show four tiles; completion-based ready-before-pending ordering is disclosed and agrees with baseline. No duplication/loss claim extends beyond observed batch. | SUFFICIENT |
| Large/slow retina | Both matched natural and bounded runs at both widths, plus head part-9 7.975s editing/blur/scroll attempt and 8.636s preview / 9.633s. Source 5120×3200 fixture, native compressed preview reports 2000×1250. Own rebuild reproduces the tile and ready removal. No populated timeline scrolling, timing guarantee, upload or performance conclusion. | SUFFICIENT |
| Limit | Head part-3 15.555s / 48.100s: 100 previews including one disabled reserved slot; 16.778s all enabled; 17.615s extra rejected with 100 retained; 47.610s capacity recovered after clearing/removal and retry. Baseline reserves invisibly before completion. The run clears all attachments before retry, so it proves capacity recovery after removal, not specifically a one-slot-only removal sequence. | SUFFICIENT |
| Send while compressing | Head part-1 button attempt explicitly `clicked` at 3.106s and Enter at 3.388s / 9.167s: toast states Still compressing a pasted image, image/text and draft route retained. Empty sendButtons diagnostic array is from its narrower /send/i discovery filter; the actual Submit message locator was clicked. No accepted post-release send asserted. | SUFFICIENT |
| Cancel/remove preparing | Head part-1 7.583s before removal, 7.851s no tile, 8.256s retry tile / 9.167s; native release does not resurrect removed source. Recorded ready removals use product confirmation when referenced. No discard-all-draft cancellation assertion. | SUFFICIENT |
| Failure | Head part-2 2.231s failure and 2.654s recovery / 3.067s: bad tile clears, valid sibling and retry retained. Native malformed-image decode, not fabricated rejection. Part-6 5.021s failed bad tile while sibling held; remove it, newer SVG error at 5.339s; 5.700s / 6.000s has only good enabled tile and newer unsupported-image error, both preservation booleans true. | SUFFICIENT |
| Non-image | Head and baseline parts 4/8: plain text, HTML with text, text-file intake, below-threshold inline text, above-threshold pasted-text.txt, synthetic literal-paste shortcut. Zero image previews throughout. Above-threshold source is 45,000 characters (observation records it), not 43,200. Native OS shortcut remains excluded. | SUFFICIENT |

Additional coverage: part-7 new-draft A/B separation and A return (one ready image, own retained text), part-5 real file-input picker and synthetic editor drop show held source and enabled final preview. Existing stopped-thread navigation, return before release, reload durability, B-send acceptance and pending questions are not established and remain explicitly unverified.

## Images, collateral and video inspection

Independently hashed and ffprobed all 27 original MP4s; durations match video-manifest.json within 0.002s. H264 30fps, 1440×1088 X11 framebuffer, including narrow browser occupying only part of that framebuffer. Reviewed three independently decoded original frames per video across all 27 recordings, plus targeted original checkpoint frames around one/several/send/cancel/failure/limit/race/navigation/large-preview transitions. Retained audit contact sheets under `audit-inspection/`. They show the real Chromium window and app, not blank headless framebuffers. Driver and ffmpeg logs agree on x11grab :97 capture, original uninterrupted recording, stdin-q finish. Narration accounts for total lengths; short event offsets can precede the corresponding painted video frame by startup/render rounding. They must remain navigation cues, never compression-duration numbers. Multi-second synthetic file transfer before paste delivery is visible in large-file videos and must not be called application compression latency.

Inspected matched raw 1440×1000 light and 390×844 dark preparing before/after, both preparing overlays, and idle/ready controls. Verified all six pairs retain two diffs each; independently recomputed all six per-channel absolute differences and threshold pixel counts. Raw before/after pixels match their original capture pixels despite PNG re-encoding. No broad masking, alignment transform, crop, or amplification in required pairs. Preparing adds tile/removal and increases composer height, shifting centered heading. Ready/idle controls retain layout, controls, text, theme, crop and spacing. Above-threshold collateral counts agree: 1440 idle 30 pixels (elapsed-minute label), 1440 ready 27 (label/thumbnail), 390 idle zero, 390 ready four thumbnail pixels. Lower-value differences remain visible in raw absolute diff.

Independently examined frame-sample series for both head widths and own rebuild. Zero tile disappearances after first tile; zero thumbnail-node replacements; zero fallback after first decoded thumbnail. Original head filename-to-decoded interval is approximately 0.29–0.48s in these captures, not the matrix's 0.23–0.47s. Sampling supports these observed sequences, not a universal no-flash or speed guarantee. Initial source decode fallback is explicitly allowed and visible.

## PR body claim audit and exact minimal corrections

Original contributor description: decoded `pr-original.json` data.resource.description is 2,997 UTF-8 bytes and is an exact byte prefix of pr-body-draft.md. Preserve it unchanged, including historical Verification. Appended text explicitly qualifies it as historical and discloses initial fallback, so its stronger original language is not reasserted as new takeover proof.

All appended product behavior rows are supported within boundaries above. No unsupported upload-complete, speed, GPU or peak-memory assertion found. Existing 22-test result is explicitly before cancellation-error follow-up; final rerun is correctly pending. Current saved `status-final-head-early.json` is target SHA with 31 total, zero pending/failing. I did not query a forge or assert a new CI refresh. Scoped lint/typecheck and both review rounds are recorded in verification.md and supplied by parent; this evidence audit did not rerun them or recreate reviewer work.

Before publication apply these minimal wording corrections (no repository fix needed):

1. In matrix.md replace `43,200 characters` with `45,000 characters`; replace `16,800-char below-threshold text` with `17,500-character below-threshold input` (25 characters ×700 in part-4; editor innerText can include line-break representation differences). Replace `(about 0.23–0.47s in these captures)` with `(about 0.29–0.48s in these captures)`, or simply omit diagnostic intervals.
2. Appended body review chronology currently says two rounds, then a later finding, then both repeated, which implies an extra round. Replace its first two sentences with: `Two fresh full-diff review rounds, Codex GPT-6.1 Sol + Claude Opus 5.5: all MERGE. A bot cancellation-error finding between rounds was confirmed and fixed; both second-round reviewers read the entire final diff.` Parent's explicit history and verification.md support that wording.
3. Until actual final gate, replace `refreshed at final gate` with `final refresh pending`. After gate, substitute actual verified status. Do not turn final focused rerun into a passed claim before execution.
4. Upload placeholders and bundle SHA are intentionally unfinished. `Upload Markdown above is the verbatim output...` and per-file hash/bundle statements become true only after parent substitutes actual ghdrop output, builds the final bundle, and hashes it. Keep them templated until then. No upload was audited or performed here.

These wording corrections do not invalidate any required row. This report leaves the original matrix and body untouched so parent can apply corrections before regenerating all affected hashes.

## Local mapping and publication hygiene

Map BEFORE_1440_MD / AFTER_1440_MD to `baseline-23bd753-1440/preparing.png` / `head-3b5b338-1440/preparing.png`; corresponding 390 placeholders to `baseline-23bd753-390/preparing.png` / `head-3b5b338-390/preparing.png`. Map each DIFF width ABS/OVERLAY to `diffs/<width>/preparing/abs-diff.png` and `highlighted-overlay.png`. MATRIX_MD → matrix.md; AUDIT_MD → this report; VERIFICATION_MD → verification.md. BUNDLE_MD / HASHES_MD / BUNDLE_SHA256 require the future actual bundle and regenerated per-file manifest, including corrected docs and chosen audit artifacts. Audit rebuild remains separate, never substitute it into original matched pairs.

OVERVIEW_MD: parent says `overview-before-after-390.png` was already uploaded, SHA256 41a919b3a6b46a26a24a8d51b97accbedf63ef9c04fee4be59a733b4350d48b7. That file was not present in this evidence directory or found by the bounded /tmp filename search, so I could not independently inspect/hash it. Treat overview hash/upload as parent-provided, not audited; retain verified raw pairs as primary evidence. Parent should check the exact uploaded output before substituting this optional overview link.

Scanned all 259 indexed publishable files for tokenized URLs, bearer/API tokens, private-key headers and populated access/refresh/auth/session token fields: zero candidates. Readable sampled frames show localhost draft URLs, no pairing URL. This is a scoped scan, not a claim about unindexed files or a future archive. Final bundle MUST be an explicit allowlist: exclude isolated homes, cookies, server logs with startup pairing URLs, old provisional head-1440 and old metadata JSON, tooling dependencies and unrelated runtime files. Driver scripts contain only runtime log lookup, no literal credential. Rebuild changed external run-config.json only; no original indexed asset changed. Parent must regenerate hashes after any document edit/addition and scan the final actual archive before upload.

## Boundaries and final process/source state

Accepted post-release messages, existing stopped-thread paths, pending-question answers, discard-all cancellation, native OS clipboard/Electron shell, native mobile, remote/relay/tunnel and provider execution are unverified. 390 is responsive web. New-draft local readiness is not completed upload, send acceptance or persisted-command proof. No source swap was needed; no real ~/.t3 state accessed; no runtime/permissions/auth changes. Existing owned driver/browser and parent server reused exactly as requested.

At completion: target HEAD unchanged and `git status --porcelain` empty. Restored native encode wrappers, ended monitoring, returned browser to about:blank. Driver 837734, Xvfb 837976, Chromium 837983, parent backend 831670 and web 830168 all remain alive for parent teardown. No captured recorder PID remains present. Available disk 10,050,441,216 bytes. See `audit-inspection/post-state.json`. No hard stop encountered.

VERDICT: SUFFICIENT

Parent publication verification: optional overview `before-after-390.png` uses a different filename from the audit lookup. Both panels exactly match audited raw 390px preparing captures; curl downloaded public bytes match SHA256 41a919b3a6b46a26a24a8d51b97accbedf63ef9c04fee4be59a733b4350d48b7. Python urllib received an HTTP 403; curl returned HTTP 200 without credentials.
