# P1 — touch — dark
Linux x86_64; Playwright Chromium 148.0.7778.96, headless; DPR 1; font scaling 100% (UI 16px, code 13px, terminal 12px); viewport/hasTouch only; dark 1280×800 (N1: 980×800, 700×800, 390×844, then 1280×800); reduced motion; fixed browser clock 2026-11-10T12:00:00Z. Touch: pointer:coarse=true and any-pointer:coarse=true; M1 mouse: both false.

Before [4c36119](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63); After [30ab341](https://git.cafe/pingdotgg/t3code/commit/30ab3415f19f1c18e0ae2e6f0a86b302983a73a1).

Contact timestamps below are start–end, logged immediately before dispatch (never after the contact/wait). Video time is calibrated to the first visible pink marker at 25 fps; allow about 0.1s encoding precision.

| Step | Before contact / result | After contact / result |
|---|---|---|
| Chapter: outer panel centre and expanded edges; then exterior controls | 00:00.15 | 00:00.15 |
| outer offset 0 | 00:01.11–00:02.16; 540→560px (Δ+20); pointercancel; terminal labels 0→0 | 00:01.10–00:02.16; 540→620px (Δ+80); pointerup; terminal labels 0→0 |
| outer reverse 0 | 00:05.53–00:06.59; 560→540px (Δ-20); pointercancel; terminal labels 0→0 | 00:06.18–00:07.18; 620→540px (Δ-80); pointerup; terminal labels 0→0 |
| outer offset -6 | 00:07.93–00:08.94; 540→560px (Δ+20); pointercancel; terminal labels 0→0 | 00:08.55–00:09.56; 540→620px (Δ+80); pointerup; terminal labels 0→0 |
| outer reverse -6 | 00:10.29–00:11.29; 560→540px (Δ-20); pointercancel; terminal labels 0→0 | 00:10.91–00:11.95; 620→540px (Δ-80); pointerup; terminal labels 0→0 |
| outer offset 6 | 00:12.62–00:13.61; 540→560px (Δ+20); pointercancel; terminal labels 0→0 | 00:13.31–00:14.32; 540→620px (Δ+80); pointerup; terminal labels 0→0 |
| outer reverse 6 | 00:14.94–00:15.92; 560→540px (Δ-20); pointercancel; terminal labels 0→0 | 00:15.66–00:16.69; 620→540px (Δ-80); pointerup; terminal labels 0→0 |
| outer offset -10 | 00:17.25–00:18.24; 540→540px (Δ+0); pointercancel; terminal labels 0→0 | 00:18.07–00:19.09; 540→540px (Δ+0); pointercancel; terminal labels 0→0 |
| outer reverse -10 | 00:19.59–00:20.57; 540→540px (Δ+0); pointercancel; terminal labels 0→0 | 00:20.46–00:21.58; 540→540px (Δ+0); pointercancel; terminal labels 0→0 |
| outer offset 10 | 00:21.91–00:22.91; 540→540px (Δ+0); pointercancel; terminal labels 0→0 | 00:22.98–00:24.07; 540→540px (Δ+0); pointercancel; terminal labels 0→0 |
| outer reverse 10 | 00:24.25–00:25.26; 540→540px (Δ+0); pointercancel; terminal labels 0→0 | 00:25.45–00:26.47; 540→540px (Δ+0); pointercancel; terminal labels 0→0 |

| Before recording | After recording |
|---|---|
| [before-P1.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50cbfd8d76d2f1c9/before-P1.mp4)<br>[4c36119](https://git.cafe/pingdotgg/t3code/commit/4c361199f47f6ea32a2c14835df392640d0f7c63) | [after-P1.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b53dee8d25e20d12/after-P1.mp4)<br>[30ab341](https://git.cafe/pingdotgg/t3code/commit/30ab3415f19f1c18e0ae2e6f0a86b302983a73a1) |

Narration is composited below the app viewport; stills and diffs contain only app pixels. Every still passed reduced motion, network idle, fonts ready and two pixel-identical screenshots 500ms apart.

| Before | After | Diff0 | DiffT (>5/255 maximum RGB channel difference) |
|---|---|---|---|
| ![Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0b690f03d36467f0/before-P1.png) | ![After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/624d0d490c35549f/after-P1.png) | ![Diff0 ×255](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/015cfb42b4c21c63/P1-diff0.png) | ![DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5833a8bdffed9cf1/P1-diff5.png) |

[Before full probe log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/04577332c146ad79/before-P1.jsonl) · [After full probe log](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/de72e7ff25c5cafb/after-P1.jsonl)

[Before matching video frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/41b42b0b868807f3/before-P1-video-frame.png) · [After matching video frame](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40feeaefa7b232d8/after-P1-video-frame.png)

![Before / After / Diff0 / DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/50fb148c495cb43e/P1-sheet.png)

Changed pixels: exact=27142; threshold >5=26503.
