Review follow-ups on the column-overflow scenario:
- Memoize the sweep so the golden and the assertions consume the same
readings, which is what its contract already claimed; two runs could
disagree if a resize settled differently between them.
- Settle the column width before the mutation control measures. The test
arrives from 1680 alone and from the sweep's 600 in a full run, and the
frame eases its column tracks, so an immediate read can report the
previous viewport's bleed.
- Name the wheel delta, assert the bleed stays inside it, and compare the
travelled distance rounded: a clamp or a sub-pixel would otherwise read
as a broken fix.
The 0 the shipped column reports cannot be reached by polling for a settled
value, so the read is a fixed wait; make that wait cover a smooth-scroll
animation on any engine the lane runs on. Identical on both sides of the
mutation control, which is what keeps the 0 evidence rather than a race won.
The hero's backdrop ellipse is sized 1051/776 of the hero box so its blur
scales with the input card, which means it reaches past the column whenever
the column is narrower than the glow. `[data-conversation-scroll]` declared
only `overflow-y: auto`, and a box that scrolls in one axis computes the
other axis's initial `visible` to `auto` — so that bleed came back as a real
horizontal scrollbar, 24–95px of range across ordinary laptop widths.
Declare `overflow-x: hidden` on the column instead of leaving the second axis
to be derived. Clipping is unchanged (the box already clipped both axes); the
declaration withdraws only the bar and the user gesture.