# Evidence

**Visible differences outside the PR title:** destination B changes editor availability; native file-preview address bars and Settings connection text contain different local ports; Replay elapsed-time text differs. See the per-row “What else changed” notes. This is not a claim that nothing else changed.

Pinned comparison for [#26975](https://git.cafe/pingdotgg/t3code/pull/26975): [cc59f99e73](https://git.cafe/pingdotgg/t3code/commit/cc59f99e735300120a6fc74d9a0b9df7c98fa81c) → [2b7d6c3981](https://git.cafe/pingdotgg/t3code/commit/2b7d6c39817ffdd0f8b082ae8de2789952f33236).

**Coverage:** 19/38 matrix rows have Before/After captures and interaction recordings (19/32 affected, 0/6 controls). 13 affected rows and all 6 controls are unverified. Captured rows with incomplete subcases are identified below; this is not a complete matrix pass. 50 image pairs, two diff thresholds per pair, 48 recordings.

Web: Playwright Chromium 148.0.7778.96, headless Linux fs-35; no device emulation; DPR 1; font scaling 100%; reduced motion; frozen client Date 2026-11-02T20:45:00Z. Desktop: actual Electron 44.10.0 / Chromium 152.0.7977.169 under headless-desktop/Xvfb, ImageMagick import, no GPU, no device emulation, DPR 1, fonts 100%, reduced motion and same frozen client Date. Each frame below names its actual viewport and theme. Server/provider elapsed-time clocks were not frozen.

Stills wait for network idle and fonts and require two identical PNGs 500 ms apart. Before/After/Diff0/DiffT were visually inspected together in full-surface contact sheets; critical tooltip/native frames were also inspected at original size. Every recording was inspected using four sampled frames; no claim of continuous real-time playback review. Recordings include legitimate loading/route transitions. Diff0 marks every nonzero max-RGB-channel difference in full-strength magenta on a dim grayscale reference; DiffT marks max RGB channel difference >16/255 in orange. No crop; each source screenshot and recording retains its full viewport. Only matrix minimum viewport/theme combinations were captured; additional theme/width permutations are unverified.

Both logical machines are isolated servers on fs-35, so visible labels both read fs-35. Primary A is first in the menu; peer B is second. Transcripts record distinct environment IDs and RPC endpoints. All data is synthetic; four servers started with T3CODE_DEV_SEED=0 and fresh isolated homes. No live T3 database was seeded or read.

## Unverified rows and subcases

- **A09:** Thread-context fixture and real referenced chip not built within the budget.
- **A10:** Conflicting real thread-context fixture not built within the budget.
- **A11:** Attempted synthetic file upload; expected attachment removal control never appeared. No accepted attachment/race capture.
- **A12:** Dependent attachment fixture failed in A11; this row was not run.
- **A14:** Two overlapping opens with independently controlled request identities not built within the budget.
- **A15:** Pending manual/Auto reselection ordering not captured. Settled panel Auto reselection appears in A27, which does not prove this race.
- **A16:** Three-environment pick replacement harness not built within the budget.
- **A18:** Project-choice and route-abandonment variants during pending open not captured.
- **A23:** Actual Electron empty-draft reuse with pending Auto was not captured; A21/A22 cover fresh drafts only.
- **A26:** Pinned branch and existing-worktree return-to-Auto variants not captured.
- **A29:** Eight-machine long-label/icon fixture and resize/scroll interactions not built.
- **A31:** Missing-index, raced default-workspace await and invested-text reuse branches not captured. A19/A20 prove only normal reused/fresh triage paths.
- **A32:** Promotion/remap/send-in-flight/missing-target controlled completion harness not built.
- **C01:** Control not captured: priority affected-row evidence consumed the allotted capture budget.
- **C02:** Control not captured: priority affected-row evidence consumed the allotted capture budget.
- **C03:** Control not captured: priority affected-row evidence consumed the allotted capture budget.
- **C04:** Control not captured: priority affected-row evidence consumed the allotted capture budget.
- **C05:** Control not captured: priority affected-row evidence consumed the allotted capture budget.
- **C06:** Control not captured: priority affected-row evidence consumed the allotted capture budget.

- **A01 subcases:** Menu, typing, keyboard opening/dismissal and the listed palette/shortcut/headline/prompt-link entries are recorded. The initial NoProjectsHero/welcome creation click was used for setup but has no separate interaction recording.
- **A02 subcases:** Resource-checking label, Send warning and release-to-B are captured. A separate menu opened while already in Checking state was not exercised. Baseline has no Auto option and therefore cannot enter Checking.
- **A04 subcases:** Source menu, prompt/model preservation and destination state are captured; destination menu was not separately reopened.
- **A08 subcases:** Both weights zero is captured. Equivalent provider exclusion/overload/stale-resource filter variants were not separately seeded.
- **A17 subcases:** Settings disable and late completion are captured. Equivalent resource-refresh/provider-disable/weight-change transitions remain unverified.
- **A20 subcases:** Fresh real triage and A pin are captured. The Auto menu was not reopened on the resulting triage draft to demonstrate the explicit override option.
- **A21 subcases:** Actual Linux Electron main open-url event was injected through its Node inspector; the native bridge and preview were unmocked. Host OS URL association launch itself was not exercised.
- **A22 subcases:** Actual Linux Electron main open-file event was injected through its Node inspector; local asset serving and preview were unmocked. Host OS file association launch itself was not exercised.
- **A25 subcases:** Compact menu and Auto choice captured. After finishes on B; baseline transcript finishes on A with null balanced cache despite matching Auto pixels. Stable baseline destination, manual-pick sequence and resize transition remain unverified. Do not treat this pair as a passed routing regression.
- **A30 subcases:** Actual composer Send promotes to A before and B after, with locked machine and Replay output. Revisit used a driver with a sidebar-link-or-URL fallback, without logging which branch; sidebar-only revisit is unverified.

All other unrecorded equivalent filter/race cases and additional viewport/theme permutations remain unverified. No test substitutes for a capture. A05 fresh scratch used real filesystem/project creation with the original RPC briefly gated for visibility. A21/A22 are actual Electron captures, with main-process event injection explicitly distinguished from OS association launch.

## Per-row evidence


[Reproduction guide and script links](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c9183e1937c81ba/reproduction-guide.md) · [All authored drivers and synthetic fixtures](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/755fc3a15f13d387/all-authored-drivers.tar.gz) · [Verbatim ghdrop output for captures, diffs, recordings and scripts](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3286b0f9d5245be3/upload-manifest.md)

[Complete PR-body Evidence section](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d9be288e6bf5d6b2/Evidence.md)

| Row | Status | Sheet |
|---|---|---|
| A01 | CAPTURED; subcases unverified | [A01.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/098ce372af854d9b/A01.md) |
| A02 | CAPTURED; subcases unverified | [A02.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/749c0f53204d21e8/A02.md) |
| A03 | CAPTURED | [A03.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0528cad3f3a50179/A03.md) |
| A04 | CAPTURED; subcases unverified | [A04.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e3e34060ebe5a5fb/A04.md) |
| A05 | CAPTURED | [A05.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e9b55d8c4c1903bb/A05.md) |
| A06 | CAPTURED | [A06.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d3067c07335d15fa/A06.md) |
| A07 | CAPTURED | [A07.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/29b4cb44662a256f/A07.md) |
| A08 | CAPTURED; subcases unverified | [A08.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1111bd03dc751c3c/A08.md) |
| A09 | UNVERIFIED | [A09.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eecd762cb4931c0d/A09.md) |
| A10 | UNVERIFIED | [A10.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1804402d5c84927a/A10.md) |
| A11 | UNVERIFIED | [A11.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/684850c8623b0f70/A11.md) |
| A12 | UNVERIFIED | [A12.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4fe61edbe39700c/A12.md) |
| A13 | CAPTURED | [A13.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/487819f5d3365830/A13.md) |
| A14 | UNVERIFIED | [A14.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de1c5f84f7158ea7/A14.md) |
| A15 | UNVERIFIED | [A15.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b0a02eccac1eebb0/A15.md) |
| A16 | UNVERIFIED | [A16.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1dd9ac7f81fedce6/A16.md) |
| A17 | CAPTURED; subcases unverified | [A17.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ea47bf4077c0ab20/A17.md) |
| A18 | UNVERIFIED | [A18.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/004febbfe2c4a44b/A18.md) |
| A19 | CAPTURED | [A19.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/653c3261e27a6e1d/A19.md) |
| A20 | CAPTURED; subcases unverified | [A20.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2a5241fc2f981bb4/A20.md) |
| A21 | CAPTURED; subcases unverified | [A21.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aca0ebe08d85e32f/A21.md) |
| A22 | CAPTURED; subcases unverified | [A22.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3e4b44ac2387a82d/A22.md) |
| A23 | UNVERIFIED | [A23.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aeb18887d1cc9204/A23.md) |
| A24 | CAPTURED | [A24.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d6e17b0097b0ec75/A24.md) |
| A25 | CAPTURED; subcases unverified | [A25.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d1dbaa7bff556f25/A25.md) |
| A26 | UNVERIFIED | [A26.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d94f4437866618e/A26.md) |
| A27 | CAPTURED | [A27.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d244660f6d0fe003/A27.md) |
| A28 | CAPTURED | [A28.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/713d63f030916074/A28.md) |
| A29 | UNVERIFIED | [A29.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/58048902c48d36ac/A29.md) |
| A30 | CAPTURED; subcases unverified | [A30.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/704e7249556f183d/A30.md) |
| A31 | UNVERIFIED | [A31.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e68a82478c0f726b/A31.md) |
| A32 | UNVERIFIED | [A32.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/49d5f3dfeec99d33/A32.md) |
| C01 | UNVERIFIED | [C01.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d85219227b037e82/C01.md) |
| C02 | UNVERIFIED | [C02.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/16b0af950ea439b5/C02.md) |
| C03 | UNVERIFIED | [C03.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/94322a63810631cf/C03.md) |
| C04 | UNVERIFIED | [C04.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8a9638e4b7b0f732/C04.md) |
| C05 | UNVERIFIED | [C05.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8fd404670923f8d0/C05.md) |
| C06 | UNVERIFIED | [C06.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bdc61b442a8eb5e5/C06.md) |

What else changed per captured row:

- **A01:** Auto item and scale glyph appear in the scratch menu and selected label; the extra row changes menu height, selection position and shadow. Entry recipes include direct palette, New thread in… → No project, shortcut, headline fallback and prompt link.
- **A02:** Checking machines… appears in composer and details, Send warns Checking machine resources, release resolves B. B exposes Open in VS Code.
- **A03:** After keeps A and displays Auto balance in composer/details; baseline keeps the machine label. No peer scratch open.
- **A04:** After moves the same typed draft/model to existing B and shows Auto balance. Open in editor becomes Open in VS Code on B.
- **A05:** After shows Preparing machine on hovered Send, reduces Send opacity, then moves to newly created B scratch and becomes ready. Baseline preparing keyframe deliberately retains the open machine menu to show Auto is absent; after keyframe has closed it to hover Send. This overlay difference is an explicit action fork, not unrelated rendering drift. B enables Open in VS Code.
- **A06:** Injected scratch-open error toast, generic unresolved-Auto Send warning, explicit Auto retry, then manual A recovery. Final recovery differs by one one-level border pixel; threshold 16 yields zero.
- **A07:** Injected B host-resource lookup failure yields Auto balance unavailable; Send warns Choose a machine to continue; manual A recovery. Baseline cannot select Auto and does not click Send in the paired supplement.
- **A08:** Zero eligible weights retain Auto balance rather than unavailable, show the generic no-resource Send warning, then manual A recovery. Settled still is pixel-identical at threshold zero.
- **A13:** Auto preparation tooltip/disabled Send appears only after; manual A clears busy and late real B completion leaves manual A. Baseline pending keyframe shows its menu with Auto absent. Final pair has eight one-level border pixels; threshold 16 yields zero.
- **A17:** After begins Auto preparation, then actual Settings disables Auto while ChatView stays mounted. Returning and releasing B leaves A. Settings screenshots differ in local B connection port (7953 before, 7853 after).
- **A19:** Existing empty draft is reused and pinned on A by real triage preparation before the pending B open completes. After pin and late completion remains A. Pending Auto label differs; triage/settled pixels match at zero threshold.
- **A20:** Real command-palette triage prepares a fresh draft on A with playbook text and triage headline. Both palette and settled captures match at zero threshold; transcript after records the explicit manual pin.
- **A21:** Before event: ordinary draft can show machine versus Auto and different editor availability. Actual native HTTP preview loads maximized on A; restoring panel reveals pinned A chat. Settled and pin-inspection pairs match at zero threshold.
- **A22:** Before event: machine versus Auto label. Native file preview loads synthetic HTML through A. Preview address bar differs by local backend port 16173 before versus 16073 after and generated asset URL text. These are fixture-origin differences outside the PR title; content and pin stay A.
- **A24:** Wide grouped git project chooses existing B directly on both sides, with no scratch RPC. Both menu and settled pairs match at zero threshold.
- **A25:** Compact combined Run on / Workspace menu and settled Auto pixels match at zero threshold. Routing-state uncertainty is called out above; identical labels alone do not establish the destination.
- **A27:** Measured inline/full details menu adds Auto above machines and moves Workspace rows down. Manual B then Auto A and selected-row Auto reselect are recorded.
- **A28:** Measured popover/full details menu adds Auto; manual B then Auto A, reopening and dismissing the card work. Auto labels differ in card and composer. The closed-card keyframe intentionally includes the Toggle thread details tooltip on both sides.
- **A30:** After Send runs on B, before on A. Auto affordance disappears and machine locks. B enables Open in VS Code. Replay Worked for text differs (1.9s before, 2.1s after), and a few sidebar text-edge pixels differ on revisit. No claim of globally identical timing.

Cleanup: all captured process IDs are stopped; all used ports closed; preview tabs closed; before worktree removed; after worktree unchanged. No PR body, commit, push or forge review/check state was changed or queried.

FRICTION:
- tool | The first browser-control process disappeared mid-batch; incomplete captures were discarded and retaken with a detached controller. | Start the persistent controller detached and persist fixture IDs.
- tool | Initial synthetic RPC errors used string request IDs and did not settle; corrected numeric IDs and retook those rows. | Preserve transport ID types in harness replies.
- runbook | Native file launch required open-file, plus Xvfb authority and compositor repaint synchronization. | Document native entry/capture setup.
- tool | Synthetic attachment fixture did not produce its expected removal control; A11/A12 remain unverified. | A known-working file/image fixture driver.
- brief | Building, pairing, native setup, retakes, review and upload left matrix race/layout/control rows without captures inside 90 minutes. | A reusable fixture runner or narrower prioritized matrix.
