Skill: TESSERA | Type: troubleshooting Summary: EPISODIO 1 — LEXICON_COSECHA: Fix drift embedding search_v2 — protocolo 7 fases
3.1 KiB
| episode_id | puente_flat | session_code | acto_dialogico | actor_flujo | criticidad_aegis | skill_dominante | fase_proyecto | tipo_semantico | summary_one_line | source_type | trust_boundary | created_at | relectura_tagged | forgejo_commit_sha |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| b9a48af2-a8a6-49b1-a2bb-f68ea727b1a4 | TRAZA_fix-drift-embedding-searchv2-protocolo_S20260618.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD | S20260618.VERIFY_FIRST_PASSPORT_FIX | informar | multi_actor | low | TESSERA | operations | troubleshooting | EPISODIO 1 — LEXICON_COSECHA: Fix drift embedding search_v2 — protocolo 7 fases | claude_code | internal | 2026-06-19T05:25:48.668194+00:00 | false | pending |
✅ Fix B completo y pusheado — commit 087468c a los 3 remotos. (El DLC advisory cita 5 docs archivados sobre otros bugs, no este drift — no requieren AVISO; advisory genérico por commit "fix".)
Fix drift embedding search_v2 — protocolo 7 fases
Causa raíz (una frase): search_v2.py (lado READ) embebía las queries con un modelo distinto (gemini-text-embedding-004, hardcoded, lib directa) al que el WRITE usa (text-embedding-3-large = alias de gemini-embedding-2, vía proxy LiteLLM) → los vectores de query no eran comparables con los almacenados → retrieval degradado silenciosamente.
| Antes | Después | |
|---|---|---|
EMBED_MODEL |
"gemini-text-embedding-004" hardcoded |
os.environ.get("EMBED_MODEL", "text-embedding-3-large") — idéntico al WRITE |
| Fallback | litellm.embedding() lib directa (→ podría ir a OpenAI) |
proxy LiteLLM (LITELLM_URL/embeddings) — mismo mecanismo que el WRITE |
| Camino primario | litellm_embed del crisol (canónico) |
intacto (no tocado) |
Era un bug de consecuencia real (no cosmético): un mismatch read/write degrada la búsqueda semántica sin error visible. write==read ahora garantizado (verificado: search_v2:57 ≡ qdrant_worker:70). Suite 226/0, test_search_v2 17/17, docstring stale corregido (DLC-2).
📍 PARA JOHN — R9
Hice: alineé el embedding READ de search_v2.py al canónico del WRITE (commit 087468c, pusheado). Con esto cerré las dos deudas post-migración [C2 S20260613] que quedaban en FEAT-011 (los 4 tests + este drift).
Falta (deudas nuevas que detecté, no en alcance): 🟡 wiki-MEMORIA FROZEN (96% de 23 páginas stale >30d — el self-awareness lo destapó este turno); 🟡 cosecha LEXICON pendiente (3 archivos con PRE_DIGEST sin LEXICON_COSECHA de hoy).
Mi consejo: las dos deudas de FEAT-011 están cerradas y verdes. Buen momento para cerrar la sesión limpia (actualizar STATE.md/HANDOFF + cosecha LEXICON, BLINDADA-11). Si prefieres seguir, la wiki-MEMORIA stale es el siguiente candidato natural.
Para avanzar, elige: 🟢 A (recomendado) cerrar sesión (STATE + HANDOFF + cosecha) · 🟡 B atacar la wiki-MEMORIA stale · ⚪ C otra cosa.
📌 PILA-PENDIENTES (R9): ✅ RESUELTAS: drift embedding search_v2 (commit 087468c, write==read, suite 226/0) · 🟡 MED: wiki-MEMORIA FROZEN 96% stale, cosecha LEXICON pendiente · ❓ John: A/B/C.