# Composer saved-option fallback: evidence index

**4/4 rows complete.** Eight continuous real-app recordings and eight completed real Claude runs. Each row has aligned resting (R), focused/expanded (F), and open-menu (O) stills, plus two raw full-frame diffs per pair. No masks.

Code captured: [ff525478e2](https://git.cafe/pingdotgg/t3code/commit/ff525478e236ec0df4c4920eb03ac3961ea714a2) before; [4c7f479ac9](https://git.cafe/pingdotgg/t3code/commit/4c7f479ac95b503f906c26eb949e8812c615c136) after. [be2c111076](https://git.cafe/pingdotgg/t3code/commit/be2c1110767f535e2430c766e4013aa51b45bd4d) only adds the rebuild fixture, after capture. No implementation/test edits, PR, push, or merge.

[Full manifest: source SHAs, exact state, timestamps, send/receipt/completion, environment, scope, cleanup and friction](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40ed22a9540d599b/manifest.json) · [SHA-256 hashes and sizes](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a019d5f4e0915f2e/checksums.json) · [Raw capture metadata and original app-owned paths](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b127909ca7cc5114/retained-captures.json)

## Result and rendering

Saved thread selections omitted options. Environment default was Claude Opus 5.5 / effort High; project override inherited. The live descriptor declares Medium as default. Before: High selected and dispatched. After: Medium selected; effort omitted from dispatch. Both send implicit `fastMode:false`. All captured drafts remained optionless when opening/closing menus.

Linux / Chrome 154; DPR **2**, zoom 1, loaded system fonts, scroll 0,0, pointer 0,450. CSS viewports exactly 1440×900 and 390×844. Built-in snapshot caps wide PNGs to **1280×800**; narrow PNGs are **780×1688**. Source recordings are **2880×1800** and **780×1688**. Sources are published unchanged. Diffs use equal original dimensions, no post-capture resizing/registration. [Browser measurement](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f1913ed473a064d4/browser-environment.json) · [Recording metadata](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/30cf302baad35c2b/video-metadata.json) · [All eight source videos decode successfully](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/23d75b53b9df66ff/video-validation.json)

## Matrix

At 390, resting hidden block count is 0; expanded count is **2** (traits and mode), and O uses the actual **More composer controls** overflow. No fabricated breakpoint claim. Native mobile and Electron shell were not separately tested.

### V1 — 1440×900, light — complete

[Before recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c977e8f0eb032ba6/before-V1.mp4) · [After recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c8229c0af825c745/after-V1.mp4) · [Before dispatch/receipt/projection](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5f63f976b1909bb9/before-V1.json) · [After dispatch/receipt/projection](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac3c63b8f9f83e85/after-V1.json)

Threads: `proof-V1-clean` → `proof-V1`. Both created optionless through real RPC; exact persisted create events are in the manifest.

| State | Before | After | Threshold 0, gain 8 | Threshold 26/255, gain 8 |
|---|---|---|---|---|
| R | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa2bcbf5382468ee/before-V1-R.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/46476f25b92107ac/after-V1-R.png) | [1,103 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8f6df290c990cfef/diff-V1-R-t0-gain8.png) (0.107715%) | [792 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/002bd74e8608f18d/diff-V1-R-t26-gain8.png) (0.077344%) |
| F | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d71103b4cec2d9cf/before-V1-F.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8257ca2e7866e85a/after-V1-F.png) | [1,103 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fe96cb9e3ea7662c/diff-V1-F-t0-gain8.png) (0.107715%) | [792 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/651f768645587625/diff-V1-F-t26-gain8.png) (0.077344%) |
| O | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/037347bdf7c7a15b/before-V1-O.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9e2087b2b305db56/after-V1-O.png) | [11,738 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/391393fce9bd8e0e/diff-V1-O-t0-gain8.png) (1.146289%) | [773 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f24b18af728e1294/diff-V1-O-t26-gain8.png) (0.075488%) |

![V1 before High / after Medium, whole open-menu surface](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4f0869a5f5c8127e/pair-V1-O.png)

| Milestone (actual UTC) | Before | After |
|---|---|---|
| Resting | 2026-10-22T09:39:00.215Z | 2026-10-22T09:32:59.321Z |
| Focused/typed | 2026-10-22T09:39:02.404Z | 2026-10-22T09:33:01.422Z |
| Menu open | 2026-10-22T09:39:05.004Z | 2026-10-22T09:33:04.048Z |
| Send | 2026-10-22T09:39:05.885Z | 2026-10-22T09:33:05.002Z |
| Successful receipt | 2026-10-22T09:39:05.990Z | 2026-10-22T09:33:05.135Z |
| Persisted run completed | 2026-10-22T09:39:09.485Z | 2026-10-22T09:33:08.822Z |

