granja: el worker recompila hammer al arrancar (evita el fósil de la golden)
Raíz de una noche de KDE atascada: la golden del 29-jun horneaba un hammer SIN el fix del overlay lowerdir (e69eaaa, 12-jul) ⇒ toda receta de muchas deps (kio=52, kwin, plasma-*) desbordaba el límite de 4KB de mount options y el sandbox ni arrancaba. 43 recetas 'en cola' que en realidad reventaban al instante. El source llega fresco por farm-sync pero nadie recompilaba. Ahora el worker-loop hace 'cargo build --release --bin hammer' al arrancar (~24s cacheado). Binario del worker vivo ya rebuildeado a mano y verificado: kio cruza el mount (funde 52 deps en una capa) y configura. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Semantic delta
No definition changed: this change is text, documentation or data.
1 files · +13 −0
diff --git a/scripts/farm/farm-worker-loop.sh b/scripts/farm/farm-worker-loop.sh
index ae7c0a02..4de45367 100755
--- a/scripts/farm/farm-worker-loop.sh
+++ b/scripts/farm/farm-worker-loop.sh
@@ -74,6 +74,19 @@ DISK_HIGH="${DISK_HIGH:-82}"
# incoming-clib: libs C (toolkit/foundational) que el worker SELLA pero el cron de cosecha-go IGNORA
# (son build-deps, se usan vía catálogo; no tienen binario que el gate Go pueda smoke-testear).
QUEUES="${QUEUES:-recipes/incoming recipes/incoming-go recipes/incoming-clib recipes/incoming-kde}"
+
+# REBUILD DEL BINARIO AL ARRANCAR (2026-07-18): el hammer horneado en la imagen golden ENVEJECE.
+# Caso real que costó una noche de KDE: la golden del 29-jun traía un hammer sin el fix del overlay
+# lowerdir (commit e69eaaa, 12-jul) ⇒ toda receta de muchas deps (kio=52, kwin, plasma-*) desbordaba
+# el límite de 4KB del mount options y el sandbox NI ARRANCABA — 43 recetas atascadas jurando "en
+# cola". El source SÍ llega fresco (farm-sync rsync-ea el repo), pero nadie recompilaba. Reconstruir
+# aquí garantiza que el worker corre el CÓDIGO VIGENTE, no el fósil de la imagen. Cacheado: ~24s si
+# no cambió nada, minutos en frío. Si cargo falla, seguimos con el binario que haya (mejor que abortar).
+if command -v cargo >/dev/null 2>&1; then
+ echo "$(date -u +%FT%TZ) rebuild hammer desde el source rsync-eado (evita el fósil de la golden)…"
+ cargo build --release --bin hammer -j"$JOBS" 2>&1 | tail -2 || echo " ⚠ rebuild falló — uso el binario existente"
+fi
+
echo "$(date -u +%FT%TZ) worker-loop arrancado: JOBS=$JOBS IDLE_SLEEP=$IDLE_SLEEP QUEUES='$QUEUES'"
while :; do
total=0