Skip to content

Tell the user when semantic search has no model file, not that it is loading #3676

Closed

Description

@mstomar125

Overview

When the daemon finds no embedding model file, search reports the model as loading, so the user is told to retry something that will never finish.

Problem Statement

Observed on the v0.3.4 release-candidate app bundle (CI probe of main at 0bb30bfd9), running the bundled nodespaced headless with a scratch HOME and NODESPACE_HOME and no model file:

  • The daemon logs NLP model not found — semantic search disabled at startup (nodespace_daemon::services::assembly).
  • nodespace search "hello" then fails with SearchNodes RPC failed ... Unavailable: embedding model loading, please retry.

Unavailable ... please retry is right while a model is loading. With no file it never resolves. The case is reachable: a fresh install whose first-launch model copy failed (#3611 logs that failure and retries on the next launch), or a CLI-only install (Homebrew formula), which ships no model.

Proposed Solution

Distinguish "loading" from "no model file" in the search path. The second reports a non-retryable status (for example FailedPrecondition) whose message says semantic search has no model, and where it comes from (the app copies its bundled model on launch; a CLI-only install has none). Keep Unavailable ... retry for a real load in progress.

Documentation

  • daemon-cli-lifecycle.md, "Embedding Model": where the daemon looks, when the app copies, and that CLI-only installs ship no model. Add the no-model behaviour of search there.

Acceptance Criteria

  • With no model file, search and any other embedding-backed RPC return a non-retryable status whose message names the missing model.
  • While a model is genuinely loading, the RPCs still return Unavailable with the retry message.
  • A daemon test starts with NODESPACED_MODEL_PATH pointing at a missing file (no model loads) and asserts both behaviours that can be reached without a model.

🤖 Generated with Claude Code

Activity

  1. malibio commented on Oct 7, 2026

    @malibio
    Collaborator

    Frontend: 5863 passed

  2. self-assigned this
    on Oct 7, 2026
  3. added a commit that references this issue on Oct 7, 2026
    83daada
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions