Opt in to preempting a weaker gatelock holder

gatelock just made preempt_weaker_holder opt-in (it defaulted to True,
which let wake_alarm evict this armed lock). screen_locker is the app
that actually needs it: on 2026-08-21 diet_guard held the global grab
from 07:04 to 09:07+ while this locker retried against it, which is the
contention behind the reported lockout.

Production only -- demo mode uses a local grab and never contends.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018M5gKyYzxWG6QkCaj1wWfk
This commit is contained in:
Krzysztof Rudnicki 2026-08-21 13:31:57 +02:00
parent 390e916922
commit 426b9372be

View File

@ -156,6 +156,12 @@ class ScreenLocker(
mode="hard",
grab="local" if demo_mode else "global",
disable_vt=not demo_mode,
# Opt in: a weaker holder (diet_guard, leetcode_guard) that already
# owns the grab must stand down rather than block enforcement
# forever -- the 2026-08-21 lockout was diet_guard holding it for
# hours. Safe in this direction only; gatelock never signals a
# holder that outranks us, so wake_alarm can still take the screen.
preempt_weaker_holder=not demo_mode,
)
# Built before setup(), which calls build_surface per live output.
self.container = FrameGroup([])