Proof audit pass 2, round 4, for [#24651](https://git.cafe/pingdotgg/t3code/pull/24651) ([GitHub mirror](https://github.com/pingdotgg/t3code/pull/24651)). Reviewed head [4859c3a7d3](https://git.cafe/pingdotgg/t3code/commit/4859c3a7d372dba06a50adee68d157643a305a10), against merge-base [96fc7b9551](https://git.cafe/pingdotgg/t3code/commit/96fc7b955196637605cbf3b415152ce4dd0e2294). Completed within the 45-minute budget, approximately 21:21–21:30 UTC on 2026-10-27. Read-only for production and forge state: no edits, pushes, comments or PR-body changes.

1. **A02 and A03 still fail the explicit no-blank-frame acceptance rule — classification (b), baseline behavior outside the production diff.** A02-before.mp4 and A02-after.mp4 both show selected A with a blank detail at 4.5s; transcript text is present by 5s and grows afterward. A03-before.mp4 shows selected A and an empty transcript at the 11.5, 12, 12.5 and 13s samples, populated by 13.5s. A03-after.mp4 shows the corresponding empty selected-A detail at 10.5–14s samples, populated by 14.5s. Returning to B also blanks: before at 23.5/24s, after at 23/23.5/24s, populated with B and Done by 24.5s on both sides. This is the same kind of observable failure at the merge-base, with differing durations; it is not established as a regression caused by this PR. The complete production diff only changes reuse within navigationThreadShellsAtom, with no feed, route, layout, styling or native code change; the live threadShellAtom path is unchanged. Warmed data did not remove these frames. A simple repeat of the same capture is not supported as a remedy; eliminating this behavior would require a separate product change or a criterion change. Neither classification nor disclosure makes these rows sufficient.

   ![Before at left and after at right: selected A has a blank detail in A02 at 4.5 seconds and A03 at 12 seconds](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1175b938c6920589/blank-selection-comparison.jpg)

2. **A02 and A04 full-surface diffs still light up unrelated native clock digits — classification (c), the named agent-device 0.21.32 pool interface lacks persistent iOS status-bar/time override.** A02-diff0.png has 414 changed pixels, A02-diffT8.png has 378, inclusive bbox x73–105/y21–42. A04-diff0.png has 1,154 changed pixels, A04-diffT8.png has 1,040, bbox x169–275/y79–116. These are actual clock changes, not antialiasing: A02 1:45 PM → 1:53 PM; A04 2:03 → 2:09. There are zero app differences at or below y130. This exactly agrees with the index's “what else changed” lists, but still violates the brief's strict unrelated-diff rule. The previous animated battery difference is gone. An ordinary retake at another time does not reliably solve the clock problem; persistent native clock control is the missing tooling capability. No pixels were edited.

3. **A03-before.mp4 includes screenshot normalization while recording — classification (a), a capture defect a retake can fix.** Its static tail changes from the natural clock to 9:41 and removes native status icons, then restores the natural chrome, twice during the approximate 27.5–31.5s interval. The final frame restores 8:52. This is disclosed in the index and agrees with the supplied screenshot/record-stop overlap. Stop and await the recording export before taking normalized stills. This defect is separate from the baseline blanking in finding 1.

4. **A02-after's rename narration is late — classification (a), a repairable evidence/narration defect.** The index places the renamed title appearing at about 20–21s, but the direct frame extracted at 18.5s already shows the complete renamed A title while B remains selected and A is Working. The semantic action is present; its stated appearance milestone should be corrected. No retake is required to correct this description.

All six settled stills are visually rendered and use the declared dark theme, dimensions and scroll positions. No ghosted/duplicated element, spinner, skeleton, stale overlay or unrendered transcript was seen in the final stills. All six consecutive raw RGB pairs independently have zero differing pixels, resolving round 3's false-stability claim. All 18 authoritative artifact SHA256 hashes and byte sizes match the manifest. The before/after column links and manifest pin the requested revisions; the local head and merge-base agree. Source scope remains two changed files, the selector and its focused tests.

| Row | Final image dimensions | Logical viewport / DPR / font scale | Diff0 / DiffT8 | Assessment |
|---|---|---|---|---|
| A02 | 2752×2064 | iPad 1376×1032pt / 2 / 1.0 | 414 / 378 | Native primary column, landscape/dark; blanks and unrelated clock delta remain. |
| A03 | 2560×1600 | Pixel Tablet 1280×800dp / 2 / 1.0 | 0 / 0 | Actual Android sidebar, landscape/dark; both start connected with B rendered; blanks remain. |
| A04 | 1206×2622 | iPhone 402×874pt / 3 / 1.0 | 1,154 / 1,040 | Mounted arrangement sheet, portrait/dark; rename stays visible, unrelated clock delta remains. |

I opened all six authoritative stills and all six diff images. Independently recomputed full-surface RGB absolute differences with thresholds >0 and >8/255 and saturated 255× amplification; all six delivered diff images match exactly. Inspected all six recordings through independently decoded half-second full-surface contact sheets for A02/A03, direct full-resolution transition frames, and each actual last encoded frame. For A04 I inspected all 7 before and all 6 after actual encoded frames. This is not a claim to inspect every encoded A02/A03 frame. The native exports contain 404/436 frames for A02, 154/145 for A03, and 7/6 for A04; sparse media timestamps are distinct from driver wall time.

The principal narrated actions match the media, subject to finding 4. A02 selects A, displays growing real text, returns to B, renames the visible A row and reaches Done in each actual last frame (20.913s / 22.292s). A03 scrolls up/back, renames A, selects it, displays growing text, returns to B and reaches Done (last frames 31.742s / 25.465s). A04's first renamed-title encoded frames are exactly 4.153s before and 10.392s after; the same sheet remains visible through the respective last frames at 37.420s and 98.982s. There is no transcript or Done label inside that sheet, and the index correctly does not claim one. The remote-daemon delay and sparse export are disclosed tooling limits, not performance evidence.

Independently read the public projections' assistant turn items: A02 grows 2,216→3,092 before / 4,964→5,945 after; A03 grows 5,053→6,411 / 27,158→28,338; A04 grows 1,174→13,856 / 10,888→12,400. All observed assistant items are running at both samples. The final shell observers show interrupted status, stop requested, and null activeRunId on all six sides. Both A04 sheet probes are true before and after the growth interval. The application Date freeze explains Working 0s and does not establish timer-notification correctness. No FPS, latency, exhaustive native interaction coverage or new render-count result is inferred.

The independent rebuild used a new detached checkout at the exact head, /home/ubuntu/wt/pr-24651-audit2-r4, created with git worktree add --detach and installed with vp install. Leased Pixel Tablet session audit24651r4; installed only through vp run mobile:install android --session audit24651r4. Native fingerprint ed36a9cc9856c84a322bb71e6d67744f0a00877d, Android API36/Android16, 1280×800dp, DPR2, fontScale1, dark, real Expo development client/Hermes/React Native, React Compiler enabled, agent-device 0.21.32, full-device 2560×1600 screenshots: these match the delivered environment line.

Adapted the published scripts only for scratch paths, the separate checkout, audit side/session/device identifier, and ports (backend 15731, Metro 8083). All spawned servers and Metro had T3CODE_DEV_SEED=0. Fresh state lived under audit2/scripts/audit-A03-state-20261027T212232Z; no live userdata, source patch or synthetic provider was used. Ran the same 12-thread garden seeder and real B response, public A stream, A/B warm opens, retained live subscriptions, fixed client Date and anchored advancing backend clock. Repeated A03's scroll/rename/select/growth/return/stop driver. My public projections grow 7,615→9,073 characters while running; final shell is interrupted with null activeRunId.

**Rebuild pixel result: 0 / 4,096,000 differing RGB pixels, 0 pixels >8/255, maximum channel delta 0, no difference bbox.** The rebuilt consecutive pair also has zero RGB differences. The delivered A03-after.png and my full-surface settled frame are pixel-identical; no non-antialiasing rebuild finding exists this round.

![Independent exact-head A03-after rebuild, matching the delivered capture pixel for pixel](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/9adae1100b278212/frame-0-1.png)

[Audit support: inspected contact sheets, adapted drivers, raw rebuild video/captures, comparison JSON, environment and redacted logs](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/53e63d5f90fa61bd/audit2-support.tar.gz). Credentials and isolated database state are excluded; credential-bearing log lines are redacted. Original raw scratch logs remain private on disk.

For every other row below, SUFFICIENT retains round 3's limited selector/source/harness scope. It does not promote an unfilmed variant to native-device proof. Nothing in the new recordings contradicts those earlier verdicts. In particular, visible rename propagation corroborates A05, and Working→Done corroborates A16. The original pass-1 matrix's broader requested drag/search/provider variants remain subject to the round-3 scope decisions supplied by the lead; this audit does not reopen or silently expand them.

| Row | Status | Coverage / reason |
|---|---|---|
| A01 Visible Home | SUFFICIENT | Prior phone/H scope retained; no new contradiction. |
| A02 Native iPad primary column | INSUFFICIENT | Both-side blank selection frames; unrelated clock pixels. |
| A03 Actual tablet sidebar | INSUFFICIENT | Both-side blank selection/return frames; before recording normalization overlap. Exact-head still rebuild passes. |
| A04 Mounted arrangement sheet | INSUFFICIENT | Rename/growth/stop corroboration present; unrelated native clock pixels. |
| A05 Rename/metadata | SUFFICIENT | Prior scope retained; all new native paths propagate rename. |
| A06 Runtime/goal/background | SUFFICIENT | Prior H/source scope retained; no contradiction. |
| A07 Approval/auth refresh | SUFFICIENT | Prior H/source scope retained; no new provider approval UX claim. |
| A08 Input/request variants | SUFFICIENT | Prior notification/source scope retained; no new native guest/nonblocking claim. |
| A09 Hidden subagent aggregation | SUFFICIENT | Prior H/source scope retained. |
| A10 Shelves/pin/order/snooze | SUFFICIENT | Prior semantic-field scope retained; no new drag/expiry/paging claim. |
| A11 Search/filter | SUFFICIENT | Prior title-selector/source scope retained; no new search UX claim. |
| A12 PR-stack consumer | SUFFICIENT | Prior shared-selector/source scope retained; no direct hook/payload claim. |
| A13 New-task destination | SUFFICIENT | Prior imperative/source scope retained. |
| A14 Membership/environment | SUFFICIENT | Prior H/source boundary scope retained. |
| A15 Independent zero crossings | SUFFICIENT | Prior H count-boundary scope retained. |
| A16 Stop/terminal freshness | SUFFICIENT | Prior H/phone scope retained; native Done endpoints corroborate it. |
| S01 Settled phone Home | SUFFICIENT | Prior static-control verdict retained; no new contradiction. |
| S02 Settled tablet Home | SUFFICIENT | Prior static-control verdict retained; no new contradiction. |
| C01 Loading/preferences | EXCLUDED | Prior unchanged-control exclusion retained. |
| C02 No connections | EXCLUDED | Prior unchanged-control exclusion retained. |
| C03 Offline/error/cache | EXCLUDED | Prior unchanged-control exclusion retained. |
| C04 Unsupported client | EXCLUDED | Prior unchanged-control exclusion retained. |
| C05 Connecting | EXCLUDED | Prior unchanged-control exclusion retained. |
| C06 No projects | EXCLUDED | Prior unchanged-control exclusion retained. |
| C07 No threads/filter empty | EXCLUDED | Prior unchanged-control exclusion retained. |
| C08 Appearance/capability variants | EXCLUDED | Prior cross-product exclusion retained. |
| C09 Older-settled paging | EXCLUDED | Prior unchanged-mechanics exclusion retained. |
| C10 Drag/expiry/independent timers | EXCLUDED | Prior unchanged-mechanics exclusion retained. |

Cleanup completed: real stream stopped through public thread.stop; connection removal requested; pool acknowledged Closed: audit24651r4. Captured backend process group 224505 and Metro group 224466 were terminated after their cwd checks; ports 15731 and 8083 have no listeners. The new detached worktree was removed and its absence verified. /home/ubuntu/wt/pr-24651 remains clean and untouched. No tests were rerun for this proof-only audit. Lowest observed free disk was 16GB; 17GB after checkout removal. All work and downloads remain under the specified audit2 scratch directory.

FRICTION:
- tool | Supplied iOS evidence cannot keep the native clock identical through the agent-device 0.21.32 pool interface; clock pixels still fail the strict full-surface rule | Expose a persistent native status-bar/time override before another iOS capture round.

VERDICT: INSUFFICIENT A02, A03, A04
