ember-memory-test/episodes/TRAZA_la-reparacin-de-la-colisin-completa-de_S20260822.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md
Ember 4070d67a51 feat(episode): TRAZA_la-reparacin-de-la-colisin-completa-de_S20260822.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: La reparación de la colisión — completa de verdad
2026-08-22 18:39:18 +00:00

3 KiB
Raw Blame History

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
71b2a9b0-2666-4077-948f-8ee4efe327a0 TRAZA_la-reparacin-de-la-colisin-completa-de_S20260822.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD S20260822.PIPELINE_FIXES informar multi_actor low NONE operations troubleshooting EPISODIO 1 — MNEMO_PRE_DIGEST: La reparación de la colisión — completa de verdad claude_code internal 2026-08-22T18:39:02.743034+00:00 false pending

Todo cerrado y en los tres remotos (fe4054e2). Resumen de lo que quedó terminado en esta continuación.

La reparación de la colisión — completa de verdad

La mitad que faltaba era el parche del drenador, y sin ella el bug volvía en la próxima pasada. Quedó así:

El bug: bitacora_drainer.py entrega logs de visitas a BITACORA.md de cada carpeta. En Windows, rules/mini/BITACORA.md y el digest residente rules/mini/bitacora.md son el mismo archivo — así que cada drenaje inyectaba "chismes de barrio" dentro de un archivo que se carga en todo chat. El chequeo exists() del drenador no protegía: la propia colisión lo engañaba.

Las tres partes del fix:

  1. Digest restaurado (5.024 → 648 tokens, 4.376 en cada arranque), con los 350 renglones de logs rescatados como evidencia — no destruidos.
  2. Drenador parcheado: rules/mini queda excluido; las entradas hacia ahí se descartan contadas (colisiones_evitadas), porque retener lo inentregable haría crecer la cola para siempre. Y rules/ no se excluyó: su doble rol está declarado a propósito en el ssot — decisión, no bug.
  3. Test de regresión con control positivo ejecutado de verdad: neutralizada la exclusión, el test cae; restaurada, 7/7 verdes. El primer intento del control falló por un problema de escapes sin llegar a neutralizar — lo declaré y lo repetí en vez de dar por bueno un verde que no probaba nada.

★ Insight ───────────────────────────────────── Este bug es la causa raíz CR-1 (acoplamiento por nombre) en su variante más traicionera: dos nombres que son distintos para git y el mismo para el filesystem. Ningún grep lo cazaba, porque cada pieza funcionaba "bien" por separado — el drenador entregaba, el digest existía, el chequeo pasaba. Solo la medición del peso del contexto lo delató: un digest de compresión que pesa 7,7× su tamaño no es un digest. El techo que fijaste ayer es exactamente el sensor que convierte esta clase de bug en visible. ─────────────────────────────────────────────────

El triage del lote 1 — esperando tu firma

Con la corrección H-1 como regla dura: solo sale lo que un muro real sostiene.