From 35a80a7306920d23611e3086703bea3092b3a147 Mon Sep 17 00:00:00 2001 From: Claw Date: Tue, 30 Jun 2026 22:44:44 -0500 Subject: [PATCH] fix: align search_workers + match_contract + /match to ethereal_workers_v1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same index↔dataset misalignment as the /search fix (423400e), in three more paths that pair the ethereal_workers SQL dataset with the workers_500k_v1 vector index: - search_workers MCP tool - match_contract MCP tool - /match HTTP handler All now default to ethereal_workers_v1 (same 10K id-space as the SQL table). Verified: /match role=Forklift Operator state=IL returns only IL forklift operators (sql_matches 94). rag_question / /ask left as-is — pure RAG, no SQL join, so no id-space to misalign. Co-Authored-By: Claude Opus 4.8 (1M context) --- mcp-server/index.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mcp-server/index.ts b/mcp-server/index.ts index 814e8a5..d809fa2 100644 --- a/mcp-server/index.ts +++ b/mcp-server/index.ts @@ -151,7 +151,9 @@ server.tool( }, async ({ question, sql_filter, dataset, id_column, top_k }) => { const body: any = { - question, index_name: "workers_500k_v1", filter_dataset: dataset, id_column, top_k, generate: true, + // Index must share an id-space with filter_dataset (default ethereal_workers, 10K) + // → ethereal_workers_v1. workers_500k_v1 (50K, different workers) misaligned. + question, index_name: "ethereal_workers_v1", filter_dataset: dataset, id_column, top_k, generate: true, use_playbook_memory: true, }; if (sql_filter) body.sql_filter = sql_filter; @@ -185,7 +187,8 @@ server.tool( if (city) filter += ` AND city = '${city}'`; const r = await api("POST", "/vectors/hybrid", { question: `Find the best ${role} workers with relevant skills and certifications`, - index_name: "workers_500k_v1", sql_filter: filter, + // ethereal_workers_v1 aligns with filter_dataset ethereal_workers (same 10K ids). + index_name: "ethereal_workers_v1", sql_filter: filter, filter_dataset: "ethereal_workers", id_column: "worker_id", top_k: headcount * 2, generate: false, use_playbook_memory: true, @@ -556,7 +559,8 @@ async function main() { if (b.city) filter += ` AND city = '${b.city}'`; return ok(await api("POST", "/vectors/hybrid", { question: `Best ${b.role} workers with relevant skills`, - index_name: b.index || "workers_500k_v1", sql_filter: filter, + // Align default index with the ethereal_workers dataset (see /search fix). + index_name: b.index || "ethereal_workers_v1", sql_filter: filter, filter_dataset: b.dataset || "ethereal_workers", id_column: "worker_id", top_k: (b.headcount || 5) * 2, generate: false, use_playbook_memory: true,