feat(episode): TRAZA_1-qu-encontr-el-revisor-del-trinquete-y_S20260919.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 1 — Ember: 1. Qué encontró el revisor del trinquete y qué hice con ello
This commit is contained in:
Ember 2026-09-20 01:32:12 +00:00
parent c1931c34cc
commit 8ae3bfc9cd

View file

@ -0,0 +1,42 @@
---
episode_id: "fd4299ef-6a97-4a63-8cb5-d28bd1b3c853"
puente_flat: "TRAZA_1-qu-encontr-el-revisor-del-trinquete-y_S20260919.R1_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 1 — Ember: 1. Qué encontró el revisor del trinquete y qué hice con ello"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-09-20T01:31:52.219518+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
**CHAT-TEMA-RAÍZ:** ALQUIMIA v2 — fábrica de prompts con enrutado y perfil de derecho colombiano
**R17-SUB-TEMA:** el trinquete pasó su primera revisión adversarial y está listo para que decidas si se cablea
## 1. Qué encontró el revisor del trinquete y qué hice con ello
`[R17.seccion1.T1]`
El revisor independiente dio **NEEDS_REVISION** a la v1.0. Registró 13 hallazgos y 7 evasiones nuevas, y no pudo tumbar lo central. Intentó romper cinco cosas:
- el troceo en dos commits;
- `commit -a`;
- `commit -- ruta`;
- los árboles de trabajo;
- las rutas con espacios.
En los cinco casos el diseño aguantó. Comparar lo que entra en el commit contra el commit padre, con tolerancia cero, es correcto. Las objeciones iban contra los bordes del diseño, y la mayoría eran acertadas:
| Hallazgo del revisor | Qué hice en la v1.1 |
|---|---|
| El código 1 de «deniega» es el mismo con el que Python sale cuando falla. Con `|| exit 1`, un Python roto bloquearía todos los commits. | El código de denegación propio pasa a ser **3**. Un `try` global convierte cualquier fallo inesperado en «se deja pasar, y se dice». |
| Borrar `CLAUDE.md` en un commit y restaurarlo más gordo en el siguiente pasaba las dos veces. Eran dos fail-open encadenados. | **Ausente pesa 0.** El segundo commit se compara contra 0 y se deniega. Este cambio también cierra la evasión de la rama huérfana. |
| El permiso «firmado por John» no tenía firma, y el propio mensaje del muro publicaba el comando para fabricarlo. | Lo renombré a **permiso declarado, sin autenticación**. La CLI ya no lo crea y el mensaje ya no explica cómo saltárselo. |
| Tu `pre-commit` sale con 0 en commits de solo renombre o borrado (filtro `ACM`). Un `git mv` suelto metía un archivo entero sin pasar por el trinquete. | Añadí `--no-renames`. Además el bloque va **antes** de esa línea del guion. |
| Ningún test hacía un `git commit` real. | Añadí 5 commits reales con el hook instalado en un repositorio temporal. |
| Otros 8 hallazgos: CRLF, `--techo`, propiedad espejo, control de la medición, imports en cadena, justificación de concurrencia, rutas sin blindar y latido. | Todos quedaron integrados. |