ember-memory-test/episodes/TRAZA_lo-que-cac-en-esta-ronda_S20260823.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md
Ember a9d427c235 feat(episode): TRAZA_lo-que-cac-en-esta-ronda_S20260823.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — SessionStart: Lo que cacé en esta ronda
2026-08-23 18:07:28 +00:00

2.6 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
bba6243d-1804-4a97-bd90-753f66ad938e TRAZA_lo-que-cac-en-esta-ronda_S20260823.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD S20260823.PIPELINE_FIXES informar multi_actor low NONE operations troubleshooting EPISODIO 1 — SessionStart: Lo que cacé en esta ronda claude_code internal 2026-08-23T18:07:26.548821+00:00 false pending

Barrido cerrado. Todo en los tres remotos (ad080ecc).

Lo que cacé en esta ronda

Fuiste directo al punto: los hooks que no cumplían el estándar. Los barrí todos — 306 archivos entre hooks y librerías — con análisis AST, no con vista.

La clase cp1252: 42 puntos corregidos, cero restantes. En Windows, subprocess con text=True sin encoding= decodifica la salida con cp1252, y una sola tilde tumba la corrida. Había 17 llamadas así, más 23 open() de texto en la misma situación, más los 2 últimos que dejé a mano al final. Los 6 open() binarios quedaron intactos, como debe ser.

Pero el hallazgo que más vale es otro: el muro que debía haberlos cazado solo miraba media población. Existía un tripwire para esta clase exacta de bug… que barría únicamente lib/. Los hooks quedaban fuera — y ahí vivían los 17. Lo amplié, y al ampliarlo cazó de inmediato 2 que yo no había visto: session-start.py los llamaba con alias (_gr_sp, _cj_sp) y mi búsqueda por texto no los detectaba. El AST alias-aware es más riguroso que mi ojo, y eso es exactamente por qué el muro se amplía en vez de confiar en el barrido manual.

Y encontré el patrón B-30 dentro del propio medidor de telemetría. La métrica que dice "30 hooks inyectan sin dejar rastro" contaba como cubierto a todo hook cuyo texto mencionara la palabra jsonl — un proxy, no el hecho. Lo medí contra un barrido de escritura real: ambos dan 42, pero solo coinciden en 23. Dos sesgos opuestos que se compensaban — 19 nombran jsonl sin escribir nada, y 19 escriben sin nombrarlo jamás. El total cuadraba por casualidad.

No sustituí un proxy por otro (mi barrido tampoco sigue la escritura a través de librerías importadas). Hice que el instrumento declare su margen: ahora reporta ±46 sobre 76. Un margen así dice lo que hay que decir — esta cifra no se lee al dígito. Y lo propagué a la línea del arranque, porque calcular la incertidumbre y ocultarla al lector es peor que no calcularla: aparenta rigor.