# Proof audit, pass 1 — [#32534](https://git.cafe/pingdotgg/t3code/pull/32534)

Findings first:

1. **A1R — defective interaction evidence.** Both MP4s are 7.5-second, 30 fps, 225-frame encodings of three settled PNGs (75 frames per step). The linked reproduction instructions and record-resize driver explicitly exclude waiting and transitional frames. I inspected the wide, compact and return-wide frames and both cut boundaries. They are clean and correctly padded, but there is no recording of the actual resize. They prove the settled states, not the requested interaction over time. Replace or supplement with a continuous browser recording; preserve settled holds without cutting out the resize.
2. **B3 — defective under this brief’s capture-quality rule.** B3-sheet.png (and B3-W-light-before.png / B3-W-light-after.png) clips every crowded reset/credit pill: only the reset glyph is visible; the reset duration and two-credit count cannot be read. This is identical before/after and explicitly disclosed. It is not a new product regression. The pixel-identity claim is true, but the brief says clipped text is not evidence, so this row cannot be accepted as complete readable visual proof. A continuous detail interaction recording could expose the full values while retaining the crowded frame as context.
3. **R1 — missing reset-string branch.** formatResetsIn renders “Resets momentarily” for a future reset less than one minute away and “resets now” after expiry. Those are different text shapes from T1’s “↻ 23h 59m”; the former is wider and shares the pill whose shrink behavior changes here. No supplied capture shows either branch next to a long account name at the minimum wide pool width. Seed a synthetic near-expiry reset and record the explicit Refresh limits transition; this is a proof gap, not an observed code defect.
4. **K1 — missing interaction recording.** The new name/chip is inside a hover/click/focus popover trigger. No linked recording shows activation over the newly added content or keyboard open/dismiss. The uploaded integrated capture driver contains open/dismiss assertions after still capture, which is useful context but does not satisfy the brief’s recording requirement.

No source, worktree, PR, review, comment or provider state was changed. No server was started. Only this matrix is uploaded.

## Scope and provenance

