# PR #29803 capture matrix, round 2

Before = main at merge-base d1ec71e6ff8b46bacfbe103af72034eba3654e63. After = PR head 524d29b43ad3a089e28ef009e37c21f2ba1c137f. Proof-audit pass 2 found the round-1 captures INSUFFICIENT; its report is /tmp/lead-29803-r1/proof-audit-2/report.md.

Fixes that apply to every before/after pair:
- No model reasoning row on either side: run the turns with thinking off or a non-thinking setting, with the same fixed prompt on both sides.
- Time labels (the turn elapsed duration and persisted timestamps) must not light up the diff. Either make them identical on both sides, or hide exactly those label elements with the same injected CSS on both sides. State which you did and list the selectors in the environment line.
- Narrated timestamps in recordings must match the frames to within 0.2 s.

| Row | Fixture | Before → after | Profiles | Kind |
|---|---|---|---|---|
| E1 | Claude `show_weather` with `ui://` | plain row → inline app | web 1440 light/dark, 390 light/dark | stills |
| E2 | E1 thread: Refresh (read-only, app-only) and Read resource | after: 23°C with no confirmation and no model turn; resource text shown | web 1440 dark | recording (before: one still showing that there is no app) |
| E3 | E1 thread: mutating `write_weather` | after: confirmation naming server and tool; Allow updates the card | web 1440 dark | recording (after only) |
| E4 | `plain_weather` with no `ui://` | plain row on both sides; Diff0 must be empty | web 1440 dark | stills |
| E5 | legacy flat `ui/resourceUri` alongside `ui.visibility` | plain row → app | web 1440 dark | stills |
| E6 | E1 thread in the Android app (Pixel 9), inline | plain row → app | Android dark | stills (before and after, with diffs) |
| E8 (F34) | E6: open the app full screen on Android | before: "This app cannot be shown." or no entry point; after: the app full screen | Android dark | stills |
| E9 (F27) | E1 thread after its Claude session stops: stop or interrupt the provider session through the app's normal controls (for example, end the session or restart the dev server), then click Refresh | after: the app shows "The app's thread is not running. Send a message in the thread that created it…"; then send a message and Refresh works again | web 1440 dark | recording (after only; before has no Claude app) |
| E7 | Settings → Providers, graceful Claude version (fake executable, labelled) | `>=2.1.280` → `>=2.1.301` | web 1440 dark | stills (already SUFFICIENT; recapture at the new SHAs) |
| E10 (F38) | Unsupported Claude version (<2.1.111, fake executable): web chat banner and provider editor | recommendation `>=2.1.280` → `>=2.1.301` | web 1440 dark, 390 dark (banner wrapping) | stills |
| E11 (F39) | Same unsupported version: Android environment settings detail and composer warning | recommendation text changes | Android dark | stills; lowest priority |
| E12 (F43) | Share the E1 Claude thread to a guest link, open it in a fresh browser profile | before: plain row; after: whatever the guest timeline shows for the app row (app, unavailable state, or fallback); capture it truthfully | web 1440 dark | stills |
