tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1534Shell 199Rust 109Markdown 993713 Definitions

farm: fix — farm-up tiraba el store HORNEADO de la golden (rm -rf) y el worker medía media distro como deuda

El anclaje del store al volumen hacía `rm -rf $REMOTE/store` antes de symlinkear. Eso borra
justo el catálogo cacheado que es la razón de ser de la imagen golden ("arranca con TODO el
catálogo ⇒ cache-hit instantáneo"). Consecuencia medida hoy: el worker calculó 716 recetas de
deuda donde el hub medía 37, y se puso a reconstruir media distro (fallando, además, porque
sin `go` en el PATH host-side las recetas Go mueren en `go mod vendor`).

Fix: fusionar en vez de borrar. El store es CAS (nombre = hash) ⇒ `mv -n` al volumen es seguro
por construcción: no pisa lo que el volumen ya tiene, y lo horneado queda disponible.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

c21602b7070445a7c10f6a3da56741723b0cdfec · by sergio · (3 months ago) · parent 24d9fa7fd · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

1 files · +14 −2

diff --git a/scripts/farm/farm-up.sh b/scripts/farm/farm-up.sh
index bfa3e5e0..414c648e 100755
--- a/scripts/farm/farm-up.sh
+++ b/scripts/farm/farm-up.sh
@@ -83,8 +83,20 @@ for k in $(seq 1 "$N"); do
     $SSH root@"$ip" "mkdir -p /mnt/cosecha
       mount $dev /mnt/cosecha 2>/dev/null || { mkfs.ext4 -q -F $dev && mount $dev /mnt/cosecha; }
       mkdir -p /mnt/cosecha/store /mnt/cosecha/verdicts /mnt/cosecha/logs
-      # el store del worker ES el del volumen: sellar YA es persistir
-      rm -rf $REMOTE/store 2>/dev/null; ln -sfn /mnt/cosecha/store $REMOTE/store
+      # el store del worker ES el del volumen: sellar YA es persistir.
+      # PERO antes hay que RESCATAR el store HORNEADO en la golden (2026-07-21): esto hacía
+      # \`rm -rf $REMOTE/store\` y tiraba el catálogo cacheado que es la razón de ser de la imagen
+      # golden ('arranca con TODO el catálogo ⇒ cache-hit instantáneo'). Sin él, el worker mide
+      # deuda contra un store casi vacío y se pone a reconstruir media distro: en la tanda del
+      # 2026-07-21 dio 716 recetas de deuda donde el hub medía 37. Es CAS (nombre = hash) ⇒
+      # fusionar es seguro por construcción: \`mv -n\` no pisa lo que el volumen ya tiene.
+      if [ -d $REMOTE/store ] && [ ! -L $REMOTE/store ]; then
+        n=\$(ls $REMOTE/store 2>/dev/null | wc -l)
+        [ \"\$n\" -gt 0 ] && mv -n $REMOTE/store/* /mnt/cosecha/store/ 2>/dev/null
+        echo \"   ✓ rescatados \$n artefactos horneados de la golden al volumen\"
+        rm -rf $REMOTE/store
+      fi
+      ln -sfn /mnt/cosecha/store $REMOTE/store
       grep -q /mnt/cosecha /etc/fstab || echo '$dev /mnt/cosecha ext4 defaults,nofail 0 0' >> /etc/fstab" >/dev/null 2>&1
     if $SSH root@"$ip" 'mountpoint -q /mnt/cosecha && test -L '"$REMOTE"'/store' 2>/dev/null; then
       echo "   ✓ store anclado al volumen ($(  $SSH root@"$ip" 'ls -d /mnt/cosecha/store/*/ 2>/dev/null | wc -l') artefactos ya presentes)"