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

**Additional observation for review:** after A1/A2, a synthetic wheel event arrives after gestureScrollEnd and the log reports indicator=true without navigation. Do not claim that the indicator always disappears. Tiny raster differences outside the intended tab/route behavior remain in A3, A6 and A5-left; counts are disclosed below.

**Coverage: 11/18 matrix rows recorded, 24 full-surface recordings.** All nine required rows have before/after recordings (A5 has two reset subcases). P1 is the permitted harness fallback, so eight required rows use real production data paths and P1 verifies only the production caller with injected tabs. Optional A2 and S2 are included. No physical macOS momentum claim.

Before: [73fb49d0b3][B]. After: [0263c024fb][A]. Each real app was built from its own checkout. Databases and renderer profiles are fresh, synthetic, and separate; every dev server used T3CODE_DEV_SEED=0. The same 24-file project and first 11 open file tabs are seeded through app-created draft identity plus the shipped persisted panel envelope. Back history exists in every desktop row; forward history additionally exists for A4/A5-right. No source edits or commits.

**Rendering environment:** Linux x86_64; desktop Electron 44.10.1 / Chromium 152.0.7977.169 through headless-desktop on Xvfb 1920x1080, --no-sandbox --disable-gpu, ImageMagick full-window stills and ffmpeg x11grab 30fps recordings. Web: Playwright Chromium headless shell 148.0.7778.96, browser video and screenshots. Both: no device emulation, DPR 1, font scaling 100% (root 16px), dark theme, reduced motion, JavaScript Date frozen at 2026-11-10 00:00 UTC during captures. Per-row viewport follows below. Composer buttons are identically hidden to exclude private runtime attribution. No provider turns were started.

**Input and timing:** all phased gestures are visibly labelled SYNTHETIC CDP mouse, speed 800, preventFling=true. A6 and W1 vertical steps use real Playwright mouse.wheel. Diagonal claims use actual delivered deltas. Steps below use the visible event-clock timestamps; desktop approximate video markers are also given. The event clock starts about 0.55s before desktop video; web encoder trimming can shift player timestamps, so use the visible log clock. Raw events preserve both.

**Settled frames and diffs:** fonts and network settled, reduced motion enabled; every selected per-side final-frame pair 500ms apart has zero differing pixels. Overlay is hidden identically for comparisons after recording. Diff0 is amplified to white for every nonzero absolute RGB delta (gain 255). DiffT is white where max absolute RGB delta > 8/255. Black pixels match. Sheets contain Before | After above Diff0 | DiffT; whole surfaces are preserved, with scaled previews in sheets. Final-frame PNGs, raw event JSON, video timelines, measured geometry and earlier attempt events are in capture-data.zip. The final selected sheets and recording timelines were visually inspected; earlier obstructed/loading attempts were replaced.

**What else changed:**

- A1/A2/A4/P1 have large final-frame diffs because the before app actually navigated to Settings while the after app retained its draft/PR route. The Settings dialog is the demonstrated history destination. These are intended route outcomes, not unrelated frame drift.
- A7 ends on different tab-strip positions because the exact diagonal tie now follows deltaX. Other visible content is stable apart from tiny control raster differences.
- A3/A6 each differ in 8 pixels around the right-side controls, all below the 8/255 threshold. A5-left differs in 2 pixels in the blurred tab area behind Settings, also below threshold. These residual differences are not attributed to a product change.
- A5-right, S1, S2 and W1 final frames are identical at zero threshold; nothing else changed in those final frames.
- Recordings intentionally show different side/SHA captions and naturally different event timing/coalescing. A1/A2 after additionally report the residual indicator event described above. Those overlays are excluded from final-frame diffs. P1's shared credential error is a harness limitation, not a new regression.

**A1 — interior left edge — 1280×800, dark.**

