mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-25 20:31:17 +00:00
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.