diff --git a/episodes/TRAZA_qu-pas-en-esta-tanda_S20260921.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md b/episodes/TRAZA_qu-pas-en-esta-tanda_S20260921.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md new file mode 100644 index 00000000..be28a9ed --- /dev/null +++ b/episodes/TRAZA_qu-pas-en-esta-tanda_S20260921.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md @@ -0,0 +1,41 @@ +--- +episode_id: "29aec22b-34cc-4f30-8723-76c7830008e0" +puente_flat: "TRAZA_qu-pas-en-esta-tanda_S20260921.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD" +session_code: "S20260921.SID1CCBDE5D5EF7" +acto_dialogico: "informar" +actor_flujo: "multi_actor" +criticidad_aegis: "low" +skill_dominante: "NONE" +fase_proyecto: "operations" +tipo_semantico: "troubleshooting" +summary_one_line: "EPISODIO 1 — MNEMO_PRE_DIGEST: Qué pasó en esta tanda" +source_type: "claude_code" +trust_boundary: "internal" +created_at: "2026-09-23T03:38:46.855035+00:00" +relectura_tagged: false +forgejo_commit_sha: "pending" +--- + +La v0.2 del trinquete de push quedó construida, verificada, commiteada y empujada a los tres remotos. Nada quedó cableado. Antes de pedirte la firma falta el acta de la revisión dinámica, que sigue corriendo. + +## Qué pasó en esta tanda + +Integré los 13 hallazgos de la revisión estática en el módulo, el instalador, sus tests y las dos specs. Los oráculos se re-ejecutaron sobre la versión final, no sobre una anterior. + +| Oráculo | Resultado medido hoy | +|---|---| +| Suite del módulo | 51 passed en 256,8 s | +| Suite del instalador | 24 passed en 145,9 s | +| Banco de pushes reales | 22 de 22 OK en 137 s | +| Guion del revisor estático contra la v0.2 | H1..H9 se comportan como diseña la v0.2 | +| Tiempo del gancho en el repo real, camino rápido | 1,45 a 1,65 s en 3 medidas | +| Commit | `b2e714f6`, ancestro de `tierb_fix` en forgejo, origin y sriyantra | + +**Lo que cambia para ti, en llano:** +- La firma que das para un commit ya no se la come un push de otro contenido. El push mira primero la constancia del permiso que el pre-commit ya usó, y solo después un permiso fresco. Ese permiso fresco solo vale para el push si dice `"puerta": "push"`. +- Un revert del revert ya no hereda una concesión vieja. El libro de concesiones guarda también el commit exacto. +- Una rama huérfana, un remoto vacío o una URL con espacios pasan diciéndolo, sin reventar. Las URL con usuario y clave se guardan sin la clave. +- Se gasta el permiso antes de anotar el libro. Si algo se interrumpe entre los dos pasos, se pierde una autorización, nunca se duplica. +- El instalador ya no inventa el guion versionado si falta, comprueba que el python de tu PATH importa los tres módulos y carga el tokenizador, y avisa de worktrees sin el módulo. + +**Una limitación que quiero que sepas, sin decidir hoy.** Si autorizas dos commits seguidos, cada uno por su crecimiento exacto, el push mide la suma contra el remoto y la constancia solo recuerda el último. El rechazo lo explica con las dos cifras y ofrece dos salidas: pagar hacia adelante o un permiso con puerta push. Cambiarlo tocaría el módulo hermano ya auditado, así que queda declarado en la spec.