feat(episode): TRAZA_no-haba-que-fabricarlo-estaba-ciego_S20260812.R16_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: TESSERA | Type: troubleshooting
Summary: EPISODIO 16 — MNEMO_PRE_DIGEST: No había que fabricarlo. Estaba ciego.
This commit is contained in:
Ember 2026-08-14 04:32:00 +00:00
parent f464676b24
commit 1c55a6ec07

View file

@ -0,0 +1,41 @@
---
episode_id: "c69724fc-f105-47ec-b2e4-1f19610591e2"
puente_flat: "TRAZA_no-haba-que-fabricarlo-estaba-ciego_S20260812.R16_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260812.PIPELINE_FIXES"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "TESSERA"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 16 — MNEMO_PRE_DIGEST: No había que fabricarlo. Estaba ciego."
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-08-14T04:32:00.116186+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Registrado (`364829d3`): [CANARIO_DIARIO_S20260813](docs/CANARIO_DIARIO_S20260813_el_guardian_estaba_ciego.md).
## No había que fabricarlo. Estaba ciego.
Iba a construir el canario y lo primero fue comprobar si ya existía — porque aquí ya se fabricó una vez una librería de cerrojos que llevaba meses viva. **Existía**: `chequeo_diario_pipeline.py`, cron 6:30, con tu propio origen escrito en el docstring: *"John S20260608 — gate para declarar pipeline perfecto con evidencia"*.
**Y comparaba contra un campo que no existe.** Buscaba `content_text` en Qdrant, pero ese es el nombre de la columna en PostgreSQL; en Qdrant se llama `content`. Clave inexistente → cadena vacía → **`HIT@1 = 0%` garantizado por construcción**, midiera lo que midiera el retrieval.
Lo demostré sin gastar embeddings: **el prefijo de un punto no se encontraba ni en sí mismo** con el campo viejo (0 de 3), y acierta 3 de 3 con el real.
La señal llevaba tiempo a la vista y casi la paso por alto: **`HIT@1=0%` junto a `score 0.709`**. Un retrieval roto da scores bajos. Un 0.709 con cero aciertos solo se explica si falla el comparador.
**Tras el fix: `HIT@1` pasó de 0% a 20%.** El veredicto sigue en REVISAR — y está bien. Antes era una alarma falsa permanente; ahora dice algo cierto: el pipeline recupera mal, pero recupera.
## Por qué esto era más grave que los diez frentes
Este canario iba a ser **el guardián de tu criterio de salida** ("canario verde 7 días"). Activarlo tal cual habría hecho que **nunca diera verde**, y el freeze no habría podido levantarse jamás — por una comparación de cadenas mal escrita.
**Hice.** Descubrí que el canario ya existía y que estaba ciego desde su origen. Una palabra corregida y ya mide de verdad: 20% en vez de un 0% falso.
**Falta.** Lo importante: **nadie lee lo que grita**. Y hay una alarma real esperando desde hace 33 horas — el pipeline no ha ingerido un episodio nuevo a PostgreSQL y los rechazados suben.
**Mi consejo.** Ese ALERT primero. Un canario conectado que avisa de algo que ya lleva un día pasando es menos urgente que entender por qué lleva un día pasando.