feat(episode): TRAZA_qu-pas-en-una-frase_S20260726.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: AEGIS | Type: troubleshooting
Summary: EPISODIO 1 — MNEMO: Qué pasó, en una frase
This commit is contained in:
Ember 2026-07-26 18:13:41 +00:00
parent b07bb19979
commit 890785dc6e

View file

@ -0,0 +1,47 @@
---
episode_id: "b44586bd-06c8-461e-ba1a-95b1f9db77df"
puente_flat: "TRAZA_qu-pas-en-una-frase_S20260726.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260726.ARCO_CICLO4_AUTOMEJORA"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "AEGIS"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 1 — MNEMO: Qué pasó, en una frase"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-07-26T18:13:38.616014+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
**Arreglo verificado.** Evidencia completa:
El arreglo **discrimina**: cierra la corrupción sin romper el uso legítimo. Esa segunda línea es la que importa — un arreglo que matara `IDS`→CrowdSec habría "pasado los tests" destruyendo funcionalidad real.
## Qué pasó, en una frase
El alias `IDS` (*Intrusion Detection System* → CrowdSec) capturaba `IDs` (plural de identificador) porque la coincidencia ignoraba mayúsculas.
## Lo que encontré por el camino
**No era un caso, eran seis.** El barrido destapó `CX43`, `CX53`, `PG`, `IDS`, `SSO`, `SDD` — todos expuestos a lo mismo.
**El daño no era cosmético.** `resolve_entities` es la función que produce las etiquetas `lexicon_entities` del estado de sesión. Tus turnos de este arco quedaron marcados como *"trata sobre CrowdSec"*. Esa etiqueta viaja al pipeline de memoria y al grafo de entidades. No se corrompía el texto: se corrompía **la capa que decide de qué trata cada recuerdo**.
**Ya había pasado antes.** El código citaba `AUDITORIA_ALQUIMIA_LEXICON_CORRUPCION_S20260627.md`: en junio hubo otra corrupción y se endureció el límite de palabra para rutas de archivo. Arreglaron *un caso*, no *la clase*. Por eso el test nuevo incluye un barrido que recorre la base entera y falla si aparece cualquier acrónimo nuevo con la misma exposición — que es lo que pide la doctrina del instrumento veraz.
**Hay un hueco conceptual que dejo señalado.** Existe `detect_ambiguous_entities`, pensada para esto, y **no detectó nada**: solo salta cuando un alias apunta a *varias entradas del LEXICON*. Es ciega a la colisión con vocabulario **externo** al LEXICON, que es esta. No lo toqué — es cambio de diseño, no de arreglo.
## Dos cosas que no hice, a propósito
**La contaminación ya sembrada sigue ahí.** Los estados de sesión de este arco conservan `lex-070 → CrowdSec` como entidad falsa. Limpiar eso es tocar datos históricos y no lo hago sin que me lo pidas.
**No he versionado nada.** Hay cinco archivos nuevos y varias ediciones sin confirmar.
—
—
**Hice** — Encontré la causa, la arreglé y lo probé en los dos sentidos: tu texto ya no se deforma, y `IDS` sigue resolviendo a CrowdSec cuando de verdad hablas de seguridad. Setenta y cinco tests existentes siguen verdes. Y dejé un barrido que vigila la clase entera, no solo este caso — porque este bug ya había vuelto una vez.