• v0.1.463-beta cd270e2878

    Ghost released this 2026-06-12 20:20:07 +02:00 | 773 commits to main since this release

    Studio: keep llama-server discovery from crashing on an access-denied candidate (#6268)

    • Studio: keep llama-server discovery from crashing on an access-denied candidate

    _find_llama_server_binary probed candidates with Path.is_file(), which raises
    PermissionError (WinError 5) when a path exists but is momentarily inaccessible
    (antivirus lock, an install replace in flight, an elevated-install ACL),
    aborting model validation. Treat a denied-but-present path as the real binary
    so discovery returns it; absent paths still skip.

    • Retry a transiently locked binary instead of returning a denied path

    Returning a still-denied path only moved the PermissionError to the next
    is_file() (probe_server_capabilities). Retry briefly so a transient lock
    clears and discovery returns an accessible path; on a persistent lock return
    nothing rather than a path downstream cannot stat.

    • Studio: do not fall back to another llama-server when a pinned one is locked

    A denied LLAMA_SERVER_PATH made discovery skip the explicit pin and run a
    lower-priority managed or PATH binary, so a load could silently use a stale or
    incompatible server. Split the probe into a file/absent/denied status: when the
    pinned path exists but stays access-denied, warn and stop rather than falling
    back to a different executable.

    • Studio: never downgrade past a denied pinned or managed llama-server

    Extend the no-fallback rule beyond LLAMA_SERVER_PATH: a present-but-denied
    UNSLOTH_LLAMA_CPP_PATH or managed ($STUDIO_HOME/llama.cpp, ~/.unsloth/llama.cpp)
    binary now reports temporarily-unavailable instead of silently launching a
    lower-priority legacy or PATH server. Shared _scan_pinned/_unavailable helpers;
    legacy in-tree and PATH stay genuine fallbacks (a denied candidate there just
    continues).

    • Studio: let diffusion asset lookup use a locked llama-server path for its dir

    DiffusionGemma does not run llama-server; _find_diffusion_assets only needs the
    install dir to find the adjacent llama-diffusion-gemma-visual-server. The
    no-fallback rule returning None on a transiently locked llama-server therefore
    hid an available visual-server and raised 'runner not found'. Add an
    include_denied option so diffusion lookup gets the locked path (its dir is all
    it needs), while inference keeps the no-denied-path, no-downgrade behavior.

    • Studio: report a locked llama-server as temporarily unavailable, not missing

    When the pinned/managed binary stays access-denied through the retries, discovery
    returns None and load_model raised 'binary not found', a terminal error that
    points users at reinstalling rather than retrying a transient AV/install lock.
    Reuse include_denied to detect the locked path and raise a distinct
    temporarily-unavailable, retry message instead.

    • Studio: GGUF preflight treats a locked llama-server as present

    The pre-download preflight (and so /api/inference/validate) used the default
    discovery, which returns None for a transiently access-denied binary, so it
    raised 'binary not found' for a binary that merely needs the lock to clear. Use
    include_denied so the existence check counts a locked binary as present; the
    load itself still reports a still-locked binary as temporarily unavailable.

    Downloads