feat(episode): EXPLORA_a-investigu-las-dos-alertas-y-ninguna-s_S20260823.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: chronicle
Summary: EPISODIO 2 — SessionStart: A — investigué las dos alertas, y ninguna sobrevivió
This commit is contained in:
Ember 2026-08-23 23:03:22 +00:00
parent 041994908b
commit 46d72e7aa6

View file

@ -0,0 +1,37 @@
---
episode_id: "90fa6db1-75a8-4155-a04e-341934371d5c"
puente_flat: "EXPLORA_a-investigu-las-dos-alertas-y-ninguna-s_S20260823.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260823.PIPELINE_FIXES"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "chronicle"
summary_one_line: "EPISODIO 2 — SessionStart: A — investigué las dos alertas, y ninguna sobrevivió"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-08-23T23:03:19.205804+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Todo verde: **71 tests**, arnés 228/228, 0 gates vencidos, 0 commits sin empujar.
## A — investigué las dos alertas, y ninguna sobrevivió
Lo incómodo primero: **los dos instrumentos defectuosos eran míos**, escritos ese mismo día.
**ALQUIMIA decía lo contrario de lo que pasaba.** La pista fue una contradicción interna: los 4 casos traen `query_original_len == query_enriched_len` (49=49, 67=67…) mientras el registro alega `length_shrunk:0.71`. Si la longitud es idéntica, no encogió nada. Eso me llevó al código, y ahí estaba:
Cuando AQ-5 detecta divergencia, **descarta el enriquecimiento y sirve tu consulta original** — y sólo inyecta contexto `if preserved`. Las longitudes coinciden porque se registran *después* del repliegue. O sea: `preserved=False` significa **"el guardián se activó y se replegó"**, no "llegó un intent roto". El mecanismo funcionó las 4 veces. Yo te habría mandado a perseguir un daño que nunca ocurrió.
**OII está sano: 0 violaciones y 38 pases en 7 días de sesiones reales — 100%.** Mi 42% salía de dos errores apilados. Uno: leí las últimas N *líneas* en vez de N *días*, y 400 eventos de un emisor lento abarcan dos meses, así que promedié a ambos lados de un arreglo del 25 de julio — **I2 lleva muerto desde entonces** y yo lo coroné como el peor. Dos: conté 83 violaciones que venían **todas** de un fixture de pruebas escribiendo en la telemetría real.
Y ahí apareció algo que sí valía: **el escáner anti-contaminación tenía un punto ciego** exactamente donde encontré la contaminación. Sus reglas buscaban `conftest`, pero el hook OII **sólo graba el `session_code`**, así que el marcador se perdía al escribir. Lo cerré con una regla de sufijo exacto `.TEST` — nunca *"contiene TEST"*, que habría excluido **13 sesiones reales** de trabajo genuino sobre tests. De 5 a 8 ficheros detectados, cero falsos positivos.
## B — la política, y su asimetría
> **El lazo sólo puede apretarse solo. Aflojar lleva siempre tu firma.**
Tres razones, y ninguna es estética. Equivocarse endureciendo cuesta tokens; equivocarse aflojando cuesta un punto ciego. Con esta asimetría, **quien envenene la telemetría sólo consigue que el modelo sea más cauto** — la dirección peligrosa queda cerrada por construcción, y eso sale gratis. Y nadie se autoriza a sí mismo dejar de ser auditado.