A worker-routed turn stalls with "worker live-event acknowledgement did not
advance" because the gateway rejects the worker's first live event.
The gateway claims a run context for the turn (session identity plus
`isControlUiVisible`) before handing the turn to the remote worker. When the
worker's live events arrive, live-events `claimRun` adopts that pre-existing
context but its fresh-claim gate hardcoded `controlUiVisible = false` and
rejected any existing context whose `isControlUiVisible` differed. A visible
turn registers `isControlUiVisible: true`, so seq=1 was rejected as
`invalid-event` and the stream never advanced.
Visibility is a presentation preference the dispatch owns, not a run-identity
attribute. Inherit the existing context's `isControlUiVisible` when adopting it
and drop it from the identity gate. Session/agent/lifecycle identity must still
match, so foreign runs are still rejected and local turns (no pre-existing turn
context, or a matching one) are unaffected.