# Reproduce this evidence

AI-assisted; verified with the tests and tools listed above.

Before: [d1aeed2492](https://git.cafe/pingdotgg/t3code/commit/d1aeed249288585390dbac4fde5b54c35bd5fc06). After: [697288fc8e](https://git.cafe/pingdotgg/t3code/commit/697288fc8edfaa6cda2a731a0b4c080359635c34). Each side uses its own installed checkout, fresh isolated T3 home and schema. All fixture data is synthetic. No real-provider turn ran. Replay-ingest cases use the existing real Codex adapter against the local protocol replay fixture.

Start with `T3CODE_DEV_SEED=0 vp run dev --home-dir <isolated-home>` from each checkout. For remote native testing add `--host 0.0.0.0`. Never seed from a live home. The generic seed writes a minimal synthetic project with INSERT OR IGNORE and persists typed domain events through the real EventSink service. It does not change product code. Supply `<repo> <isolated-home>` to seed.mjs, seed-f02-final.mjs and seed-payload-final.mjs on each side. Run `node app-html.mjs <isolated-home>` after the first two seeds, then `node payload-html.mjs <isolated-home>` for the final compact payload fixture. The payload app uses the standard tool-result and size-changed protocol; it displays the actual received count. The F03 app draws a table from received structuredContent rows. TSV fixtures intentionally have a blank visualization, as in the reported condition; the restored text row is the feature under test.

Web uses shared T3 Browser tools, Chromium on Linux, no device emulation, DPR 2, root font 16px, 100% scaling. F02/F03/payload/P22 use CSS 1440×1000; F06 uses CSS 390×844. Images are full-frame at twice CSS dimensions. Theme: F03 light; all others dark. Hide the sidebar and thread details before comparisons. Run setup-browser.js after navigation: fixed Date of 2026-11-10T08:01Z, reduced motion, and model-picker privacy mask. Blur the editor before stills. Await fonts and network completion; take two frames 500ms apart. Every accepted pair was pixel-identical within a side (AE=0).

F02 uses fixture-f02-final; F03 fixture-f03; F06 fixture-f06; P11/P12/P14 fixture-payload-final. Open fold and relevant rows for stills. F02 and F06 recording drivers contain timed steps. P22 is a genuine thread.fork of fixture-f03 at run-f03 into fixture-inherited, made by rpc.mjs mode fork, then shown through the real client. p22-history.js records disclosure.

Diff0 uses ImageMagick `before after -compose difference -composite -evaluate multiply 16`. DiffT uses the same difference with `-threshold 5%` (12.75/255). All screenshots and both differences were opened and visually inspected. Recording contact sheets are one frame per second (native P09 two-second intervals), left-to-right then top-to-bottom; empty trailing cells are tile padding. Full-resolution recordings remain primary evidence.

P18: `python3 build-ingest-driver.py <repo> before|after`, then run generated ingest-<side>.ts with Node and TMPDIR pointing at scratch. Generated drivers extract the existing replay harness helpers from each checkout, do not run tests or contact a paid provider, submit identical native item/completed results, and await the adapter's emitted turn-item event. Four scenarios: {} and [] × app and ordinary. After ordinary {} falls back to content; ordinary [] remains []: this is a remaining behavior gap, not a pass.

P19/P20: mint a temporary isolated-server bearer with the CLI into a private file; `node rpc.mjs <repo> <backend-port> <token-file> boundary`. The client obtains a websocket ticket and calls the real orchestration.getTurnItem RPC. Logs contain only presence and byte counts, never image base64. boundary-notes.md explains truncation overhead and image metadata.

P21: `node cache.mjs <after-repo>` (see script argument defaults). The scratch script compares mobile cached/fresh feeds after result mutation, app removal, app replacement and ordinary append. The untouched sibling card must retain reference identity. Only the passing cache-after-final.log is acceptance evidence; earlier logs are harness-development attempts.

Native: cached Android development client fingerprint 832d41716ea2dfac7350605db3fd07914f87d6ef, installed with `vp run mobile:install android --session capture33347r3 --metro http://fs-56.tail131df4.ts.net:8081`; Metro from after checkout. Leased Pixel 9, Android API 36, 1080×2424 full screen, font_scale=1.0 (tool category “large”), dark system/app, OS animations off. P09 uses production work-log renderer against the same persisted final TSV fixture. A small black rectangle masks the model-picker area; no output or disclosure control is masked. Native recordings are after-only per the brief.

Native fault-injection scripts, if listed as unverified, are preparation only: seed-native-detail.mjs and native-detail-proxy.mjs forward ordinary HTTP/WebSocket traffic and delay getTurnItem six seconds; detail-error yields a typed synthetic failure, detail-unavailable yields item:null, and detail-success forwards the actual service response. No product source is modified. These scripts alone do not count as captures.

Native density/DPR was not collected; the returned native capture metadata reports physical resolution. Font scaling was separately read as 1.0.
