feat(episode): 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

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 2 — Ember: 2. Prólogo de la decisión que te toca
This commit is contained in:
Ember 2026-09-20 01:32:06 +00:00
parent 3cdd81b9b0
commit c1931c34cc

View file

@ -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]`