Skill: TESSERA | Type: troubleshooting Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: Las dos vías de ingestión
3.2 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3c557da8-cd74-4224-bbd1-9b741eec7149 | TRAZA_las-dos-vas-de-ingestin_S20260726.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD | S20260726.ARCO_CICLO4_AUTOMEJORA | informar | multi_actor | low | TESSERA | operations | troubleshooting | EPISODIO 1 — MNEMO_PRE_DIGEST: Las dos vías de ingestión | claude_code | internal | 2026-07-27T02:23:11.496726+00:00 | false | pending |
Percibiste exactamente bien, John. Hay dos vías, y entender la diferencia es la clave de todo el diagnóstico de hoy.
Las dos vías de ingestión
Vía A — el camino directo (crisol_run.py)
Un cron horario lee los archivos del inbox, genera el embedding y escribe directamente en Qdrant (MemoryWriter(stores=("qdrant",))). Es simple y rápida: como alguien que copia el dato a mano en cada libreta. Es la que ha estado sosteniendo la memoria todo este tiempo.
Vía B — el libro de salidas (episode_outbox → dispatcher → workers)
PostgreSQL es el canon: cuando nace un episodio, se anota un evento en una tabla de salidas (episode_outbox). Unos trabajadores independientes toman esos eventos y proyectan el episodio a cada destino: uno a Qdrant, otro a Neo4j, otro a Nextcloud, otro a Forgejo. Si uno falla, el evento queda pendiente y se reintenta.
Ese patrón tiene nombre en la industria: transactional outbox. Es el estándar para mantener varios almacenes consistentes sin perder nada, porque el registro de "esto hay que propagarlo" vive en la misma base de datos que el dato.
Por qué importa la diferencia
| Vía A (directa) | Vía B (outbox) | |
|---|---|---|
| Complejidad | baja | alta |
| Si falla | se pierde en silencio | queda pendiente y reintenta |
Actualiza episode_sync_status |
❌ no | ✅ sí |
| Estado hasta hoy | viva | muerta desde el 19 de junio |
Ahí está la explicación completa del hueco de julio: la vía B es la red de seguridad de la vía A. Al morir la B en junio, el sistema quedó caminando sobre la cuerda floja sin red. Cuando la vía A tropezó del 2 al 11 de julio, no había nada debajo: 152 episodios cayeron al vacío.
Y explica también el 1099 pending que acabas de ver en el arranque: ese contador solo lo actualiza la vía B, así que lleva desde junio congelado — la mayoría de esos episodios sí están en Qdrant, puestos ahí por la vía A.
★ Insight ───────────────────────────────────── La prueba de que la vía B revivió es casi poética. Consulté cuál fue el primer episodio que cruzó el canal reparado, y este es su identificador:
TRAZA_cac-y-correg-un-falso-negativo-en-mi_S20260726.R1 — hace 0,9 minutos
Es mi propio episodio de este turno: el que narra que cacé el falso negativo en mi detector. El primer recuerdo que atravesó la vía reparada es el recuerdo de la reparación. ─────────────────────────────────────────────────