# Evidence capture: issue 24960

Baseline e3592efe7f5dbd3a869e46e608d8f6815e1bb7f6 on web5819. Earlier after recordings and desktop stills at 058d0be387ad7400601065cc4a0998eec7e77ec8. Final committed clean HEAD bd24a99a27027b0f2d1176614d1edcd78b8f36ce; narrow light A/B and reload checked after this commit. Dark narrow captured during final followup integration, exact dirty snapshot unavailable; do not call it exact-final proof.

Real web app, native T3 preview, own tabs, desktop browser UA at CSS1440x900 and390x844, DPR2, light/dark. No servers started/stopped, no provider messages sent, no forge mutations. Existing stopped thread and fresh draft used. PR data read only from [GitCafe PR #25009](https://git.cafe/pingdotgg/t3code/pulls/25009), unrelated maintainer PR used solely as test data.

Fixtures: fixture.js overrides the existing writable activity query atom with sanitized deterministic T1/T2 review threads and unanchored C. Real panel controls and composer stores execute handoffs. Actual GitCafe diff, metadata, commits and failing check retained. No source/database/host mutations. driver.js documents the native tool action sequence, not a standalone browser driver.

Coverage: 6/12 matrix rows have complete before/after interaction recordings for their intended flow (I1,I3,I4,I5,I6,I7 with I7 expectation corrected to replacement). 4 partial rows: I2 repeat captured, no remove/readd; I8 baseline fresh draft only; I10 reload addition only; I12 baseline both selections/findings in both narrow themes, after selections only. I9 global PR route and I11 optional guide unverified. Total10/12 touched,6/12 complete at earlier implementation. These counts do not imply all were rerun at final HEAD.

Baseline A25 thenB26 loses A chip and duplicates inline PR. Earlier after retains both with one PR; Summary T1/T2, mixed selection/finding, unanchored+failed check, aggregate findings retain prior contexts. Ask/Explain replacement is intentional; old I7 append-all expectation is obsolete. Earlier repeat B/T2 duplicated generated text; final followup claims fix, but repeat not recaptured at final HEAD. Edited finding payload not verified. Final full page reload readback preserves sentinel,A25,B26,one PR (states.json + afterReloadVideo.mp4); no post-reload additional selection captured.

Four-config still pairs included. Narrow baseline contains notification transient; after light contains reconnect banner. Desktop pairs have open PR panel whose live metadata/diff changed during capture (eventually15files+576-88); full-frame diffs are noisy and cannot establish unchanged layout. Main merge also brought69files/1198insertions/1881deletions relative baseline. Pixel diffs use full raster, no masks: zero threshold amplified8x and binary maxRGB delta>16/255; statistics in diff-stats.json. They are diagnostic artifacts, not clean visual regression proof.

Friction: repeated node --watch restarts caused reconnects; native preview calls sometimes transport-failed or took minutes despite short action timeout. Baseline pairing cookie was displaced when pairing after on same localhost profile. Budget stopped further UI work. before390lightVideo shows full A/B; after390lightVideo records A and interrupted reopen, after390lightBVideo records successful B retry. after390darkVideo begins with A preattached. No missing evidence fabricated. Scripts contain no pairing URLs/tokens.

Final qualification: narrow light reconnect banner fails settled-frame requirement; narrow coverage is PARTIAL/UNVERIFIED for clean visual proof. Baseline narrow notifications are also unsettled. Desktop PNGs are saved at1280x800 raster (downscaled preview export), despite requested CSS1440x900; narrow exports780x1688. Do not claim native-resolution desktop pixel proof. Diffs completed but are diagnostic only; no unchanged-layout conclusion.
