# Proof audit pass 2

Read-only audit of [#24651](https://git.cafe/pingdotgg/t3code/pull/24651), [GitHub mirror](https://github.com/pingdotgg/t3code/pull/24651). Head [4859c3a](https://git.cafe/pingdotgg/t3code/commit/4859c3a7d372dba06a50adee68d157643a305a10), merge-base [96fc7b9](https://git.cafe/pingdotgg/t3code/commit/96fc7b955196637605cbf3b415152ce4dd0e2294). Audit began 2026-10-27 20:04:35 UTC. Completed within the 60-minute budget.

## Findings

1. **A02 and A03-after contain disallowed blank/unrendered transcript states.** In A02-before.mp4, A is selected with an A header and stop button while the transcript is entirely blank at 00:03, 00:04 and 00:05; text appears by 00:06. A02-after.mp4 has the same blank A transcript at sampled 00:02, 00:02.5, 00:04 and 00:05, populated by 00:06. In A03-after.mp4, A is highlighted but B's header remains at 00:12, 00:12.5 and 00:13 with a blank detail pane. At 00:13.5, 00:14 and 00:14.5 the header identifies A but the transcript remains blank; it is populated by 00:16. These are distinct from B's intentional “No conversation yet” state. Later frames do show streaming, rename, selection and Done. This is a proof rejection under the brief's explicit frame rules, not a claim that the PR introduces the behavior: A02 baseline also has it. See blank-transition-evidence.jpg and the full-resolution sampled frames.

2. **The exact consecutive-frame stability claim is false for all four new stills.** The index says each authoritative still has an exact pixel-identical pair at least 500ms apart. Independently comparing the RGB raw pairs yields:

   | Still | Different RGB pixels | Pixels >8/255 | Max channel delta | Location |
   |---|---:|---:|---:|---|
   | A02-before | 219 | 0 | 5 | Native status bar |
   | A02-after | 390 | 310 | 169 | Native status bar |
   | A04-before | 2,894 | 371 | 42 | Battery indicator |
   | A04-after | 2,896 | 421 | 57 | Battery indicator |

   The cause is the uploaded settled-capture.py: it converts to RGBA, then uses ImageChops.difference(a,b).getbbox(). Pillow's default alpha-only bounding-box behavior returns None when alpha differences are zero, even if RGB differs. For A02-after, RGBA getbbox() returns None while the RGB difference bbox is (827,19,2700,65). The raw pairs are in the manifest-named before-ios-A02-still-20261027T192829Z, after-ios-A02-still-20261027T193004Z, before-ios-A04-still-20261027T194256Z and after-ios-A04-still-20261027T191219Z directories. All app pixels below the respective status bars are identical within these pairs. Compare RGB, or use getbbox(alpha_only=False), and correct the evidence claim. No source edits were made.

3. **A04's delivered diff is lit by unrelated native chrome, and the independent rebuild also has a non-antialiasing delta.** A04-diff0.png and A04-diffT8.png correctly encode their declared math, but all 2,896 before/after changed pixels are in the charging battery; 421 exceed 8/255, maximum 57. This is unrelated to the selector change and fails the brief's full-surface diff condition. The “what else changed” list discloses the battery, so it is internally consistent on this point; disclosure does not waive the stated acceptance rule.

   Independently rebuilt A04-after at the requested head: 2,895 / 3,162,132 pixels differ from delivered A04-after.png, 60 exceed 8/255, max RGB delta 19, inclusive bbox x1017–1099/y79–117. **Zero app pixels below y130 differ.** The difference includes flat battery interior shading, not solely antialiasing: all 200 pixels in x1074–1083/y88–107 changed from RGB (58,201,94) to (56,200,93). The supplied capture script also falsely accepted the rebuilt consecutive pair: 2,905 RGB pixels differ, 817 exceed 8, max 153; again zero app pixels differ. These findings concern the capture harness/native chrome, not the production selector.

4. **The PR body inventory is stale.** At read time it still described the three media gaps as missing and linked the older recovering Android after take. The new index supplies the previously missing native-column and mounted-sheet semantic chapters and a connected-start Android take. Update the inventory to the final evidence set; this audit made no comments or edits.

## Rebuild

Created a separate detached /home/ubuntu/wt/pr-24651-audit at the exact head; ran vp install. Used the supplied seeding/RPC driver, CDP pairing, clock normalization and screenshot driver, adapting only scratch paths, backend port and target device identifier. Started with T3CODE_DEV_SEED=0; no live userdata was used. Leased device-pool session lead-24651-r3-audit and installed the dev client through vp run mobile:install ios --session lead-24651-r3-audit with Metro on fs-15.tail131df4.ts.net:8081. Native fingerprint f532a0c5902b69c7f69cc5fe9c807053700a07eb matched the delivered environment.

The actual app reported iOS 27.2, phone idiom, 402×874 points, DPR3, fontScale1; iPhone 17 Pro, portrait, dark, normalized native status bar, native dev client/Hermes/Metro/React compiler. Seeded the supplied 12-row garden fixture. Opened Arrange threads from B's row menu, scrolled A into view, ran a real stream, renamed A while the same sheet stayed mounted, verified continued real projection growth, stopped A, applied the supplied fixed application clock, and captured the settled end state at full 1206×2622. Original rebuilt capture is audit-ios-A04-still-20261027T201154Z/frame-0-1.png. Recomputed RGB deltas without cropping the authoritative images. Rebuild comparison and flat-interior measurements are included in JSON and rebuild-comparison.jpg.

## Structural, visual and narration coverage

- Local head and pinned merge-base match the before/after column links and manifests. Independently checked manifest SHA256 values against downloaded artifacts. Read the complete production/test diff: selector identity reuse and focused tests; no rendering, style or native chrome changes.
- Opened all four new authoritative stills, all four new diff images, all seven supplied contact sheets, both A02 column-control recordings, both A02 main recordings, both A04 recordings, new A03-after, and the explicitly retained A03-before. Used ffmpeg to extract full-surface frames at the narrated timestamps, plus transition samples around the suspicious blanks. All extracted frames were visually inspected in generated full-surface contact sheets. frame-schedule.json and inspected-frames preserve the actual coverage. This was timestamp sampling, not a claim to inspect every encoded frame.
- A02 is the genuine native primary-column path: delivered native diagnostics establish isPad=true, native support=true, mounted NativePrimaryColumnContext presented=true and selected B on both sides, with no generic-sidebar override. Dimensions 2752×2064 displayed pixels, landscape, dark, matching 1376×1032pt/DPR2. Encoding rotation metadata is consistent with displayed landscape. The A/B selections, rename in the visible column, stop and Done all appear. Supplementary hide/reveal controls work on both sides. Their existing bottom workspace-tab/composer overlap is outside the PR's selector scope and is not treated as a newly introduced defect.
- A04 both sides are 1206×2622 portrait/dark, matching 402×874pt/DPR3. The same Arrange threads sheet remains mounted with A visible across the RPC rename and the later sampling interval. The new title appears without reopening. The sheet itself has no visible transcript tick counter; raw active-run/projection growth establishes continued real streaming. Later stills are the stopped, normalized fixture and must not be mistaken for the active-stream moment.
- A03-after is 2560×1600 landscape/dark, matching Pixel Tablet 1280×800dp/DPR2. It starts connected; no reconnecting/syncing banner was seen in the sampled after frames or supplied brand-region check. Scroll, rename, A entry, growing transcript by 00:16/20.4, B return, stop and Done all occur. The narrated 00:11.6 transcript milestone is not yet visually rendered at that media time; the blank/stale interval above remains. The retained before has its disclosed harness prefix and sync interval; it was not replaced or relabelled as clean native-only proof.
- Declared diff0 is absolute RGB difference multiplied 255 with saturation. DiffT8 retains pixels with any channel >8/255 before the same amplification. Independently recomputed results agree with delivered diff images. A02 before/after: 14,983 changed pixels, maximum 1, zero >8; consistent with subthreshold raster/glass/compositing variation. A04 counts are in finding 3. The index correctly discloses differing stream text/timing, relative clocks, live status bar in videos, and native battery differences in stills. It does not support its exact consecutive-pair identity claim.
- Re-opened retained S01 phone and S02 tablet static controls and tablet diffs: RGB differences are exactly zero for both control pairs. Read the existing H transcript and matrix limitations. No new capture contradicts the previously accepted selector-only proof for the other rows. No FPS/latency measurement, exhaustive provider/state UX, direct PR-hook payload test or native guest-request presentation is inferred from these captures.
- “Readable”, “under the chip” and “ring survives” were not additional claims in the supplied current matrix/index/PR body that required an unprovided special fixture. Long renamed A titles visibly wrap in the sheet and sidebar. No inference of complete untruncated sidebar titles is made.
- Read-only forge status showed 38 successful checks. Existing approvals were for an earlier head; this proof audit does not represent them as new-head review approval. No tests rerun and no production regression asserted solely from these proof defects.

## Row verdicts

SUFFICIENT retained below means the limited selector/source/harness scope accepted by pass 1; it does not upgrade unfilmed variants to device proof.

| Row | Status | Assessment |
|---|---|---|
| A01 Visible Home | SUFFICIENT | Prior phone flow and H retained; no new contradiction. |
| A02 Native iPad primary column | INSUFFICIENT | Correct device/native path and semantic actions supplied; disallowed blank A transcript frames and false consecutive-pair identity. |
| A03 Actual tablet sidebar | INSUFFICIENT | New after starts connected and completes actions; stale B header/blank selected-A detail at 12–14.5s. Prior before/count evidence retained. |
| A04 Mounted arrangement sheet | INSUFFICIENT | Rename gap closed and continued streaming corroborated; full-surface battery diff, false stability claim and non-AA rebuild delta fail strict proof criteria. |
| A05 Rename/metadata | SUFFICIENT | Prior proof retained; new column/sidebar/sheet renames corroborate semantic freshness. |
| A06 Runtime/goal/background | SUFFICIENT | Prior H/source scope retained. |
| A07 Approval/auth refresh | SUFFICIENT | Prior H/source scope retained, no provider approval UX claim. |
| A08 Input/request variants | SUFFICIENT | Prior notification/source guards retained; guest/nonblocking native presentation remains unfilmed. |
| A09 Hidden subagent aggregation | SUFFICIENT | Prior H/source scope retained, no new delegated-agent UI claim. |
| A10 Shelves/pin/order/snooze | SUFFICIENT | Prior semantic-field H scope retained; drag, expiry and paging remain excluded. |
| A11 Search/filter | SUFFICIENT | Prior title-source selector proof retained; no search UX video claim. |
| A12 PR-stack consumer | SUFFICIENT | Shared-selector/source scope only; H does not instantiate hook or PR payload. |
| A13 New-task destination | SUFFICIENT | Source-scoped imperative field read only; direct destination capture remains absent and unclaimed. |
| A14 Membership/environment | SUFFICIENT | Prior H/source boundary proof retained. |
| A15 Independent zero crossings | SUFFICIENT | Prior H count-boundary proof retained. |
| A16 Stop/terminal freshness | SUFFICIENT | Prior H/phone scope retained; new Working→Done frames corroborate it. |
| S01 Settled phone Home | SUFFICIENT | Recomputed 0 RGB differences. |
| S02 Settled tablet Home | SUFFICIENT | Recomputed 0 RGB differences; generic tablet, not native iPad proof. |
| C01 Loading/preferences | EXCLUDED | Unchanged control; prior exclusion retained. |
| C02 No connections | EXCLUDED | Unchanged control. |
| C03 Offline/error/cache | EXCLUDED | Unchanged control; old recovery take not relabelled. |
| C04 Unsupported client | EXCLUDED | Unchanged control. |
| C05 Connecting | EXCLUDED | Unchanged control. |
| C06 No projects | EXCLUDED | Unchanged control. |
| C07 No threads/filter empty | EXCLUDED | Unchanged control. |
| C08 Appearance/capability variants | EXCLUDED | Remaining cross-product unclaimed. |
| C09 Older-settled paging | EXCLUDED | Unchanged mechanics. |
| C10 Drag/expiry/independent timers | EXCLUDED | Unchanged mechanics; not inferred from counts. |

## Cleanup

Real stream stopped through the supplied RPC. Pool acknowledged Closed: lead-24651-r3-audit. Both spawned process groups were SIGTERM'd using captured pid/pgid after cwd verification: backend 2431676, Metro 2431677. Ports 14517, 6477 and 8081 subsequently had no listeners. Detached audit worktree removed successfully. Original /home/ubuntu/wt/pr-24651 remains clean and untouched; parent /tmp/lead-24651-r3 is retained. Scratch inspection outputs are uploaded before scratch-subdirectory removal. No source edits, commits, pushes or forge comments. Lowest observed free disk 21GB. Logs uploaded with credential-bearing lines redacted; private dev pairing token is not public evidence.

FRICTION:
- tool | Artifact fetch via web/urllib failed; curl with a browser user-agent worked | Document a working artifact-fetch command.
- infra | Artifact-host DNS failed once; retry succeeded | Stable artifact DNS or an immutable locally available bundle.
- tool | Native deep-link Open prompt survived alert acceptance, with main-thread timeout/session-not-found responses; visible coordinate acceptance recovered it | Reliable native prompt handling or a documented fallback.
- runbook | Uploaded stop helper expected processGroup while the spawn manifests used pgid; direct captured-pgid shutdown succeeded after cwd verification | Use one manifest schema across start/stop helpers.

VERDICT: INSUFFICIENT A02, A03-after, A04
