Audit: enforce nested row and repeated header geometry
No capture: the only Swift change is a RemoteVNCSession reconnect race fix (a manual reconnect cancels a pending automatic retry) with no visible UI; the rest is the gallery geometry checker, which the gallery captures in the body already cover.
Adds reusable geometry rules for repeated headers and nested trailing controls. Every captured row/header is checked separately, so a new nested instance cannot escape the existing assertion. The collector records nearest measured parent identity and visible part roles; native AX rules reject view-frame substitutes.
Requested invariants:
- Trailing workspace, inner-tab and group indicators at any nesting share one right-edge column and each row’s center.
- A hovered row never shows its spinner and controls together.
- Session status header Copy all and × share a visual center; measured text-range bounds are recorded separately from control boxes.
This is stacked on #26504. Session status fixtures cover Claude, Codex and OpenCode plus the measured header-action-alignment fixture in light and dark. Native sidebar adapter integration is now in #26607; it preserves view-frame provenance and emits the remaining AX/theme coverage gaps. Text-range bounds are not called glyph baselines, and the unsupported glyph-baseline metric is explicit.
Validation: fleet runs40621688100 and40621746434 passed the container invariants and real-browser collector checks. The full scoped suite at21761763 remains run40622078737/snapshotbea70e152a537e4a760f8e6f95d6c797d2dd251e (passed:32tests/121assertions); the final f6c9752f test-only delta passed real-browser collector run40622469940/snapshot048d0dab63f0d6f4f69068271823d9bc364228eb. Static prepush gate passed atf6c9752f4f6. Negative fixtures test every nesting depth, repeated headers, hidden controls, new nested spinner/control collisions, missing peers/parents and wrong AX provenance.
Matching Session status product evidence is in #26572: capture 9831817724357efacf50b5ff, archive SHA-256 890adf3d30113ebeeeead7aac997e57f866ea2310d6efb43858132e1da26c978. The same header/action selectors render at product head 7821c60b2bcc18efa9e1f29c08fa95ff80fe4ae0; both appearances fail before with Session status action text centers differ by 5.00 px, and the same DOM Range assertion completes after within 0.5 px. Raw action centers are 48 px before and 53 px after. The sidecar does not record the range coordinates, so no range coordinates or glyph baseline are inferred from the button rectangles.
Review findings addressed at d8265998511683d5439bb8250dd6a2e0dcae3bd8: empty exclusivity containers now fail, explicit minimums are enforced, and ambiguous container/child group names are rejected before capture. Focused fleet run 40626489872 passed against snapshot 42cdaa7e0f2c248997c82f3a630ad042461de43a. The integrated head before this review fix was 4580575fa796cd061a8721c9d8ce2a580dec03c3; current head is bc431c59b606dce2aed970b98468aa97a445ab12, including the reviewed parent #26504 and landed product #26572 (1cc371031a3ff64dc99ffc70852df53f91919158). Fleet job 90aa8b3d87d240a1cec1aab1 passed 22 tests / 103 assertions and all 10 configured captures with zero findings or errors. Every captured Session status control center and DOM Range center is exactly 53 CSS px. Verified evidence archive SHA-256: 5b71b2701faf419206486fd29d906a59f7f9da8e801d32422f97d8fd3e0bf201. Fresh independent review is requested for this head.
Review finding fixed at bc431c59b606dce2aed970b98468aa97a445ab12: manual reconnect now cancels the delayed automatic retry before opening a new transport, so a stale retry cannot replace a healthy user connection. A DEBUG regression schedules the retry, performs the manual reconnect, and verifies the transport factory is called exactly once after the delay. Focused fleet run 40636677239 is executing RemoteViewVNCTests at this exact source.
No runtime UI edits, timers or observers. Existing browser contexts are closed by the bounded gallery runner.
Agent session: agent session