### V2 — 1440×900, dark — complete

[Before recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/09bd3e5f0ac00086/before-V2.mp4) · [After recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f07ab8dc2b445387/after-V2.mp4) · [Before dispatch/receipt/projection](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a31eaff601a3a6b3/before-V2.json) · [After dispatch/receipt/projection](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2da99f7adc29902b/after-V2.json)

Threads: `proof-V2-take2` → `proof-V2-clean`. Both created optionless through real RPC; exact persisted create events are in the manifest.

| State | Before | After | Threshold 0, gain 8 | Threshold 26/255, gain 8 |
|---|---|---|---|---|
| R | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6aa18c0aeb089b34/before-V2-R.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12681a034b2be3a7/after-V2-R.png) | [1,094 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c9903fdf54aeb7a0/diff-V2-R-t0-gain8.png) (0.106836%) | [743 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b035fc637b5991ee/diff-V2-R-t26-gain8.png) (0.072559%) |
| F | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87ff6561c13ce9a3/before-V2-F.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4b6694b7c2ba6d54/after-V2-F.png) | [1,094 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5b4cee8ca1cdc44c/diff-V2-F-t0-gain8.png) (0.106836%) | [743 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/29d24a623cea5337/diff-V2-F-t26-gain8.png) (0.072559%) |
| O | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12f8956bbca476ab/before-V2-O.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/031273f2838fa280/after-V2-O.png) | [12,189 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/405950e5edc51f8d/diff-V2-O-t0-gain8.png) (1.190332%) | [681 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44652091a55f5232/diff-V2-O-t26-gain8.png) (0.066504%) |

![V2 before High / after Medium, whole open-menu surface](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e2247c06ad8ddef8/pair-V2-O.png)

| Milestone (actual UTC) | Before | After |
|---|---|---|
| Resting | 2026-10-22T09:27:49.942Z | 2026-10-22T09:35:55.259Z |
| Focused/typed | 2026-10-22T09:27:52.109Z | 2026-10-22T09:35:57.490Z |
| Menu open | 2026-10-22T09:27:54.727Z | 2026-10-22T09:36:00.090Z |
| Send | 2026-10-22T09:27:55.596Z | 2026-10-22T09:36:00.800Z |
| Successful receipt | 2026-10-22T09:27:55.786Z | 2026-10-22T09:36:00.890Z |
| Persisted run completed | 2026-10-22T09:27:59.050Z | 2026-10-22T09:36:03.926Z |

### V3 — 390×844, light — complete

[Before recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c79530bd89c17115/before-V3.mp4) · [After recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2257b9ee6831c657/after-V3.mp4) · [Before dispatch/receipt/projection](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0e56528ccbd84f75/before-V3.json) · [After dispatch/receipt/projection](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/da85d180a4f605be/after-V3.json)

Threads: `proof-V3-clean` → `proof-V3-clean`. Both created optionless through real RPC; exact persisted create events are in the manifest.

| State | Before | After | Threshold 0, gain 8 | Threshold 26/255, gain 8 |
|---|---|---|---|---|
| R | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2a9fe258a0244818/before-V3-R.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17c948c35a0e9012/after-V3-R.png) | [2,974 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/46b5727d56678e05/diff-V3-R-t0-gain8.png) (0.225878%) | [2,306 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/52770ddef84d1feb/diff-V3-R-t26-gain8.png) (0.175143%) |
| F | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eeec85980afd32da/before-V3-F.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40c7732ecbdfeebc/after-V3-F.png) | [0 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d693cb4a57721b6/diff-V3-F-t0-gain8.png) (0.000000%) | [0 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/33796c699a9ce215/diff-V3-F-t26-gain8.png) (0.000000%) |
| O | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e28787c7ace62750/before-V3-O.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c541f4259a9882d6/after-V3-O.png) | [56,243 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4c004ce7819ddd7c/diff-V3-O-t0-gain8.png) (4.271707%) | [0 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b4001c6d731c2828/diff-V3-O-t26-gain8.png) (0.000000%) |

