utils/gatelock/gatelock
Krzysztof kuhy Rudnicki 9f271b0d37 Fix the cap hook in CI, and the re-exports its --all-files run exposed
The hook entry was an absolute /home/kuhy/utils path, copied from a config
written for ~/.claude where it only ever ran locally. On an Actions runner
that is exit code 127 — "No such file or directory" — so gatelock-precommit
and crdt-sync-precommit failed on every commit of this refactor while the
hook silently checked nothing. Now repo-relative, matching the sibling hooks
(`entry: scripts/check_subproject_scope.sh`): pre-commit always runs from the
git root, so it resolves the same in both places.

Fixing that made the CI configs runnable locally, and `--all-files` then found
what per-file runs had missed — ruff pruning imports that exist *for* their
re-export. `import crdt_sync` was broken three separate ways (FileSyncStateStore,
encode_key, FileCredentialStore). Each affected module now states an explicit
__all__ so the autofixer cannot take them again, and the two files that pushed
past the cap once __all__ was added are split further:

  _firebase.py 260 -> 247 + _fberrors 25
  _sync.py     257 -> 188 + _syncargs 91

Test patch targets followed the code they patch: gatelock._outputs.shutil ->
_xrandr.shutil, gatelock._arbiter.Path -> _claims.Path.

gatelock and crdt-sync both pass `pre-commit run --all-files` in full;
389 and 259 tests at 100% branch coverage; the root gate exits 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CFSGeWxHPY5rHUGrPqhcmG
2026-08-22 15:52:59 +02:00
..
tests Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
__init__.py Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
_arbiter.py Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
_arming.py gatelock: split _window.py 571 -> 243 lines across four modules 2026-08-22 14:20:11 +02:00
_claims.py gatelock: split _arbiter.py and _escape.py — package now fully under the cap 2026-08-22 15:21:46 +02:00
_config.py gatelock: split _window.py 571 -> 243 lines across four modules 2026-08-22 14:20:11 +02:00
_density.py gatelock 0.4.0: the viewport moves for the user and nobody else 2026-08-03 15:50:51 +02:00
_detect.py gatelock v0.2.0: per-output locking, monotonic recovery, N-app arbitration 2026-07-25 14:30:03 +02:00
_escape_types.py gatelock: split _arbiter.py and _escape.py — package now fully under the cap 2026-08-22 15:21:46 +02:00
_escape.py gatelock: split _arbiter.py and _escape.py — package now fully under the cap 2026-08-22 15:21:46 +02:00
_fitcheck.py gatelock: make fit/scroll geometry tests immune to a real WM 2026-08-21 13:00:20 +02:00
_grabwatch.py gatelock: split _recovery.py and _surfaces.py, and fix two fail-open guards 2026-08-22 15:08:50 +02:00
_guards.py gatelock v0.2.0: per-output locking, monotonic recovery, N-app arbitration 2026-07-25 14:30:03 +02:00
_hooks.py gatelock: split _window.py 571 -> 243 lines across four modules 2026-08-22 14:20:11 +02:00
_keyboard.py Make lock surfaces keyboard-operable and safe on a 768px screen 2026-07-30 16:01:15 +02:00
_output_types.py gatelock: split _arbiter.py and _escape.py — package now fully under the cap 2026-08-22 15:21:46 +02:00
_outputs.py Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
_placement.py Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
_preempt.py gatelock: split _window.py 571 -> 243 lines across four modules 2026-08-22 14:20:11 +02:00
_queue.py gatelock: promote the priority queue from leetcode_guard 2026-08-21 12:33:43 +02:00
_randr.py Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
_recovery_types.py gatelock: split _recovery.py and _surfaces.py, and fix two fail-open guards 2026-08-22 15:08:50 +02:00
_recovery.py gatelock: split _recovery.py and _surfaces.py, and fix two fail-open guards 2026-08-22 15:08:50 +02:00
_root.py Initial gatelock: shared lock-window + HMAC log-integrity backend 2026-06-19 17:39:44 +02:00
_scrollable.py gatelock: split _scrollable.py 495 -> 243 lines across four modules 2026-08-22 14:28:21 +02:00
_scrollfit.py gatelock: split _scrollable.py 495 -> 243 lines across four modules 2026-08-22 14:28:21 +02:00
_scrollkeys.py gatelock: split _scrollable.py 495 -> 243 lines across four modules 2026-08-22 14:28:21 +02:00
_surface_types.py gatelock: split _recovery.py and _surfaces.py, and fix two fail-open guards 2026-08-22 15:08:50 +02:00
_surfaces.py Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
_textmirror.py Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
_userintent.py gatelock: split _scrollable.py 495 -> 243 lines across four modules 2026-08-22 14:28:21 +02:00
_vt.py Initial gatelock: shared lock-window + HMAC log-integrity backend 2026-06-19 17:39:44 +02:00
_window.py gatelock: split _window.py 571 -> 243 lines across four modules 2026-08-22 14:20:11 +02:00
_xrandr.py Fix the cap hook in CI, and the re-exports its --all-files run exposed 2026-08-22 15:52:59 +02:00
log_integrity.py Initial gatelock: shared lock-window + HMAC log-integrity backend 2026-06-19 17:39:44 +02:00
widget_group.py gatelock: add shared button, heading/row and WidgetGroup 2026-08-14 23:54:52 +02:00
widgets.py gatelock: add shared button, heading/row and WidgetGroup 2026-08-14 23:54:52 +02:00