A keyring prompt (gcr-prompter) that grabbed input before the
leetcode lock armed left the lock visible but unclickable: every
click went to the prompt hidden under it. Each failed
grab_set_global also froze Tk ~1 s, so the lock barely repainted.
- Raise known credential prompts above the lock after 2 s of a
blocked grab; games and other grabbers stay covered.
- Probe the grab on a side Xlib connection first so a blocked
grab never stalls the Tk loop (worst gap 1.05 s -> 0.05 s).
- Log the Tk grab error and stop blaming our own claim.
- 1.5 s startup grace in wait_for_turn, and a weaker armed lock
steps back (windowless, re-arms later) when a stronger one is
live, so only one lock is ever on screen.
- Real-X checks: verify_prompt_yield, verify_grab_responsive,
verify_all_lockers.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WzxdWZbpxQZj41WpbQPuxB