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:
- The CASS daemon starts the local MiniLM model in ~2 seconds and reports a 184 MB peak; its 90-second idle shutdown works.
- A daemon-enabled semantic approximate query instead grew to ~4.8 GB RSS locally before reaching ANN.
- 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.
Current CASS main is wired to a Frankensearch API that deliberately rejects the legacy daemon wrapper:
src/lib.rs:compose_daemon_embedder_or_verified_localcallsDaemonFallbackEmbedder::new(...).frankensearch-fusion/src/daemon_fallback.rs, that constructor now always returnsUnverifiableRemoteSpacebecause caller-supplied daemon identity is not producer proof.cass search --mode semantic --daemoncannot actually use an otherwise healthy local daemon.Independent reproduction on a 2,573,003-vector CASS corpus:
ef=100, 16 candidates, withis_approximate=trueand 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
DaemonConnectionIdentityV1and pinned attestation verifier, then constructDaemonFallbackEmbedder::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.