diff --git a/episodes/DEPURA_prlogo-de-la-decisin-que-te-toca_S20260919.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md b/episodes/DEPURA_prlogo-de-la-decisin-que-te-toca_S20260919.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md new file mode 100644 index 00000000..45d44e26 --- /dev/null +++ b/episodes/DEPURA_prlogo-de-la-decisin-que-te-toca_S20260919.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md @@ -0,0 +1,42 @@ +--- +episode_id: "e01c1e4c-3cee-4e76-85f7-065bfc9f93f4" +puente_flat: "DEPURA_prlogo-de-la-decisin-que-te-toca_S20260919.R3_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD" +session_code: "S20260919.SIDA341A4963ECD" +acto_dialogico: "informar" +actor_flujo: "multi_actor" +criticidad_aegis: "low" +skill_dominante: "NONE" +fase_proyecto: "operations" +tipo_semantico: "troubleshooting" +summary_one_line: "EPISODIO 3 — MNEMO_PRE_DIGEST: Prólogo de la decisión que te toca" +source_type: "claude_code" +trust_boundary: "internal" +created_at: "2026-09-19T23:19:40.503025+00:00" +relectura_tagged: false +forgejo_commit_sha: "pending" +--- + +- Mi test nuevo comprobaba si en el código aparece la cadena `"deny"`, no si el hook puede impedir algo. Un hook también frena con `exit 2`. +- Mi «control por neutralización» caía por `AttributeError`, no por detectar la contradicción. La frase «lo habría cazado el 5 de septiembre» era falsa. +- «+3.103 tokens que el hook no vio» no era la única lectura posible. El total se mide antes de cada edición, y el árbol cambia también sin herramientas de por medio. +- Escribí «tres ediciones que subieron», pero fueron +73, +21 y −4. +- Mi reproducción dejó una fila sintética en la telemetría real. + +Verifiqué sus afirmaciones en disco. Casi todas se sostuvieron. **Una la refuté:** decía que los digests de `rules/mini/` son auto-compilados, pero `grep -l "AUTO-COMPILED"` devuelve 0 archivos. + +Rehíce la salida como **A2**, partiendo de su alternativa más simple. Se retiran la fecha y los modos por calendario. El hook declara `BLOQUEA = False`. El test contrasta esa declaración con la **conducta** ante una edición que hace crecer el residente. El banco `python scripts/banco_salida_a_hook_presupuesto_residente.py` da: + +| Corrida | Resultado | +|---|---| +| Hook parcheado | **11 passed** | +| Hook original | **1 failed**: solo el oráculo, por `AssertionError` «promete un muro», sin `AttributeError` | + +La propuesta v1.1 integra los 11 hallazgos y **no ha sido re-auditada**. **Nada está aplicado al hook.** La decisión está en la cola con fecha 2026-10-03. Si no respondes, pasado el 2026-10-08 se aplica solo A2. La pregunta de fondo, muro o cartel, va con DP-F el 2026-10-17. También dejé un aviso DLC-2 en la decisión del 22 de agosto, que afirma «el hook bloquea». Commits **`276f54f8`** y **`48b07225`**. + +`★ Insight ─────────────────────────────────────` +- Un control por neutralización solo sirve si se comprueba por qué falla. El mío salía rojo y yo lo contaba como éxito, pero caía por un atributo inexistente y no por detectar la contradicción. El banco A2 añade una tercera condición que lo verifica: el rojo debe ser el `AssertionError` del oráculo y no puede haber ningún `AttributeError`. +- La revisión fue útil porque incluía un permiso explícito para refutar y exigía la ruta y la línea junto a cada hallazgo. De 12 afirmaciones del revisor, 11 se sostuvieron en disco y 1 cayó. Las suyas también había que verificarlas. +`─────────────────────────────────────────────────` + +## Prólogo de la decisión que te toca +`[R15.seccion4.P1]`