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
This commit is contained in:
parent
e8303df9f2
commit
4070d67a51
1 changed files with 40 additions and 0 deletions
|
|
@ -0,0 +1,40 @@
|
||||||
|
---
|
||||||
|
episode_id: "71b2a9b0-2666-4077-948f-8ee4efe327a0"
|
||||||
|
puente_flat: "TRAZA_la-reparacin-de-la-colisin-completa-de_S20260822.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
|
||||||
|
session_code: "S20260822.PIPELINE_FIXES"
|
||||||
|
acto_dialogico: "informar"
|
||||||
|
actor_flujo: "multi_actor"
|
||||||
|
criticidad_aegis: "low"
|
||||||
|
skill_dominante: "NONE"
|
||||||
|
fase_proyecto: "operations"
|
||||||
|
tipo_semantico: "troubleshooting"
|
||||||
|
summary_one_line: "EPISODIO 1 — MNEMO_PRE_DIGEST: La reparación de la colisión — completa de verdad"
|
||||||
|
source_type: "claude_code"
|
||||||
|
trust_boundary: "internal"
|
||||||
|
created_at: "2026-08-22T18:39:02.743034+00:00"
|
||||||
|
relectura_tagged: false
|
||||||
|
forgejo_commit_sha: "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.**
|
||||||
Loading…
Reference in a new issue