Three portability bugs the Windows development machine hid:
- The version check's subprocess.run used text=True without an explicit
encoding, which decodes with the locale codepage and crashes on
non-UTF-8 bytes (the repo's Windows-footgun lint). Pass
encoding='utf-8', errors='replace'.
- test_sha256_mismatch_rejects hardcoded the Windows asset name
(bin-win-*.zip); Linux runners resolve bin-ubuntu-*.tar.gz, so the
poisoned download was never the file under verification and the
expected rejection never fired. Resolve the asset name the way the
installer does.
- test_download_job_lifecycle_with_sha_failure let variant selection
price against the host machine; a GPU-less CI runner honestly refuses
every build (409) before the download path under test is reached. Pin
a generous budget — the test is about hash failure, not selection.