An input authored by a page inside maintained Dialog and DialogPanel components stops resolving through the page's useRef accessor. In the browser game this breaks invalid map seed recovery: validation displays the error, but focus stays on the submit button rather than returning to the input.
A standalone Chrome regression reproduces this on current main after the caller event correction in #2126. The page owns an input, its seed state, a useRef('seedInput') accessor and a validation handler calling nextTick(() => field.current?.focus()). The input is projected through the maintained dialog components. The error attribute updates, but focus remains on validate instead of seed.
The nested receiver's caller snapshot contains the page's accessor alongside the Dialog's own $refs map. Ref hydration writes the input to that receiving map, while the accessor correctly retains the page's original map. This needs a runtime ownership correction, including accessors whose variable name differs from their authored ref name.
Related consumer: stacksjs/the-settlers-iii-remake#226. The full browser gate caught this in the existing restart dialog after the focused demolition checks passed.
Acceptance:
- Preserve the authored
useRefmap through nested caller scope snapshots. - Cover aliased accessors, component-local refs and repeated dialog openings without leaking refs into another component's map.
- Retain a real Chrome regression for invalid input focus alongside cancellation, confirmation and opener restoration.
- Pass relevant scope/compiler/component regressions, lint, types and normal patch release gates.
- Adopt qualified published packages through Stacks and rerun the full game browser gate before consumer acceptance.