Go to file
Krzysztof kuhy Rudnicki 6eb70de0ba Key the pre-commit cache on the Python that was actually installed
The key said `py3.12` as a literal while the job installs `3.x`, which is
3.14.7 today. A `language: python` hook env is built by whichever Python
pre-commit ran under, so the cache kept handing back envs built on 3.12.14 and
the hooks kept running there -- invisibly, right up to the first syntax 3.12
cannot parse.

PEP 758 was that syntax. The previous commit's `except A, B:` reached pylint
and the debug-statement hook on cached 3.12 interpreters and came back as
"multiple exception types must be parenthesized", a failure with no local
reproduction: developer caches were built on 3.14, where the same pylint 3.3.2
and the same pylint 4.0.7 both parse the file fine. The syntax was never the
defect; the stale interpreter was.

`steps.setup-python.outputs.python-version` cannot drift from what was
installed, so this cannot recur on the next release either.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SfnJmxxsZ534AKk16rC2Gr
2026-08-29 12:01:52 +02:00
.github Key the pre-commit cache on the Python that was actually installed 2026-08-29 12:01:52 +02:00
.vscode chore: archive 41 unmaintained directories to testsAndMisc-archive 2026-05-14 20:21:05 +02:00
docs Grade against 3.14 too, not just run on it 2026-08-29 11:50:39 +02:00
endurain Pin the endurain importer to the phone's adb serial 2026-08-23 15:00:37 +02:00
linux_configuration Grade against 3.14 too, not just run on it 2026-08-29 11:50:39 +02:00
meta Take coverage 7.16.0 2026-08-29 11:51:18 +02:00
python_pkg Grade against 3.14 too, not just run on it 2026-08-29 11:50:39 +02:00
scripts Latest stable dependencies, gatelock v0.7.2, and the gate 2026-08-28 17:38:25 +02:00
third_party/agent-skills style(prettier): apply markdown/json formatting updates 2026-05-07 22:08:00 +02:00
.binary-allowlist billsplit: drop the four unused platform runner directories 2026-08-17 11:14:32 +02:00
.copilotignore Dissolve linux_configuration/scripts/ and single_use/ 2026-08-23 18:53:30 +02:00
.fvmrc chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00
.gitignore Extract digital-wellbeing; the directory-depth cap now enforces 2026-08-23 20:57:51 +02:00
.pre-commit-config.yaml Latest stable dependencies, gatelock v0.7.2, and the gate 2026-08-28 17:38:25 +02:00
.prettierignore Extract phone_focus_mode together with focus_policy 2026-08-23 18:32:58 +02:00
.shellcheckrc Fail the build on any shellcheck finding; fix the 222 the old gate hid 2026-08-03 19:49:11 +02:00
AGENTS.md Extract digital-wellbeing; the directory-depth cap now enforces 2026-08-23 20:57:51 +02:00
CLAUDE.md CLAUDE.md -> AGENTS.md symlink; add cocoindex_code to gitignore 2026-08-18 20:17:48 +02:00
DOCS-installer-fix.md Adopt the four markdown namespaces and gate them 2026-08-24 15:55:46 +02:00
DOCS-restructure-handoff.md Adopt the four markdown namespaces and gate them 2026-08-24 15:55:46 +02:00
lint_python.sh chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00
pyproject.toml chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00
README.md Make the geofence tell the truth, and the phone explain itself 2026-08-14 13:43:05 +02:00
requirements.txt chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00
run.sh chore: consolidate root configs into meta/, drop unused C dir + split/pdfCentered/geo_data 2026-05-14 20:40:12 +02:00
TODO-design-audit.md Adopt the four markdown namespaces and gate them 2026-08-24 15:55:46 +02:00

testsAndMisc

A collection of personal projects, scripts, and experiments — from a GPS-based phone focus tool to Linux/Arch automation, with CI, linting, and pre-commit hooks across the board.

Highlights

Phone Focus Mode

Location-based app restriction for rooted Android. Automatically disables non-whitelisted apps within 500 m of home using ADB + Magisk. Features Haversine distance calculation, hysteresis to prevent toggling, fail-safe unlock, and state persistence. Bash, Android ADB.

Linux Configuration

Automated Arch Linux setup: fresh-install scripts, i3 window manager config, LaTeX environment, and system tests. Includes documentation and test result logging.

Scripts

Utility scripts for development workflows — build file validation, secret detection, and custom makepkg helpers.

Repository Layout

Path Description
python_pkg/ Python packages (each maintained subpackage lives here)
billsplit/ Receipt bill-splitting Flutter app — people, groups, per-item assignment, e-paragon import and xlsx export (Dart, 100 % line coverage gate)
linux_configuration/ Arch Linux setup, i3 config, system maintenance scripts
focus_owner/ Device Owner app enforcing focus mode on the unrooted Pixel 6a — geofence + night curfew, hides apps the phone cannot un-hide (Dart/Kotlin)
phone_focus_mode/ GPS-based Android focus enforcer (rooted-era scripts; config.sh is still the policy source of truth for focus_owner/)
reverse_survivors/ Reverse Survivors — React/Vite game where you play the horde against an AI survivor (TypeScript, 100 % coverage gate)
scripts/ Workspace-level helper scripts and pre-commit hooks
docs/ Reference docs and historical reports
third_party/ Vendored upstream skills/agents
meta/ Repo-wide tooling: pyproject.toml, requirements.txt, .pre-commit-config.yaml, run.sh, lint_python.sh, .fvmrc. Symlinked into the repo root so tools that auto-discover from root keep working.

Archived / unmaintained projects live in the sibling repository testsAndMisc-archive.

Tooling

  • Python linting: Ruff with all rules enabled (see meta/pyproject.toml)
  • Dependencies: pip install -r meta/requirements.txt (combined runtime + dev)
  • CI: GitHub Actions — lint, build, and test on push
  • Testing: pytest (Python), custom shell-based test harness for scripts