# Issue 24459 evidence capture

Final [7a347b85fe](https://git.cafe/pingdotgg/t3code/commit/7a347b85feac4d17da80b8e1ed7b760988307f9b) vs base [eea9895368](https://git.cafe/pingdotgg/t3code/commit/eea989536849e5b5049987ee24318b5a77326542). Evidence only; clean checkouts, no code/forge writes.

8/12 requested primary recordings captured: four web base/head pairs. Four native recordings unverified. 15/15 rows dispositioned: 2 verified deterministic boundaries, 6 partial, 7 unverified. 91 focused tests passed.

Primary settling: 58/64 adjacent pairs diff0=true; 64/64 threshold pass. 26/32 triplets exact settled; six provisional. 12 base/head descriptive comparisons retained, all diff0=false; eight exceed threshold due changed target row and captions. No masking/resizing was applied to source images. Preview itself produces 1280×800 desktop PNGs for 1440×900 CSS; narrow PNGs 780×1688 for 390×844 CSS DPR2. Videos 2880×1800 / 780×1688.

[All raw captures, scripts, fixtures, transcripts, diffs and inspection sheets](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/299583c0c91968cb/issue-24459-evidence.zip) · [Exact and threshold metrics](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/758f48ec35a4d01a/metrics.json) · [Raw capture/tool index](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/180a0eee05f8d7b8/index.json) · [Timestamped chapters](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/64787e2c7a6fd8ed/chapters.md)

## Paired recordings

### Web 1440 light

[Before recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/99553debd3c98ddb/base-1440-light.mp4) · [After recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3dbdf417749c05cc/head-1440-light.mp4)

![Before — web 1440 light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b824ea4a0623ecf3/base-1440-light-search-2.png)

![After — web 1440 light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eb6913b381c147d3/head-1440-light-search-2.png)

### Web 1440 dark

[Before recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cd4a577fbebb1aee/base-1440-dark.mp4) · [After recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/024661e5a35c3bd5/head-1440-dark.mp4)

![Before — web 1440 dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8dba44bb56275bad/base-1440-dark-search-2.png)

![After — web 1440 dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6fd14a4a8cf37665/head-1440-dark-search-2.png)

### Web 390 light

[Before recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44f6959d894ae03c/base-390-light.mp4) · [After recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/15b41f3906c953fc/head-390-light.mp4)

![Before — web 390 light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e3d0e59a7cfd97e4/base-390-light-search-2.png)

![After — web 390 light](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d2d01580bb9954cd/head-390-light-search-2.png)

### Web 390 dark

[Before recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bcba1a546362bb2c/base-390-dark.mp4) · [After recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e1bd61d8c20da595/head-390-dark.mp4)

![Before — web 390 dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1f4ca7c00c16d2e1/base-390-dark-search-2.png)

![After — web 390 dark](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9fb97ba354a43e09/head-390-dark-search-2.png)

## Matrix dispositions

| Matrix row | Status and evidence / exact remaining unverified reason |
|---|---|
| V1 | Partial: all four paired web variants show neutral Codex draft, display-name search, head target name/group, selection and reopen. Base cannot select undiscovered model: downstream unreachable recorded. Selected composer options visible as exposed; no extra descriptor was fabricated. Machine catalog retention has deterministic test proof, not a separate live option-selection chapter. Cold entry unverified (captures warm). |
| V2 | Partial: all four paired web variants show A→B→A with neutral selection; target absent B and restored A on head, absent throughout base. A root→W→root UNVERIFIED: no actual app-bound W fixture was created. |
| V3 | UNVERIFIED: no existing OpenCode A thread/pending-handoff fixture, configured command/keybinding or switching-lock integrated capture established. |
| V4 | UNVERIFIED: no compatible iOS simulator dev client was found in finished development/preview:dev builds; no new native build, Metro or EAS session started. Both themes and new-task/existing-thread owners unmet. |
| V5 | UNVERIFIED: same native client prerequisite; no real native cold project switch or app-bound worktree capture. |
| V6 | UNVERIFIED: same native prerequisite; Manage hidden new-task/existing-thread session ownership, reversal and lock capture unmet. |
| D1 | Partial: real CLI v2.1.4 A includes uni/medium-gpt, B omits. Focused project catalog, registry and resolver tests passed. Same-slug full metadata/options replacement replay UNVERIFIED. No live wire dump captured. |
| D2 | Verified deterministic boundary: passing registry test "scans a project's own models while another provider is selected" asserts model-only discovery without full O scan, then selecting O starts full scan. Not live request tracing. |
| D3 | Verified deterministic registry boundary in same test: Deferred holds O full scan while A scoped models return; B stays machine; target Codex does not read unrelated O catalog. Not driver coalescing proof. |
| D4 | Partial: passing driver tests cover warm reuse, failure cooldown/retry, timed-out and unsettled catalogs recovering. Genuine concurrent driver coalescing, success TTL expiry, explicit invalidation and unreadable→healthy transition supplemental replay UNVERIFIED; no external harness authored. |
| D5 | Partial: project/other fallback and resolver identity tests pass. Empty success TTL, disabled/error/v1 query-suppression matrix and whole-entry metadata equality supplemental assertions UNVERIFIED. |
| R1 | Partial: passing real service capabilities test uses prepopulated mock registry, worktree parent, scoped target and other-project exclusion. Full no-search/options transcript, live discovery, project-root/no-parent/not-found/error branches UNVERIFIED. |
| R2 | UNVERIFIED: no real delegateTask scoped acceptance/rejection replay with captured dispatch executed; generic passing provider/options tests are controls only. No agent launched. |
| R3 | UNVERIFIED: no real createThreads scoped A/B/W acceptance/rejection replay executed; no top-level thread created. |
| R4 | UNVERIFIED: ordered refreshed scoped reload and same-cwd recovery replay for delegateTask and createThreads not executed. |

15/15 rows have an explicit disposition; 2 deterministic rows verified, 6 partial, 7 unverified. 8/12 requested primary recordings captured (4 base/head web pairs); 4 native recordings unverified. No claim that all rows passed.

## Environment, scope and FRICTION

Evidence-only pass, UTC 2026-10-24. Browser authorized by user. No code, forge, PR, push, or merge writes.

Head: 7a347b85feac4d17da80b8e1ed7b760988307f9b, branch fix/issue-24459.
Base: eea989536849e5b5049987ee24318b5a77326542.
Host canonical marker: fs-01 (not a fleet target).
Head checkout: /home/ubuntu/wt/issue-24459. Base checkout: /tmp/issue-24459-before.
Both dev runtimes: T3CODE_PORT_OFFSET=7 vp run dev; server 13780, web 5740, own .t3 state. Never simultaneous. Captured terminal sessions: 55628, 4090, 42278, 22072; all stopped by Ctrl+C, ports confirmed closed. No EAS simulator or Metro started. Worktrees retained.

Focused command (head): vp test run apps/server/src/provider/ProviderRegistry.test.ts packages/provider-opencode/src/server/driver.test.ts packages/client-runtime/src/providerSkills.test.ts apps/server/src/mcp/OrchestratorMcpService.test.ts
UTC start 22:51:54; duration 34.35s; 4 files, 91 tests passed; exit 0. Test source names retained separately. Deterministic mocked service/driver tests, not live MCP transport or inference.

Fixture A /tmp/issue-24459-project, B /tmp/issue-24459-neutral. A has the attached synthetic opencode.jsonc; B has no config. CLI OpenCode v2.1.4 at /tmp/issue-24459-tools/node_modules/.bin/opencode. opencode models from A includes uni/medium-gpt; from B omits it. T3 custom models were not used. Endpoint 127.0.0.1:9 is deliberately unreachable. No turn submitted. Initially Codex GPT-6-Astra selected, Medium, Full access. Warm discovery captures; no cold latency claim.

T3 Preview tab tab_2_44186113-b917-4ceb-891a-628df5331a41, server Chromium renderer, devicePixelRatio 2, CSS freeform 1440x900 or 390x844, light/dark via prefers-color-scheme. Actual video pixel sizes and durations are in index.json. Native is not substituted with narrow web.

Reduced motion: injected capture-only CSS disables animation, transition, and caret blinking; native prefers-reduced-motion emulation is unavailable in Preview tools. Fonts awaited document.fonts.ready at every still checkpoint. Caption overlay identifies revision, viewport/theme, A/B project, warm state and step. UTC step/capture timestamps in index.json synchronize captions. No audio narration. Complete tool scripts are attached.

Screenshots are saved by native Preview, unmasked/untrimmed and unmodified. Preview internally scales captures (desktop 1440x900 CSS becomes 1280x800 PNG); exact-size raw raster requirement is therefore unmet. No local rescaling is used for metrics. Inspection contact sheets are explicitly thumbnails, not evidence originals. Three chronological PNGs per checkpoint, separated by at least 550ms plus tool time; compare-stills.py emits exact diff0 and threshold metrics separately.

Primary desktop clips close the sidebar on both revisions. Exploratory captures have sidebar differences: head one stopped server thread vs base two; not used as matching primary pairs. Other visible differences include revision caption, catalog content, base/head application title, different discovery warmup and unavoidable elapsed times. A and B are the same folders and config in both revisions. Browser local drafts persist across both environments; selecting A through the project UI repairs stale neutral drafts before each pass.

FRICTION: test-generated Vite temporary files restarted the first server; it was stopped and restarted before capture. Head discovery initially reported limited/empty before healthy retry; captures are warm. Base pairing link required entering the token and Continue; pairing tokens and private server logs are excluded. Add-project navigation briefly hit a detached element and a locator timeout; retry using fresh project state succeeded before recordings. Sidebar preference differed across environments, so desktop final-head clips were recaptured with it closed. PNG capture limits prevent exact requested raster sizes. FFmpeg full decode succeeds but reports non-monotonic DTS warnings from Preview originals; retain originals and do not claim latency/performance accuracy. Supplied pass2-commands.sh pins obsolete f519f17; it was read, not executed; equivalent focused command ran on verified final head. No compatible simulator dev client was returned for development or preview:dev; latest generic simulator results were static evidence profiles, not assumed compatible; no EAS session allocated. No alternative browser, real agent, or network inference was used.

No worktree-only fixture or actual app-bound W thread was created; no existing O A thread fixture established. Those matrix branches remain unverified. No supplemental real-service delegate/create replay was authored; generic tests are not a substitute.

Upload FRICTION: first batched upload exited 1 with stderr not retained by the caller; single-image retry, archive retry and remaining batch succeeded. No credentials or private server logs uploaded.