# Capture replay and review notes

Run: 2026-11-09, started 14:42 UTC. Synthetic databases created by each checkout's own server, always T3CODE_DEV_SEED=0 and explicit scratch --home-dir. No live database was read or copied. Base is 4f0b74e190; head is 8d4aa41a22d17d4c6e1b1d6d1b8044fedd78d4ae. No tracked files changed.

Web: T3 Browser panel, Chromium 156/Linux, no emulation, CSS viewport 1365×900, DPR 2, 100% zoom, default 16px text, dark. Full-surface tool PNGs are 1280×844 and recordings 1920×1266; neither is cropped. W1 paired stills use 2026-11-09 12:00 UTC frozen browser Date on both sides. Server clocks remain live. Later interaction retakes use live Date until settled stills because freezing it suppressed repeated toast/gesture timing. Their sidebar age labels differ from the original pair. These retakes establish behavior; only the original W1 paired PNGs are used for image diffs.

Native: pooled Pixel 9, Android API 36 x86_64 emulator, actual React Native viewport 411.428571×923.428571, scale/DPR 2.625, output 1080×2424, dark, default Android text size measured as fontScale 1.0. Matching dev client com.t3tools.t3code.dev, native fingerprint c85070cfc6ee338cf74e1616e8d32349e1b7f3e8. No browser renderer substitutes for native. The OS status clock remains live; JS Date is restored for interaction and frozen for end stills. This is a condition deviation, not an unverified owner-recovery outcome. M1's optional still pair crossed a status-clock minute and was rejected; its recording/contact sheet is supplied. M2 end pair is pixel-identical.

## Common seed S

Through UI (W1) or real RPC (other rows), start nonexistent fixture clone into a dedicated empty scratch destination. Retain the durable project after the real Repository not found failure. Await failed clone milestone, verify empty destination, stop only that tracked process group, and restart with the same isolated home. Successful retries use the real UI and real server. Never inject successful clone results. The companion RPC notes distinguish fresh requested ids from the old returned owner ids.

Source environment: 1b24427f-b0c1-4e56-ab35-e091904837f6; target: 78870aea-4dbe-4386-b0ca-cef94b040cd9. Both are separate isolated servers on this host and display the real hostname fs-21. The requested Proof Source/Proof Target labels were unavailable; ids and different server ports distinguish them. Source project proof-source-project is an actual clone of the public fixture repository. Each completed target fixture is removed through RPC before the next repository-link lookup, to avoid matching a previous successful clone.

## Recorded interactions (timestamps in seconds from each recording)

