95aa709606
Two live-QA findings from a locked KDE desktop (real cua-driver 0.20.0): 1. capture() with zero discovered windows returned a bare 'capture mode=ax 0x0' — no hint that the desktop session was LOCKED, which freezes renderers and hides windows. New _empty_discovery_reason() names the dominant causes in order: locked session (loginctl LockedHint probe, fail-safe), missing DISPLAY, else a pointer at hermes computer-use doctor. Surfaced through the existing window_title -> summary path, so the model and the user see it inline. 2. _call_tool_via_cli retried 'daemon is not running' 4x with ~3.5s of backoff sleeps — a permanent condition for that invocation (the CLI transport needs the machine-wide daemon; Hermes' MCP runtime does not). Now fails fast on the first attempt with a message naming the split. Transient empty output (EAGAIN congestion) keeps the retry loop — pinned by test. Live-verified on the locked desktop: capture now reports the lock and the unlock action; CLI fallback errors immediately with the transport explanation. 7 new tests; 191 sibling tests green.