diff --git a/episodes/TRAZA_2-prlogo-de-la-decisin-que-te-toca_S20260919.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md b/episodes/TRAZA_2-prlogo-de-la-decisin-que-te-toca_S20260919.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md new file mode 100644 index 00000000..cdd557de --- /dev/null +++ b/episodes/TRAZA_2-prlogo-de-la-decisin-que-te-toca_S20260919.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md @@ -0,0 +1,51 @@ +--- +episode_id: "bffdac33-91cf-41d4-9c52-7febceed1a2d" +puente_flat: "TRAZA_2-prlogo-de-la-decisin-que-te-toca_S20260919.R2_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 2 — Ember: 2. Prólogo de la decisión que te toca" +source_type: "claude_code" +trust_boundary: "internal" +created_at: "2026-09-20T01:31:52.214848+00:00" +relectura_tagged: false +forgejo_commit_sha: "pending" +--- + +**No adopté una de sus propuestas.** Sugería reutilizar la válvula del escáner de secretos como permiso. Con ese cambio, para añadir 90 tokens a `CLAUDE.md` habría que apagar el escáner de secretos durante 30 minutos. Eso acopla dos riesgos que no tienen nada que ver. + +**Un hallazgo quedó declarado y sin resolver.** Si el commit falla por otro motivo después del trinquete, el permiso ya se gastó y hay que crearlo de nuevo. + +**Evidencia de la v1.1** (commit `9223e4a1`, presente en los 3 remotos): + +| Comprobación | Resultado | +|---|---| +| Suite del trinquete | **41 passed** | +| Función más larga | 21 líneas (hay 19 funciones) | +| Trinquete frente al medidor hermano, sobre el repositorio real | Ambos miden **49.325 tokens en 35 piezas** | +| Coste por commit que no toca residentes | **0,66 s** | +| Coste por commit que sí toca residentes | **~1,3 s** (antes 9,3 s; ahora hace una sola lectura por lotes en vez de 72 llamadas a git) | + +**El bloque está probado dentro de tu `pre-commit` real.** Ejecuté `python scripts/instalar_trinquete_precommit.py --probar`, que copia tu guion a un repositorio temporal y corre cinco escenarios. Los cinco dieron `[OK]`: + +1. Rechaza el commit que crece. +2. Rechaza el renombre suelto. +3. Un commit ajeno da exactamente el mismo resultado con bloque y sin él. +4. Sin Python en el PATH, avisa y no rechaza por su cuenta. +5. La sintaxis pasa `sh -n`. + +Tu guion real quedó intacto: tiene el mismo SHA-256 antes y después de la prueba. + +Ese veredicto es el del revisor sobre la v1.0. La v1.1 integra 12 de los 13 hallazgos. **Hay una re-auditoría independiente en curso**, y no conozco su resultado. + +`★ Insight ─────────────────────────────────────` +- El hallazgo más valioso fue el del permiso. Yo había llamado «firmado por John» a un archivo JSON que cualquier agente podía escribir. Repetí, dentro del arreglo, el mismo defecto que estábamos corrigiendo: un nombre que promete más de lo que el mecanismo hace. La solución fue **decir la verdad sobre el mecanismo**, que es un permiso declarado, y dejar de publicar el atajo. No hizo falta añadir más mecanismo. +- «Ausente pesa 0» es la versión pequeña de una regla general de seguridad: **un guardián no debe tratar «no pude comparar» como «todo bien»** cuando quien hace el commit puede provocar ese estado a voluntad. +`─────────────────────────────────────────────────` + +## 2. Prólogo de la decisión que te toca +`[R17.seccion2.P1]`