# Clipboard evidence handoff — issue [#15927](https://git.cafe/pingdotgg/t3code/issues/15927)

Evidence is PARTIAL, not matrix-complete. No PR, push, merge, live application DB write, or alternate browser automation was performed by this evidence agent. The requested fixture generator was committed separately. Browser-owned artifact writes use the Browser panel's normal artifact transport; the test backend used only the worktree `.t3`.

## Revisions and environment

- Base: [b5a226e49c](https://git.cafe/pingdotgg/t3code/commit/b5a226e49c).
- Original head: [6832feef2b](https://git.cafe/pingdotgg/t3code/commit/6832feef2b).
- F1 correction: [1bd91fd7c9](https://git.cafe/pingdotgg/t3code/commit/1bd91fd7c9).
- Final captured head: [6130ec9628](https://git.cafe/pingdotgg/t3code/commit/6130ec9628), fixture-only commit on the corrected implementation. A later namespace-import-only fixture correction does not alter captured source behavior.
- Linux x64; resumed browser: Chrome 154, T3 built-in Browser panel ONLY. Prior recordings were preserved from the previous agent-browser run; those scripts were inspected but never executed during this resumed step.
- Head frontend `http://localhost:6454`; base frontend `http://localhost:6455`, separate detached base worktree. Both frontends used the same sandbox backend port 14494, environment, thread and synthetic fixture. Origin differs. No baked VITE_HTTP_URL/VITE_WS_URL overrides.
- Browser tab: `tab_j_9c84fc63-ab04-45f5-9419-909e2067b251`. Backend state: `/home/ubuntu/wt/issue-15927/.t3`. Final runner retained in terminal session 36357. Base frontend session 18191. No shutdown by pattern.
- Canonical SQL: 226 statements, 11752 ASCII bytes/UTF-16 characters, final LF. SHA256 `662374c3ebd1e1d0ccd1401768cb7491e0a971aee703a7db50b81d6283da5fd7`.

## Actual status table

| Case | Before/base | Original head | Final captured corrected head |
|---|---|---|---|
| 1440 light select-all/copy/native paste | Preserved original before-copy recording reports first100 rows; resumed base fixed-coordinate replay contaminated by toast | PASS:11752 exact,226 statements | PASS:11752 exact,226 statements; row locator,toast dismissed |
| 1440 dark select-all/copy/native paste | Resumed base replay contaminated; clean gesture unverified | PASS:11752 exact,226 statements | PASS:11752 exact,226 statements; row locator,toast dismissed |
| 390 light select-all/copy/native paste | Resumed base replay contaminated; clean gesture unverified | FAIL:5199,100 statements; fresh resumed-narrow recording confirms F1 | PASS:11752 exact,226 statements; row locator,toast dismissed |
| 390 dark select-all/copy/native paste | Resumed base replay contaminated; clean gesture unverified | FAIL:5199,100 statements | PASS:11752 exact,226 statements; row locator,toast dismissed |
| Held downward drag through eviction | No qualified paired base recording | Preserved 1440 light/dark artifacts: exact11752 after max-scroll, anchor evicted | GAP: Browser-panel drag lacks held mouse controls |
| Held upward/backward drag | GAP | Preserved after-reverse:11751 exact source minus terminal LF; correct for gesture from end of line226 | GAP: no final-head held replay |
| 390 partial drag,release,scroll to evict,copy,paste | GAP | GAP | PASS:572 characters; native text captured before scroll equals native paste afterward; mounted rows101–227,scrollTop5928 |
| Editable focus owns select-all/copy | GAP | GAP | GAP; not captured |
| CRLF/CR/mixed/final-newline/Unicode cases | GAP | No suite execution | GAP; attempted data run stalled before results,interrupted; no success claimed |
| Pending same-length replacement | Static/reviewer harness only | Static/reviewer harness only | No real-app proof; GAP |
| Native Electron,WebKit,Firefox,remote/relay | GAP | GAP | GAP; native Electron unavailable on Linux headless |

Final four-cell JSON files contain the full copy-event text and actual native-pasted textarea text, not only a DOM selection string. `capture-status.json` and `recovered-oracles.json` independently compare saved outputs to the canonical fixture. Native keyboard Ctrl+C and Ctrl+V were used. Orange textarea is a temporary plain-text oracle, not application state. No messages were sent.

## Gesture and artifact interpretation

Canonical final recordings: `resumed-final-6130ec9628-{1440,390}-{light,dark}.mp4` with corresponding JSON and initial PNG. Each records row click,Ctrl+A,Ctrl+C,oracle click,Ctrl+V. Notifications were dismissed through the real UI before source interaction.

`resumed-final-partial-scroll.mp4` records a genuine locator drag from row1 to row12,release,then Browser-panel scroller scroll and copy/paste. Before-scroll native selection was the source substring at offsets48..620. Paste is the same572-character substring. The scroll tool performs scrollBy; it is not physical trackpad/wheel input. This proves scroll-after-release persistence, not held auto-scroll. No protected application selection method was called to fabricate a range; diagnostic React state was read without mutation.

F1: source pointerdown engages the hook; popup focus then cleared engagement on original head. `resumed-drag-diagnostic.json` includes the focus trace. Repeating the click with popup already focused could pass, so a single passing repeat click on original head was not accepted as proof of correction.

F2 remains UNCLASSIFIED: old narrow fixed x=scroller.x+50 may hit the gutter. Its empty copy is not proof of a regression. The supported Browser-panel locator drag produced real pointerdown/move/up and partial source selection but released at scrollTop0. It cannot hold at an edge through virtualization. Never substitute programmatic range+scroll for held drag evidence.

`resumed-fixed-*` is INVALID/CONTAMINATED: the update notification covered the fixed-coordinate source click. Its native page copies (copy event not prevented) are not product failures. `resumed-base-*` uses that same vulnerable fixed-coordinate procedure and is not accepted as clean before behavior. Preserved original `before-copy.mp4` is prior evidence, not a fresh independent base replay. Final-head files use row locators and are distinct; all failures remain preserved.

## Pixel differences

Eight diff maps are supplied: thresholds0 and16 for each viewport/theme. A pixel is marked iff its maximum absolute RGB-channel delta exceeds the stated threshold. `pixel-diffs.json` gives counts,percentages,and actual raster sizes. No cropping,masking,registration,or semantic exclusions were applied. T3's saved screenshot transport scales wide1440x720 images to1280x640; narrow390x720 images are780x1440. Each pair has identical raster dimensions.

These are diagnostic comparisons of `resumed-base-*` initial stills against final corrected stills, NOT clean visual regression assertions. Before has an update toast; after dismisses it. Wide source panel changes from539CSS px to359CSS px; narrow panel geometry stays342.195CSS px. Composer/sidebar state and relative-time labels can differ, and the base frontend uses a different localhost port. Source text,theme,viewport height,and backend seed are shared. Both sides remain visible in labeled `before-after-*` images. Diff percentages must not be attributed to the clipboard code.

## Reduced matrix disposition

- V01–V04: initial before/after stills and final select-all recordings present; paired held-drag requirement GAP; before gesture contaminated.
- D01/I01: final top-of-source keyboard select-all exact in four cells. Middle/bottom/context-menu copy not verified.
- I02/I05: one final forward partial drag + scroll-after-release eviction exact; backward/blank endpoints,scrollbar,offscreen return remain GAP.
- I03/I04: preserved original-head wide held-down/up artifacts qualified above; final and narrow held cases GAP.
- D02–D07,I06–I12,T01–T05,P01–P07,B01–B03: not fully executed in resumed verification. Existing paths were opened via real app panel-store action,not Files/chat/reveal UI entrypoint smoke. No attachment/review/element caller proof is claimed.
- B04: native React Native exclusion is static scope,not a runtime mobile pass.

## FRICTION

- Browser panel disconnected with `Preview automation client server-browser disconnected during evaluate`; later presses reported no automation host. Only the prescribed panel recovery was used; no alternate browser was launched.
- Head dev runner stopped during memory pressure/other maintainer checks. One owned restart restored Browser-panel operation and enabled all four successful final cells. Primary integrated replay had a separate pairing blocker; these sessions are not interchangeable.
- Toast contamination invalidated an apparent fixed-head failure and resumed base gestures. Original narrow F1 failures and corrected locator passes are kept separately.
- No exposed held mouse controls; native context menu cannot be operated as an ordinary DOM menu. Held drag and OS-specific clipboard paths remain explicit gaps.
- Data run stalled and was interrupted; no newline/runtime result file is supplied and no oracle pass is inferred.
- The requested60-minute budget ended; no further capture attempted. Evidence is not called complete. Artifacts and worktrees are preserved; only reproducible fixture source was committed.
