# PR #23573 proof audit pass 2 (static)

Head 439fbdfda04106f5820a835ba31b06f9615d0052 (= `git rev-parse HEAD` in wt). `merge-base HEAD origin/main` = 8d3b061121fe…, ancestor of both HEAD and origin/main. Diff is CSS-only (apps/web/src/index.css), as stated.

## 1. Table headers / filenames
- All 12 capture tables: header "Before (8d3b061121) | After (439fbdfda0) | Diff0 | DiffT", links correct. Filenames match their row (before/after/diff0/diffT10).
- **F6/F7 crop reuses the full-surface filenames** (`f6f7-composer-1440-dark-{before,after,diff0,diffT10}.png`) but with different URLs and content (560x110 crop vs 1280x800 full; sha1 differs). Not wrong, but misleading: alt text/filename can't tell the two apart. Rename to `…-composer-crop-…`.
- Caveat (stated in body): "before" is base CSS hot-swapped via HMR on the fix worktree, not a build of 8d3b061121. Equivalent because the diff is CSS-only.
- Sidebar ticks show before = "3m", after = "2m": before was captured after "after". Harmless.

## 2. AE recomputed (48 PNGs, /tmp/ev-23573/a2/dl)
| Pair | Dims | Claimed AE0 / AE10 | Recomputed |
|---|---|---|---|
| F1 1440 full | 1280x800 | 3662 / 3167 | 3662 / 3167 |
| F1 1440 crop | 300x95 | 966 / 939 | 966 / 939 |
| F1 390 full | 780x1688 | 14034 / 13827 | 14034 / 13827 |
| F1 390 crop | 500x200 | 4254 / 4180 | 4254 / 4180 |
| F2 full | 1280x800 | 3373 / 2339 | 3373 / 2339 |
| F2 crop | 300x95 | 1089 / 769 | 1089 / 769 |
| F3 | 300x95 | 0 / 0 | 0 / 0 |
| F4 | 300x160 | 2272 / 2192 | 2272 / 2192 |
| F5 | 300x65 | 0 / 0 | 0 / 0 |
| F9 | 160x70 | 361 / 0 | 361 / 0 |
| F6/F7 full | 1280x800 | 3671 / 3034 | 3671 / 3034 |
| F6/F7 crop | 560x110 | 13 / 13 | 13 / 13 |
All match exactly. Full-surface dimensions match the stated environment (1440 → 1280x800, 390 → 780x1688).

## 3. "What else changed" vs the images and CSS
- Connected-component locations of the diffs: F1 full = list rows + sidebar ticks (x≈150–200) + bubble edge (x≈900, y≈550). F6/F7 full = the same + caret (y≈700). F2 full = list rows only (no sidebar tick, matching "Only list rows differ"). F390 = list rows only. F9 diff = only the bubble's left rounded edge; marker and text pixels are identical, which matches "grows leftward". Every visible difference is accounted for.
- Minor imprecision: the nested-list bullet says inner `a./b.` "moves right with the outer gutter". In fact the inner text moves about +17 CSS px (outer +8.5 plus the inner gutter's own 20 → 28.5). F4's prose says this correctly ("inner gutter is also 28.5px"); the summary bullet understates it.
- Composer: the old `.composer-tiptap ol { --list-gutter: max(1.25rem, 3ch) }` (0,1,1) came after the shared `:is(...) ol` (0,1,1) and overrode its 1.25rem. The shared rule now gives the identical value, so the computed value is unchanged. The `.composer-tiptap ol:has(> li[data-marker-width="N"])` rules are higher specificity (0,2,2) and later in source, so they still win. No other `--list-gutter` setter for ol was found apart from ChatMarkdown's inline `${n+2}ch`, which wins as an inline style. The task-list checkbox uses `var(--list-gutter)`, which is consistent with F5 AE 0. No contradiction.

## 4. "plan card and .md file preview (same rule, indent only, never clipped there)"
- **Inaccurate for the collapsed plan card.** `ProposedPlanCard.tsx:195` wraps the preview ChatMarkdown in `max-h-104 overflow-hidden` with no horizontal padding (collapse when >900 chars or >20 lines, `:79`). With the old 20px gutter, a Monocraft single-digit marker (~27px) overflows by ~7px into that clip box, so it is predicted to be clipped before the fix. The fix helps there, but "never clipped" is false for that state, and it is unverified.
- The same pattern holds for the collapsed user bubble `TimelineUserMessageRow.tsx:648` (`max-h-44 overflow-hidden`) and the expanded Thought row `WorkLog.tsx:160` (`overflow-auto px-0.5`, 2px). Both are predicted clip surfaces that the body doesn't mention.
- The .md preview (`px-6`) claim, "indent only", is plausible statically.
- Suggested body fix: "plan card (expanded) and .md preview: indent only. The collapsed plan card, collapsed user bubble, and expanded Thought row use flush overflow clips, so they likely clipped before and are fixed by the same rule (not captured)." Better still, add captures.
