utils/gatelock/gatelock/tests
Krzysztof kuhy Rudnicki 35f6f95956
Some checks failed
dependency freshness / dependencies on newest stable (push) Waiting to run
earned_time pre-commit / pre-commit (push) Waiting to run
earned_time tests / test (push) Waiting to run
file length / file-length (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
palette drift / palette (push) Waiting to run
repo-contract / repo contract (push) Waiting to run
shared gate tests / gate unit tests (push) Waiting to run
gatelock pre-commit / pre-commit (push) Has been cancelled
gatelock tests / test (push) Has been cancelled
music_theory tests / test (push) Has been cancelled
gatelock 0.11.0: Claim.grab_held + held_grabs(), so a reader can tell a locker's X grab is actually held
A live claim was not "input is locked": it is published before the window
grabs, and leetcode-guard's study mode releases the grab while the claim
lives on. leisure-watch (contract C2) must pause shadow billing only while a
grab is really held.

- Claim.grab_held (always serialised; missing key from an old writer reads
  as grab != "none"). Arbitration still uses the declared grab only.
- Arbiter.set_grab_held(held=) rewrites the claim and holder copies in place
  through the owner's flocked fd (O_APPEND cleared, pwrite at 0, padded so
  the file never shrinks) -- same inode, flock liveness untouched. Never raises.
- Set true only after grab_set/grab_set_global succeeded; RecoveryLoop
  reports each tick's real answer (a stolen, un-retaken grab reads false).
  LockWindow.report_grab_held(held=) is the hook for deliberate releases.
- gatelock.held_grabs(claims_dir=None): live claims with grab_held and a real
  grab. Root callers pass /run/user/1000/gatelock/claims.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dsh4Znwh2KnC7q6vbGpX1N
2026-10-19 11:40:46 +02:00
..
__init__.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
conftest.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_arbiter_lifecycle.py gatelock: scope pylint to source on 4.0.8 and clear the residue it grades 2026-09-12 19:15:39 +02:00
test_arbiter_release.py gatelock: scope pylint to source on 4.0.8 and clear the residue it grades 2026-09-12 19:15:39 +02:00
test_arbiter.py gatelock: scope pylint to source on 4.0.8 and clear the residue it grades 2026-09-12 19:15:39 +02:00
test_claim_grab_held.py gatelock 0.11.0: Claim.grab_held + held_grabs(), so a reader can tell a locker's X grab is actually held 2026-10-19 11:40:46 +02:00
test_density.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_detect.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_escape_budget.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_escape.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_fitcheck.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_grab_held_wiring.py gatelock 0.11.0: Claim.grab_held + held_grabs(), so a reader can tell a locker's X grab is actually held 2026-10-19 11:40:46 +02:00
test_guards.py gatelock 0.8.2: wait_for_x_server waits for as long as it takes 2026-09-13 10:19:52 +02:00
test_keyboard.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_log_integrity.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_morning_session.py gatelock 0.9.0: morning_session, the one reader of wake-alarm's carrot 2026-10-02 13:59:33 +02:00
test_night_lockdown.py gatelock 0.10.0: night_lockdown.evening_lockdown_today, so earner gates stop re-arming after tonight's lockdown 2026-10-17 18:23:48 +02:00
test_outputs_enumerator.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_outputs_randr.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_outputs.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_queue.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_recovery_invariants.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_recovery_reassertion.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_recovery.py gatelock: scope pylint to source on 4.0.8 and clear the residue it grades 2026-09-12 19:15:39 +02:00
test_root.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_scrollable_into_view.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_scrollable.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_surfaces_focus.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_surfaces.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_vt.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_widget_group_ops.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_widget_group.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_widgets.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_window_grab.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_window_lifecycle.py Pin pre-commit's ruff to 0.16.7 and satisfy the CPY001 it brings 2026-09-12 18:11:24 +02:00
test_window_surfaces_lifecycle.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_window_surfaces_preempt.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_window_surfaces.py gatelock 0.8.1: public recovery/detector handles; declarative types import from _config 2026-09-12 19:41:13 +02:00
test_window.py gatelock: annotate a fixture param ruff 0.16.8 now flags; TS workflows dispatchable 2026-09-16 21:53:47 +02:00