# Proof audit 1 — existing evidence at the requested head

For [#33021](https://git.cafe/pingdotgg/t3code/pull/33021), reviewed local head [4af1a811db](https://git.cafe/pingdotgg/t3code/commit/4af1a811db4f75012c35c774c283208f69615b93). Read-only source/evidence audit; no source edits, pushes, comments, tests, servers or device leases.

## Findings

The evidence is sufficient for the changed behavior. No contradicted core row or confirmed code defect was found. Both direct layout changes are demonstrated in light and dark, and uninterrupted before/after recordings prove the important stale-state sequence: float, dismiss, return to a docked Home, repeat without reload. Candidate screenshots have aligned headers, body, composer, list rows and trailing controls. Baseline clipping is the reported defect, not a capture-quality failure. The deliberate floating scrim and sidebar occlusion of underlying text are expected, not ghost overlays.

The broader regression inventory remains incomplete: G1 and G4–G8 are MISSING, G2/G3 cannot be established using the documented pool operations/device reports. These are explicitly not runtime passes. They do not introduce a distinct uncovered numeric change in this patch: the rail72 floating state and reset to docked left0 are covered by M2–M4, rail0 by N1–N3, expanded strip by E1, workspace page by W1–W3, and rail removal/reappearance by F1. A claim of exhaustive responsive, hinge, inspector, input or accessibility verification would be false. The minimum set below is deliberately smaller than every combination of unchanged children and controls.

## Evidence applicability

Before capture baseline [bcee0f5d28](https://git.cafe/pingdotgg/t3code/commit/bcee0f5d2872ba193c66ed9ba979bbe424f89ff9), captured candidate [bd8781c7ef](https://git.cafe/pingdotgg/t3code/commit/bd8781c7efac1a9a6f453e671344ea4382028646), requested head [4af1a811db](https://git.cafe/pingdotgg/t3code/commit/4af1a811db4f75012c35c774c283208f69615b93), origin/main [0a9abddaee](https://git.cafe/pingdotgg/t3code/commit/0a9abddaee00ff1495e77a03dd4fafa73c3cd4cb).

- The changed-file patches `git diff bcee0f5d28 bd8781c7ef` and `git diff origin/main 4af1a811db` are byte-identical: SHA256 `c7d1f62f44e225ab5ef451b487fac81be172a641dea136393369260cb38c44de`; 10 additions, 13 deletions.
- `git diff bd8781c7ef 4af1a811db -- apps/mobile/src/lib/layout.ts apps/mobile/src/features/layout apps/mobile/src/features/threads` is empty. The same paths have no changes or commits between the capture baseline and origin/main. Native modules/plugins, app config, mobile package manifest, contracts and client-runtime also have no changes over that interval.
- Main's other mobile changes touch file/video preview failure handling and asset URL refresh. The fixture contains no attachment or file preview, so those paths are not exercised by the mapped captures. The generic unchanged Files-inspector control is not claimed captured.
- Requested head is a local merge whose parents are pushed [f1faee586f](https://git.cafe/pingdotgg/t3code/commit/f1faee586f12c07adcad7caa7db0e5478b397016) and current origin/main. GitCafe reports the pushed head, not this unpushed local merge; relevant layout paths match on both. `git ls-remote origin refs/heads/main` confirmed the origin/main SHA above.

The original indexes were downloaded with curl. I opened all 66 source PNGs from the two indexes (33 pairs), checked the core after images at full resolution, decoded the 14 mapped MP4s fully and inspected timestamped 2-second contact sheets through their last sampled frames. I additionally inspected every decoded frame around the candidate medium return, both fold returns and a workspace/style segment. This is visual inspection of existing recordings, not a new device run or per-frame performance measurement. No spinner/loading frame is used as a settled still. Short syncing states during initial thread fetch in recordings are not used as settled proof. MP4 variable-frame-rate tails do not establish subsequent actions; F1's candidate final Home is also corroborated by a settled still.

[Original index](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ef6c3820ddb7bca0/evidence-index.md), [addendum](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/24e242082347462e/evidence-addendum.md).

## Independently derived render/state model

Read the one-file diff and followed [AdaptiveWorkspaceLayout](https://git.cafe/pingdotgg/t3code/blob/4af1a811db4f75012c35c774c283208f69615b93/apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx) through [layout derivation](https://git.cafe/pingdotgg/t3code/blob/4af1a811db4f75012c35c774c283208f69615b93/apps/mobile/src/lib/layout.ts), Stack.tsx, platform stack navigators, WorkspaceRoot/Sidebar, thread sidebar/selection/header/composer, navigation rail, workspace pages and inspector hosts. The earlier fixture matrix was not used as the derivation authority.

Ordinary Android uses RN dimensions (native metrics observer is a no-op): compact if width<600 or height<600, medium at600<=width<720 and height>=600, expanded atwidth>=720 and height>=600. Sidebar list width clamps to280–380 before hinge/pill adjustment. Android nativeWorkspace is false. Home path pins the sidebar; medium non-root detail floats; Usage/Settings are workspacePage and cover a retained sidebar. Material split has rail72; One UI rail0. All dimensions are logical dp; phone evidence measured693.976x1557.590, not exact692. Fold inner677.878x702.694, cover352.653x791.510. Theme changes paint, not geometry: duplicate the directly affected core in light/dark, use light for unchanged controls. Custom palettes/providers/local-versus-remote environments do not add geometry predicates.

The six changed regions reduce to: always reserve rail in logical width, content-left target and animated content width; keep rail spacer in row; always attach floating sidebar worklet and explicitly set left0 outside float. A medium active inspector is always a sheet because supported columns require post-rail viewport>=820. A docked strip, workspacePage or no-rail branch has unchanged arithmetic, except the explicit left0 now also applies to it.

RootStackLayout is the production caller. Android's presentation host invokes renderColumns with its workspace NativeStackView and Home descriptor as the sidebar. Home's sidebar renders Threads, a separate Pulls list, blank workspace-page backing, or WorkspaceNoTabs. The content slot renders thread/draft/nested detail/PR detail; these share the changed outer bounds. Native overlays are projected outside that workspace. Direct renderColumns(children) uses WorkspaceThreadSidebar fallback. Native iOS returns before renderColumns; older/non-native iOS has rail0 and the newly attached style writes0. Preference failure uses default grouping but identical geometry; pending preferences return null. These exempt paths are recorded separately below.

## Matrix

`Minimum` identifies proof needed for this patch; `extended` rows expose uncaptured controls without treating unchanged paths as new requirements. Recording rows need continuous footage; still links alone do not satisfy them. Affected means the patch changes numeric geometry or clears the stale style in that state, not merely that a React child is different.

| Row | Named fixture / branch | Effect / minimum | Seed / viewport / theme / interaction | Status and opened evidence | Observation / missing recipe |
|---|---|---|---|---|---|
| M1 | Material medium, cold docked Home | Control; minimum still | Pixel 9, 694dp, light; rail72, list280; no inspector | CAPTURED [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1c7f5d7393e8d49d/A1-material-light-cold-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dc2de8ea84782db1/A1-material-light-cold-after.png) | Cold list has no stale offset; the warm sequence is separately required in M4. |
| M2 | Material medium detail, sidebar hidden | Affected; minimum still + recording | Thread Alpha; sidebarFloats=true, visible=false; light and dark | CAPTURED light [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8cb22dcf1c2a2c5e/A2-material-light-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d924cf151e4f4386/A2-material-light-after.png); dark [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3db6cf4006effc63/A2-material-dark-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/73c7c626fb43e295/A2-material-dark-after.png); light flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/646b14a766d32f08/material-medium-command.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c3fddbd022aa5563/material-medium-command.mp4); dark flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad1d678d25b0a989/material-medium-command.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/300367a3147d5f23/material-medium-command.mp4) | Content header, body and composer clear the rail. At W=693.976 the settled target is W-72-4, versus W-4 before. |
| M3 | Material medium detail, floating sidebar visible | Affected; minimum still + recording | Same thread; reveal, choose Beta, reveal, scrim, reveal, Android Back; light/dark | CAPTURED light [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/027b84a8c5937910/A3-material-light-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d062e1c415fee1cb/A3-material-light-after.png); dark [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/215a7420b436d193/A3-material-dark-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/afb16c942a1d245b/A3-material-dark-after.png); light flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/646b14a766d32f08/material-medium-command.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c3fddbd022aa5563/material-medium-command.mp4); dark flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad1d678d25b0a989/material-medium-command.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/300367a3147d5f23/material-medium-command.mp4) | Sidebar starts after the rail; scrim covers only the underlying content. Both dismissal paths restore the detail. Existing toggleSidebar dispatcher proves the handler, not physical keyboard delivery. |
| M4 | Material float to dock, warmed Home | Affected; minimum still + uninterrupted recording | Back to Home after M2/M3, repeat without reload; light/dark | CAPTURED light [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/020a330f132ab514/A4-material-light-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6ce66a4a061ecbe9/A4-material-light-after.png); dark [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6885a1dca2e3f71f/A4-material-dark-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/49417623a406f46f/A4-material-dark-after.png); light flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/646b14a766d32f08/material-medium-command.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c3fddbd022aa5563/material-medium-command.mp4); dark flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad1d678d25b0a989/material-medium-command.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/300367a3147d5f23/material-medium-command.mp4) | Core stale-key proof: baseline shifts/clips list by an extra rail width; candidate restores left0, visible trailing row controls and no stale scrim. Full-frame decoded return segment also inspected. |
| W1 | Material workspace Usage | Control; minimum recording | workspacePage=true; hidden mounted primary sidebar; light | CAPTURED [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/53d64d7ab866e6d8/A5-usage-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/13926fc30c29aa72/A5-usage-after.png); workspace flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4456d85024db8c2d/workspace-pages.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c79b99490e0b3b5/workspace-pages.mp4) | Usage occupies post-rail content. Return to Chats is present. |
| W2 | Material workspace Settings including detail | Control; minimum recording | Settings auto-selects Environments, then Appearance; hidden primary sidebar; light | CAPTURED Environments [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c752d987c08e1cfc/A6-settings-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/306171cdd5067b92/A6-settings-after.png); Appearance [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7aea2c9883c0bf24/A7-appearance-material-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a4b19693a23ce062/A7-appearance-material-after.png); workspace flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4456d85024db8c2d/workspace-pages.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c79b99490e0b3b5/workspace-pages.mp4) | Settings inner columns are unobstructed. No unselected Settings placeholder is claimed; normal fixture auto-selects a detail. |
| W3 | Navigation style change, rail72 to rail0 to rail72 | Control; minimum recording | Settings Appearance Material -> One UI -> Material, return, thread/float/Back; light | CAPTURED workspace flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4456d85024db8c2d/workspace-pages.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c79b99490e0b3b5/workspace-pages.mp4); final warmed list [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b477108854d25d40/A7-return-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/230937d00221e2d6/A7-return-after.png) | Rail width and workspace page transitions settle; final Material returned list is aligned. |
| N1 | One UI medium docked list, no rail | Zero-rail control; minimum still | Home, default app font16; list can widen for floating pill | CAPTURED [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/365f86a7718ce8aa/B1-oneui-A1-list-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4bdb165a8acf3393/B1-oneui-A1-list-after.png) | No phantom rail gap; floating tabs and row controls fit. |
| N2 | One UI medium float, hidden detail and warm return | Zero-rail control; minimum recording | Thread -> reveal -> scrim/Back -> Home; light | CAPTURED float [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/770ac83e4f623f94/B2-oneui-A3-float-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8816257e2ba4d645/B2-oneui-A3-float-after.png); warm list [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/38f377d0d624ee9f/B2-oneui-A4-warm-list-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bab864b50060342e/B2-oneui-A4-warm-list-after.png); flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b3d580f957e9b3c2/one-ui-medium.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b1fa0fc47c7e240b/one-ui-medium.mp4) | Zero leading offset across float/dock; repeated transitions present. Hidden detail is inspected in these recordings. |
| N3 | One UI workspace pages | Zero-rail control; minimum recording | Usage, Settings/Environments, Appearance; light | CAPTURED Usage [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a680f667acfc5347/B3-usage-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cdc60783b235e65b/B3-usage-after.png); Settings [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/27231e507beacfe7/B3-settings-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0486fd1859d3e94d/B3-settings-after.png); Appearance [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/207bbab24364ab52/B3-appearance-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aa7c677543f5766b/B3-appearance-after.png); flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4456d85024db8c2d/workspace-pages.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c79b99490e0b3b5/workspace-pages.mp4) | Pages use full post-gap width and floating navigation clearance; sidebar stays covered. |
| E1 | Expanded Material docked strip visible, hidden, restored | Unconditional left0 control; minimum recording | Pixel 9 at720dp, thread and Home; light | CAPTURED Home [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/81bbed69163cc5bb/C2-list-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/42276df10ddfb57d/C2-list-after.png); shown [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/719efe2629130deb/C2-thread-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d9fa712034ee657f/C2-thread-after.png); hidden [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b5e2d94cce1d507d/C2-hidden-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1627ca091ada7160/C2-hidden-after.png); restored [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5d9de06e2e86066c/C2-restored-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ad86d25819d2845a/C2-restored-after.png); flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e54522932ea5892b/material-expanded.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5a493c643d48b9fd/material-expanded.mp4) | Steady outer geometry retained; hide/restore exercised. Thin glyph/border raster differences are visible, not a geometry change. |
| K1 | Real keyboard and recovery | Affected detail under changing insets; minimum recording | Pixel 9 medium; Gboard show/dismiss before and after sidebar reveal; light | CAPTURED flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dbed78275454905c/C4-keyboard.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/facfdafe587fe508/C4-keyboard.mp4); cold recovery [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/506d78ec1ecdcf20/C4-recovered-cold-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8c648025cf998651/C4-recovered-cold-after.png); warm recovery [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5149fa0858d286bb/C4-recovered-warm-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/105d6de743368646/C4-recovered-warm-after.png); returned list [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cbc2e34107ddc62c/C4-list-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/fe2b52cfd7ac3371/C4-list-after.png) | Gboard appears in both videos. Candidate clears rail and returns to aligned Home. Reported window remains medium; this is not a keyboard-triggered compact proof. |
| F1 | Physical fold: medium float to compact cover to medium | Affected lifecycle control; minimum recording | Pixel 9 Pro Fold; inner678x703dp; cover353x792dp; open/half-open/closed/open/Back; light | CAPTURED flow [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cf5e2b5a623e8df1/C5-fold.mp4) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/aad4f200e683c3ee/C5-fold.mp4); open [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/786813e6a4ea600d/C5-open-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/131ce8198dbb36a2/C5-open-after.png); half-open [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cf4a594d7697acae/C5-half-open-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bc721783ddb50963/C5-half-open-after.png); cover [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1a012b46f0442a6e/C5-closed-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f29b5103a38bd37d/C5-closed-after.png); Home [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1e6a2da99eefceae/C5-list-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/745a53f60c3c691e/C5-list-after.png) | Mounted route survives display crossing; compact has no rail/sidebar; restored medium detail and returned Home settle. No usable hinge was delivered. The final candidate Home is at the last decoded frame, corroborated by later settled still. |
| C1 | Compact cold Home | Zero-rail/no-sidebar control; supplemental still | Pixel 9 at411dp through density Settings; light | CAPTURED [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/07bb846c72ace96f/C1-width-411-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e66ca7fb104f3e57/C1-width-411-after.png) | Valid settled compact state only. This is not uninterrupted transition evidence. |
| C2 | Density-reconfigured medium/expanded Home endpoints | Supplemental endpoints; still only | Pixel 9 density recipe gives694/720/694dp and returns Home; light | CAPTURED start float [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/5e465a58a668a1d8/C1-medium-start-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d592cd3fe3e35000/C1-medium-start-after.png); 720 Home [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/09d1ad73aafb60de/C1-width-720-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/25df4cefe37e6218/C1-width-720-after.png); 694 Home [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/4b123369679fd10b/C1-width-692-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1e05cdf4ef6cf2f8/C1-width-692-after.png); final Home [before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/90acae1a40e047d8/C1-list-before.png) / [after](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/d57890608728fd6e/C1-list-after.png) | Valid endpoint images. C1 recording exports failed; lifecycle continuity cannot be inferred from these stills. |
| G1 | Mounted medium to expanded and reverse | Affected transition; extended control, not minimum | Start M3, rotate694x1558dp Pixel9 to landscape1558x694dp, then back; record RN bounds and route continuity | MISSING | Use the shared synthetic seed below and agent-device orientation landscape-left / portrait. App tablet-orientation plugin allows rotation at smallestScreenWidthDp>=600 and configChanges handles it. Recipe is code/tool-supported, not executed in this read-only pass. M4 already proves the same sidebarFloats true->false / left72->0 transition while E1 proves expanded strip endpoints; this additional variant crossing is not claimed captured. |
| G2 | Exact width/height boundaries and in-flight reversal | Extended control; recording | Mounted599/600/719/720dp and height599/600, both directions | CANNOT-PRODUCE with documented pool operations: density Settings resets route to Home; agent-device viewport is web-only and there is no generic lease-scoped Android shell/display override. | F1 covers a real medium/compact crossing, not exact thresholds. Need lease-scoped window sizing preserving the activity; do not inject React layout state or call this passed. |
| G3 | Reported hinge accepted/rejected geometry | Extended control; recording + actual hinge metrics | Pixel 9 Pro Fold half-open; Material and One UI | CANNOT-PRODUCE with the existing named emulator evidence: no usable hinge was reported (layoutHingeStates empty); native metrics null. | Folding poses alone are not hinge alignment proof. Need a pooled/native device whose WindowLayoutInfo delivers actual bounds. Guards: list=hinge.x-rail>=280 and trailing content>=320. A centered694dp Material hinge is rejected (347-72<280); One UI may accept. This PR does not change those guards. |
| G4 | Rail expansion over floating sidebar; alternate Pulls sidebar | Extended interaction/render-child control; recording | M3 -> native rail hamburger expand/collapse -> Pulls -> Chats | MISSING | Same Pixel9 synthetic seed; press native hamburger while float visible, then Pulls. Empty Pulls list is sufficient; no real forge data or paid provider needed. Only baseline preliminary rail-menu opening exists; no matched pair proves this row. Actual rail remains absolute with same clip/z-order; changed spacer has no railOverlay branch. |
| G5 | Medium inspector sheet and Back precedence | Extended overlay control; recording | M2 -> Files/Git inspector -> dismiss; repeat with floating sidebar open and Back | MISSING | Add synthetic README and narrow/long text files to fixture project; use Files/header inspector in real app. No inspector column is reachable at medium: post-rail width<820 on both revisions. Modal overlays are outside the workspace stack projection; current proof does not claim sheet dismissal/touch or accessibility verification. |
| G6 | Wide inspector column, resize, suppression and reveal | Extended unchanged branch; recording | Expanded Material at roughly1000dp and1400dp, Files inspector active | MISSING | Set density before the run to a sufficiently wide display, verify RN bounds, open Files, resize divider, reveal sidebar, close inspector. At raw W>=892 Material supports the column; at1000 the sidebar can suppress, at1400 three panes can fit. Need not retain activity across density changes to produce endpoints. Changed formulas are algebraically identical while sidebarFloats=false. |
| G7 | Pill width fallback, small-medium boundary and large text | Extended zero-rail branch; still/recording | One UI medium near600dp, larger app text; draft FAB -> Back | MISSING | Pixel9: set Smallest width before run, verify actual RN dimensions, Appearance -> One UI / larger Text size; start a new draft via FAB and return. Existing694dp default-text One UI capture is not proof of600dp or large-text fallback. Pill sizing is unchanged and all removed rail terms are zero. |
| G8 | Remembered-detail tab restore / keepOpenFor | Extended navigation entry control; recording | M2 -> another workspace tab -> restore Threads by app section/command path | MISSING | Use the app section command (existing HardwareKeyboardCommandOverlay / tab command) against two persisted Replay threads; compare open overlay over remembered route then Back. Native rail reset in W3 is a different path. Same geometry/visible state as M3; no physical shortcut or accessibility pass is claimed. |

