# Proof audit PASS2 — issue 15873

Read-only proof audit of [#15873](https://git.cafe/pingdotgg/t3code/issues/15873), 2026-10-22 UTC. No implementation edits, commits, pushes, PRs or forge comments. Only disposable fixture state and review artifacts were written.

## Findings first

1. **INSUFFICIENT against the pass-1 proof matrix.** The settled web comparisons are reproducible and their arithmetic is correct. They do not complete the required native grid, mounted cache/map transitions, active steering, dispatch/echo, or interaction/control rows. These are evidence gaps; this audit asserts no new implementation defect.
2. **Recording narration does not identify actual media timestamps, and some final actions have no observable recorded result.** The final index explicitly uses wall-clock offsets from tool invocation. Those offsets are not clip PTS. For example AFTER/390/light narrates Find next at 26.20s, previous at 26.32s and close at 26.60s, while the video ends at 25.8471s. Decoded frames show 1/2 at PTS25.412, 2/2 at25.503 and1/2 at25.814, proving next/previous; no closed Find frame follows. AFTER/1440/dark ends at62.5813s with the multiple query still searching at the last decoded frame PTS62.548, before next/previous/close outcomes. BEFORE/1440/light and dark end showing the exclusive-query0/0 state rather than the narrated multiple-query/next/previous/close results. AFTER/1440/light ends with the unrelated query searching, without its settled-zero or closed state. BEFORE/390/dark does contain an Escape/closed result at PTS23.924; blanket failure of all clips would also be inaccurate. Correct the timestamp map and narrow the claims, or retain the missing outcomes in new recordings. The index statement that Enter/Shift+Enter and Escape are recorded across the grid overstates the visible proof.
3. **Independent rebuild succeeded exactly.** G/390/light and F/390/light were regenerated through the production web app at the exact AFTER checkout, using the committed seeder and a separate disposable home. Both rebuilt PNGs are byte-identical to their delivered AFTER originals: Diff0=0, DiffT=0, maximum channel delta=0. Rebuilt G compared against the downloaded BEFORE original reproduces455,933 changed pixels at threshold0 and66,034 at threshold>16. This proves the selected settled capture is reproducible; it does not fill hot-transition or native gaps.
4. **All30 delivered comparison pairs passed independent arithmetic/integrity checks.** All120 file SHA256s match comparisons.json. All60 original screenshot references equal their published copies. I independently decoded RGB pixels and regenerated both comparisons for every pair: Diff0=min(abs(channel delta)×8,255), changed iff any channel differs; DiffT=max-channel delta>16/255, magenta on black. Every count and diff-image pixel matches. No masks, registration, crop or rescale were applied during recomputation. All8 original clip copies and SHA256s match the manifest. There are128 image/video upload records. Four G/390/light artifacts were downloaded through their published links and match local originals; I did not redownload every upload.
5. **The four same-run C controls are exactly equal; F gains the late-answer document in all four cells.** C has0/0 changed pixels in both themes at both widths, with byte-identical Before/After originals. All four F original pairs visibly/metadata-wise show0/0→1/1, with the later answer highlighted after. The rebuilt F confirms the production progressive path at390/light. No native in-thread Find consumer exists in apps/mobile/src; native uses the separate threadSearch/global search path. Native answer-level Find is inapplicable, and native global search→open→manual scroll remains unverified.
6. **Wide stills are capped tool outputs.** At1440×1000 CSS px/DPR2 the lossless files are1280×889 rather than2880×2000. Their counts are correct for the files supplied, but do not certify original framebuffer pixels. Wide MP4 frames are2880×2000 but lossy and cannot repair this lossless-proof gap. Narrow stills are780×1688 for390×844 CSS px/DPR2.

## Row status table

Each cell below was inspected against Before, After, Diff0 and DiffT. “Verified settled” means the supplied static rendering state only. It is not a full pass for the pass-1 row's required transitions. L-expanded BEFORE aliases the absent-bubble L baseline; it is not a before-build expand interaction.

| Fixture/checkpoint | CSS width/theme | Diff0 changed pixels | DiffT >16 pixels | Status and visible result |
|---|---|---:|---:|---|
| A | 390/dark | 400,260 | 85,374 | Verified settled: separate adjacent later-run bubble; acknowledgment/minimap shift. |
| A | 390/light | 402,525 | 83,659 | Verified settled: separate adjacent later-run bubble; acknowledgment/minimap shift. |
| A | 1440/dark | 33,463 | 6,377 | Verified settled: separate adjacent later-run bubble; acknowledgment/minimap shift. |
| A | 1440/light | 33,509 | 6,181 | Verified settled: separate adjacent later-run bubble; acknowledgment/minimap shift. |
| C | 390/dark | 0 | 0 | Verified collapsed settled control only: exactly equal; expanded card/map update absent. |
| C | 390/light | 0 | 0 | Verified collapsed settled control only: exactly equal; expanded card/map update absent. |
| C | 1440/dark | 0 | 0 | Verified collapsed settled control only: exactly equal; expanded card/map update absent. |
| C | 1440/light | 0 | 0 | Verified collapsed settled control only: exactly equal; expanded card/map update absent. |
| F | 390/dark | 612,811 | 91,561 | Verified selected progressive result0/0→1/1; full interaction recording remains partial. |
| F | 390/light | 624,196 | 89,954 | Verified selected progressive result0/0→1/1; full interaction recording remains partial. |
| F | 1440/dark | 33,739 | 7,621 | Verified selected progressive result0/0→1/1; full interaction recording remains partial. |
| F | 1440/light | 33,753 | 7,421 | Verified selected progressive result0/0→1/1; full interaction recording remains partial. |
| G | 390/dark | 452,936 | 67,416 | Verified settled: one late-answer bubble between queued reply and acknowledgment; added height/minimap entry. |
| G | 390/light | 455,933 | 66,034 | Verified settled: one late-answer bubble between queued reply and acknowledgment; added height/minimap entry. |
| G | 1440/dark | 33,556 | 6,442 | Verified settled: one late-answer bubble between queued reply and acknowledgment; added height/minimap entry. |
| G | 1440/light | 33,601 | 6,246 | Verified settled: one late-answer bubble between queued reply and acknowledgment; added height/minimap entry. |
| G-history | 390/dark | 36,640 | 4,923 | Verified settled: top history stays anchored; lower content/minimap differs. |
| G-history | 390/light | 47,502 | 4,824 | Verified settled: top history stays anchored; lower content/minimap differs. |
| L | 390/dark | 536,238 | 86,993 | Verified collapsed settled: long bubble/show-full appears; content/scroll moves. |
| L | 390/light | 539,198 | 85,534 | Verified collapsed settled: long bubble/show-full appears; content/scroll moves. |
| L | 1440/dark | 108,957 | 14,417 | Verified collapsed settled: long bubble/show-full appears; content/scroll moves. |
| L | 1440/light | 108,998 | 14,043 | Verified collapsed settled: long bubble/show-full appears; content/scroll moves. |
| L-expanded | 390/dark | 355,105 | 102,874 | Verified expanded settled: wrapped body, wide block and tail visible; earlier history scrolls out. |
| L-expanded | 390/light | 357,440 | 91,491 | Verified expanded settled: wrapped body, wide block and tail visible; earlier history scrolls out. |
| L-expanded | 1440/dark | 250,686 | 44,381 | Verified expanded settled: wrapped body, wide block and tail visible; earlier history scrolls out. |
| L-expanded | 1440/light | 251,072 | 42,199 | Verified expanded settled: wrapped body, wide block and tail visible; earlier history scrolls out. |
| S | 390/dark | 456,280 | 67,471 | Partial: settled steer marker/bubble only; active provider steering absent. |
| S | 390/light | 459,274 | 66,142 | Partial: settled steer marker/bubble only; active provider steering absent. |
| S | 1440/dark | 102,313 | 45,314 | Partial: settled steer marker/bubble only; active provider steering absent. |
| S | 1440/light | 102,931 | 44,337 | Partial: settled steer marker/bubble only; active provider steering absent. |

The substantial narrow differences include end-follow scroll changes and content visible beneath the translucent composer, as described in the index. Wide S shifts earlier content upward11CSS px. The expanded dark L comparison also includes composer/background pixels over the feed; these were retained in the unmasked diff. I found no additional unexplained static difference requiring an implementation change.

| Pass-1 row/surface | Disposition |
|---|---|
| G | Settled chronology/grid and narrow history/end checkpoints verified. Cold/route navigation seen. No mounted prefix→answer, answer→ack, duplicate echo, actual insertion live-follow/history preservation or demonstrated hot→reload convergence. |
| A | Settled adjacent-run grid verified. No finish→answer→new-run/echo sequence. |
| S | Settled synthetic replay verified. Active run/working/streaming/queue/provider-steer sequence missing. |
| C | Four collapsed controls exactly equal. Expanded question history, unanswered→answered map update and same-run acknowledgment sequence missing. |
| L | Collapsed/expanded grids verified; show-full/show-less states appear in clips. Tail-token Find reveal and verified clipboard copy missing. Only one long question/answer block rather than a multi-question replay. |
| F | Four progressive selected still pairs verified. Narrow multiple-result navigation observable; complete per-cell sequence, reliable media timestamp index, nonprogressive path, same-run control query, settled unrelated-zero outcome and focus restoration not fully established. |
| N | Native global search Home/sidebar/palette→open→scroll missing. Native in-thread Find is absent from production source, not a passed demonstration. |
| Q | Empty/unanswered/loading/error/retry controls missing; incidental syncing frames do not certify error recovery. |
| B | Sparse count/setup/submitted anchor/history-pagination controls missing. |
| K | Mounted cache identity/map addition/reassociation/removal, null/orphan/inherited and anchored/committed duplicate replay visually unverified. Reported focused tests not rerun in this proof audit. |
| I | L disclosure partly covered. Clipboard text, timestamp hover/focus, expanded question history and checkpoint/revert ownership confirmation missing; synthetic refs cannot certify actual revert. |
| Native iOS | No source-matched app installed/build supplied; phone/tablet×theme grid and production feed/cache/disclosure replay missing. Simulator readiness is not app proof. |
| Electron / Android | Unverified. Web desktop/narrow layouts do not certify shell/IPC or React Native behavior. |
| Remote/relay/tunnel, multi-device/environment, other providers | Unverified; only local seeded snapshots exercised. |
| 1440 CSS lossless framebuffer | Missing. Tool-capped1280×889 images and full-size lossy videos must retain their different claims. |

## Rebuild and provenance

The committed seeding script/data are explicitly required by the user evidence brief. They are authorized reproducibility fixtures, not a policy finding to remove as PR-only screenshot assets. I recommend no fixture/source edits from this audit. Parent reports both final code reviews found no production defect; this proof verdict concerns evidence sufficiency.

BEFORE: [ed9b7ca9c5](https://git.cafe/pingdotgg/t3code/commit/ed9b7ca9c53843ea1e6b466bf7d52928d10e7db0), full SHA `ed9b7ca9c53843ea1e6b466bf7d52928d10e7db0`.
AFTER implementation: [7d869fd13b](https://git.cafe/pingdotgg/t3code/commit/7d869fd13b74f7cc040ad23f375ab01f36bc9afe), full SHA `7d869fd13b74f7cc040ad23f375ab01f36bc9afe`.
AFTER exact checkout: [7dcb809db8](https://git.cafe/pingdotgg/t3code/commit/7dcb809db870aa1903a6031cdf93b6155ac8124d), full SHA `7dcb809db870aa1903a6031cdf93b6155ac8124d`; its parent is the implementation SHA. The only added files are fixture README/seed/runtime. I did not switch the branch or independently regenerate the BEFORE build. BEFORE/current main also differs by unrelated release/toolchain changes; the index correctly discloses both captures used Node24.21.0 and do not validate main's Node26 release tooling.

Fixture runtime SHA256 `935b1004d0d84417858e469dfe8b3db13a9a10c2a9a074fb5eb4d1680ecae967`; seeder SHA256 `6bfed6c00e3817a4f4d384595f3eb9bbf2f2dd89c0bb1ecde8ce82b4704af574`; README SHA256 `5eb41c236b00c896242e7ca4d7204db0bf6022578fd7b5f6a8452b5dad12f9a2`.

I copied the existing disposable capture DB with SQLite's read-only source connection into `.t3/pass2/userdata/statev2.sqlite`, cleared orchestration/projection/auth/scheduler rows before startup, and reran committed `seed.py` with `python3 -B`. This reuses the migrated disposable schema rather than claiming an independent migration test. No live installed database was opened read-write. The isolated server recovered zero active runs/effects and stopped five fixture sessions.

Own runner: terminal session68132, captured runner PID1211821, `T3CODE_PORT_OFFSET=2900 vp run dev --home-dir "$PWD/.t3/pass2"`, actual ports8633/16673. Own product preview tab `tab_q_6e549cef-3988-4dbf-afd5-b7128d4b53ce`. Browser Chrome154/Linux; viewport390×844 CSS px, DPR2, PNG780×1688; light system appearance, committed fixed timestamps; presentation Date1792627200000 (`2026-10-22T00:00:00Z`), timers continue; fonts loaded/default sizes16/14/13; en-US/UTC presentation. Restored delivered UI settings with environment-specific panel keys remapped. Sidebar/details/terminal closed, composer blurred, pointer1,1; six RAF end-scroll passes. G scrollTop356, clientHeight792, scrollHeight1148, matching delivered AFTER state. Find started from history top through Control+F and real query input, awaited aria-busy=false, and selected1/1 at the same end geometry.

| Rebuild | Against supplied AFTER | PNG SHA256 |
|---|---|---|
| G390/light | Diff0=0; DiffT=0; max channel delta0; byte-identical | `2d57c874bed3f599feea215f907d17c568011f8dc3597b76e3e3416ee666251c` |
| F390/light | Diff0=0; DiffT=0; max channel delta0; byte-identical | `f84487d9f92660aede459f58ef88eb5719ebbb78b852ffad89b137021b9bf581` |

Rebuilt G versus downloaded BEFORE: Diff0=455,933; DiffT=66,034, reproducing the original comparison exactly. Downloaded BEFORE G hash `aa17c96c59ef8bada8c5254624e06edac302adc2ebad7f2ab2717839c1d21eac`; downloaded Diff0 hash `4ad73b80612a4f825fb3f41f21b0d829403a80ae5a2bb683182fe47a25492285`; downloaded DiffT hash `6e625708893b40559860375093dbe1a1c940b1051c853519efedd4d6698b0887`.

Artifacts: `/tmp/15873-pass2/recomputed.json`, `rebuild-result.json`, `rebuild-F-result.json`, rebuilt PNGs, `rebuilt-pair-diff0.png`, `rebuilt-pair-difft.png`, `video-audit.json`, `video-pts.json`, decoded comparison/recording inspection sheets and `index-reviewed.md`. Inspection sheets are derivative review aids, not replacement originals or lossless framebuffer proof. Actual recordings were decoded offline with installed OpenCV; no alternate browser automation was used. All frames decoded except one terminal frame reported by the container in AFTER1440/light (113 decoded versus114 advertised); no complete visual-playback certification is inferred.

## Recording identity and final index

All eight original clips decoded and their dimensions agree. Final index corrected its initially inaccurate durations during this audit; those corrected values agree with decoded presentation timestamps/container metadata. Final index reread/snapshotted SHA256 `6340cb1bb971de8954680cacbbc0eaa8d529f591b631a98d044b43852865954e` (43,545 bytes). Its explicit native/cache/steer/error/pagination and framebuffer limitations remain visible and are not waivers. Its wall-time narration still needs an actual media-timestamp mapping and reduced claims for clipped end states.

| Clip | Duration seconds | Last decoded PTS seconds |
|---|---:|---:|
| after-1440-light | 203.110167 | 203.076867 |
| after-390-light | 25.847100 | 25.813800 |
| after-390-dark | 29.498200 | 29.464900 |
| after-1440-dark | 62.581333 | 62.548033 |
| before-390-light | 42.141600 | 42.108300 |
| before-390-dark | 23.956833 | 23.923533 |
| before-1440-light | 25.716167 | 25.682867 |
| before-1440-dark | 19.715067 | 19.681767 |

Stopped only my own retained runner session with Ctrl+C; its shutdown reconciled zero runs/effects. Ports8633/16673 verified clear afterward. Capture-agent server and other processes were not killed. The branch remains at the supplied HEAD with a clean tracked working tree. An untracked `scripts/fixtures/issue-15873/__pycache__/` directory was observed at final status; I did not remove it because this audit did not establish its ownership. Parent's supplementary browser check was not used as a substitute for my rebuild. No focused code tests were rerun: this was a proof audit.

FRICTION tool|recording action offsets are tool wall time, not media PTS, and final states can fall outside retained frames|index decoded frame PTS and retain a confirmed post-action frame before stopping
FRICTION tool|wide snapshot lossless output is capped1280px|retain explicit capped-image limitation and obtain native full-framebuffer output through supported product tooling
FRICTION native|ready EAS simulator has no source-matched app installed|build/install the reviewed source and stage production-route fixtures before claiming native rows
FRICTION scope|settled fixtures cannot prove hot cache/map updates or active provider steering|use labelled deterministic production-store replay with mounted identity, plus actual steering where claimed
FRICTION download|Python urllib returned403 on public artifact fetch; curl with standard browser User-Agent succeeded|check HTTP result and hashes rather than equating the first transport failure with missing evidence
FRICTION environment|fresh isolated environment has a different route ID and initial provider notification|derive environment ID, restore UI settings and wait for hydration before matching captures
VERDICT: INSUFFICIENT G/A/C hot transitions; S active steering; L tail-Find/copy; F complete timestamped per-cell interactions/nonprogressive/control paths; N native search; Q/B/K/I controls; native iOS grid/cache; Electron/Android; 1440 lossless framebuffer
