fix: kill two silent-fallback bugs behind disk-space discussion report (Wave 148) - #228
Draft
konjoinfinity wants to merge 4 commits into
Draft
fix: kill two silent-fallback bugs behind disk-space discussion report (Wave 148)#228konjoinfinity wants to merge 4 commits into
konjoinfinity wants to merge 4 commits into
Conversation
_hf_list_files() collapsed every exception from the HuggingFace prebuilt listing call into an empty list, making a real network failure (bad proxy, expired token, rate limit) indistinguishable from "this repo genuinely has no prebuilt weights" -- and neither case printed anything unless --verbose. A user could silently take the expensive raw-download-and-compress path with zero explanation. _hf_list_files/_has_squish_weights now raise a new _PrebuiltCheckError (chaining the original exception) when the listing call itself fails. pull() catches it separately and always prints a warning, and the genuine "listed fine, no squish files yet" case now prints a distinct info message instead of staying silent. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JGkR2xkrQxxYs4eZwhqHyo
cmd_run's auto-pull gate checked only for the raw bf16 directory name (via _MODEL_SHORTHAND or CatalogEntry.dir_name), but squish pull's fast prebuilt path never creates that directory, and a user who deletes it post-compression is doing the right thing. Either way _expected_dir.exists() was False, so squish run printed a false "not found locally -- pulling now" and re-invoked cmd_pull on every run of an already-compressed model. _resolve_presquished_dir already solves exactly this elsewhere in the same file (_resolve_model) -- the gate just never called it. Reuse it instead of duplicating the fallback-chain logic. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JGkR2xkrQxxYs4eZwhqHyo
Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JGkR2xkrQxxYs4eZwhqHyo
test_wave79_startup_inference.py::test_version_is_9_34_8 hardcoded the release string independently of tests/test_version.py's EXPECTED_VERSION, so the 9.34.15 bump missed it and CI caught the mismatch. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JGkR2xkrQxxYs4eZwhqHyo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A user reported ending up with both the raw bf16 model and the compressed model on disk after
squish pull qwen3:8b, then got a confusing "not found locally — pulling now" message after deleting the (correctly identified as redundant) raw folder. Tracing both symptoms turned up two independent, narrowly-scoped bugs, fixed here as separate commits:Silent fallback ambiguity (
squish/catalog.py) —_hf_list_files()collapsed every exception from the HuggingFace prebuilt-weights listing call into[], making a real network failure (bad proxy, expired token, rate limit) indistinguishable from "this repo genuinely has no prebuilt weights" — and neither case printed anything unless--verbose._hf_list_files/_has_squish_weightsnow raise a new_PrebuiltCheckError(chaining the original exception) on real failure, andpull()always prints a distinct warning for that case (not gated onverbose), while the genuine "no prebuilt weights yet" case gets its own distinct, non-alarming message.Stale existence check in
cmd_run(squish/cli.py) — the "is this model already downloaded" gate checked only for the raw bf16 directory name, butsquish pull's fast prebuilt path never creates that directory, and a user who deletes it post-compression is doing the right thing. This fired a false "not found locally — pulling now" on every such run. The gate now reuses_resolve_presquished_dir— already used correctly elsewhere in the same file (_resolve_model) — instead of duplicating its fallback-chain logic.Also bumps the version to
9.34.15with a matchingCHANGELOG.mdentry.Type of change
Checklist
pytest tests/passes locally (new tests:tests/test_wave148_pull_silent_fallback_warning.py,tests/test_wave148_run_existence_check.py)ruff check squish/ tests/reports no errors on changed files/Users/<name>/...)squish benchrun — N/A, no performance-sensitive path touchedRelated issues
N/A
Generated by Claude Code