## Paths exempt from a separate capture

| Row | Render path | Status / reason |
|---|---|---|
| X1 | Preferences pending/failure; Home descriptor absent; sidebar empty/error; grouping and filters | CANNOT-PRODUCE a changed-geometry state: pending mounts no layout, fallback/failure uses the same Content and fixed outer sizing. Nonempty M1–M4 exercises those bounds. No fault injection required. |
| X2 | Native iOS columns including Duo | CANNOT-PRODUCE the changed rail renderer on this path: nativeWorkspace returns providers/children/inspector before renderColumns and rail width is always0. Scalar removed rail terms are0. No iOS runtime pass claimed. |
| X3 | Older/non-native iOS direct columns and compact stack | CANNOT-PRODUCE Android rail geometry here: direct/fallback renderer exists but rail0; newly attached left0 is neutral. No iOS runtime pass claimed. |
| X4 | Web and desktop | CANNOT-PRODUCE this mobile component: no caller on those surfaces; no contract/server/provider change. |

The alternate details (draft Thread, nested ThreadFiles/PR detail) are collapsed into the common content-slot fixture M2/M3; only the alternate Pulls sidebar has its separate child control in G4. Expanded workspace pages collapse to W1/W2 for hidden-sidebar/no-float state; their wider viewport is an uncaptured control, not another changed formula. Native keyboard delivery, exact text/accessibility hit testing and automatic rotation continuity are not inferred from command dispatch or image inspection.

