CI / test (push) Successful in 7m27s
CI / frontend (push) Successful in 3m1s
CI / reuse (push) Successful in 3s
CI / lint (pull_request) Successful in 2m16s
CI / test (pull_request) Successful in 7m24s
CI / frontend (pull_request) Successful in 2m11s
CI / reuse (pull_request) Successful in 2s
CI / lint (push) Successful in 2m15s
Several layout faults shipped while every gate passed, because nothing looked at geometry: a header whose height tracked the viewport, controls at four different heights, a tab strip that ran under the controls, and a dropdown that opened underneath the page. Assert the invariants behind those at four widths — the header stays one row, the tabs do not reach the controls, the controls share a height, the page does not scroll sideways — and that the menu renders with real dimensions and wins a hit test at its own centre. The overlap check measures the tabs rather than the strip: with the strip allowed to overflow, its box shrinks while its content paints across the controls, so the container's own rect never registers the collision. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GdyUjuXejCEfiub675z6cz Signed-off-by: Stan Grams <sjg@haxx.space>