--- episode_id: "bc3297cc-1b6c-4f10-97fb-f4279bdefd05" puente_flat: "TRAZA_lo-que-qued-reparado_S20260726.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD" session_code: "S20260726.ARCO_CICLO4_AUTOMEJORA" acto_dialogico: "informar" actor_flujo: "multi_actor" criticidad_aegis: "low" skill_dominante: "NONE" fase_proyecto: "operations" tipo_semantico: "troubleshooting" summary_one_line: "EPISODIO 1 — ember_experience: Lo que quedó reparado" source_type: "claude_code" trust_boundary: "internal" created_at: "2026-07-27T00:34:22.063185+00:00" relectura_tagged: false forgejo_commit_sha: "pending" --- Commit `b5449802`, push 3/3. **El canal está vivo.** — ## Lo que quedó reparado **El arreglo ya existía y nadie lo había propagado.** El 17 de junio alguien corrigió exactamente este bug en `crisol_run.py` con una nota clara —*"key desde embedding.env, no hardcode"*— y lo aplicó a **un solo archivo**. Por eso el camino vivo funcionaba y el worker llevaba cinco semanas muerto. No inventé nada: propagué el patrón probado. **Verificación, con la función que fallaba como oráculo:** ★ Insight ───────────────────────────────────── **Mi propio remediador tenía el bug que perseguía.** La primera versión buscaba la clave entre comillas exactas, así que no veía `"Bearer sk-…"` —la clave embebida en una cadena mayor— y dio por limpio precisamente `puente_health_check.py`: **un instrumento de salud**. Un detector que no detecta, escondido dentro de la herramienta que cazaba detectores que no detectan. Solo apareció porque ejecuté el censo contra archivos reales en vez de confiar en mi lógica. ───────────────────────────────────────────────── Y de paso endurecí el script: ahora detecta por **prefijo** y extrae el literal del archivo, así que **ni el script ni su test contienen una credencial completa**, ni siquiera muerta. ## Censo veraz — 4 limpios, 4 declarados | Estado | Archivos | Por qué | |---|---|---| | ✅ **Limpios** | `qdrant_worker`, `patch_qdrant_embed`, `crisol/sync_lexicon_qdrant`, `fused_search_cli` | arreglados y verificados | | ⚠️ **Manual** | `puente_health_check.py` | clave dentro de cadena: exige convertir a interpolación, no un reemplazo mecánico | | ⚠️ **Decisión tuya** | `fides_report`, `push_gateway`, `scripts/sync_lexicon_qdrant` | clave de **OpenRouter**: no sé de dónde sale la viva, y **adivinarlo sería la improvisación que causa el próximo incidente** | — **Hice** — propagué el arreglo canónico a 4 componentes (con respaldo y sintaxis validada antes de escribir) y **verifiqué que el canal outbox→Qdrant vuelve a generar embeddings** tras cinco semanas muerto.