## Minimum capture set and reproduction

Minimum already present: (1) Material medium light and dark before/after list->thread->float->selection/scrim/Back->warmed Home continuous flows with M1–M4 stills; (2) medium workspace/style and One UI flows W1–W3/N1–N3; (3) expanded visible/hidden/restored E1; (4) real keyboard K1; (5) real fold F1 with compact cover. Recording requirement applies to M2–M4, W1–W3, N2–N3, E1, K1, F1 and every extended interaction row. C1/C2 are endpoints only. All minimum numeric branches are represented; exhaustive extended coverage remains explicitly incomplete.

To seed any missing producible row: use a fresh task-owned home with `T3CODE_DEV_SEED=0`, prepare matching native client before lease, connect a uniquely named agent-device proxy session, lease exactly Pixel 9 (or Pixel 9 Pro Fold for F1/G3), install with `vp run mobile:install android --session <session>`, and start backend/Metro against isolated state and reachable tailnet origins. Disable dev chrome in the launch URL and pair through the repository helper. Add one task-owned synthetic git project with README and narrow/long text files. Create two persisted synthetic Alpha/Beta threads using Replay (dev), directly in mobile or through the paired web client if provider setup is easier there. No paid provider, real account data or live userdata is needed. Use app Settings Appearance for navigation style/theme/text size and Android Developer options Smallest width before fixed-viewport runs; confirm actual RN bounds rather than trusting the Settings label. Keep animations1x and font scale1 except G7. Row-specific sequences are in the matrix. G1 rotation recipe is inferred from current plugin and CLI capability, not an established device pass. Restore device settings and release owned sessions afterwards.

No tests were run: this task audits existing visual proof and source equivalence. Existing CI/test claims in the PR body were not re-certified. No source, PR or comment mutation occurred. Worktree remained clean. No server, emulator or lease was started, so none required stopping. Disk remained above103GB. Scratch is removed after this report and its inspection archive are uploaded.

FRICTION: none

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

VERDICT: SUFFICIENT
