unsloth/tests/studio/install
Daniel Han 2e3cc032f6
Record the venv own requirement digests, not the installers (#9263)
* Record the venv's own requirement digests, not the installer's

Every fresh desktop install on Linux and macOS came up ManagedStale and
repaired itself before it would run. From the app's own log:

  05:44:22 Managed preflight: install probe result Stale { reason: "studio_install_requirements_changed" }
  05:44:22 desktop_preflight completed disposition=ManagedStale
  05:44:22 start_managed_repair command called
  05:44:24 studio install incomplete -- forcing dependency pass to repair...
  05:44:32 Managed preflight: install probe result Ready

The manifest recorded digests from REQ_ROOT, which is the requirements
directory next to whichever install_python_stack.py ran. A desktop bundle
carries its own copy. verify_install reads the INSTALLED package's copy,
because at verify time install_manifest.py is imported out of the venv.
Two different trees, compared to each other.

They agree until a tracked requirement file changes upstream, and then
every install performed by that bundle is stale for ever. v0.1.800-beta
was cut 2026-08-14 and installs unsloth 2026.8.18; #9148 pinned openai in
extras.txt in between. Windows was unaffected only by luck of layout.

The digests now describe the tree the verifier will read. A source or
editable install has no copy under site-packages and still uses the root
it was given, which is what keeps an edited studio.txt invalidating the
manifest on the --local path.

Also: the CI gate reported "saw: ManagedStale" and nothing else on all
four platforms. The reason is logged on its own line, and tail -60 scrolls
it away the moment the backend starts logging, so the one fact that
explained this had to be recovered from an uploaded artifact by hand. All
three log dumps now grep for it.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-08-19 01:31:09 -07:00
..
conftest.py Reduce and tighten comments and docstrings across the test suite (#6429) 2026-06-18 01:07:09 -07:00
smoke_test_llama_prebuilt.py Formatting: ruff line-length 100, kwarg-spacing passes, drop blank after short local imports (#6079) 2026-06-08 04:24:13 -07:00
smoke_test_parallel_studio_home.py Replace standalone Studio wording with Unsloth (#7221) 2026-07-19 00:47:04 -07:00
test_base_requirements_reach_install.py Studio: apply base.txt on the install.sh and install.ps1 paths (#8195) 2026-08-11 00:06:23 -07:00
test_cuda_repair.py Studio: share one torch classification probe across the repair paths (#8779) 2026-08-14 00:00:47 -07:00
test_denied_llama_cpp_preflight.py Studio: check llama.cpp cache access before setup (#8032) 2026-08-07 22:33:42 -07:00
test_diffusers_pin.py Run the repo CPU test suite on all four runner cores (#9019) 2026-08-16 21:46:01 -07:00
test_download_host_resolve.py Studio: resolve llama.cpp prebuilts via the release-assets CDN to avoid GitHub API rate limits (#7086) 2026-07-14 03:30:17 -07:00
test_gpu_detection_followups.py install: let UNSLOTH_TORCH_INDEX_FAMILY / _URL override CUDA wheel detection (#6692) 2026-07-20 00:58:52 -07:00
test_hf_auth.py Reduce and tighten comments and docstrings across the test suite (#6429) 2026-06-18 01:07:09 -07:00
test_install_llama_prebuilt_logic.py Studio: fail fast when the installed llama.cpp prebuilt has no kernels for this GPU (#8841) 2026-08-18 05:40:52 -07:00
test_install_manifest.py Record the venv own requirement digests, not the installers (#9263) 2026-08-19 01:31:09 -07:00
test_install_node_prebuilt_logic.py Windows: unblock the consumer install on clean and no-winget machines (#7549) 2026-07-28 22:24:40 -07:00
test_install_whisper_prebuilt_logic.py Studio: pair slim whisper with ROCm targets hipBLASLt has no kernels for (#8364) (#8400) 2026-08-11 05:55:40 -07:00
test_launch_studio_launcher.py Reduce antivirus false positives in the desktop installers (#8586) 2026-08-13 07:02:18 -07:00
test_llama_pr_force_and_source.py tests: read checked-in files as UTF-8 instead of the platform default (#7438) 2026-07-26 23:31:56 -07:00
test_llama_prebuilt_no_space.py Studio: fail fast on out-of-disk instead of a doomed llama.cpp source build (#7420) 2026-07-26 00:11:38 -07:00
test_macos_version_compat.py Studio macOS: faster startup, MLX self-heal, drop obsolete prebuilt pins (#6494) 2026-06-22 02:20:08 -07:00
test_managed_node_runtime.py tests: read checked-in files as UTF-8 instead of the platform default (#7438) 2026-07-26 23:31:56 -07:00
test_package_discovery.py Exclude studio/backend/tests from the wheel (#8501) 2026-08-14 05:36:50 -07:00
test_pr4562_bugfixes.py tests: read checked-in files as UTF-8 instead of the platform default (#7438) 2026-07-26 23:31:56 -07:00
test_pr5940_followups.py Say ROCm does not cover RDNA 1 instead of advising a fix that cannot work (#8577) 2026-08-13 05:21:12 -07:00
test_prebuilt_core.py Studio: add local speech-to-text dictation engine (#7095) 2026-07-23 01:39:03 -07:00
test_probe_timeouts.py Reduce and tighten comments and docstrings across the test suite (#6429) 2026-06-18 01:07:09 -07:00
test_rdna1_unsupported_message_8529.py Keep the #8577 AMD peer guards message-only, and fix the table drift they exposed (#8689) 2026-08-13 07:03:06 -07:00
test_rocm_arch_table_parity.py Say ROCm does not cover RDNA 1 instead of advising a fix that cannot work (#8577) 2026-08-13 05:21:12 -07:00
test_rocm_gfx_spoof_7331.py Studio: share one torch classification probe across the repair paths (#8779) 2026-08-14 00:00:47 -07:00
test_rocm_native_linux_lib_dirs.py fix(rocm): prefer system LLVM runtime on native Linux (#7448) 2026-07-28 06:19:29 -07:00
test_rocm_rdna_routing.py Fix the CPU-only ROCm routing errors and two font-scale UI flakes (#7469) 2026-07-26 04:48:49 -07:00
test_rocm_support.py Studio: share one torch classification probe across the repair paths (#8779) 2026-08-14 00:00:47 -07:00
test_selection_logic.py fix(amd): gate ROCm GPU selection and crash recovery on the build's arch coverage (#7670) 2026-08-13 03:37:28 -07:00
test_setup_denied_install_tree.py Studio: check llama.cpp cache access before setup (#8032) 2026-08-07 22:33:42 -07:00
test_setup_fast_path_guard.py Studio: detect an interrupted dependency install instead of launching a backend that cannot import (#7492) 2026-07-28 10:57:20 +02:00
test_setup_whisper_status.py Studio: add local speech-to-text dictation engine (#7095) 2026-07-23 01:39:03 -07:00
test_studio_deps_cli.py CLI: stop verify-install describing an unrelated venv around an editable checkout (#8308) 2026-08-10 01:24:31 -07:00
test_studio_extra_matches_requirements.py Studio: pin the remaining unpinned requirements (#8408) 2026-08-11 06:27:40 -07:00
test_torch_probe_classification_parity.py Studio: share one torch classification probe across the repair paths (#8779) 2026-08-14 00:00:47 -07:00
test_torch_probe_memoization.py Tighten the comments on the versionless torch probe tests (#8811) 2026-08-14 05:40:53 -07:00
test_unsupported_arch_routing_guards_8529.py Keep the #8577 AMD peer guards message-only, and fix the table drift they exposed (#8689) 2026-08-13 07:03:06 -07:00