5a3edc7467
Follow-ups on the salvaged #97744 runner: - tui_gateway/hosted_room_driver.py: HostedRoomRuntime.cancel() treated its initial status read as truth, so a task transitioning queued->running (or settling) between the read and the state call surfaced a transient 'running work requires acknowledged two-phase cancellation' / StaleTaskError to the caller and failed groups.disband. Deterministic repro on the PR head: test_client_event_id_cannot_squat_disband_receipt failed 5/5 locally. cancel() now re-reads and re-routes on every race-shaped failure (bounded retries), returns already-cancelled tasks idempotently, and rejects truly terminal states honestly. - methods_groups conflict resolution keeps both method sets: the replication surface from #99047 (groups.replicate/replica_state/promote/demote) and the runner surface from this layer (groups.stop/retry/approve). - test_groups_replication_methods.py updated to the runner's stricter create contract (2-6 profile-backed members, live worker service).