# Evidence for [#25828](https://git.cafe/pingdotgg/t3code/pull/25828)

Before [f120c51](https://git.cafe/pingdotgg/t3code/commit/f120c51134c6b5f20b42f51cda84e3e6da681a5f); after [49f116d](https://git.cafe/pingdotgg/t3code/commit/49f116db6e3cd1c4b3c2974c017ed1d5e3280609). Captured 2026-10-28 UTC. 13/13 required rows (13/26 total matrix rows) / 17 cells supplied; F02 PARTIAL; optional rows are NOT RUN. No commit, push, PR comment, paid agent turn or live database access.


## What else changed
Beyond copy/paste: shared iOS Sheet now bounds its body/footer (A02/A03/C01); Attach row home-indicator spacing changes (A01). Toolbar key widths/fades and fixed Dismiss/Paste positions change; Android clipboard glyph appears. Native selection uses a new system page. Minor close-button pixels differ in C01. Both versions briefly duplicate terminal rows during keyboard resizing; matched settled captures use reprinted fixtures. Stress outputs differ because baseline does not reach native completion. No pixel-equality claim; all differences remain visible in Diff0.


## Rendering conditions
Real T3 native app; agent-device shared pool; Linux remote PTY over Tailscale; fresh per-checkout T3CODE_DEV_SEED=0 state; System appearance/T3 Code palette; portrait, standard keyboard, Large text/fontScale 1. iPhone 18 Pro iOS 27.2: 1206×2622, 402×874 logical, DPR3; iPad Pro 13-inch (M5) iPadOS27.2: 2064×2752, 1032×1376 logical/full-width, DPR2; Pixel9 Android16/API36:1080×2424,411.43×923.43 logical,DPR2.625. Terminal10.5pt except F03 temporary11pt.

Safe areas: phone top62/bottom34; iPad top32/bottom20 logical points. Whole device retained; iPad full-width app column, not split. Native iOS baseline hardwareKeyRevision3/outputRevision1; head4/1. iOS baseline fingerprint17b69f1b9ef39579e9164f161936ff8243862252; headf51385ff3ece3a0f6fd944879582d3ff222d4084. Android native hardware revision2/output revision1; Android bothc43fd5f68d2fcec7b066246132f3185799689812. Installed using checkout mobile:install --session after prepared builds exited0. Metro JS comes from each pinned checkout.

Recording status clocks remain real time; normalized screenshot calls can temporarily change status chrome in clips. Diff inputs mask only the stated status region. Every accepted still passed two pixel-identical screenshots 500ms apart after UI settled. iOS normalize-status-bar did not eliminate charging glyph noise: uniformly mask native top180px(phone)/64px(iPad) for both diff inputs, retain raw. Android normalized status bar. No crop. Diff0: max-channel >0 with RGB absolute delta amplified32×, highlighted red channel floor120/background20; DiffT:max-channel >8/255, amplified32×. These are visual differences, not a test that nothing else changed.

Synthetic fixture: one project/thread, real writable Linux PTYs, public example.org URL, Unicode/blank row; exact clipboard of two logical lines joined by one LF, with no final LF. LINES snapshot32 rows, last sentinel31 and prompt32. F03 stream20Hz, BURST2000 titles/BEL, REPLAY4000. Fixture scripts print input/target/UTC and use typed production RPC.


## Reproduction and artifacts

[seed.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e44f335fd0f0e585/seed.mjs) [rpc.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d5260635ac0ceada/rpc.mjs) [terminal-fixture.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1dd0c35e55e252f3/terminal-fixture.mjs) [drive.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/49da57ea1b63213f/drive.py) [build-pair.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5a510c77b3ea5ed7/build-pair.py) [context-seed.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17ebcfb29ef086cc/context-seed.py) [scripts.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/77ff0cb11c6b174e/scripts.zip) [transcripts-redacted.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b185812c30e635bc/transcripts-redacted.zip) [reproduce.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7e3897fd2790753f/reproduce.md) [archive-manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/83bfc6601b1a3464/archive-manifest.json) [delta-manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ff7bf25f35533101/delta-manifest.json) [recording-timestamps.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c10b49e5bcbaa110/recording-timestamps.json) [cleanup-verification.log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b6eae69915e68b68/cleanup-verification.log)


## T01 / iPhone 18 Pro / dark — PASS

**Scripted interaction:** Scroll strip start → middle → end; CTRL → fixed Paste → ordinary x; Return; hide/show keyboard.

Head fixes Paste and Dismiss at strip edges, removes inline Paste, changes fades/key widths. Exact two-line clipboard executes PASTE_ONE then leaves second command intact; Return executes PASTE_TWO; modifier clears and x is ordinary input.

UTC recording-start command completed 2026-10-28T04:07:07.916244+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +4.7s before-T01-dark-start; +10.0s before-T01-dark-middle; +14.8s before-T01-dark-end; +31.0s before-T01-dark-paste; +38.1s before-T01-dark-done

UTC recording-start command completed 2026-10-28T04:01:50.105813+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +16.0s after-T01-dark-start; +23.6s after-T01-dark-middle; +29.1s after-T01-dark-end; +45.3s after-T01-dark-paste; +53.7s after-T01-dark-done

**Recordings, in before/after order:**

[before-T01-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cfa858b7a13a58cf/before-T01-dark.mp4)

[after-T01-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c5c94b3157a904ed/after-T01-dark.mp4)

![T01-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3584a20565c06725/T01-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-T01-dark-done.png, after-T01-dark-end.png, after-T01-dark-middle.png, after-T01-dark-paste.png, after-T01-dark-start.png, before-T01-dark-done.png, before-T01-dark-end.png, before-T01-dark-middle.png, before-T01-dark-paste.png, before-T01-dark-start.png

Video PTS review checkpoints: before-T01-dark.mp4 duration 51.17s; 0.0, 10.2, 20.5, 30.7, 40.9, 49.2s; after-T01-dark.mp4 duration 71.55s; 0.0, 14.3, 28.6, 42.9, 57.2, 69.6s


## T01 / iPhone 18 Pro / light — PASS

**Scripted interaction:** Scroll strip start → middle → end; CTRL → fixed Paste → ordinary x; Return; hide/show keyboard.

Head fixes Paste and Dismiss at strip edges, removes inline Paste, changes fades/key widths. Exact two-line clipboard executes PASTE_ONE then leaves second command intact; Return executes PASTE_TWO; modifier clears and x is ordinary input.

UTC recording-start command completed 2026-10-28T04:08:02.578879+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +4.7s before-T01-light-start; +46.9s before-T01-light-middle; +71.7s before-T01-light-end; +99.5s before-T01-light-paste; +111.4s before-T01-light-done

UTC recording-start command completed 2026-10-28T03:58:13.446972+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +6.2s after-T01-light-start; +11.5s after-T01-light-middle; +16.4s after-T01-light-end; +31.5s after-T01-light-paste; +39.3s after-T01-light-done

**Recordings, in before/after order:**

[before-T01-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/795c302b4587a801/before-T01-light.mp4)

[after-T01-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c3e40917bd82a944/after-T01-light.mp4)

![T01-light-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bcd67d9110fff0a8/T01-light-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-T01-light-done.png, after-T01-light-end.png, after-T01-light-middle.png, after-T01-light-paste.png, after-T01-light-start.png, before-T01-light-done.png, before-T01-light-end.png, before-T01-light-middle.png, before-T01-light-paste.png, before-T01-light-start.png

Video PTS review checkpoints: before-T01-light.mp4 duration 121.86s; 0.0, 24.4, 48.7, 73.1, 97.5, 119.9s; after-T01-light.mp4 duration 54.64s; 0.0, 10.9, 21.9, 32.8, 43.7, 52.6s


## T02 / Pixel 9 / dark — PASS

**Scripted interaction:** Scroll strip start → middle → end; CTRL → fixed Paste → ordinary x; Return; hide/show keyboard.

Pixel clipboard glyph renders. Both after recordings continue through the second-line and ordinary-x checkpoint; fixed actions persist while strip scrolls.

UTC recording-start command completed 2026-10-28T03:46:05.295915+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +4.3s before-T02-dark-v2-start; +9.0s before-T02-dark-v2-middle; +14.0s before-T02-dark-v2-end; +24.0s before-T02-dark-v2-paste; +31.2s before-T02-dark-v2-done

UTC recording-start command completed 2026-10-28T03:52:14.511525+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +4.8s after-T02-dark-v2-start; +10.0s after-T02-dark-v2-middle; +14.8s after-T02-dark-v2-end; +25.3s after-T02-dark-v2-paste; +32.4s after-T02-dark-v2-done

**Recordings, in before/after order:**

[before-T02-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c35374f49467d209/before-T02-dark-v2.mp4)

[after-T02-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1b2106f627e4d54e/after-T02-dark-v2.mp4)

![T02-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c97a902bfca384a5/T02-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-T02-dark-v2-done.png, after-T02-dark-v2-end.png, after-T02-dark-v2-middle.png, after-T02-dark-v2-paste.png, after-T02-dark-v2-start.png, before-T02-dark-v2-done.png, before-T02-dark-v2-end.png, before-T02-dark-v2-middle.png, before-T02-dark-v2-paste.png, before-T02-dark-v2-start.png

Video PTS review checkpoints: before-T02-dark-v2.mp4 duration 37.06s; 0.0, 7.4, 14.8, 22.2, 29.6, 35.1s; after-T02-dark-v2.mp4 duration 37.76s; 0.0, 7.6, 15.1, 22.7, 30.2, 35.8s


## T02 / Pixel 9 / light — PASS

**Scripted interaction:** Scroll strip start → middle → end; CTRL → fixed Paste → ordinary x; Return; hide/show keyboard.

Pixel clipboard glyph renders. Both after recordings continue through the second-line and ordinary-x checkpoint; fixed actions persist while strip scrolls.

UTC recording-start command completed 2026-10-28T03:46:50.700943+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +4.2s before-T02-light-v2-start; +9.1s before-T02-light-v2-middle; +14.1s before-T02-light-v2-end; +24.8s before-T02-light-v2-paste; +31.6s before-T02-light-v2-done

UTC recording-start command completed 2026-10-28T03:54:08.479938+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +6.0s after-T02-light-v2-start; +10.6s after-T02-light-v2-middle; +15.2s after-T02-light-v2-end; +24.7s after-T02-light-v2-paste; +31.8s after-T02-light-v2-done

**Recordings, in before/after order:**

[before-T02-light-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40c1e4fe36779dae/before-T02-light-v2.mp4)

[after-T02-light-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3fa0b0bdc68f5c39/after-T02-light-v2.mp4)

![T02-light-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44501618e90da2cc/T02-light-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-T02-light-v2-done.png, after-T02-light-v2-end.png, after-T02-light-v2-middle.png, after-T02-light-v2-paste.png, after-T02-light-v2-start.png, before-T02-light-v2-done.png, before-T02-light-v2-end.png, before-T02-light-v2-middle.png, before-T02-light-v2-paste.png, before-T02-light-v2-start.png

Video PTS review checkpoints: before-T02-light-v2.mp4 duration 40.36s; 0.0, 8.1, 16.1, 24.2, 32.3, 38.4s; after-T02-light-v2.mp4 duration 36.02s; 0.0, 7.2, 14.4, 21.6, 28.8, 34.0s


## N01 / iPhone 18 Pro / dark — PASS

**Scripted interaction:** Keyboard up; long-press visible TEXT; choose native Paste; Return.

Baseline has no new selection menu; head shows Paste/Select Text and actual two-line native Paste completion.

UTC recording-start command completed 2026-10-28T04:10:52.205160+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +3.3s before-N01-dark-v2-initial; +9.8s before-N01-dark-v2-menu

UTC recording-start command completed 2026-10-28T04:03:21.997504+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +3.3s after-N01-dark-v2-initial; +10.3s after-N01-dark-v2-menu; +17.1s after-N01-dark-v2-paste; +23.1s after-N01-dark-v2-done

**Recordings, in before/after order:**

[before-N01-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c162ea7b77d51cc5/before-N01-dark-v2.mp4)

[after-N01-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6ef5de1574475311/after-N01-dark-v2.mp4)

![N01-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/07932f0bb132eeb4/N01-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-N01-dark-v2-done.png, after-N01-dark-v2-initial.png, after-N01-dark-v2-menu.png, after-N01-dark-v2-paste.png, before-N01-dark-v2-initial.png, before-N01-dark-v2-menu.png

Video PTS review checkpoints: before-N01-dark-v2.mp4 duration 10.84s; 0.0, 2.2, 4.3, 6.5, 8.7, 8.8s; after-N01-dark-v2.mp4 duration 28.01s; 0.0, 5.6, 11.2, 16.8, 22.4, 26.0s


## N02 / iPhone 18 Pro / light — PASS

**Scripted interaction:** Dismiss app keyboard; long-press TEXT without focusing; choose Paste; Return.

Head menu is visible while keyboard is down. Paste subsequently focuses the keyboard and executes the payload. Baseline long-press focuses keyboard without new menu.

UTC recording-start command completed 2026-10-28T04:10:08.675297+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +3.5s before-N02-light-v2-initial; +10.4s before-N02-light-v2-menu

UTC recording-start command completed 2026-10-28T03:49:49.120913+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +3.3s after-N02-light-v2-initial; +9.5s after-N02-light-v2-menu; +15.0s after-N02-light-v2-paste; +21.9s after-N02-light-v2-done

**Recordings, in before/after order:**

[before-N02-light-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/841aca4399080150/before-N02-light-v2.mp4)

[after-N02-light-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3e31c88bbe9090d8/after-N02-light-v2.mp4)

![N02-light-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78308a5a6527effe/N02-light-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-N02-light-v2-done.png, after-N02-light-v2-initial.png, after-N02-light-v2-menu.png, after-N02-light-v2-paste.png, before-N02-light-v2-initial.png, before-N02-light-v2-menu.png

Video PTS review checkpoints: before-N02-light-v2.mp4 duration 11.78s; 0.0, 2.4, 4.7, 7.1, 9.4, 9.8s; after-N02-light-v2.mp4 duration 24.35s; 0.0, 4.9, 9.7, 14.6, 19.5, 22.4s


## S01 / iPhone 18 Pro / dark — PASS

**Scripted interaction:** Long-press → Select Text; select BEGIN → Copy → paste unsent draft; reopen → tap public URL → Safari Example Domain → return; Copy All → paste full snapshot into unsent draft; reopen → Done.

Head native page, Unicode/blank rows, wrapped link, actual external link result, substring draft and Copy All draft visible. Baseline native selection action absent. Head dense PTS checkpoints: ~10s selection, ~20s selected BEGIN, ~30s substring composer, ~50s Safari; later draft and Done retained.

UTC recording-start command completed 2026-10-28T04:11:07.883179+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +5.8s before-S01-dark-full-unavailable

UTC recording-start command completed 2026-10-28T04:03:53.883685+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +9.4s after-S01-dark-full-selection; +13.1s after-S01-dark-full-selection; +40.3s after-S01-dark-full-substring-draft; +44.2s after-S01-dark-full-substring-draft; +71.2s after-S01-dark-full-link; +75.2s after-S01-dark-full-link; +99.5s after-S01-dark-full-copyall-draft; +103.8s after-S01-dark-full-copyall-draft; +108.2s after-S01-dark-full-copyall-draft; +112.9s after-S01-dark-full-copyall-draft; +117.4s after-S01-dark-full-copyall-draft; +122.0s after-S01-dark-full-copyall-draft; +165.4s after-S01-dark-full-copyall-draft; +190.5s after-S01-dark-full-done

**Recordings, in before/after order:**

[before-S01-dark-full.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/668a0019df27d320/before-S01-dark-full.mp4)

[after-S01-dark-full.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/571933a831537f0d/after-S01-dark-full.mp4)

![S01-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/36f9b0bf21a5eda7/S01-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-S01-dark-full-copyall-draft.png, after-S01-dark-full-done.png, after-S01-dark-full-link.png, after-S01-dark-full-selection.png, after-S01-dark-full-substring-draft.png, before-S01-dark-full-unavailable.png

Video PTS review checkpoints: before-S01-dark-full.mp4 duration 7.05s; 0.0, 1.4, 2.8, 4.2, 5.6, 5.0s; after-S01-dark-full.mp4 duration 191.75s; 0.0, 38.3, 76.7, 115.0, 153.4, 189.7s


## S01 / iPhone 18 Pro / light — PASS

**Scripted interaction:** Long-press/selection/copy/Done; continuation opens link in Safari then Copy All into unsent draft.

Native selection page uses system light appearance. Actual result is in the link-copy continuation, not the rejected link-open still.

UTC recording-start command completed 2026-10-28T04:13:01.805157+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +5.8s before-S01-light-full-unavailable

UTC recording-start command completed 2026-10-28T03:50:29.132387+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +73.4s after-S01-light-selection; +77.6s after-S01-light-selection; +164.9s after-S01-light-substring-draft; +169.6s after-S01-light-substring-draft; +174.3s after-S01-light-substring-draft; +178.8s after-S01-light-substring-draft; +183.3s after-S01-light-substring-draft; +222.0s after-S01-light-substring-draft; +226.7s after-S01-light-substring-draft; +230.7s after-S01-light-substring-draft; +274.7s after-S01-light-link-open; +308.0s after-S01-light-safari; +319.5s after-S01-light-link-result; +342.6s after-S01-light-link-result; +423.8s after-S01-light-copyall-draft; +427.9s after-S01-light-copyall-draft; +432.0s after-S01-light-copyall-draft

UTC recording-start command completed 2026-10-28T03:54:57.758375+00:00; named screenshot command-completion offsets (wall clock, not video PTS): see actions transcript and storyboard PTS

**Recordings, in before/after order:**

[before-S01-light-full.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/33ab1c76a78bfa5b/before-S01-light-full.mp4)

[after-S01-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/72ff4688f1023a83/after-S01-light.mp4)

[after-S01-light-link-copy.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e6296548f2c2fa2d/after-S01-light-link-copy.mp4)

![S01-light-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/07fe1e55aa8eb4f1/S01-light-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-S01-light-copyall-draft.png, after-S01-light-link-result.png, after-S01-light-selection.png, after-S01-light-substring-draft.png, before-S01-light-full-unavailable.png

Video PTS review checkpoints: after-S01-light.mp4 duration 184.7s; 0.0, 36.9, 73.9, 110.8, 147.8, 182.7s; after-S01-light-link-copy.mp4 duration 164.83s; 0.0, 33.0, 65.9, 98.9, 131.9, 162.8s


## I01 / iPad Pro 13-inch (M5) / dark — PASS

**Scripted interaction:** Full-width iPad: menus with keyboard up/down; native Paste each state; Enter completes line two; Select Text → Copy All → paste unsent composer. Separate native shortcut-bar Paste → Enter.

Baseline has no new native selection menu and native shortcut Paste does not insert the payload. Head original menu clip supplemented by clean shortcut-v2 and native-paste-copy clips. New Copy All draft visibly contains copied terminal text; clipboard is independently logged as synthetic TEXT.

UTC recording-start command completed 2026-10-28T04:23:34.483699+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +3.6s before-I01-dark-initial; +10.5s before-I01-dark-menu-up; +16.8s before-I01-dark-shortcut-paste; +23.0s before-I01-dark-done; +32.6s before-I01-dark-menu-down

UTC recording-start command completed 2026-10-28T04:17:32.884443+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +3.7s after-I01-dark-initial; +10.7s after-I01-dark-menu-up; +17.3s after-I01-dark-selection; +30.5s after-I01-dark-shortcut-paste; +37.1s after-I01-dark-done; +41.9s after-I01-dark-done; +52.0s after-I01-dark-menu-down; +135.2s after-I01-dark-shortcut-v2-paste; +141.4s after-I01-dark-shortcut-v2-done

UTC recording-start command completed 2026-10-28T04:19:42.082669+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +6.0s after-I01-dark-shortcut-v2-paste; +12.2s after-I01-dark-shortcut-v2-done

UTC recording-start command completed 2026-10-28T04:59:36.923046+00:00; named screenshot command-completion offsets (wall clock, not video PTS): see actions transcript and storyboard PTS

**Recordings, in before/after order:**

[before-I01-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/640ead66c81c2067/before-I01-dark.mp4)

[after-I01-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fd8e17060540efb9/after-I01-dark.mp4)

[after-I01-dark-shortcut-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/89f0a82bb3f2d737/after-I01-dark-shortcut-v2.mp4)

[after-I01-dark-native-paste-copy.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e47eddf280ad4f9b/after-I01-dark-native-paste-copy.mp4)

![I01-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9b09d44a685cc40b/I01-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-I01-dark-menu-down.png, after-I01-dark-menu-up.png, after-I01-dark-shortcut-v2-done.png, after-I01-dark-shortcut-v2-paste.png, before-I01-dark-menu-down.png, before-I01-dark-menu-up.png

Video PTS review checkpoints: before-I01-dark.mp4 duration 35.48s; 0.0, 7.1, 14.2, 21.3, 28.4, 33.5s; after-I01-dark.mp4 duration 58.99s; 0.0, 11.8, 23.6, 35.4, 47.2, 57.0s; after-I01-dark-shortcut-v2.mp4 duration 15.07s; 0.0, 3.0, 6.0, 9.0, 12.1, 13.1s; after-I01-dark-native-paste-copy.mp4 duration 179.34s; 0.0, 35.9, 71.7, 107.6, 143.5, 177.3s


## A01 / iPhone 18 Pro / dark — PASS

**Scripted interaction:** LINES; hide/show keyboard three times; regenerate LINES after resizing; Attach → close.

Head Attach row sits higher above home indicator with keyboard down; fixed controls remain usable. Both sides can briefly duplicate terminal rows during keyboard resizing; accepted settled comparison is after identical reprint, with no ghost rows. Picker differences belong to shared Sheet change.

UTC recording-start command completed 2026-10-28T04:47:54.726659+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +3.4s before-A01-dark-v3-down; +8.9s before-A01-dark-v3-up; +23.0s before-A01-dark-v3-picker; +27.0s before-A01-dark-v3-picker

UTC recording-start command completed 2026-10-28T04:49:03.149919+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +4.1s after-A01-dark-v3-down; +11.3s after-A01-dark-v3-up; +35.2s after-A01-dark-v3-picker; +39.5s after-A01-dark-v3-picker

**Recordings, in before/after order:**

[before-A01-dark-v3.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/72daeb468f138087/before-A01-dark-v3.mp4)

[after-A01-dark-v3.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2e16fba3bf8c357a/after-A01-dark-v3.mp4)

![A01-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dfe82a513cd28807/A01-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-A01-dark-v3-down.png, after-A01-dark-v3-picker.png, after-A01-dark-v3-up.png, before-A01-dark-v3-down.png, before-A01-dark-v3-picker.png, before-A01-dark-v3-up.png

Video PTS review checkpoints: before-A01-dark-v3.mp4 duration 31.0s; 0.0, 6.2, 12.4, 18.6, 24.8, 29.0s; after-A01-dark-v3.mp4 duration 44.71s; 0.0, 8.9, 17.9, 26.8, 35.8, 42.7s


## A01 / iPhone 18 Pro / light — PASS

**Scripted interaction:** LINES; hide/show keyboard three times; regenerate LINES after resizing; Attach → close.

Head Attach row sits higher above home indicator with keyboard down; fixed controls remain usable. Both sides can briefly duplicate terminal rows during keyboard resizing; accepted settled comparison is after identical reprint, with no ghost rows. Picker differences belong to shared Sheet change.

UTC recording-start command completed 2026-10-28T04:48:51.619486+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +3.3s before-A01-light-v3-down; +7.4s before-A01-light-v3-down; +12.9s before-A01-light-v3-up; +27.2s before-A01-light-v3-picker

UTC recording-start command completed 2026-10-28T04:49:52.269281+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +3.2s after-A01-light-v3-down; +7.2s after-A01-light-v3-down; +14.1s after-A01-light-v3-up; +38.0s after-A01-light-v3-picker; +42.0s after-A01-light-v3-picker

**Recordings, in before/after order:**

[before-A01-light-v3.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3a8a515fdb249081/before-A01-light-v3.mp4)

[after-A01-light-v3.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/27aba1499847ff50/after-A01-light-v3.mp4)

![A01-light-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/da7e3812d44ec6fc/A01-light-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-A01-light-v3-down.png, after-A01-light-v3-picker.png, after-A01-light-v3-up.png, before-A01-light-v3-down.png, before-A01-light-v3-picker.png, before-A01-light-v3-up.png

Video PTS review checkpoints: before-A01-light-v3.mp4 duration 31.4s; 0.0, 6.3, 12.6, 18.8, 25.1, 29.4s; after-A01-light-v3.mp4 duration 47.04s; 0.0, 9.4, 18.8, 28.2, 37.6, 45.0s


## A02 / iPhone 18 Pro / dark — PASS

**Scripted interaction:** Actual captured 32 rows; half → full detent; select endpoints 2/3 and reverse; scroll to actual bottom; close/reopen; attach.

Baseline overflowing line picker cannot reach footer even after full expansion and scrolling; head bounded scroll body reaches LAST_VISIBLE_031 then row 32 ($), with Attach fixed and functional. Head attaches full 1–32 range. No invented hidden 300th line.

UTC recording-start command completed 2026-10-28T04:49:58.837373+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +3.4s before-A02-dark-v2-terminal; +7.4s before-A02-dark-v2-terminal; +12.7s before-A02-dark-v2-half; +16.6s before-A02-dark-v2-half; +22.2s before-A02-dark-v2-full; +32.3s before-A02-dark-v2-range; +41.8s before-A02-dark-v2-bottom; +46.1s before-A02-dark-v2-bottom; +135.5s before-A02-dark-v2-footer-unreachable

UTC recording-start command completed 2026-10-28T04:40:59.041255+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +4.7s after-A02-dark-v2-terminal; +11.8s after-A02-dark-v2-terminal; +19.4s after-A02-dark-v2-half; +24.2s after-A02-dark-v2-half; +31.2s after-A02-dark-v2-full; +45.1s after-A02-dark-v2-range; +56.1s after-A02-dark-v2-bottom; +60.6s after-A02-dark-v2-bottom; +78.0s after-A02-dark-v2-attached

**Recordings, in before/after order:**

[before-A02-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/409d72b517c3a646/before-A02-dark-v2.mp4)

[after-A02-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aff707b5f4e9b8e6/after-A02-dark-v2.mp4)

![A02-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b9660fde5bebc768/A02-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-A02-dark-v2-attached.png, after-A02-dark-v2-bottom.png, after-A02-dark-v2-full.png, after-A02-dark-v2-half.png, after-A02-dark-v2-range.png, after-A02-dark-v2-terminal.png, before-A02-dark-v2-bottom.png, before-A02-dark-v2-footer-unreachable.png, before-A02-dark-v2-full.png, before-A02-dark-v2-half.png, before-A02-dark-v2-range.png, before-A02-dark-v2-terminal.png

Video PTS review checkpoints: before-A02-dark-v2.mp4 duration 140.23s; 0.0, 28.0, 56.1, 84.1, 112.2, 138.2s; after-A02-dark-v2.mp4 duration 78.74s; 0.0, 15.7, 31.5, 47.2, 63.0, 76.7s


## A03 / iPad Pro 13-inch (M5) / light — PASS

**Scripted interaction:** Full-width iPad, centered native Sheet; half → full; range selection; reach actual final row; attach modest 2–3 range.

Head footer remains inside bounded Sheet. Baseline half-height footer absent; full-height short-range attach succeeds. Native Sheet width ~580 logical points; entire 1032-point app column retained.

UTC recording-start command completed 2026-10-28T04:25:26.747203+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +30.8s before-A03-light-terminal; +36.9s before-A03-light-half; +41.5s before-A03-light-half; +86.2s before-A03-light-full; +96.5s before-A03-light-bottom; +163.3s before-A03-light-half; +168.4s before-A03-light-half; +175.0s before-A03-light-full; +235.8s before-A03-light-range; +263.6s before-A03-light-bottom; +279.2s before-A03-light-attached

UTC recording-start command completed 2026-10-28T04:26:49.898365+00:00; named screenshot command-completion offsets (wall clock, not video PTS): see actions transcript and storyboard PTS

**Recordings, in before/after order:**

[before-A03-light.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6afe8dbaea7193c0/before-A03-light.mp4)

[after-A03-light-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3dea6f3fabd7df5a/after-A03-light-v2.mp4)

![A03-light-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/92101ce5b986c948/A03-light-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): before-A03-light-attached.png, before-A03-light-bottom.png, before-A03-light-full.png, before-A03-light-half.png, before-A03-light-range.png, before-A03-light-terminal.png

Video PTS review checkpoints: before-A03-light.mp4 duration 279.95s; 0.0, 56.0, 112.0, 168.0, 224.0, 278.0s; after-A03-light-v2.mp4 duration 121.99s; 0.0, 24.4, 48.8, 73.2, 97.6, 120.0s


## C01 / iPhone 18 Pro / dark — PASS (labelled baseline fixture)

**Scripted interaction:** Open context chip; half → full; horizontal pan long row; vertical scroll to final sentinel/Remove; close → reopen → Remove from draft.

Head uses actual A02 attachment. Baseline uses production insertComposerDraftContext with identical 32-line synthetic terminal context because baseline A02 footer is unreachable; this is explicitly a data fixture in the real app, not normal baseline attach proof. Both support full content, Remove and reopen. Matched half state has small close-control rendering difference.

UTC recording-start command completed 2026-10-28T04:53:27.666040+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +5.3s before-C01-dark-v2-half; +9.2s before-C01-dark-v2-half; +15.2s before-C01-dark-v2-full; +19.3s before-C01-dark-v2-full; +24.9s before-C01-dark-v2-horizontal; +58.5s before-C01-dark-v2-half; +65.3s before-C01-dark-v2-full; +71.0s before-C01-dark-v2-horizontal; +75.1s before-C01-dark-v2-horizontal; +85.3s before-C01-dark-v2-bottom; +89.4s before-C01-dark-v2-bottom; +324.9s before-C01-dark-v2-reopened; +329.1s before-C01-dark-v2-reopened; +338.3s before-C01-dark-v2-removed

UTC recording-start command completed 2026-10-28T04:43:52.386559+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +5.5s after-C01-dark-v2-half; +11.7s after-C01-dark-v2-full; +16.1s after-C01-dark-v2-full; +22.0s after-C01-dark-v2-horizontal; +155.8s after-C01-dark-v2-half; +163.2s after-C01-dark-v2-full; +169.0s after-C01-dark-v2-horizontal; +173.1s after-C01-dark-v2-horizontal; +183.0s after-C01-dark-v2-bottom; +187.1s after-C01-dark-v2-bottom; +244.4s after-C01-dark-v2-reopened; +248.8s after-C01-dark-v2-reopened; +259.8s after-C01-dark-v2-removed

**Recordings, in before/after order:**

[before-C01-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b2492d4c6045cb36/before-C01-dark-v2.mp4)

[after-C01-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/64e4eb01a5e4c51a/after-C01-dark-v2.mp4)

![C01-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a40b6e81d46f022/C01-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-C01-dark-v2-bottom.png, after-C01-dark-v2-full.png, after-C01-dark-v2-half.png, after-C01-dark-v2-horizontal.png, after-C01-dark-v2-removed.png, after-C01-dark-v2-reopened.png, before-C01-dark-v2-bottom.png, before-C01-dark-v2-full.png, before-C01-dark-v2-half.png, before-C01-dark-v2-horizontal.png, before-C01-dark-v2-removed.png, before-C01-dark-v2-reopened.png

Video PTS review checkpoints: before-C01-dark-v2.mp4 duration 339.08s; 0.0, 67.8, 135.6, 203.4, 271.3, 337.1s; after-C01-dark-v2.mp4 duration 260.56s; 0.0, 52.1, 104.2, 156.3, 208.5, 258.6s


## F01 / iPhone 18 Pro / dark — PASS

**Scripted interaction:** Real PTY 2000 OSC title updates + BEL → native BURST_DONE; type printf TYPE_OK → Return; Back to chat.

Head video PTS ~2s BURST_DONE, ~15s TYPE_OK, ~21s Back/chat; baseline ~2–15s blank and ~26s chat. Head shows BURST_DONE and TYPE_OK, then actual chat. Baseline native output remains blank through burst and typed command; Back returns to chat. Server bytes-written log is not counted as native completion. Long tail of recording is settled chat; inspect early workload frames.

UTC recording-start command completed 2026-10-28T04:13:12.680611+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +4.4s before-F01-dark-burst-done; +13.6s before-F01-dark-typed; +209.6s before-F01-dark-chat

UTC recording-start command completed 2026-10-28T04:21:07.313464+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +4.5s after-F01-dark-burst-done; +16.3s after-F01-dark-typed; +107.0s after-F01-dark-chat

**Recordings, in before/after order:**

[before-F01-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44326483b6e5d4a6/before-F01-dark.mp4)

[after-F01-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/24db522c3a061fe5/after-F01-dark.mp4)

![F01-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/53d47f7d8d9d63e7/F01-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-F01-dark-burst-done.png, after-F01-dark-chat.png, after-F01-dark-typed.png, before-F01-dark-burst-done.png, before-F01-dark-chat.png, before-F01-dark-typed.png

Video PTS review checkpoints: before-F01-dark.mp4 duration 167.54s; 0.0, 33.5, 67.0, 100.5, 134.0, 165.5s; after-F01-dark.mp4 duration 107.66s; 0.0, 21.5, 43.1, 64.6, 86.1, 105.7s


## F02 / iPhone 18 Pro / dark — PARTIAL — native overlap unverified

**Scripted interaction:** Populate retained history with 4000 title/BEL lines; reopen terminal; system dark → light → dark; type REPLAY_TYPE_OK; Return/Dismiss; Back attempt.

Head reaches REPLAY_DONE, successful typing and Back. Baseline remains at early REPLAY_00000–00019 after appearance requests; typing times out, runner watchdog blocks Back. This failed-state comparison intentionally differs in retained output/keyboard and theme progress; it cannot support layout parity. Native start/change/completion overlap was not independently instrumented, so no replay-overlap claim is made. Baseline recovered only by relaunch.

UTC recording-start command completed 2026-10-28T04:59:29.479521+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +103.2s before-F02-dark-v2-recovered

UTC recording-start command completed 2026-10-28T04:23:11.990982+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +24.8s after-F02-dark-recovered; +32.3s after-F02-dark-chat

**Recordings, in before/after order:**

[before-F02-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2b49cb459fec2132/before-F02-dark-v2.mp4)

[after-F02-dark.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0bfc326c47442b9b/after-F02-dark.mp4)

![F02-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/265f69bba61838a5/F02-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-F02-dark-chat.png, after-F02-dark-recovered.png, before-F02-dark-v2-recovered.png

Video PTS review checkpoints: before-F02-dark-v2.mp4 duration 151.28s; 0.0, 30.3, 60.5, 90.8, 121.0, 149.3s; after-F02-dark.mp4 duration 32.93s; 0.0, 6.6, 13.2, 19.8, 26.3, 30.9s


## F03 / iPhone 18 Pro / dark — PASS

**Scripted interaction:** Ongoing 20Hz real PTY stream; font 10.5 → 11 → 10.5; toolbar Clear; interrupt stream; clean; type FONT_OK; Return; hide keyboard; switch terminals out/back; Back.

Head video PTS ~3s stream, ~6s options, ~10/15s streaming after font changes, ~28s FONT_OK; baseline ~3–13s font/clear, ~20s FONT_OK, ~177s chat. Head FONT_OK is visible before and after remount, then chat. Baseline also reaches FONT_OK and remount/Back recovery; only the expected Attach-row spacing differs in the settled typed comparison. This proves observable streamed-output recovery only; no unresolved teardown race claim.

UTC recording-start command completed 2026-10-28T05:03:36.959396+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +23.1s before-F03-dark-v2-typed; +27.0s before-F03-dark-v2-typed; +166.9s before-F03-dark-v2-remounted; +170.6s before-F03-dark-v2-remounted; +178.4s before-F03-dark-v2-chat

UTC recording-start command completed 2026-10-28T04:51:04.962875+00:00; named screenshot command-completion offsets (wall clock, not video PTS): +34.8s after-F03-dark-v2-typed; +123.9s after-F03-dark-v2-remounted; +134.7s after-F03-dark-v2-chat

**Recordings, in before/after order:**

[before-F03-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/35bc29da31393c3f/before-F03-dark-v2.mp4)

[after-F03-dark-v2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/582b518705af9c68/after-F03-dark-v2.mp4)

![F03-dark-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/25494bc354a7a2ef/F03-dark-sheet.png)

Current settled checkpoints (raw archives preserve each full frame and its unmasked original): after-F03-dark-v2-chat.png, after-F03-dark-v2-remounted.png, after-F03-dark-v2-typed.png, before-F03-dark-v2-chat.png, before-F03-dark-v2-remounted.png, before-F03-dark-v2-typed.png

Video PTS review checkpoints: before-F03-dark-v2.mp4 duration 179.21s; 0.0, 35.8, 71.7, 107.5, 143.4, 177.2s; after-F03-dark-v2.mp4 duration 134.88s; 0.0, 27.0, 54.0, 80.9, 107.9, 132.9s


## Unverified optional rows (NOT RUN, not passed)

- O01 clipboard guard menu shapes: NOT RUN. Device clipboard setter can clear text/set an image; a PTY command can clear display and hide cursor/prompt using raw-mode fixture. A normal shell prompt is not an empty viewport. No native read-failure is implied. Outside required minimum/time budget.

- O02 read-only observer: NOT RUN. Separate isolated connection with `terminal:read` and no `terminal:operate`, existing session, terminal.observe; do not approximate by disabling a UI button. If permission setup not feasible, JS guard can be checked in H04 but label that harness-only. Outside required minimum/time budget.

- O03 exited/error/starting session: NOT RUN. `terminal.close` or shell exit/error in an isolated target and reopen explicit id with retained history if product allows. Use H04 for stable state injection if immediate navigation prevents it; starting normally needs driver coordination. Outside required minimum/time budget.

- O04 worktree-setup Sheet caller: NOT RUN. Real isolated worktree setup event sequence from project setup script, Details button in WorktreeSetupCard. No generic seed switch exists; can use H07 synthetic snapshot if running/failed stages cannot be seeded within budget. Outside required minimum/time budget.

- O05 short generic sheet and context alternatives: NOT RUN. Dev route `dev/components`, feedback page → New thread example; feed context requires a synthetic persisted message, not paid agent. Normal context recipes in inventory below; harness only if actual data cannot be seeded. Outside required minimum/time budget.

- O06 width, snapshot, accessibility variants: NOT RUN. Native app resize/rotation, terminal menu font range 6–14 pt, public TEXT, app/system accessibility settings; streaming shell prints AFTER_MENU only after menu open. Width is measured app column, not full iPad screen. Use H05 only for unobservable presentation guards. Outside required minimum/time budget.

- H01 UIKit suggested menu trees: NOT RUN. Native delegate harness calls menu construction with UIKit elements; normal app cannot control OS suggested-action tree. Missing system Paste with valid clipboard is especially relevant to N02; do not infer device behavior from harness. Outside required minimum/time budget.

- H02 native unavailable / creation or capture failure: NOT RUN. Inject resolver/Ghostty API failures in labelled native/RN harness; supported new native binary does not expose these toggles. Fixed accessory remains shared, native attach hidden in fallback; fallback gets no native onPaste. Outside required minimum/time budget.

- H03 legacy and streaming buffer shapes: NOT RUN. RN/native harness sets props/revision and feeds chunks. Current app's native module is revision 1; no setting switches a current build into legacy revision. Assert eventual retained text/size rather than a screenshot of prop plumbing. Outside required minimum/time budget.

- H04 paste errors, limits and temporal guards: NOT RUN. Inject controlled reader/write promises/native event and status in existing harness; clipboard read error and lifecycle timing are not reliable device fixtures. Existing NativeTerminalSurface and terminalPaste/input tests are functional evidence, not native capture. Outside required minimum/time budget.

- H05 presentation/lifecycle guards and input sources: NOT RUN. Native harness for responder/transition/deallocation; hardware fixture only counts if real device input is supported. iPad shortcut bar is already required in I01; simulator text injection is not Cmd+V. Keyboard restoration after Select Text is not promised by code. Outside required minimum/time budget.

- H06 adversarial teardown during unresolved mailbox parsing: NOT RUN. Deterministic native/Ghostty synchronization harness needed for the exact race. There is one pre-free tick, no fence guaranteeing parsing is done. F01 proves the settled case only; do not generalize it to this row. Outside required minimum/time budget.

- H07 arbitrary Sheet child data and attach limits: NOT RUN. Instantiate actual Sheet caller with synthetic contracts in a labelled RN native harness. Max selected chars is `COMPOSER_CONTEXT_TERMINAL_TEXT_MAX_CHARS` (64000 at this head), and composer capacity failure depends on existing draft contexts; do not inject via invented terminal output RPC. Outside required minimum/time budget.


## Review and rejected attempts

All accepted comparison sheets and recording storyboards were opened for visual inspection, with dense checkpoints for selection/link/copy and stress completion. Raw archives include earlier takes for audit; their presence does not make them accepted evidence. Reject before/after-A01-v2 mismatched/duplicated settled fixtures, original blank before-A02 fixture, old after-A03-light keyboard-overlay take, first I01 shortcut Undo/Help state, failed S01-light link-open/safari stills, initial C01-v2 chat-only still attempts. Final A01 uses v3 down state/reprinted lines; A02/C01/F03 use v2; iPad I01 is supplemented by shortcut-v2 and native-paste-copy. Keyboard resizing briefly replayed duplicate rows in both versions; settled fixture reprint excludes those transients from visual comparison.

Cleanup: all owned dev/Metro sessions stopped and six ports verified closed; baseline2/iPad-after2 devices closed, head iPhone lease already inactive on close. Prepared worktrees remain clean and belong to lead. Public archives omit bearer files and private pairing setup by design. Scratch removed only after public evidence upload.

F02 failed baseline state includes early replay text, incomplete appearance transition and keyboard up; it is a failure-state comparison, not a clean spacing/color comparison. Native parsing overlap and exact cause of runner timeout remain unverified. No general adversarial teardown guarantee is inferred.


## Raw capture archives

[raw-evidence-01.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/637e8ef352fe4bab/raw-evidence-01.zip)
[raw-evidence-02.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7bec8f5d49199c5e/raw-evidence-02.zip)
[raw-evidence-03.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5d9ebfcd1008534d/raw-evidence-03.zip)
[raw-evidence-04.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f511b3565489e154/raw-evidence-04.zip)
[raw-evidence-05.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e8cc25dac0c61520/raw-evidence-05.zip)
[raw-evidence-06.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c539f4025eba65ac/raw-evidence-06.zip)
[raw-evidence-07.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/42bf05527c7f9b56/raw-evidence-07.zip)
[raw-evidence-08.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/834ec66db059cb9e/raw-evidence-08.zip)
[raw-evidence-09.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2ea0f263d67e6d57/raw-evidence-09.zip)
[evidence-delta-01.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/319d589a8acf7758/evidence-delta-01.zip)
[raw-evidence-debug.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e79bf69242b137b4/raw-evidence-debug.zip)
[raw-evidence-metadata.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6dd4d8684eb591dc/raw-evidence-metadata.zip)


## Friction
FRICTION:
- tool | Android accessibility snapshot helper initially failed INSTRUMENTATION_FAILED; next lease snapshot worked | healthy pooled helper before lease
- runbook | Installer launched from a checkout refused device lease created from main checkout (DEVICE_IN_USE) | connect/open and install from same checkout as skill specifies
- tool | Pixel daemon became unavailable during second settled screenshot in light T02 | durable device daemon and recorder export
- model | First capture logger failed to serialize pathlib.Path, repaired before accepted stills | stringify arguments in logging helper
- tool | Both platforms intermittently returned Remote daemon is unavailable during valid leased operations; requests worked after waiting | gateway retries that preserve recording/session state
- brief | Lead serial prepare advanced into baseline iOS while authorized parallel baseline prepare was running | shared prepare lock or signal between serial setup and capturer
- tool | iOS AX bridge fell back to XCTest, changing cell roles to menu-item and introducing ambiguous duplicate labels | role-aware selectors and reliable AX bridge
- tool | iOS runner main-thread watchdog left reads draining for minutes; screenshots showed responsive chat despite stalled AX | bounded, cancellable accessibility reads
- tool | Worker disconnected during F03 export, losing the recording while retaining stills; clean repeat required | atomic recorder export and reconnect recovery
- model | Two scripts briefly overlapped on after iPhone, contaminating A01 dark still; rejected pair and retook | await process exit before the next device script
- model | Baseline BURST_DONE driver completion was initially described as visible before inspection; image review found blank native output and corrected the claim | inspect the native checkpoint before reporting completion
- tool | Timed swipe positional duration was removed from this CLI; switched to gesture pan | current command examples in the runbook
- infra | Baseline dev runner and head Metro exited during long session; restarted only owned processes with same isolated state | durable supervised development sessions with exit notifications
- tool | Native Open alert acceptance timed out despite visible prompt; direct observed Open button worked | reliable bounded alert acceptance
- model | Baseline F02 start raced prior record export and then used a missing post-restart PTY; resumed after export and explicitly reopened PTY | await export and re-open session after backend restart

