el latido no revierte: BORRA — y el primer intento de la tanda se evaporó entero
El §7.terdecies contó que el latido había revertido una receta entre dos builds. Falta la mitad, y es peor: su `rsync -az --delete` borra todo lo que no esté en el árbol del hub. El script de la tanda y su log estaban en /opt/takana —el sitio que parece natural— y el ciclo de las 10:30 se los llevó; el `sh` que los ejecutaba murió con ellos. Lo que quedó fue un flock esperando un lock para nadie y un tail -F sobre un fichero que ya no existía: desde afuera se ve IDÉNTICO a una tanda encolada y paciente. Se leyó así veinte minutos. Dos correcciones, una frase: lo efímero vive fuera de /opt/takana, y las recetas las siembra el latido (sembrarlas a mano es pelearse con él cada media hora). El relanzamiento ESPERA a que el hash pedido aparezca, con su propio límite y su mensaje. Y un dato que no estaba escrito: el latido siembra al EMPEZAR el ciclo y hace su `git pull --ff-only` al TERMINARLO, así que un commit recién empujado tarda DOS ciclos en llegar al worker. Además su clon es /opt/takana del anfitrión, que no es el clon donde se trabaja.
Semantic delta
No definition changed: this change is text, documentation or data.
1 files · +22 −0
diff --git a/docs/26-atuq-envoltorio-gecko.md b/docs/26-atuq-envoltorio-gecko.md
index 3a277b04..0d6f8993 100644
--- a/docs/26-atuq-envoltorio-gecko.md
+++ b/docs/26-atuq-envoltorio-gecko.md
@@ -4014,6 +4014,28 @@ porque el latido revirtió una receta entre dos builds de la misma tanda. Quedó
la tanda de otro frente (once recetas del monorepo subiendo a `c7545339a`), que es lo que el lock
del ADR 0012 hace y para lo que está.
+###### ⚠⚠ Y el latido no revierte: BORRA — el primer intento se evaporó entero
+
+El §7.terdecies contó que el latido había revertido una receta entre dos builds. Falta la mitad:
+su `rsync -az --delete` no sólo pisa lo que difiere, **borra todo lo que no esté en el árbol del
+hub**. El primer lanzamiento de esta tanda puso el script y su log en `/opt/takana/` —que parece
+el sitio natural, es donde está todo lo demás— y en el ciclo de las 10:30 desaparecieron los dos.
+El `sh` que estaba ejecutando el script murió con él. Lo que quedó fue un `flock` esperando un lock
+para nadie, y un `tail -F` sobre un fichero que ya no existía: **desde afuera se ve idéntico a una
+tanda encolada y paciente**, que es como se leyó durante veinte minutos.
+
+Y la misma barrida revirtió la receta sembrada a mano, que era la otra mitad del error: seguir
+sembrando recetas al worker por `rsync` propio es pelearse con el latido cada media hora. Las dos
+correcciones son una sola frase: **lo efímero vive fuera de `/opt/takana` (acá, `/root`), y las
+recetas las siembra el latido**. El relanzamiento espera a que el hash pedido APAREZCA en el worker
+en vez de fallar, con su propio límite y su propio mensaje (`SIN SEMILLA`).
+
+ℹ Y el latido siembra al EMPEZAR el ciclo y se pone al día (`git pull --ff-only`) al terminarlo, así
+que un commit recién empujado tarda **dos** ciclos en llegar al worker, no uno. Se acortó a cero
+haciendo ese `pull` a mano en el clon del latido —`/opt/takana` del anfitrión, que no es el clon
+donde se trabaja (`/work/sergio/takana`): son dos árboles distintos y esa distinción no estaba
+escrita en ningún lado—.
+
##### El OCTAVO lugar: nadie vigilaba que la receta no se quedara DETRÁS de su propio paquete
`test-atuq-boveda-coherente.py` miraba siete lugares y los siete preguntaban lo mismo: ¿la pieza