steam-backlog-enforcer/steam_backlog_enforcer
Krzysztof kuhy Rudnicki 694b9409ab perf(pre-commit): batch+parallelize pytest on commit; kill 15s sleeps in steam_backlog_enforcer tests
- meta/.pre-commit-config.yaml: move pytest-coverage hook to pre-commit stage
- scripts/pytest_changed_packages.py: single batched pytest -n auto invocation
  with one --cov flag per affected python_pkg subpackage, wrapped in
  systemd-run --user --scope -p MemoryMax=4G -p MemorySwapMax=0 when available
- python_pkg/steam_backlog_enforcer/tests/conftest.py: new autouse
  _no_real_sleep fixture patches time.sleep across game_install /
  library_hider / steam_api / _enforce_loop. Removes 3x 15s real sleeps
  in TestFinalizeCompletion that fired through _ensure_steam_running

steam_backlog_enforcer test wall time: 33.97s -> 5.61s (xdist, no-cov)
5-package batched run: 732 tests in 1.37s @ 668% CPU
Coverage stays at 100% on all affected packages.

Evidence: docs/superpowers/evidence/pre-commit-pytest-batch-2026-05-14.json
2026-05-14 21:52:52 +02:00
..
tests perf(pre-commit): batch+parallelize pytest on commit; kill 15s sleeps in steam_backlog_enforcer tests 2026-05-14 21:52:52 +02:00
__init__.py feat: steam 100 percent extension 2026-03-02 20:29:32 +01:00
_cmd_done.py steam_backlog_enforcer: retry install after library hide restart 2026-05-08 14:56:46 +02:00
_enforce_loop.py steam_backlog_enforcer: reduce repeated cache refetches 2026-05-08 15:13:25 +02:00
_hltb_detail.py Apply focus-mode, screen-locker, and steam backlog updates 2026-05-03 22:41:53 +02:00
_hltb_types.py Apply focus-mode, screen-locker, and steam backlog updates 2026-05-03 22:41:53 +02:00
config.py fix(steam_backlog_enforcer): prevent enforce daemon from deleting assigned game 2026-03-25 19:19:52 +01:00
enforcer.py Harden runtime script deployment and enforce installer safety 2026-05-08 17:44:22 +02:00
game_install.py feat(steam-backlog): protect four additional Steam app IDs 2026-05-14 19:58:40 +02:00
hltb.py Apply focus-mode, screen-locker, and steam backlog updates 2026-05-03 22:41:53 +02:00
install.sh feat: steam 100 percent extension 2026-03-02 20:29:32 +01:00
library_hider.py refactor(steam-backlog): move hide retry loop into single JS evaluation 2026-03-30 16:45:25 +02:00
main.py refactor: split oversized SBE modules, extend screen locker, and enhance Horatio demo 2026-03-29 22:50:24 +02:00
protondb.py fix: remove dead code in unplayable_reason; add coverage for playable path 2026-05-08 20:35:55 +02:00
README.md feat: steam 100 percent extension 2026-03-02 20:29:32 +01:00
run.sh feat: robotgo improvements in phone focus bluetooth and printer scripts 2026-03-09 18:34:15 +01:00
scanning.py fix: accept ProtonDB gold+silver combinations; add explicit skip reasons 2026-05-08 20:31:16 +02:00
steam_api.py Apply focus-mode, screen-locker, and steam backlog updates 2026-05-03 22:41:53 +02:00
steam-backlog-enforcer.service Harden runtime script deployment and enforce installer safety 2026-05-08 17:44:22 +02:00
store_blocker.py feat: robotgo improvements in phone focus bluetooth and printer scripts 2026-03-09 18:34:15 +01:00

Steam Backlog Enforcer

Forces you to 100% complete one Steam game at a time before moving on.

Features

  • Achievement tracking: Picks the next game by shortest HLTB completionist time
  • Store blocking: Blocks store.steampowered.com via /etc/hosts
  • Game uninstalling: Removes all installed games except the assigned one
  • Process enforcement: Kills unauthorized game processes
  • Tampering detection: Detects achievement unlocks on non-assigned games
  • HLTB integration: Estimates completion time with persistent cache

Setup

python -m python_pkg.steam_backlog_enforcer.main setup

Commands

Command Description
scan Scan library, fetch HLTB data, assign game
check Check if assigned game is complete
status Show current assignment and blocking
list List incomplete games from snapshot
skip Skip the currently assigned game
enforce Run enforcer (block, uninstall, kill)
unblock Remove store blocking
reset Reset all state
installed List currently installed Steam games
uninstall Interactively uninstall non-assigned games
setup First-time configuration

Enforce mode

sudo python -m python_pkg.steam_backlog_enforcer.main enforce

This will:

  1. Block Steam store in /etc/hosts
  2. Uninstall all games except the assigned one
  3. Continuously kill any unauthorized game processes

Game Uninstall

Directly removes appmanifest files and game directories from ~/.local/share/Steam/steamapps/. Preserves Proton versions and Steam Linux Runtime.

python -m python_pkg.steam_backlog_enforcer.main uninstall