feat(episode): TRAZA_todo-qued-en-el-8-addendum-del-informe_S20260712.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: TESSERA | Type: troubleshooting
Summary: EPISODIO 2 — MNEMO_PRE_DIGEST: Todo quedó en el **§8 ADDENDUM** del [informe...
This commit is contained in:
Ember 2026-07-12 15:41:29 +00:00
parent ab5c023c0a
commit 22a5e1da7e

View file

@ -0,0 +1,32 @@
---
episode_id: "e8605998-435d-4836-a43c-3a21d540afc0"
puente_flat: "TRAZA_todo-qued-en-el-8-addendum-del-informe_S20260712.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260712.SHERPA_MISION1_LOOPWRITE"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "TESSERA"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 2 — MNEMO_PRE_DIGEST: Todo quedó en el **§8 ADDENDUM** del [informe..."
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-07-12T15:41:27.877165+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Todo quedó en el **§8 ADDENDUM** del [informe de auditoría](docs/AUDITORIA_PIPELINE_MEMORIA_S20260712.md). **Lo que sigue por valor:** **R-4 (dedup)** — limpiar los ~250 near-dups de Qdrant/Neo4j y re-medir el oráculo (esperado: recall@1 0.54→≥0.65, recall@10 →~0.90); **R-5** — construir el watchdog C2 (SLO 2h, diseño ya existe) + retrieval_gate en cron con timeout ≥600s; **R-6** — sanitizar el generador cliente (slug del puente + cuerpos cortos) y remediar los 29 de `rejected/`. - **Hice:** el sprint completo con tu GO: migración + crisol parcheado + deploy con backups + smoke end-to-end. El pipeline vuelve a grabar (400 filas y subiendo), dice la verdad cuando falla, y la cola se limpia sola. Commit `24353df0` pusheado a origin+forgejo+sriyantra. - **Falta:** R-4 (dedup de near-dups + re-medición del retrieval), R-5 (watchdog), R-6 (generador cliente + rejected/). - **Mi consejo:** seguir con **R-4 ahora** — es lo que devuelve el retrieval a ~0.90 recall@10 y cierra el ciclo que empezó tu pregunta de auditoría. Es read-mostly + deletes quirúrgicos con backup, y el corpus está fresco en mi contexto. - **Para avanzar, elige:** 🟢 **A** *(recomendado)* — R-4 dedup + re-medición del oráculo ya · 🟡 **B** — R-5/R-6 primero · ⚪ **C** — cerrar aquí (STATE + HANDOFF + cosecha).
✅ **R-4 cerrado, John — commit `7d08ce7a` en los 3 remotos.** Informe completo: [R4_DEDUP_NEARDUPS_S20260712.md](docs/R4_DEDUP_NEARDUPS_S20260712.md). # R-4: lo que se hizo y el hallazgo que cambió el plan
**Los números finales:**
| Métrica | Pre-fix (esta mañana) | Post-dedup (ahora) | Baseline sano (3-jul) |
|---|---|---|---|
| recall@1 | 0.544 | **0.587** | 0.675 |
| recall@10 | 0.794 | **0.803** | 0.903 |
| MRR@20 | 0.640 | **0.667** | — |
| Qdrant ember_experience | 659 puntos | **588** (−71 verificado exacto) | — |
**El hallazgo importante — verify-first salvó memorias:** la hipótesis de la auditoría era "el excedente de ~270 puntos es churn redundante". El censo v2 con criterio de **cobertura semántica** (tokens de cada punto contra el corpus PostgreSQL de su propia sesión) la refutó parcialmente: solo **71 eran redundantes demostrables** (≥85% de cobertura → borrados con backup íntegro de 189 KB en `~/backups/`), pero **206 son memoria única** — turnos que la consolidación posterior filtró como ruido o chunkings viejos cuya prosa nunca aterrizó en PostgreSQL (S20260702: 45, S20260703: 66, S20260704: 52, S20260705: 37). Un dedup a ciegas por conteo los habría destruido. Están intactos y catalogados (`r4_keep_unique_S20260712.jsonl`). **Por qué el recall no volvió a 0.90 todavía (análisis honesto):** los 206 preservados llevan HyDE mecánicas pobres de la era del fallback ("¿Qué pasó con: …") que se auto-recuperan mal y arrastran el promedio del oráculo — sin ser duplicados. La ruta correcta es **R-4b RESCATE**: reverse-ingest de los 206 (payload Qdrant → `.md` → inbox → crisol F0-F6) para que aterricen canónicamente en PostgreSQL con re-chunking limpio y HyDE dignas; el re-censo posterior los reclasifica como cubiertos y el dedup final deja el corpus limpio. Doble beneficio: cierra el gap del store canónico Y el de recall.