Skill: NONE | Type: troubleshooting Summary: EPISODIO 1 — SessionStart: Lo que cacé en esta ronda
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.