- W1 before, W1-before-capture.mp4: 0 clean starting thread; 0–4 sidebar Add project → Git URL; 4–10 type successful fixture URL and Enter; 10–13 replace destination with exact stranded missing-repo path; about 13–14 Ctrl+Enter; 14–16.39 Clone failed / Failed to create clone project visibly appears. Capture 15:45:03 UTC; RPC request 15:45:15.445 UTC fails because destination belongs to c506281a-7986-4123-9b14-a6050b418a2f. Only the idle tail was trimmed; the full source recording remains in scratch.
- W1 after, W1-after-r2.mp4: 0–8 same Add project/Git URL/URL/path/submit interaction; about 9–13 palette closes and the missing-repo owner draft appears; 13–21.64 master ref and ready composer persist. Requested cbb17d66-5506-4c18-b26a-3ea229a91b93 differs from returned 8e2a54a4-71e0-47c4-a27f-6a42424dac9b. The paired stills came from the original equivalent run, with both clocks frozen and empty initial sidebar data.
- L1, L1-after.mp4, 14:59:27 UTC: 0 missing-repository page for /new?prompt=Proof%20prompt&repo=octocat%2FHello-World; about 1 Clone; 2–3 old owner's draft and Proof prompt; 3–6 real clone completes; 6–14.63 settled prompt remains. Owner proof-L1-owner.
- L2, L2-after.mp4, 15:01:50 UTC: open /new?pr=octocat%2FHello-World%231&prompt=Proof%20prompt; about 1–3 Clone; 3–19.33 Cloning octocat/Hello-World notice, Open this link again when the clone finishes. Clone completion toast appears and expires. No PR checkout is invoked. Owner proof-L2-owner.
- A1, A1-after-r2.mp4, 15:42:23 UTC: 0 persisted source thread (not an eligible unpromoted draft); production openAddProjectToMachine invoked by the driver; 1–10 exact target-a1-r2 destination and None selected, visibly 0 of 1 / no files; about 10 submit; 11–15 old owner's fresh empty draft; 15–25.68 master/ready composer. Requested 24d92ae8-3af2-4b5a-9d76-9fab086bb0e7 → proof-A1-r2-owner. No .env.proof exists at target. The started-thread toolbar omits Add to another machine, so that physical entry-point interaction remains UNVERIFIED; this is explicitly a programmatic production-opener capture, with real app and server afterward.
- A2, A2-after.mp4, 15:22:38 UTC: 0 unsent Keep this proof draft; 1–4 BranchToolbar machine action → Add to another machine; 4–13 ignored-file query resolves, .env.proof selected, exact target-a2-r2 destination; about 15 submit; 16–22.01 old owner's draft with same text. Draft id 16837278-b9e7-4ca7-a077-e63b47b27533 remains the same while environment/project change to target/proof-A2-r2-owner. Real file copy verified byte-for-byte and SHA-256 d4a9a8e39270d0dbf5fcb33e205bedb15919ebc4e6524f62a15a0bba12a10a85. Fast clone/copy transitions were not artificially slowed.
- A3, A3-after-r3.mp4, 15:48:08 UTC: 0 source unpromoted draft; 1–20 machine menu / Add to another machine; 20–26 exact target-a3-r3 path with selected .env.proof; chmod 000 only after real listing; about 26 submit; 27–47 real read failure banner on Copy error owner; about 47–51 Dismiss warning; 51–57.22 banner stays cleared with same draft and owner. Requested 031188b1-c78d-4afd-8682-3655d7c79e10 → proof-A3-r3-owner. File mode restored 0644. No harness or mocked RPC response used.
- M1, M1-after-r3.mp4: 0 Choose project; + at 0.84; Git URL at 15.07; URL typing/Continue at 27.88–28.74; exact native-m1-r2 destination typed at about 64; Clone project at 66.34; old Native owner empty draft/master visible through 68.92. Server RPC 15:32:24.802 UTC: 40c034a8-a045-4ded-a519-d6663c9a4503 → proof-M1-r2-owner. Native owner draft atom snapshot confirms empty text and old owner. Gesture timestamps are tool telemetry; use the video for the rendered transition.
- M2, M2-after-r3.mp4: 0 project chooser without successful matching repository; about 7–14 prompt deep link → missing-repository Clone; prompt notice acknowledged; 14–32 destination form; exact native-m2-r2 path edited; about 40 Clone project/loading; 50–68.33 Prompt owner selected with Proof prompt, master and ready composer. RPC 15:35:32.560 UTC: cfd411b3-a1e2-42da-ad99-0ad2639b1fbc → proof-M2-r2-owner. Native draft atom snapshot confirms returned owner and prompt.

## Settled frames and review

For each uploaded app still, fonts/resource loading were awaited, focus/hover removed where needed, then two full-surface screenshots at least 500ms apart were compared with ImageMagick AE=0. Uploaded W1 before and after, L1, L2, A1, A2, A3 error and dismissed, and M2 end still passed. Native tools expose native resources rather than browser network-idle; completion was checked through screen, RPC milestone and draft state. Optional M1 end still was rejected because OS clock changed. Contact sheets are sampled video indexes, not claims of settled rendering. Every uploaded app still, diff and recording contact sheet was opened and visually reviewed. Transitional spinners/keyboard/path ellipses in recordings are real interaction states, not defective settled stills.

## What else changed in the W1 still pair

These are different application states, not a styling change. The broad diff includes expected state transitions and incidental focus:

- Clone confirmation, destination/path rows, navigation hints and Clone failed toast disappear.
- The modal's global dimming and blur disappear, changing the sidebar, workspace and top controls across many pixels.
- Breadcrumb/project avatar changes from server to missing-repo while New thread remains.
- The empty conversation message and bottom composer become the project draft hero and centered composer; or start without a project appears.
- Current checkout, master and Full access appear under the draft composer; workspace Select ref becomes master.
- Workspace editor action changes from Open in VS Code in the initial thread context to Open in editor for the recovered fixture project.
- Add project button focus/hover highlight differs. This is incidental capture state outside the ownership fix.
- The original paired still sidebar age remains now. Later retake videos show elapsed ages and horizontal scrolling of long destination inputs; these are incidental and are not used for the still diffs.

W1 Diff0: binary amplification of every nonzero pixel difference, 445944 changed pixels. DiffT: ImageMagick compare -fuzz 5%, red changed/black unchanged, AE 122812. The images are full-surface 1280×844 tool outputs.

## Scripts and privacy

launch.py, observer/RPC/milestone helpers, clock helper, transparent native RPC proxy, native CDP helper and contact-sheet generator were used during the run. fixture-driver.js, file-fixture.sh, native-driver.sh, trim-before.sh and diffs.sh consolidate the equivalent inline commands for replay; they were not executed as an integrated test suite. Raw logs and pairing credentials stay local. Uploaded transcripts contain only synthetic clone requests/results, draft context, fixture file checksum and rendering dimensions. Provider picker labels shown in the product do not identify the capture agent's private runtime.

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