![V3 before High / after Medium, whole open-menu surface](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b43fdff76a48889a/pair-V3-O.png)

| Milestone (actual UTC) | Before | After |
|---|---|---|
| Resting | 2026-10-22T09:39:26.174Z | 2026-10-22T09:36:15.730Z |
| Focused/typed | 2026-10-22T09:39:28.540Z | 2026-10-22T09:36:18.134Z |
| Menu open | 2026-10-22T09:39:30.808Z | 2026-10-22T09:36:20.392Z |
| Send | 2026-10-22T09:39:31.446Z | 2026-10-22T09:36:21.039Z |
| Successful receipt | 2026-10-22T09:39:31.529Z | 2026-10-22T09:36:21.091Z |
| Persisted run completed | 2026-10-22T09:39:34.335Z | 2026-10-22T09:36:24.314Z |

### V4 — 390×844, dark — complete

[Before recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/98bca15577d96369/before-V4.mp4) · [After recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/41e7bbcfc4e0bc54/after-V4.mp4) · [Before dispatch/receipt/projection](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2567e6ad325d7841/before-V4.json) · [After dispatch/receipt/projection](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b8de78cd023a8c12/after-V4.json)

Threads: `proof-V4` → `proof-V4-clean`. Both created optionless through real RPC; exact persisted create events are in the manifest.

| State | Before | After | Threshold 0, gain 8 | Threshold 26/255, gain 8 |
|---|---|---|---|---|
| R | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c92b37b726eb79d1/before-V4-R.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0bb8690b17ee716a/after-V4-R.png) | [2,956 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/15116fe0ec0b4b5c/diff-V4-R-t0-gain8.png) (0.224511%) | [2,158 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/28a96be2bd7605b1/diff-V4-R-t26-gain8.png) (0.163902%) |
| F | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8815c6f9dc6e8d72/before-V4-F.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c1f1b3964d0d1a95/after-V4-F.png) | [0 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/292f40db73af07f8/diff-V4-F-t0-gain8.png) (0.000000%) | [0 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/74b6f83a711def90/diff-V4-F-t26-gain8.png) (0.000000%) |
| O | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d433d3d6b9c32e7d/before-V4-O.png) | [Raw still](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/10331f0c22f9f73c/after-V4-O.png) | [60,032 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17cbf7a2bfa942f1/diff-V4-O-t0-gain8.png) (4.559485%) | [0 pixels](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/608ba24618b964e1/diff-V4-O-t26-gain8.png) (0.000000%) |

![V4 before High / after Medium, whole open-menu surface](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/55738631c08f2019/pair-V4-O.png)

| Milestone (actual UTC) | Before | After |
|---|---|---|
| Resting | 2026-10-22T09:29:32.366Z | 2026-10-22T09:37:10.691Z |
| Focused/typed | 2026-10-22T09:29:34.697Z | 2026-10-22T09:37:13.073Z |
| Menu open | 2026-10-22T09:29:36.903Z | 2026-10-22T09:37:15.319Z |
| Send | 2026-10-22T09:29:37.563Z | 2026-10-22T09:37:16.046Z |
| Successful receipt | 2026-10-22T09:29:37.645Z | 2026-10-22T09:37:16.157Z |
| Persisted run completed | 2026-10-22T09:29:40.515Z | 2026-10-22T09:37:19.689Z |

## Diffs and controls

A changed pixel has maximum absolute RGB channel delta >0 for threshold 0, or ≥26 for 26/255 (0.1019607843). Diff RGB is absolute delta ×8, saturated at 255; below-threshold pixels are black. These are reporting parameters, not pass tolerances. [All counts, fractions, dimensions and changed-pixel bounds](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/06fba90d9650b3f2/diff-counts.json)
 
All raw changed pixels are confined to the expected trait value/menu selection and neighboring control shift from the wider Medium label. Narrow F pairs are exactly identical. Narrow O selected-row background changes remain below 26, so those threshold-26 images are legitimately blank. No unrelated changed pixels remain.

[Before pure-helper assertions and persisted controls](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b8e13f4c30e87c00/before-controls.json) · [After pure-helper assertions and persisted controls](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1c3ee73cac426573/after-controls.json) · [Exact labelled helper harness](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/937ba341521f76b6/helper-controls.js)
 
