DL-224
A surface publishes its active roving group to the root dispatcher via a registered Set<RovingGroupHandle> the root active accessor scans for the group whose isFocused() is true — making the RIG-2130 focus gate structural in one root accessor (no per-surface opt-out) at tier 1. Safe by two invariants: a stop element belongs to at most one registered group (element-identity predicate s.el === document.activeElement), and a stale un-unregistered handle is dispatch-inert (detached elements never hold focus). A single setActiveGroup signal was rejected — it re-opens the unconditional-tier-1-claim bug class the PR #472 review closed. The gate is tier-1 only; the tier-3 escape for registered board.*/list.* commands is a pre-existing hole deferred to the palette/zone lane (record RD-4).
Status: Active (Matt, 2026-08-22)
Record: ../../ui/compass-keyboard-spine-app-root/design.md#resolved-decisions