# Proof re-audit (pass 2, correction round): PR #22840

I checked the [new captures index](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ce241cd294b16bd7/captures-index.md) against the [corrected seven-row matrix](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ee3058e857b330fa/pr-22840-proof-matrix-pass1-corrected.md). The [prior audit](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a7139a681d673bab/pr-22840-proof-audit-pass2.md) returned INSUFFICIENT for rows 4 and 6. This audit is read-only: no forge writes, no `gh`, no edits, no pushes, and no servers were started or stopped.

## Integrity

- **SHAs.** The after worktree HEAD is [8c8993a824](https://git.cafe/pingdotgg/t3code/commit/8c8993a824adef7db892eaad02b659b06b800a01) and the before worktree HEAD is [96f09c6558](https://git.cafe/pingdotgg/t3code/commit/96f09c6558b098f05ad0c027afa3846209c03d4f). Both trees are clean, and both SHAs match the index.
- **Uploads.** The index links 26 assets (24 PNG and 2 MP4). Each is byte-identical to its file in `/tmp/evidence-22840`.
- **Recapture links.** All 8 URLs in `uploads-recapture.md` (C-390-dark and E-390-dark, each with before, after, diff0 and diff16) are present in the new index.
- **Metrics.** I recomputed every row from the saved PNGs. Sizes, the >0 count, the >16 count, the max channel delta, and the bounding box all match the index and `pixel-metrics.json`. That includes the recaptured C-390-dark row: 26,036 changed pixels, 0 above 16, max 3, bounds [65,1370,715,1446]. E-390-dark has 0 changed pixels, and its before and after PNGs are byte-identical (sha256 f43a0005…).
- **Masks.** For all six rows, diff0 (>0) and diff16 (>16) match the computed masks pixel for pixel. Changed pixels are orange (255,128,0) on charcoal (24,24,24).
- **Zero-threshold shadow.** In all four collapsed rows, diff0 shows a ring around the peek cap. Most of those pixels got darker in the after image, which fits a wider, softer blur: C-390-dark has 23,034 of 26,036 darker. The two dark rows have an empty diff16, as their max delta of 3–4 predicts. The light rows' diff16 shows only the cap edge.

## Rows 4 and 6 (objection resolved)

In the recaptured C-390-dark (before and after) and E-390-dark (before and after), the narrow composer is in the same collapsed resting form as row 3: an "Ask anything…" pill with the send button and a model/High/Full access tray, not the expanded editor. Row 4 shows the Tasks banner with the peek. Row 6 shows the revealed Goal set · 1k / 10k tokens banner above Tasks with the peek gone, and 0 changed pixels. The index now states that both narrow rows use `data-chat-composer-mobile-collapsed=true`, and that "expanded" refers only to the notice stack. That matches the matrix and the images.

| Row | State, viewport, theme | Verdict |
|---|---|---|
| 1 | collapsed, 1440×900, light; 1280×800 | OK (rebuilt independently, see below) |
| 2 | collapsed, 1440×900, dark | OK |
| 3 | collapsed, 390×844, light; 780×1688 | OK |
| 4 | collapsed, 390×844, dark | OK (recaptured, mobile composer collapsed) |
| 5 | expanded, 1440×900, light | OK (0 px) |
| 6 | expanded, 390×844, dark | OK (recaptured, 0 px, composer collapsed) |
| 7 | transition, 1440×900, light; 2880×1800 MP4 | OK |

**Row 7.** I recomputed frame PTS with cv2. Before has 12 frames: 0, 0.684, 2.715, 2.843, 3.036, 3.152, 4.546, 4.724, 4.871, 5.042, 5.192, 5.284. After has 10 frames: 0, 0.627, 2.721, 2.853, 3.006, 4.51, 4.722, 4.88, 5.024, 5.17. These match the narrated focus (2.72), expansion start (2.84/2.85), goal settled (3.15/3.01), collapse start (4.72) and rest (5.28/5.17). The MP4s are unchanged from the previous audit, which checked their frames visually.

**What else changed.** `git diff 96f09c6558 8c8993a824` changes 5 files:
- `ComposerBanner.tsx`: one class in the Peek, `shadow-md` → `shadow-composer-peek`.
- `index.css`: adds `--shadow-composer-peek: 0 6px 18px rgb(0 0 0 / 6%)`.
- `knip.jsonc`: adds an entry.
- A supplemental harness (40 lines).
- The seeder `composer-banner-shadow.py` (84 lines).

This matches the index's "what else changed" paragraph, and the pixel bounds confine every change to the peek area.

## Independent real-client rebuild (C-1440-light-after)

I opened my own preview tab and paired once against the isolated after server (:5828) with the provided pairing URL. I did not log, copy or upload the URL. I then opened the fixture thread at 1440×900 CSS in light appearance. The environment was Chrome 154, Linux x86_64, DPR 2, with a 16px root font.

Setup steps:
- Waited for the peek and for `document.fonts` to load.
- Froze `Date` to 2026-10-21T20:30Z. Performance and timers were left alone.
- Closed the main sidebar and the thread details panel, which were both pressed.
- Dismissed one provider update toast with "Dismiss notification".
- Moved the pointer to (5,400) and blurred. Afterwards the active element was `BODY` and the editor was empty.

Before capture, the peek rect was x 387.84375, y 690, w 664.3125, h 12, exactly the expected rect. Its computed box-shadow ended in `rgba(0,0,0,0.06) 0 6px 18px`. The saved screenshot is 1280×800.

| Rebuild compared with | Changed (>0) | >16 | Max delta | Bounds |
|---|---:|---:|---:|---|
| C-1440-light-**after** (index) | **0** | 0 | 0 | none |
| C-1440-light-before (index) | 14,326 | 577 | 17 | [338,607,942,640] |

The rebuild is pixel-identical to the indexed after still across the whole saved surface. Compared against before, it reproduces the index's row 1 metrics exactly. This settles the previous objection that the rebuild was a DOM/CSS reconstruction rather than a real-client capture.

## FRICTION

- Pairing worked on the first navigate. The sidebar and thread-details toggles both started pressed, and a provider update toast was present, so the cleanup steps in the brief were needed.
- The preview tool saves screenshots to `~/.t3/userdata/browser-artifacts`, which is the live T3 home and a path the tool chooses. I copied the file to `/tmp/audit3-22840` and touched nothing else there.
- Narrow states were judged from the saved captures only. I did not open a narrow viewport live, because the brief scoped the rebuild to one still.
- `ffprobe` is unavailable, so PTS came from `cv2.CAP_PROP_POS_MSEC`.
- My only artifacts are in `/tmp/audit3-22840`. I closed only my own tab (`tab_s_35e4…`).

## Conclusion

All seven rows of the sized matrix now hold. SHAs, viewports, themes, both diff thresholds, the visible zero-threshold shadow, the video narration and the source scope are all consistent. Rows 4 and 6 now show the collapsed resting mobile composer. The independent real-client rebuild of row 1 after matches the indexed still with 0 changed pixels.

VERDICT: SUFFICIENT