A2 options:[] remains [] in both persisted projections, and derives High→null. B explicit Low stays Low; nonempty draft override stays Low; an other-instance draft map wins in both. No-thread draft still inherits High. Missing/empty/optionless defaults remain null. Exact absent/cross-instance shapes are labelled pure-helper checks, not extra real UI/provider certifications.

[Before Claude descriptor and resolved defaults](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/71b5d84aee843e2b/before-environment.json) · [After Claude descriptor and resolved defaults](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0d3fe3181ef96c81/after-environment.json) · [Before persisted synthetic create events](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b78c3d33a94cb468/before-created-events.json) · [After persisted synthetic create events](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/692f7fc6ca5fd814/after-created-events.json)

## Rebuild

Use a clean checkout of either capture SHA, a new disposable home per revision, and a new empty synthetic Git repository with an empty root commit. Do not use live or previously seeded `.t3` data. Start `vp run dev --home-dir <fresh-home> --auto-bootstrap-project-from-cwd false`, read its ports and pair an isolated tab through the startup pairing URL. No baked Vite origins.

The committed [fixture](https://git.cafe/pingdotgg/t3code/blob/be2c1110767f535e2430c766e4013aa51b45bd4d/scripts/fixtures/composer-option-fallback.mjs) is also [uploaded verbatim](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/16ed8cc61ea9b8fb/composer-option-fallback.mjs). In that authenticated tab console, install [the exact RPC observer](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8a7d2b572bcbdaa7/browser-rpc.js), await `proofSocketReady`, then import/paste the fixture exports and call `seedComposerOptionFallback(proofRpc, <synthetic-workspace-root>)`. The observer captures only orchestration.dispatchCommand requests and their matching exits; it uses the real existing authenticated app socket. Canonical fixture IDs are V1–V4/A2/B; actual retake suffixes are in this manifest.

Visit `/<environmentId>/proof-<row>`. Clear composer drafts/sticky selections before each row, set theme, set exact CSS viewport, collapse sidebar on wide view, dismiss any update toast, await fonts, blur, and keep pointer at 0,450. Both revisions used transparent caret CSS to avoid blinking differences; no other capture CSS. Record R, focus/expand and type `Reply with OK.`, record F, open the real traits/overflow menu without selecting, record O, Escape, click Submit message, retain outgoing dispatch and successful receipt, await assistant message and persisted completed run, then stop recording. Use actual milestones rather than arbitrary video frame numbers.

The fixture does not authenticate, install a provider, spoof descriptors, send messages, or alter implementation. A real ready/authenticated Claude Opus 5.5 with Medium default is required.

## What else changed

- Only fixture script added in be2c111076; no implementation or test changes during evidence step.
- Separate empty T3 homes for revisions; synthetic Git workspace with an empty root commit; existing worktree .t3 and live databases never used.
- Initial before launch auto-bootstrapped an empty server project; it was hidden by the collapsed sidebar, not used in proof, and excluded from public seed-event export. After launch disabled auto-bootstrap.
- App-native sidebar collapse, explicit light/dark storage preference, and capture-only transparent editor caret on both revisions. No image masks or DOM removal.
- Provider update toast dismissed before retained takes. Retakes use new optionless synthetic thread IDs, recorded above. No option selected during menu interactions.
- Wall-clock dates, UUIDs, environment IDs, request IDs, completion times and provider latency differ naturally; no visible time labels in captured frames.
- Canonical seed fixture created after captures; uploaded browser RPC observer and controls harness preserve how seeding and assertions were executed.

## Cleanup and checks

Tracked server sessions 28040, 1824 and 42718 stopped. Capture tab and separate environment-inspection tab closed normally. Ports 15033/6993 confirmed unbound. Branch `fix/issue-23497` restored, clean at the fixture-only child commit. Source implementation/test diff against the after SHA is empty. Scoped fixture syntax, lint and commit formatting passed.

Retained root: `/tmp/issue-23497-evidence/`. Disposable runtime directories: `home-before/`, `home-after/`, `synthetic-project/`. Public copies are in `public/`; scratch scripts and superseded local takes remain outside Git. Original tool-created screenshots/recordings live at the exact paths in retained-captures.json; no manual cleanup of live userdata was performed. Remote uploads persist until `ghdrop delete <url>`.

## FRICTION

| Category | Happened | Avoidance |
|---|---|---|
| Discovery | One guessed skill path and wildcard source paths were absent. | Read the concrete available-skill paths and use rg --files first. |
| RPC protocol | Bare /ws handshake rejected with 426; projects.list is not a registered request tag. | Use the real authenticated app socket with orchestrationProtocol=2, exact contracts and projects.mutate. |
| Locators | Raw CSS sidebar target was rejected and an unsupported exact role attribute failed. | Use valid role locators or snapshot refs; handle duplicated hidden sidebar triggers. |
| State reset | Reload reopened sidebar; first wide dark take was discarded. | Collapse sidebar explicitly before each retained recording. |
| Narrow path | Expanded narrow composer hid the High trigger, so a click timed out. | Measure hidden blocks and use More composer controls; retained take repeated without timeout. |
| Pairing | Switching homes invalidated the active environment session; same-path token navigation did not auto-submit. | Clear isolated storage, then use actual pairing token input and Continue; never reuse a consumed token. |
| Vite filesystem | Dynamic importing a seed module from /tmp was denied. | Execute the console seed or import the committed fixture from the served repository. |
| Transient notification | Pixel diffs exposed a provider update toast in three first after takes. | Dismiss before capture and repeat on fresh optionless threads; no masks. |
| Capture dimensions | Snapshot caps 1440 CSS width to 1280 physical pixels; browser uses DPR2. | Publish raw dimensions and full-resolution recordings; compare unmodified equal-size pairs. |
| Event table | Legacy-named orchestration_v2_events was empty. | Read current orchestration_events read-only and export only synthetic proof-project events. |
| Video validation | Default null-output muxer rounded fine-grained browser timestamps to a coarse time base and warned about repeated DTS. Source decoding succeeded. | Validate with passthrough timing and a microsecond encoder time base; all eight runs then had empty stderr. Source files were not transcoded. |

## Verbatim ghdrop upload -m output

The following is the unchanged stdout from uploading the evidence artifacts. The final index and receipt uploads are recorded separately in the local upload receipt.

```text
![after-V1-F.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8257ca2e7866e85a/after-V1-F.png)
![after-V1-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9e2087b2b305db56/after-V1-O.png)
![after-V1-R.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/46476f25b92107ac/after-V1-R.png)
[after-V1.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ac3c63b8f9f83e85/after-V1.json)
[after-V1.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c8229c0af825c745/after-V1.mp4)
![after-V2-F.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4b6694b7c2ba6d54/after-V2-F.png)
![after-V2-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/031273f2838fa280/after-V2-O.png)
![after-V2-R.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12681a034b2be3a7/after-V2-R.png)
[after-V2.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2da99f7adc29902b/after-V2.json)
[after-V2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f07ab8dc2b445387/after-V2.mp4)
![after-V3-F.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40c7732ecbdfeebc/after-V3-F.png)
![after-V3-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c541f4259a9882d6/after-V3-O.png)
![after-V3-R.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17c948c35a0e9012/after-V3-R.png)
[after-V3.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/da85d180a4f605be/after-V3.json)
[after-V3.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2257b9ee6831c657/after-V3.mp4)
![after-V4-F.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c1f1b3964d0d1a95/after-V4-F.png)
![after-V4-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/10331f0c22f9f73c/after-V4-O.png)
![after-V4-R.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0bb8690b17ee716a/after-V4-R.png)
[after-V4.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b8de78cd023a8c12/after-V4.json)
[after-V4.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/41e7bbcfc4e0bc54/after-V4.mp4)
[after-controls.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1c3ee73cac426573/after-controls.json)
[after-created-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/692f7fc6ca5fd814/after-created-events.json)
[after-environment.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0d3fe3181ef96c81/after-environment.json)
![before-V1-F.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d71103b4cec2d9cf/before-V1-F.png)
![before-V1-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/037347bdf7c7a15b/before-V1-O.png)
![before-V1-R.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fa2bcbf5382468ee/before-V1-R.png)
[before-V1.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5f63f976b1909bb9/before-V1.json)
[before-V1.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c977e8f0eb032ba6/before-V1.mp4)
![before-V2-F.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/87ff6561c13ce9a3/before-V2-F.png)
![before-V2-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/12f8956bbca476ab/before-V2-O.png)
![before-V2-R.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6aa18c0aeb089b34/before-V2-R.png)
[before-V2.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a31eaff601a3a6b3/before-V2.json)
[before-V2.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/09bd3e5f0ac00086/before-V2.mp4)
![before-V3-F.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/eeec85980afd32da/before-V3-F.png)
![before-V3-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e28787c7ace62750/before-V3-O.png)
![before-V3-R.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2a9fe258a0244818/before-V3-R.png)
[before-V3.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0e56528ccbd84f75/before-V3.json)
[before-V3.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c79530bd89c17115/before-V3.mp4)
![before-V4-F.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8815c6f9dc6e8d72/before-V4-F.png)
![before-V4-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d433d3d6b9c32e7d/before-V4-O.png)
![before-V4-R.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c92b37b726eb79d1/before-V4-R.png)
[before-V4.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/2567e6ad325d7841/before-V4.json)
[before-V4.mp4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/98bca15577d96369/before-V4.mp4)
[before-controls.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b8e13f4c30e87c00/before-controls.json)
[before-created-events.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b78c3d33a94cb468/before-created-events.json)
[before-environment.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/71b5d84aee843e2b/before-environment.json)
[browser-environment.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f1913ed473a064d4/browser-environment.json)
[browser-rpc.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8a7d2b572bcbdaa7/browser-rpc.js)
[checksums.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a019d5f4e0915f2e/checksums.json)
[composer-option-fallback.mjs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/16ed8cc61ea9b8fb/composer-option-fallback.mjs)
![diff-V1-F-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fe96cb9e3ea7662c/diff-V1-F-t0-gain8.png)
![diff-V1-F-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/651f768645587625/diff-V1-F-t26-gain8.png)
![diff-V1-O-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/391393fce9bd8e0e/diff-V1-O-t0-gain8.png)
![diff-V1-O-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f24b18af728e1294/diff-V1-O-t26-gain8.png)
![diff-V1-R-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8f6df290c990cfef/diff-V1-R-t0-gain8.png)
![diff-V1-R-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/002bd74e8608f18d/diff-V1-R-t26-gain8.png)
![diff-V2-F-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5b4cee8ca1cdc44c/diff-V2-F-t0-gain8.png)
![diff-V2-F-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/29d24a623cea5337/diff-V2-F-t26-gain8.png)
![diff-V2-O-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/405950e5edc51f8d/diff-V2-O-t0-gain8.png)
![diff-V2-O-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/44652091a55f5232/diff-V2-O-t26-gain8.png)
![diff-V2-R-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c9903fdf54aeb7a0/diff-V2-R-t0-gain8.png)
![diff-V2-R-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b035fc637b5991ee/diff-V2-R-t26-gain8.png)
![diff-V3-F-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6d693cb4a57721b6/diff-V3-F-t0-gain8.png)
![diff-V3-F-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/33796c699a9ce215/diff-V3-F-t26-gain8.png)
![diff-V3-O-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4c004ce7819ddd7c/diff-V3-O-t0-gain8.png)
![diff-V3-O-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b4001c6d731c2828/diff-V3-O-t26-gain8.png)
![diff-V3-R-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/46b5727d56678e05/diff-V3-R-t0-gain8.png)
![diff-V3-R-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/52770ddef84d1feb/diff-V3-R-t26-gain8.png)
![diff-V4-F-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/292f40db73af07f8/diff-V4-F-t0-gain8.png)
![diff-V4-F-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/74b6f83a711def90/diff-V4-F-t26-gain8.png)
![diff-V4-O-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/17cbf7a2bfa942f1/diff-V4-O-t0-gain8.png)
![diff-V4-O-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/608ba24618b964e1/diff-V4-O-t26-gain8.png)
![diff-V4-R-t0-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/15116fe0ec0b4b5c/diff-V4-R-t0-gain8.png)
![diff-V4-R-t26-gain8.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/28a96be2bd7605b1/diff-V4-R-t26-gain8.png)
[diff-counts.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/06fba90d9650b3f2/diff-counts.json)
[helper-controls.js](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/937ba341521f76b6/helper-controls.js)
[manifest.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/40ed22a9540d599b/manifest.json)
![pair-V1-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4f0869a5f5c8127e/pair-V1-O.png)
![pair-V2-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e2247c06ad8ddef8/pair-V2-O.png)
![pair-V3-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b43fdff76a48889a/pair-V3-O.png)
![pair-V4-O.png](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/55738631c08f2019/pair-V4-O.png)
[proof-matrix.md](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5ae09e64a0592c4b/proof-matrix.md)
[retained-captures.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b127909ca7cc5114/retained-captures.json)
[video-metadata.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/30cf302baad35c2b/video-metadata.json)
[video-validation.json](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/23d75b53b9df66ff/video-validation.json)
```
