Follow-up from the RedTeam gate on PR #160 (issue #107 model swap). The MCP hybridSearch path catches embedding dimension mismatches and falls back to FTS5 (src/mcp-server.ts:114-150). The CLI vector branches do NOT: runHybridSearch (src/commands/embed.ts:280) and runSemanticSearch (src/commands/embed.ts:406) call cosineSimilarity with no try/catch, so a live backend returning a different dim than stored rows throws and dumps a stack trace. Pre-existing (present at base d2253cc lines 187/313); #160 does not introduce or regress it, but the 768 to 1024 migration window makes it reachable in practice. Fix: wrap the CLI vector branches in the same try/catch + FTS fallback the MCP path uses. recall embed rebackfill remains the intended remediation.
Follow-up from the RedTeam gate on PR #160 (issue #107 model swap). The MCP hybridSearch path catches embedding dimension mismatches and falls back to FTS5 (src/mcp-server.ts:114-150). The CLI vector branches do NOT: runHybridSearch (src/commands/embed.ts:280) and runSemanticSearch (src/commands/embed.ts:406) call cosineSimilarity with no try/catch, so a live backend returning a different dim than stored rows throws and dumps a stack trace. Pre-existing (present at base d2253cc lines 187/313); #160 does not introduce or regress it, but the 768 to 1024 migration window makes it reachable in practice. Fix: wrap the CLI vector branches in the same try/catch + FTS fallback the MCP path uses. recall embed rebackfill remains the intended remediation.