# Issue 20883 proof audit, pass 2

Read-only evidence audit of [#24313](https://github.com/pingdotgg/t3code/pull/24313), for [#20883](https://git.cafe/pingdotgg/t3code/issues/20883). Started 2026-10-24 12:50:02 UTC; completed before 12:57 UTC, within the 20-minute hard stop. No tests, checkout edits, commit, push, comment, merge, or new acceptance recording. Scratch and the explicitly requested diagnostic reconstruction only.

## Revision and provenance

Before: [ff1f6fd](https://github.com/pingdotgg/t3code/commit/ff1f6fd8849cdd2e0a07096eac4fd4440d1ad989). After: [4fbf29c](https://github.com/pingdotgg/t3code/commit/4fbf29c29477a4dbb4c176f254fb6b95c1b6e2c2). Local HEAD, branch, clean status and live GitCafe PR head agree. Compared diff is two web files, 136 additions / 3 deletions; production coordinator is 22 additions. Cleanup from [70fbe83](https://github.com/pingdotgg/t3code/commit/70fbe839eb1cf8d151101e3c39066132ee1b1a4f) removes exactly seven proof files and five Knip lines, with no web changes. The prescribed older observed base [26c3625](https://github.com/pingdotgg/t3code/commit/26c3625f484eadd4d5b6ca5a3dd1f8f8bd5533b4) and actual Before have identical coordinator/toast source. SHA claims in recording JSON are metadata, not independent build attestations.

Fetched matrix and delivered index through terminal curl. Downloaded 151 linked artifacts; every byte hash matches the retained local counterpart (public-check.json). Opened and visually inspected all 132 delivered PNGs, including all 88 screenshots/twins and 44 diff images, on 33 labeled four-image sheets. Opened both complete recording timelines at 1fps (118 Before and 117 After samples) on twelve sheets; this is frame inspection, not continuous playback or subframe timing verification. Original full-size decisive screenshots were also examined through their sheets and reconstruction comparisons.

## Row status

All statuses below concern 1440x900/light only. Every R1/R2/R3/C0 cell at 1440 dark, 390 light and 390 dark is missing. Two recordings delivered of eight required.

| Checkpoint | Visually supported observation | Status / limit |
|---|---|---|
| R1-1 sidebar A/T | After 3→2 retains input A/U and B/T approval. Before has only those two even before action. | Invalid paired completion regression proof: Before completion already gone. |
| R1-2 keyboard B/T, same T ID | Before retains both; After removes B approval and retains A input. Scoped routes agree with JSON. | Usable narrow observation; unstable stills, incomplete R1. |
| R1-3 keyboard A/U | Before retains two; After removes remaining input. | Usable narrow observation; unstable stills. |
| R2-1 repeated V completion + approval | Both notices visibly coexist with unrelated failure before action. Before retains all three, After retains only failure. | Strongest narrow behavior evidence; no complete matrix acceptance. |
| R2-2 failure toast action | Navigates to failure thread. Before retains two V notices, After none. | Narrow control supported. |
| R2-3 limited keyboard | Before retains limited; After absent on target route. | Narrow shared-path variant supported. |
| R3 dismiss | Notice present then absent in both phases. | Control supported; no Settings UI. |
| R3 expiry | Input present, then disappears while still on quiet route after unhover. | Real-timer control supported. |
| R3 mounted disable | Failure remains in both with sound mode and in-app=false. | Service caller only; settings controls not exercised. |
| R3 global unmount | Before retains failure, After clears it. | Narrow cleanup behavior supported; service caller only. |
| R3 remount/new event/navigation | Before retains old failure + new limited; After emits new limited then clears on target. | Narrow remount behavior supported. |
| R3 remove B / retain A | No capture. | Missing. |
| R3 already-active target guard | No capture. | Missing. |
| C0 appearance/stability | Sidebar ordering, selection, hover/activity and intentional survivor differences visible. R1 pre additionally lacks Before completion. | Fails comparable-state and stable-still gate. |
| Palette, legacy row/keyboard, Settings UI | Not delivered. | Missing caller evidence; no execution claim. |

## Pixel and timing checks

Independently recomputed all 44 twin-pair deltas, 22 Before/After comparison counts, and 44 diff0/diff8 images. Every count agrees with comparison.json and the index; every generated diff image equals the delivered pixels. Threshold is strictly max RGB delta >8; diff0 is RGB absolute difference ×16 clipped. No registration/crop/resize applied to comparisons. 35/44 twinpairs have nonzero differences. This is a failed stability gate, not merely a missing assertion.

“What else changed” is consistent with pixels: persistent sidebar ordering/selection differences are present even in pre-action controls, with badges, hover/focus, activity and stack displacement. R2-1 pre differs by 34,712 pixels (6,602 >8); post by 87,623 (31,540 >8). These cannot substantiate “nothing else changed.” R1-1 pre differs by 79,686 (19,290 >8), including the absent Before completion notice. No claim of a rendering regression follows from these uncontrolled differences.

JSON cfg SHAs match requested revisions. UTC chapters are sequential: Before 12:40:11.044–12:42:08.882, After 12:42:25.503–12:44:21.647. Frozen browser Date is correctly distinguished from UTC/monotonic clocks. Driver post markers are generally 2.65–4.16 seconds after route/action markers, not the ideal 650–1000ms. The helper waits 650ms, hovers, waits 650ms, takes two snapshots 500ms apart, then marks; markers therefore are not actual first-image shutter timestamps or exact route commit timestamps. Before surviving witnesses remain visibly present, but Before R1-1 is plainly invalid. The record does not supply a complete per-toast unpaused-time ledger proving exact remaining timeout budget. Counts obtained from DOM may include ending/stacked notices; expanded decisive stills, not counts alone, support the narrow claims above.

Actual PNGs are 1280x800; videos are 2880x1800, durations 118.421467s / 116.700167s, video-only. Claimed CSS 1440x900/DPR2 accounts for video raster; snapshot export resamples to 1280x800. Zoom separately unverified, reduced motion unset. No dark/narrow evidence or Electron execution claim is available. Native mobile/provider-adapter matrix is outside this web-only diff.

## Diagnostic reconstruction (not acceptance proof)

Used public after-A-browser.js/provider.mjs/wire.json/clock.mjs/diff.py at exact clean After SHA with a fresh /tmp/proof-audit-pass2/home. Public fixture scripts intentionally removed from the repository were used externally; the old committed-fixture prescription is superseded. No request to recommit them.

Started normal dev runner with isolated home, provider settings and ordinary thread commands. Reconstructed a single limited notice and sidebar target navigation. Native preview measured CSS1440x900, DPR2, scale1, root16px, focus=true, visible; saved raster1280x800. No toast/projection injection. This is not a faithful full R2-3 replay: only A was reconstructed, B was not linked, sidebar histories/statuses differ, the action was sidebar rather than original keyboard, server Date advanced to recover a failed initial setup, and a cancelled initial attempt leaves a second user message. Exact original-state reproduction is therefore still missing.

Against delivered After R2-3: rebuilt pre differs at 6,510 pixels / 5,962 >8; post at 47,499 / 15,058 >8. Visually inspected rebuilt captures and all four derived diffs. Pre difference is concentrated in sidebar state; post also has extra message, timestamp/content layout and focus/selection differences. These deltas are disclosed reproducibility limits, not clean visual-regression measurements. Rebuild screenshots and diffs are diagnostic only and do not fill missing acceptance rows.

## Cleanup

No owned listener remains on 15063/7023/15064/7024; both runner sessions ended. Port-owner PIDs were checked against /proc cwd before stopping: 2303616/2303599 first run and 2306124/2306111 second run. No unrelated process killed. Target status remains clean. Own scratch: /tmp/proof-audit-pass2 (public downloads/report/scripts/diagnostic pixels; private isolated home and logs also reside here, do not publish wholesale). Native preview also saved three diagnostic screenshots in its normal browser-artifacts store; copied useful pixels into scratch. Existing evidence/capturer homes/worktree were left intact. PR linked to this thread via GitHub URL; initial singular GitCafe /pull URL was rejected, corrected without posting.

## FRICTION

- urllib received HTTP403; terminal curl downloaded all artifacts successfully.
- Preview required opening and readiness before primary environment was available. Expression whitespace and unsupported locator exact attribute were corrected.
- Initial copied provider lacked adjacent wire.json and exited; copied public wire data. Frozen server Date prevented timely retry; restarted isolated server with own clock, then advanced it. This setup failure is not a product finding.
- Initial server-only stop left Vite listening; stopped both confirmed port owners and verified all four ports empty.
- A scratch rm -f command was automatically rejected; no deletion occurred. Replaced it with explicit Path.unlink on the two named scratch gate files.
- Six recordings, environment-removal, active-target and caller coverage remain absent. No new acceptance proof was captured to conceal those omissions.

VERDICT: INSUFFICIENT R1, R2, R3, C0
