Skill: NONE | Type: troubleshooting Summary: EPISODIO 1 — MNEMO_PRE_DIGEST: La reparación de la colisión — completa de verdad
3 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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:
- Digest restaurado (5.024 → 648 tokens, −4.376 en cada arranque), con los 350 renglones de logs rescatados como evidencia — no destruidos.
- Drenador parcheado:
rules/miniqueda excluido; las entradas hacia ahí se descartan contadas (colisiones_evitadas), porque retener lo inentregable haría crecer la cola para siempre. Yrules/no se excluyó: su doble rol está declarado a propósito en el ssot — decisión, no bug. - 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.