Skip to content

Daemon-enabled semantic search silently falls back after DaemonFallbackEmbedder API hardening #409

Description

@lifeofgurpreet

Current CASS main is wired to a Frankensearch API that deliberately rejects the legacy daemon wrapper:

  • src/lib.rs:compose_daemon_embedder_or_verified_local calls DaemonFallbackEmbedder::new(...).
  • In frankensearch-fusion/src/daemon_fallback.rs, that constructor now always returns UnverifiableRemoteSpace because caller-supplied daemon identity is not producer proof.
  • CASS catches that error and silently returns the local fallback embedder. Thus cass search --mode semantic --daemon cannot actually use an otherwise healthy local daemon.

Independent reproduction on a 2,573,003-vector CASS corpus:

  1. The CASS daemon starts the local MiniLM model in ~2 seconds and reports a 184 MB peak; its 90-second idle shutdown works.
  2. A daemon-enabled semantic approximate query instead grew to ~4.8 GB RSS locally before reaching ANN.
  3. After the fallback eventually completed, the repaired packed HNSW sidecar was mapped and ANN itself took only 99,467 us for ef=100, 16 candidates, with is_approximate=true and estimated recall 0.956. Total request time was 308,436 ms and exceeded CASSs 120-second query budget.

This is not an argument to restore unverified remote vectors or keep an HNSW service warm. The safe fix is to update CASS + its local daemon protocol to supply a verifiable DaemonConnectionIdentityV1 and pinned attestation verifier, then construct DaemonFallbackEmbedder::new_verified (and the corresponding reranker wrapper). Until then, the daemon flag presents an availability path that is structurally forced into expensive direct inference.

The source lock and local Frankensearch checkout are both at 46a3aefce1aa658fa98f27f0b3676f073160e15c; this is an integration contract mismatch, not a version-skew guess.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions