steam-backlog-enforcer/steam_backlog_enforcer/main
Krzysztof kuhy Rudnicki dc22bd557c fast install: never report a failed run as success; queue the manifest first
The BG3 fast install of 2026-10-23 downloaded 160 GB, was refused by the
installer, and the web job still ended on a full bar, "Done!" and Succeeded
while Steam restarted the download from 0%.

- A failed run's reason is read from the installer's own run log (its ERROR
  lines). A waiting job prints "Failed: fast install of <game>: <reason>",
  which fails the job; `install` no longer says "Done!" after it.
- Daemon-started failures stay on the Dashboard's Fast install card (and in
  ctl status, `error`) until a new run starts or the game is installed.
- install_game writes Steam's "needs downloading" manifest before the
  installer runs: it only finishes a manifest it finds, so fresh installs
  were refused for want of one.
- Command building moved to _fast_install_cmd (250-line cap).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYmCezqhUjUmMisF5YtM4F
2026-10-24 08:36:57 +02:00
..
__init__.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
__main__.py Split main.py (1076 lines) into a main/ package 2026-08-23 19:56:34 +02:00
_gate.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
_registry.py Split main.py (1076 lines) into a main/ package 2026-08-23 19:56:34 +02:00
_shared.py total block: two-unit countdown (2w 2d … 45s), ticking every second 2026-10-23 20:59:41 +02:00
abandon.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
exception.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
install.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
misc.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
picks.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
status.py total block: two-unit countdown (2w 2d … 45s), ticking every second 2026-10-23 20:59:41 +02:00