The reconnect case still failed after the keep-alive guard fix, and the logs
said why by omission: neither outcome line appeared, so
clean_cursor_for_next_session was returning at its first early-out —
CURSOR_DECLARED was false even though the previous session had logged
'driver declares the hardware cursor'. The flag is written in
capture_virtual_output and read in the handshake; one of those is not on the
path that actually runs.
Rather than chase that, delete the dependency on it. The operation being
guarded is idempotent and costs 0.07 s: restarting an already-clean adapter
wastes 70 ms once per capture-mode connect, while failing to restart a dirty
one costs that session a full-frame copy for every frame with a visible
pointer, for its entire life. The flag stays only as a log field, so the next
run still shows whether the hint was set.
The real guard remains the one that matters: no session is streaming.