[Engine] "Download and prepare" asks for the full 128 GB on an installed NVFP4 pack: the disk check looks in models\<family-tag><model> while setup writes models\<owner>--<repo>

Open Beginner friendly
#4,892 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 3 days

@XiaoBinGan is already working on this.

Since Nov 1, 2026.

  • #4901 by @XiaoBinGan — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
62/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
python
Domain
tooling

Research direction

Start in tools/strata_mcp.py around lines 2365-2368, where have_dir is built from the family tag, and compare it with ready_where(), prepared_dir() and the "The model files go in" print in setup.py (around lines 3281-3290 and 9969) to confirm the <owner>--<repo> layout. Change the readiness probe to check that repo-based folder first, keeping the tag path as a fallback, then confirm the NVFP4 check reports partly_downloaded with about 9 GB needed. Done means an already-installed pack no longer triggers the 128 GB disk requirement.

Written by the indexing model from the issue text.

Description

Area

[Engine] (speed, kernels, models, the server and API)

Desktop app, Terminal or source?

Desktop app ("Download and prepare" on the Models page), checked against tools/strata_mcp.py

What happened

Asking to prepare an NVFP4 pack that is already fully on disk (120 GB, 6 .gguf shards, pack/ prepared, all .done marks) is refused for lack of disk space:

not enough free disk space for NVFP4: about 137 GB needed at D:\Strata-data, 122 GB free;
free some space or choose data_dir on a bigger drive (e.g. D:\Strata-data)

That data dir already holds the whole pack. The check looks in a folder setup never writes:

tools/strata_mcp.py:2365-2368

tag = (families[family].get("tag", "") + model)          # "nvfp4-" + "NVFP4"
have_dir = target / "models" / tag                        # <data>\models\nvfp4-NVFP4
partly = (have_dir.is_dir() and any(have_dir.glob("*.gguf*"))) or bool(gguf_dir)
need = (8 if partly else md["download_gb"] + 8) + (1 if vision in ("yes", "gpu", "cpu") else 0)

setup.py stores ready-made packs under <models>\<owner>--<repo>, the repository layout, not under the family tag: ready_where() (setup.py:3281-3285), prepared_dir() (setup.py:3288-3290), and setup itself prints that path at setup.py:9969 ("The model files go in ...").

On this machine:

D:\Strata-data\models\Maximilian228--Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata   6 *.gguf + pack\ prepared  ← real location
D:\Strata-data\models\nvfp4-NVFP4                                           does not exist              ← what the check looks for

MODELS["NVFP4"]["repo"] is Maximilian228/Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata, download_gb is 128.0, and the family tag is "nvfp4-", so have_dir is always models\nvfp4-NVFP4. partly is therefore always False for this pack and the "already downloaded" branch (8 GB) is never taken — the tool asks for the full 128 GB download plus headroom on top of the 120 GB already sitting on that drive. The 137 GB in the message is exactly 128 + 8 + 1.

gguf_dir does not cover this case: it is a separate parameter for files fetched by hand, and there is nothing to pass for a pack setup installed itself.

Expected: the readiness probe should use the layout setup writes — MODELS[model]["repo"].replace("/", "--") (or ready_where() / prepared_dir()), with the tag-based folder kept as the fallback for the families that really do use it. An installed pack would then report partly_downloaded: true, disk_needed_gb: 9, and the card would offer a repair rather than a 128 GB download.

Related: #4891 — an engine update leaving stale absolute paths in the run config can make an installed model show as "not installed", which is how this dialog gets reached in the first place. The two together are what a user sees as "it forgot all my models and now says the disk is too small".

Smallest steps or command that reproduce it
  1. Install the NVFP4 pack on D:\Strata-data — setup writes models\Maximilian228--Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata.
  2. Make the Models page treat it as not installed (e.g. the stale vision.exe path from #4891, or any doctor failure), so it offers "Download and prepare".
  3. Click it: refused with "about 137 GB needed ... 122 GB free", on a drive that already contains 120 GB of that very pack.
  4. disk_usage("D:\Strata-data") → 113.7 GiB free (122 GB decimal), while have_dir does not exist and the repo folder does.
Reproduction status

Reproduced locally

Strata version

0.2.9, Control 0.1.55, engine 0.1.55-windows-x86_64-cuda-cuda13

Graphics card, memory and system

RTX PRO 6000 Blackwell Workstation Edition 96 GB (driver 610.74), 256 GB RAM, Windows 11 Pro

Model, size and settings

Qwen3.8-Flash-Next NVFP4 GPTQ (Maximilian228/Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata, 128 GB download, 6 shards), vision on, data dir D:\Strata-data

Logs
# what the pack folder really is
$ ls D:\Strata-data\models
Maximilian228--Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata      (6 *.gguf, pack\ prepared, .done marks present)

# what the prepare check computes
family tag        : 'nvfp4-'
MODELS["NVFP4"].repo        : Maximilian228/Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata
MODELS["NVFP4"].download_gb : 128.0

have_dir    : D:\Strata-data\models\nvfp4-NVFP4                                  exists=False
real dir    : D:\Strata-data\models\Maximilian228--Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata   exists=True, gguf=6

need (partly=False) : 128.0 + 8 + 1 = 137 GB
free on D:          : 113.7 GiB = 122 GB
Dominant language
C++
Stars
11.6k
Forks
1k
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Niko1221/Strata

All issues in Niko1221/Strata

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.