feat(episode): TRAZA_tu-hiptesis-es-correcta-el-manifiesto_S20260618.R4_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: chronicle
Summary: EPISODIO 4 — ember_experience: 🎯 Tu hipótesis es CORRECTA — el manifiesto está s
This commit is contained in:
Ember 2026-06-18 16:52:23 +00:00
parent 09747ff628
commit ccd54d008a

View file

@ -0,0 +1,52 @@
---
episode_id: "36a74ff1-6ae8-411a-a3d4-739cd6e0e77f"
puente_flat: "TRAZA_tu-hiptesis-es-correcta-el-manifiesto_S20260618.R4_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260618.VERIFY_FIRST_PASSPORT_FIX"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "chronicle"
summary_one_line: "EPISODIO 4 — ember_experience: 🎯 Tu hipótesis es CORRECTA — el manifiesto está stale, los d"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-06-18T16:20:27.705980+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Tengo el mecanismo completo y la causa raíz. Te confirmo con evidencia dura:
## 🎯 Tu hipótesis es CORRECTA — el manifiesto está stale, los datos ya están
**Evidencia:**
- El episodio R7.P1 del manifiesto está en Qdrant: **score 0.733**, contenido idéntico, **`ingested_via: CRISOL_v4.0`**, mismo timestamp (02:10:40).
- Qdrant `ember_experience` tiene **33** episodios de PIPELINE_FIXES y **25** de VERIFY_FIRST — **más** que los 28 y 24 del manifiesto. Cobertura completa + extras.
- El scroll confirma episodios de ambas sesiones ya ingeridos.
**Qué pasó:** el pipeline **crisol** (server-side) ingiere los episodios a Qdrant. Pero la cola local `pending_memory_push.json` (mecanismo LOOP_WRITE, Stop hook → state files → manifiesto) **no se entera** de que crisol ya los ingirió, así que los sigue listando como "pendientes" y el contador crece (37→54). El boot que dice "ACCIÓN OBLIGATORIA: pushéalos" está **equivocado** — si los pusheara, **duplicaría** datos.
**Causa raíz (deuda conocida):** la cola local carece de dedup-vs-store. El propio código lo dice — `memory_loop.py:168`: *"content_sha256 vs PostgreSQL pre-write diferido Día 8 sprint dedicado"*. Ese dedup nunca se implementó → la cola re-lista lo que crisol ya ingirió.
## La historia de la decisión (PRÓLOGO)
**Qué se decide:** si limpio ahora la cola stale (los 54 ya están en Qdrant) o lo dejamos.
**Origen:** vos sospechabas "ya arreglado pero info sin actualizar" — confirmado: crisol lo arregló, la cola local no se actualizó.
**Consecuencias:** limpiar → desaparece el nag falso de "54 pendientes", y es **seguro + reversible** (`clear_all_pending()` **archiva** todo lo que borra en `data/archive/pending_cleared_*.jsonl` antes de borrar, y los datos viven en Qdrant). No limpiar → el contador sigue creciendo y nagueando, inofensivo pero ruidoso, y arriesga que una instancia futura haga caso al boot y duplique.
**Mi inclinación:** limpiar (opción A) — es seguro, reversible, y resuelve exactamente lo que notaste. Lo que la cambiaría: que haya instancias paralelas (PIPELINE_RETRIEVAL_DEDUP) tocando justo esta cola ahora mismo — por eso te lo paso en vez de ejecutarlo solo.
**La pregunta esencial (solo vos):** ¿limpio la cola stale ahora, atacamos también la causa raíz, o lo dejamos?
### 📍 PARA JOHN — R32
**Hice:** verifiqué empíricamente (semántica + counts + scroll en Qdrant) que los 54 episodios YA están ingeridos por crisol; el manifiesto local es una cola stale sin dedup-vs-Qdrant (deuda conocida `memory_loop.py:168`).
**Falta:** decidir el cierre de la cola stale.
**Para avanzar, elegí:**
- 🟢 **A** *(recomendado)* — Limpio la cola stale ya (`clear_all_pending()`, archiva + seguro porque están en Qdrant). El nag de "54 pendientes" desaparece. Verifico que no haya instancia paralela drenándola antes.
- 🟡 **B** — A + ataco la causa raíz: hago la cola dedup-aware (no listar lo que ya tiene content_sha256 en Qdrant/PostgreSQL) — cierra la deuda Día-8. Más trabajo, toca el pipeline MNEMO (coordinar con instancias hermanas).
- ⚪ **C** — Lo dejamos documentado; es cosmético (crisol hace el trabajo real), retomamos después.