Refreshed A1 replaces the earlier A1 recordings, frames and diffs, including A1 inside the original capture-data.zip. Before [73fb49d0b3](https://git.cafe/pingdotgg/t3code/commit/73fb49d0b3a61bff74aebc362fc6c17d6c0d39be) and after [0263c024fb](https://git.cafe/pingdotgg/t3code/commit/0263c024fb575767d8affba5af2aa19c35a2af4c) were built and run as real Electron apps in their own checkouts. Each revision was captured twice with separate fresh databases and Electron profiles; T3CODE_DEV_SEED=0 throughout. Synthetic data only; no provider turns.

The driver waits for the rendered fixture01 token, active-file breadcrumb, fonts and loading completion, then pins every scrollable breadcrumb descendant/ancestor, including the truncated active label, to (0,0). Smooth scrolling and anchoring are disabled for those nodes. A scroll listener holds only those offsets; the gesture's tab-strip viewport remains free. Start/end nested-scroller geometry is logged. The seeder explicitly rehydrates the production panel store before reload to prevent a pending persist from overwriting the fixture.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 1280×800; dark; DPR 1; no device emulation; font 100%/16px. Exact versions: Electron 44.10.1 / Chromium 152.0.7977.169; Xvfb 1920×1080; --no-sandbox --disable-gpu; reduced motion; fonts settled; JavaScript Date frozen at 2026-11-10 00:00 UTC. Strip clientWidth 72, scrollWidth 1652, max 1580.

Input: visibly labelled SYNTHETIC CDP mouse, speed 800, preventFling=true; start scrollLeft 150, one phased left 600px gesture. Before on-screen steps: 1.558s start, 2.404s General route, 5.284s settled final. After: 1.537s start, 2.359s gestureScrollEnd, 4.595s settled final. The repeat runs give the same route outcomes: before navigates back to General; after stays in the draft at scrollLeft 0. Recordings retain the visible STEP overlay; comparison frames hide it identically. Event-clock timings differ from player time. These refreshed after runs log no indicator=true; the earlier A1/A2 observation above refers to the superseded A1 capture and unchanged A2. Universal indicator clearance and physical macOS momentum remain unverified.

Repeatability between fresh runs: before Diff0 **0**, DiffT **0**, maximum channel delta **0/255**; after Diff0 **8**, DiffT **0**, maximum **5/255**. The eight after pixels are control raster edges at x1194–1260, y40–49; the breadcrumb itself is identical. Every run also has two final screenshots 500ms apart with **0** differing pixels. All **579** decoded recording frames were inspected in 20 chronological contact sheets, with full-resolution samples and all settled surfaces/diffs checked before upload.

Cross-revision Diff0: **699,120** pixels; DiffT: **306,510** pixels. The broad difference is the intended Settings-versus-draft route outcome. Diff0 maps every nonzero max absolute RGB delta to white (gain 255); DiffT maps max delta >8/255 to white. Black pixels match.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [A1-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4e9920e7f5f30226/A1-before.mp4)<br>[73fb49d0b3](https://git.cafe/pingdotgg/t3code/commit/73fb49d0b3a61bff74aebc362fc6c17d6c0d39be)<br>![Before: settled General after unintended back navigation](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b87c782362278da/A1-before.png) | [A1-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4f6f30541c45b1c5/A1-after.mp4)<br>[0263c024fb](https://git.cafe/pingdotgg/t3code/commit/0263c024fb575767d8affba5af2aa19c35a2af4c)<br>![After: settled draft retained with tab strip at zero](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7b07fcf5e242fb4f/A1-after.png) | ![A1 Diff0: every nonzero RGB delta amplified to white](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e1277ab6d1472f87/A1-diff0.png) | ![A1 DiffT: max absolute RGB delta above 8/255](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3c2bc07bbcfe562d/A1-diff8.png) |

![A1 comparison: Before and After above amplified Diff0 and thresholded DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/339fe1150176431c/A1-sheet.png)

Repeat runs: [A1-before-repeat.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7357696b81cab996/A1-before-repeat.mp4), [A1-after-repeat.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/580c96b5343de14a/A1-after-repeat.mp4); settled repeat frames: [A1-before-repeat.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f34730d6221d3999/A1-before-repeat.png), [A1-after-repeat.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/511ef3a35b0b1814/A1-after-repeat.png). Repeatability masks: before [Diff0](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/15b57c8378e7857e/A1-before-repeatability-diff0.png) / [DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/083712546c91a8b3/A1-before-repeatability-diff8.png); after [Diff0](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dfdf8c90a8a8b455/A1-after-repeatability-diff0.png) / [DiffT](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d02edbd6a6e3c4be/A1-after-repeatability-diff8.png). Repeatability sheets: [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a2e437bea83324f7/A1-before-repeatability-sheet.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/22cd3e2953e78985/A1-after-repeatability-sheet.png).

[A1-capture-data.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/25a8d20c3b1e61d4/A1-capture-data.zip) contains all four recordings, both 500ms screenshots per run, selected frames, raw events, geometry, masks, checksums and build/state provenance. [A1-frame-review.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f934e0a403bc573e/A1-frame-review.zip) contains the inspected every-frame sheets and full-resolution samples. [A1-runtime-logs-redacted.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/700c7c776928a934/A1-runtime-logs-redacted.zip) preserves textual runtime/build logs with credentials and private runtime metadata redacted. Updated A1 recipe: [reproduce-A1.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/017abddd42aafe4d/reproduce-A1.md); driver/helpers are in [all-scripts.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6f326c4b6dc28d25/all-scripts.zip).

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

**A3 — interior movement both directions — 1280×800, dark.**

Before on-screen steps: 1.636s interior left 0.2max; 3.216s fresh interior right 0.2max; 5.948s settled final. Approximate video markers: 1.00s interior left 0.2max; 2.58s fresh interior right 0.2max; 5.31s settled final.

After on-screen steps: 1.602s interior left 0.2max; 3.134s fresh interior right 0.2max; 5.853s settled final. Approximate video markers: 1.00s interior left 0.2max; 2.53s fresh interior right 0.2max; 5.25s settled final.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 1280×800; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 72, scrollWidth 1652, max 1580.

Both sides move left and right inside the strip and return to 1027, with no navigation. Before consumes wheel input; after logs native gesture begin/end and defaultPrevented=false. Diff0: 8 pixels; DiffT: 0 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [A3-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1bd0cd2b1fb953fa/A3-before.mp4)<br>[73fb49d0b3][B] | [A3-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/266d5a9f08a79623/A3-after.mp4)<br>[0263c024fb][A] | ![A3-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b5c6b3314b8d8b27/A3-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![A3-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5ae40c58bc8954cf/A3-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

![A3-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/529ab1b810805667/A3-sheet.png)

**A4 — interior right edge — 1280×800, dark.**

Before on-screen steps: 1.573s start max-150; phased right 600px; 5.268s settled final. Approximate video markers: 1.00s start max-150; phased right 600px; 4.70s settled final.

After on-screen steps: 1.569s start max-150; phased right 600px; 4.636s settled final. Approximate video markers: 1.00s start max-150; phased right 600px; 4.07s settled final.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 1280×800; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 72, scrollWidth 1652, max 1580.

Before navigates forward to Appearance at about video 1.83s; after remains in the draft at scrollLeft 1580. Diff0: 697,109 pixels; DiffT: 549,411 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [A4-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c8318dc0a8c12801/A4-before.mp4)<br>[73fb49d0b3][B] | [A4-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a2489933370f96b8/A4-after.mp4)<br>[0263c024fb][A] | ![A4-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/64236e2cf1e02703/A4-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![A4-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/55aa701dfa7a6fc1/A4-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

![A4-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6c17577798b89870/A4-sheet.png)

**A5L — A5 left edge-origin control — 1280×800, dark.**

Before on-screen steps: 1.538s start 0; outward left 600px; 4.926s settled final. Approximate video markers: 1.00s start 0; outward left 600px; 4.39s settled final.

After on-screen steps: 1.577s start 0; outward left 600px; 5.007s settled final. Approximate video markers: 1.00s start 0; outward left 600px; 4.43s settled final.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 1280×800; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 72, scrollWidth 1652, max 1580.

Both sides intentionally navigate back to General at about video 1.82s. Edge-origin navigation remains enabled. Diff0: 2 pixels; DiffT: 0 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [A5L-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/419194ee9ee87ba1/A5L-before.mp4)<br>[73fb49d0b3][B] | [A5L-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4d65f6bc95fff501/A5L-after.mp4)<br>[0263c024fb][A] | ![A5L-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4828d593624ca949/A5L-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![A5L-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/db16886b397ac81b/A5L-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

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

**A5R — A5 right edge-origin control — 1280×800, dark.**

Before on-screen steps: 1.541s start max; outward right 600px; 5.100s settled final. Approximate video markers: 1.00s start max; outward right 600px; 4.56s settled final.

After on-screen steps: 1.574s start max; outward right 600px; 5.186s settled final. Approximate video markers: 1.00s start max; outward right 600px; 4.61s settled final.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 1280×800; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 72, scrollWidth 1652, max 1580.

Both sides intentionally navigate forward to Appearance at about video 1.81–1.82s. Edge-origin navigation remains enabled. Diff0: 0 pixels; DiffT: 0 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [A5R-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f2df625b06187f1c/A5R-before.mp4)<br>[73fb49d0b3][B] | [A5R-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6e2663cd5b46e531/A5R-after.mp4)<br>[0263c024fb][A] | ![A5R-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/32d9d6e846c191e1/A5R-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![A5R-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5fc344678705bcf5/A5R-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

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

**A6 — vertical mouse wheel and clamp — 1280×800, dark.**

Before on-screen steps: 1.555s mouse.wheel dx0 dy100; 2.341s mouse.wheel dx0 dy100; 3.124s mouse.wheel dx0 dy-50; 3.909s set right clamp; mouse.wheel dy100; 6.525s settled final. Approximate video markers: 1.01s mouse.wheel dx0 dy100; 1.80s mouse.wheel dx0 dy100; 2.58s mouse.wheel dx0 dy-50; 3.37s set right clamp; mouse.wheel dy100; 5.98s settled final.

After on-screen steps: 1.552s mouse.wheel dx0 dy100; 2.336s mouse.wheel dx0 dy100; 3.119s mouse.wheel dx0 dy-50; 3.903s set right clamp; mouse.wheel dy100; 6.536s settled final. Approximate video markers: 1.01s mouse.wheel dx0 dy100; 1.79s mouse.wheel dx0 dy100; 2.58s mouse.wheel dx0 dy-50; 3.36s set right clamp; mouse.wheel dy100; 5.99s settled final.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 1280×800; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 72, scrollWidth 1652, max 1580.

Both sides move 790 -> 890 -> 990 -> 940; the driver then sets right clamp 1580, where dy100 causes no movement and defaultPrevented=false. No navigation. Diff0: 8 pixels; DiffT: 0 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [A6-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c5b019c9bdac2e24/A6-before.mp4)<br>[73fb49d0b3][B] | [A6-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a134a78c456d987c/A6-after.mp4)<br>[0263c024fb][A] | ![A6-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e6dc3e3ba4a133fc/A6-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![A6-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e363140706e0160b/A6-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

![A6-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17b51e43d61170b4/A6-sheet.png)

**A7 — horizontal dominance and exact diagonal ties — 1280×800, dark.**

Before on-screen steps: 2.045s phased diagonal target DOM dx-60 dy20; 3.754s phased diagonal target DOM dx-40 dy40; 5.420s phased diagonal target DOM dx40 dy-40; 8.767s settled final. Approximate video markers: 1.51s phased diagonal target DOM dx-60 dy20; 3.22s phased diagonal target DOM dx-40 dy40; 4.88s phased diagonal target DOM dx40 dy-40; 8.23s settled final.

After on-screen steps: 2.067s phased diagonal target DOM dx-60 dy20; 3.744s phased diagonal target DOM dx-40 dy40; 5.392s phased diagonal target DOM dx40 dy-40; 8.724s settled final. Approximate video markers: 1.51s phased diagonal target DOM dx-60 dy20; 3.19s phased diagonal target DOM dx-40 dy40; 4.83s phased diagonal target DOM dx40 dy-40; 8.16s settled final.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 1280×800; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 72, scrollWidth 1652, max 1580.

Each subcase resets to 790. Horizontal-dominant input scrolls left on both sides. Exact opposing ties deliver dx=-4/dy=4 and dx=4/dy=-4: before translates vertical input, ending the two ties at 830 and 750; after scrolls natively, ending at 750 and 830. No navigation. No tie harness is needed. Diff0: 494 pixels; DiffT: 374 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [A7-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f83d68b643997f47/A7-before.mp4)<br>[73fb49d0b3][B] | [A7-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a793a5527baab613/A7-after.mp4)<br>[0263c024fb][A] | ![A7-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b01d63061130db27/A7-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![A7-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/01f7c251ddbff1a1/A7-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

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

**S1 — narrow chat sheet — 390×844, dark.**

Before on-screen steps: 1.533s start 150; phased left 600px; 4.608s settled final. Approximate video markers: 1.00s start 150; phased left 600px; 4.07s settled final.

After on-screen steps: 1.533s start 150; phased left 600px; 4.588s settled final. Approximate video markers: 1.00s start 150; phased left 600px; 4.05s settled final.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 390×844; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 115, scrollWidth 1656, max 1541.

Both sides reach scrollLeft 0 and keep the draft. After uses native horizontal scrolling. The production dialog suppresses history navigation independently. Diff0: 0 pixels; DiffT: 0 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [S1-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/00052affb9f6c06c/S1-before.mp4)<br>[73fb49d0b3][B] | [S1-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/368b1bfa379e88e9/S1-after.mp4)<br>[0263c024fb][A] | ![S1-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/30879dda9c73f24f/S1-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![S1-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/994ce9b23b587081/S1-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

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

**P1 — PR-page HARNESS — 1280×800, dark.**

Before on-screen steps: 1.610s start 150; phased left 600px; 5.041s settled final. Approximate video markers: 1.05s start 150; phased left 600px; 4.50s settled final.

After on-screen steps: 1.564s start 150; phased left 600px; 4.641s settled final. Approximate video markers: 1.00s start 150; phased left 600px; 4.08s settled final.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 1280×800; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 72, scrollWidth 4114, max 4042.

HARNESS: 51 injected PR surfaces in the real /pull-requests caller. Before navigates back to General at about video 1.91s; after remains on /pull-requests at scrollLeft 0. Both start with the visible no-working-credential error. Real forge-data integration is unverified. Diff0: 673,945 pixels; DiffT: 271,090 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [P1-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/65d8f52f4e00374a/P1-before.mp4)<br>[73fb49d0b3][B] | [P1-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/af267c0af97d2d5b/P1-after.mp4)<br>[0263c024fb][A] | ![P1-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b0ddff3af754812d/P1-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![P1-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d87a8de25399e063/P1-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

![P1-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0afc3cd711049cc2/P1-sheet.png)

**W1 — web horizontal and vertical scrolling — 1280×800, dark.**

Before on-screen steps: 1.032s horizontal phased gesture left 300px; mouse; preventFling=true; 2.540s vertical mouse wheel dy100; 4.127s settled final.

After on-screen steps: 1.020s horizontal phased gesture left 300px; mouse; preventFling=true; 2.503s vertical mouse wheel dy100; 4.085s settled final.

Environment for both captures: Playwright Chromium 148; 1280×800; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 185, scrollWidth 1652, max 1467.

Both sides scroll 800 -> 500 horizontally, then vertical dy100 translates to 600; route stays in the draft. Before consumes horizontal wheel events; after leaves them native. Web has no custom desktop history-swipe integration. Diff0: 0 pixels; DiffT: 0 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [W1-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4705be8ea2586d91/W1-before.mp4)<br>[73fb49d0b3][B] | [W1-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c3c968f7cf6950b4/W1-after.mp4)<br>[0263c024fb][A] | ![W1-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c21de14201b7598c/W1-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![W1-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/74a37adcc5146528/W1-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

![W1-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/71dca92144219a3d/W1-sheet.png)

**A2 — whole strip from rightmost start (optional) — 1280×800, dark.**

Before on-screen steps: 1.538s start max; phased left max+150px; 6.529s settled final. Approximate video markers: 1.00s start max; phased left max+150px; 5.99s settled final.

After on-screen steps: 1.529s start max; phased left max+150px; 5.989s settled final. Approximate video markers: 1.00s start max; phased left max+150px; 5.46s settled final.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 1280×800; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 72, scrollWidth 1652, max 1580.

Before navigates back to General at about video 3.25s; after remains in the draft at scrollLeft 0. After again logs indicator=true following a wheel after gestureScrollEnd; indicator clearance is not established. Diff0: 699,060 pixels; DiffT: 306,472 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [A2-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4ab403f024e3a08e/A2-before.mp4)<br>[73fb49d0b3][B] | [A2-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d4d419bb85804d14/A2-after.mp4)<br>[0263c024fb][A] | ![A2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9d8ffd9c1ca407d5/A2-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![A2-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/59e67386d221344b/A2-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

![A2-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1472d97a8cc0b8f6/A2-sheet.png)

**S2 — medium chat sheet (optional) — 900×800, dark.**

Before on-screen steps: 1.540s start 150; phased left 600px; 4.595s settled final. Approximate video markers: 1.00s start 150; phased left 600px; 4.06s settled final.

After on-screen steps: 1.566s start 150; phased left 600px; 4.609s settled final. Approximate video markers: 1.00s start 150; phased left 600px; 4.05s settled final.

Environment for both captures: Electron 44 / Chromium 152 / Xvfb; 900×800; dark; DPR 1; no device emulation; font 100%/16px. Strip clientWidth 174, scrollWidth 1652, max 1478.

Both sides reach scrollLeft 0 and keep the draft in the production medium-width sheet. Diff0: 0 pixels; DiffT: 0 pixels.

| Before | After | Diff0 | DiffT (>8/255) |
|---|---|---|---|
| [S2-before.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/02f6117861bf5278/S2-before.mp4)<br>[73fb49d0b3][B] | [S2-after.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a143c6c1996b3309/S2-after.mp4)<br>[0263c024fb][A] | ![S2-diff0.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d036e455438fef28/S2-diff0.png)<br>[73fb49d0b3][B] → [0263c024fb][A] | ![S2-diff8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fd87da0f75f30542/S2-diff8.png)<br>[73fb49d0b3][B] → [0263c024fb][A] |

![S2-sheet.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/29ec8aaafe71eb22/S2-sheet.png)

**Rebuild materials and supporting evidence.** The links below preserve ghdrop's emitted Markdown verbatim. all-scripts.zip includes the capture/seed/inspection scripts plus all 24 synthetic source files; the individual scripts are also linked. reproduce.md gives setup and replay order. capture-data.zip contains full-resolution settled frames, raw events and timeline sheets.

[all-scripts.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6f326c4b6dc28d25/all-scripts.zip)

[capture-data.zip](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/369a87d19049af0d/capture-data.zip)

[capture-desktop.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7a7d92034d717175/capture-desktop.mjs)

[capture-suite.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c26d384e6b1d2054/capture-suite.py)

[capture-web.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/af7a9dbb59b40ccb/capture-web.mjs)

[check-x.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/506135c78f1f5c18/check-x.py)

[desktop-eval.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/809e71f95d9ee5d4/desktop-eval.mjs)

[finish-onboarding.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f8b6b4c3250045dc/finish-onboarding.js)

[generate-index.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8802bdc7add8bf9c/generate-index.py)

[inspect-code.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c04b76a5c1f973b4/inspect-code.js)

[inspect-scroll.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/99096f3ff2b2aa30/inspect-scroll.js)

[inspect.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/43fb97f6080f854e/inspect.mjs)

[launch-desktop.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1215328f5f552001/launch-desktop.py)

[launch-web-captures.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a6a6a2c92f54895b/launch-web-captures.py)

[owned-processes-stopped.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d55a13ec0cca9e96/owned-processes-stopped.json)

[package-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9c91c95b4a07a29e/package-evidence.py)

[prepare-web.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4a9618802ec2c1d8/prepare-web.js)

[process-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1ae0ed0b4dbd4d0e/process-evidence.py)

[reload-desktop.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5b9120fdcca6d7b0/reload-desktop.mjs)

[reproduce.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/42edc987441b902c/reproduce.md)

[resize-desktop.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fc759065d17f998b/resize-desktop.py)

[seed-desktop.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4877c94a298fa5a3/seed-desktop.mjs)

[seed-files.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5b82aa3f8aad95ce/seed-files.py)

[seed-panels.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7384ec0e0cfa35db/seed-panels.js)

[seed-pr-panel.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ddf64078503903dd/seed-pr-panel.js)

[skip-welcome.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aed3698633271ccd/skip-welcome.js)

[stop-owned.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c12a9d78ec0391ef/stop-owned.py)

[try-pr.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fcb3cc16c46d3c6d/try-pr.mjs)

[upload-evidence.py](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4490fd611d53b306/upload-evidence.py)

[upload-output.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e75e26bedc323ddf/upload-output.md)

**Unverified / not additionally captured:**

- P1 real forge-data integration: no working GitHub credential in the isolated environment. The explicitly labelled harness recording is supplied instead.
- A1/A2 after indicator clearance: indicator=true follows the synthetic end event; route preservation is verified, universal indicator dismissal is not.
- R1 resize/maximize/active reveal, E1 empty/fitting, G1 ctrl/zero/unit guards, T1 mixed decoration/light theme: optional recordings were not produced; priority was the nine required rows plus A2/S2. No test or description substitutes for a capture.
- N1 absent/closed/embedded parent: matrix says no additional capture needed; not demonstrated here.
- H1 nonproduction prop/mode combinations: no additional harness capture; not demonstrated here.
- M1 physical macOS momentum: unavailable on this Linux VM. Synthetic mouse-source, preventFling=true CDP input does not verify physical trackpad momentum.

Cleanup: owned dev servers, Electron apps, Xvfb/D-Bus/keyring process trees and standalone browsers stopped by captured PIDs; before worktree removed. After checkout untouched except its allowed ignored build/dev state. Scratch is removed after final uploads. PR body was not edited; no commits, pushes, comments, reviews or check reruns.

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

FRICTION:

- tool | Browser panel scroll reported success without delivering wheel events | use the reporter's CDP driver for phased wheel evidence.
- runbook | Detached DevTools obscured initial Xvfb captures; those attempts were replaced | close DevTools and raise the actual app window before capture.
- tool | Initial web recording raced code rendering; those attempts were replaced | wait for the rendered fixture token, fonts and loaders before recording.
- forge | Isolated PR page has no working GitHub credential | supply a read-only PR-capable environment, or accept the labelled harness limitation.

[B]: https://git.cafe/pingdotgg/t3code/commit/73fb49d0b3a61bff74aebc362fc6c17d6c0d39be
[A]: https://git.cafe/pingdotgg/t3code/commit/0263c024fb575767d8affba5af2aa19c35a2af4c