Reviewed local head [dfdf1c7e6e](https://git.cafe/pingdotgg/t3code/commit/dfdf1c7e6ec922a535fddd92417905784b162676) in /home/user/wt/pr-32534 against origin/main. GitCafe metadata currently names [b6053b19b0](https://git.cafe/pingdotgg/t3code/commit/b6053b19b078b5cdfb72b96e580285c6f82738aa); the brief identifies the local head as its main merge. The component, production wrapper, stylesheet and shared usage collector have no diff between the main evidence revision [f77e6dc16f](https://git.cafe/pingdotgg/t3code/commit/f77e6dc16f) and the reviewed local head.

I1 is explicitly retained from [1ad7abff6b](https://git.cafe/pingdotgg/t3code/commit/1ad7abff6b). The subsequent component change only changes the single-account pill from min-w-0 to shrink-0; its short initials label and reset-only pill are unconstrained in I1. I accept I1 as the narrow integration fixture allowed by the brief, with that limitation; it is not a newly run integration pass on the final head.

## Render-path inventory derived from code

The production caller is UsageLimitsSection in UsageLimits.tsx, called by UsagePage on /usage when Limits is selected and at least one environment is selected. Sidebar, command palette and usage.open keybinding all navigate to that route. The browser test is the other repository caller. Desktop wraps this web UI; native mobile uses its own component.

The changed path is UsageLimitsPooled → PoolSection → each displayed PoolWindowCard → PoolBar → each non-null member.window → PoolSegment → either RedeemableSegment → SegmentTriggers or SegmentTriggers directly. PoolBar computes showPercent from total columns, including columns with no window. Exactly one column changes the label from absent to AccountName, omits the duplicated percentage, and keeps the reset/credit pill from shrinking. More than one column uses the same label, percentage and min-w-0 pill as main.

AccountName chooses a nonempty displayName, else an email initials chip, else the provider label. displayName takes precedence when both exist. Its other callers are compact LegendRow and redemption status text; neither changes. SegmentTriggers has compact numbered bar + legend below 42rem and wide in-bar content at or above 42rem; the page changes card grid at md. Names may fit or truncate. The pill has four shapes: absent, reset only, credits only, both with separator. Reset strings also branch into future duration, momentarily, expired and absent/invalid. Fill, refill hatching, pace tick, accent and focus/open ring are independent paint layers.

Popover interactions are hover/click on the bar, click/keyboard on the legend, keyboard focus/open/dismiss, and moving the shared popover across segments. Details can disclose email; reset action closes the popover, opens confirmation, and produces permission/busy/result/error states. Environment/provider filters and refresh can replace pools, alter column count or remove the active trigger. now advances on explicit refresh, not a timer. The empty, unavailable, external-link and parent-loading/error paths are recorded below but do not render this changed subtree.

## Minimum fixture matrix

W = 1280×900, normally 742px pool; C = 390×900, 316px pool. L/D = light/dark. T1 uses the same 1280×900 viewport with measured 671/672px pools. N = 2026-10-25T16:00:00Z. H = labelled real-component harness with app CSS and WorkspacePageContainer, synthetic presentations; S = isolated real dev app with synthetic native-provider or CLIProxy reports. No real account or paid turn is needed. Stills compare before and after with the same inputs. Every row requiring an interaction or actual change over time is marked recording.

| Row | Fixture/data | Diff affects | Minimum capture | Seed | Covered by | Status |
|---|---|---|---|---|---|---|
| A1 | 1 Codex, email only; future weekly reset; 40% used | yes | W/C × L/D, stills | H or S: email kam@example.com; reset N+3d | [A1 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bd41419239f6d0ce/A1-sheet.png) | covered |
| A1R | Same account; resize W → C → W | yes; recording | W → C → W × L; continuous recording | H or S: keep the same page mounted while resizing | [Before MP4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/8e84093012934ee2/A1-resize-before.mp4); [After MP4](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e6a17bc86dacbc18/A1-resize-after.mp4) | defective |
| A2 | 1 Codex; short displayName (wins over email), future reset | yes | W × L/D, stills | H; S with a configured native instance display name | [A2 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/57c02469268f8d81/A2-sheet.png) | covered |
| A3 | 1 Codex; no displayName/email → provider fallback | yes | W × L, stills | H; S with a native provider reporting no email and no configured name | [A3 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/462710500635d911/A3-sheet.png) | covered |
| A4 | 1 Codex; long name; reset + 12 credits; accent; pace tick/hatching | yes | W × L/D, stills | H; S with native-provider displayName and mock usage/reset-credit response | [A4 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b7dcd0c8862bce56/A4-sheet.png); [credit detail](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/492bd9b7692cd3af/A4-credit-detail.png) | covered |
| A5 | 1 Codex; displayName; no reset and zero/absent credits → no pill | yes | W × L, stills | H; S with a mock report lacking resetsAt/resetCredits | [A5 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/78ecc6e8ea6f6f8f/A5-sheet.png) | covered |
| A6 | 1 Codex; long name; credits only → ticket pill without separator | yes | W × L, stills | H; S with a mock credits report but no resetsAt | [A6 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/359cdb264febc713/A6-sheet.png) | covered |
| T1 | 1 Codex; long name; 23h 59m reset + 12 credits; exact breakpoint | yes | 1280×900 × L, pool 671/672px, stills | H: wrapper widths 953/954px; S can resize modal until measured pool crosses 672px | [T1 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/0e88dcc222b82368/T1-sheet.png) | covered |
| R1 | Near reset: long name + 12 credits, “Resets momentarily” → “resets now” | yes; recording for refresh/time transition | Pool 672px × L; continuous recording covering both settled states | H: reset N+30s, then advance supplied now past reset; S: mock near reset and explicit Refresh limits after expiry | None; T1 uses the future-duration branch only | missing |
| D1 | 1 Claude; email chip and provider fallback | yes; provider control | W × L, two stills | H; S with Claude reports; other drivers reuse the same AccountName branches | [D1 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/7864d72eef63e43f/D1-sheet.png) | covered |
| B1 | 2 accounts; both render; per-segment name + percent + reset | no; regression control | W × L/D, stills | H or S: two distinct accounts with matching window kinds | [B1 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/a43c67b14844cb0c/B1-sheet.png) | covered |
| B3 | 6 long-named accounts; each has reset + credits; crowded segments | no; crowded regression control | W × L, stills with readable required content | H or S: six distinct accounts; fixed production wrapper | [B3 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/c6600ebd1a10da4c/B3-sheet.png) | defective |
| I1 | Real /usage → Limits; 1 email-only source account | yes; integration | W × L/D; C × L, stills | S: isolated T3 home, Settings → Providers → synthetic CLIProxy hub; source returns one Codex account | [I1 sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/cfc907978bea6f22/I1-sheet.png) (earlier label-only revision) | covered |
| K1 | Interact with the newly visible name/chip inside the wide bar; open/dismiss details | yes; recording | W × L, recording: hover/click name, keyboard focus + Enter/Escape; one compact legend activation | H can cover hover/click; S covers keyboard, permissions and real popover context. Use synthetic account; no credit redemption needed | No linked recording; capture-real-app.mjs contains open/dismiss steps after stills, but the body supplies no recording of them | missing |

## Other branches and deliberate scope collapse

The rows below preserve the complete branch/interaction inventory. “missing” here means uncaptured, not an additional required proof gap: minimum is none because the diff does not affect that path, or its visible label/pill geometry is already represented above. Different provider runtime adapters, remote transports, deduplicated origins, window labels and count values do not create another changed rendering rule. No cross-product of all unrelated parent states is required for this small visual fix.

| Row | Other visual/data/interaction branch | Minimum/reason | Seed | Covered by | Status |
|---|---|---|---|---|---|
| X0 | No selected environment, null config, no pools/notices/links | none; changed subtree absent | S: deselect environments or use an empty isolated config | None | missing |
| X1 | Unsupported/probeFailed/no-windows notices; external ChatGPT/manage-usage cards | none; changed subtree absent for excluded accounts | H or S: unavailable limits, empty windows or ChatGPT shared provider | None | missing |
| X2 | Several reports deduplicate to one account; hub/native; source-only non-redeemable segment | none beyond A1/A2/A3; collection and wrappers unchanged | S: duplicate email/account identity across native and mock hub reports; omit nextCreditId for non-redeemable path | I1 covers source-only non-redeemable; dedup not captured | missing |
| X3 | Multiple windows/providers, sparse columns (member.window null), Cursor descriptions, Antigravity ordering | none; each present segment reduces to single/multiple-column fixtures | H or S: two accounts with disjoint window ids; Cursor auto/api reports; Antigravity model windows | None | missing |
| X4 | 0/100% fill, no/edge pace tick, refill absent/zero, arbitrary accent, one/many-digit credits | none beyond A4/T1 pressure; fills do not change label/pill flex geometry | H or S: vary usedPercent/windowDurationMins and reset credit count | A4 covers custom accent, tick and refill; extremes not captured | missing |
| X5 | Popover plan/location/email disclosure/reset/pace/restores/credits; moving active popover between segments; removing active account | none beyond K1; detail markup/context unchanged; recording if exercised | H for popover payload; S for filtering/removal and settings | No linked recording | missing |
| X6 | Reset-credit permission disabled; confirmation/cancel; busy; success/warning/error status, status AccountName | none; AccountName definition and redemption UI unchanged; recording if exercised | S with mock reset-credit endpoint and scoped credential; no real account needed | None | missing |
| X7 | Environment/provider filters; Limits toggle, refresh (now updates explicitly), account list transitions, connection errors/reconnect | none beyond R1/K1; parent behavior unchanged; recording if exercised | S with synthetic source and isolated state | Only settled I1 Limits page, no transition recording | missing |
| X8 | Desktop shell, native mobile, other OS/browser, local/remote/tunnel | no separate branch in changed web code; no extra platform matrix required | Desktop wraps web; mobile has separate unchanged usage component. Web synthetic report can be viewed remotely | Linux Chromium web only | missing |

## Capture and claim verification

Downloaded all 25 direct body assets, plus 135 linked PNG assets from the two evidence indexes. Opened every directly linked sheet, both nested resize storyboards, the A4 credit detail, and decoded both MP4s. Inspected full sheets and readable card crops. Recomputed RGB channel differences for all 24 source before/after pairs and checked both supplied diff masks for every pair: all 48 masks match their advertised thresholds. No unrelated changed pixels were found.

| Body claim | Independent result |
|---|---|
| Compact captures are pixel-identical | True: A1 C light/dark, I1 C light, resize compact, T1 671px all have 0 changed pixels. |
| B1 and B3 pixel-identical at threshold 0 | True: B1 light/dark and B3 light each have 0 changed pixels. B3 still fails the brief’s readable-content rule. |
| Only name pixels differ in A4 | True: light 3,801 / dark 3,946 changed pixels; bbox x377–991, y177–189, within added name. |
| Only name pixels differ in A6 | True: 4,197 changed pixels; bbox x377–1055, y177–189. |
| Only name pixels differ in T1 | True: 3,286 changed pixels at 672px, bbox x412–942, y177–189; 0 at 671px. |
| A4/A6/T1 pill matches main | True for supplied states: all changed pixels are left of the pill; A4 detail visibly shows the full 12 on both sides/themes. This does not cover R1. |
| Wide single-account label appears; percent is not repeated | True in A1–A6, T1 wide, D1 and I1. A1/I1 wide delta is exactly the 16×16 chip, 224 pixels. |
| Resize settled holds and return-wide state | Decoded holds/cuts look clean; compact keeps its native 390px width. They are an edited three-state storyboard, not a continuous resize recording. |
| Capture environment | PNG dimensions match W/C and T1’s stated full viewport; themes are visually correct. Font/DPR/root size/clock/pool widths are reported by drivers and metadata, not measurable from a PNG alone. |

There are no observed spinner/skeleton, blank-content, stale-popup, duplicated/ghosted-text, wrong-theme or unrelated-diff defects in the other supplied stills. Long-name ellipses are intentional and are distinct from B3’s clipped reset/credit content. The I1 Usage modal is the intended route UI, not a stale overlay.

FRICTION:

- tool | Python urllib downloads returned HTTP 403; curl with a browser User-Agent retrieved every asset | use curl for this upload host.
- tool | System Python lacked Pillow/NumPy; installed audit-only copies under the assigned scratch directory | provide an image-analysis environment with the audit tooling.

No server cleanup was necessary. Worktree remains clean. Available disk space remained above 100 GB.

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

VERDICT: INSUFFICIENT A1R, B3, R1, K1
