takana etapa 3a: los cargo build emiten los DOS binarios
Va solo y ANTES de cambiar ninguna invocación, a propósito. El worker compila desde fuente (farm-worker-loop.sh) y la siembra excluye /target: si primero cambiara las llamadas a `takana` y después el build, habría una ventana en la que el worker sincroniza scripts nuevos y sigue teniendo sólo el binario viejo — y eso no falla ruidosamente, deja de cosechar en silencio. Con los dos emitidos, cualquier orden de sincronización queda sano.
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
4 archivos · +6 −6
diff --git a/scripts/farm/farm-lab-sync.sh b/scripts/farm/farm-lab-sync.sh
index 396b5670..9a15684f 100755
--- a/scripts/farm/farm-lab-sync.sh
+++ b/scripts/farm/farm-lab-sync.sh
@@ -57,7 +57,7 @@ log "3/4 recompilando hammer en el worker (el binario debe traer el lab en hash_
# anterior, calcula la huella vieja y el paso 4 falla sin que se vea por qué (2026-08-12).
$SSH "root@$IP" "cd $REMOTE && . \$HOME/.cargo/env 2>/dev/null
find crates -name '*.rs' -exec touch {} +
- cargo build --release --bin hammer 2>&1 | tail -2"
+ cargo build --release --bin takana --bin hammer 2>&1 | tail -2"
log "4/4 EVIDENCIA: ¿el worker sella en la misma dirección que el hub?"
h_hub=$("$ROOT/target/release/hammer" --store "$ROOT/store" hash "$TESTIGO" | tail -1)
diff --git a/scripts/farm/farm-worker-loop.sh b/scripts/farm/farm-worker-loop.sh
index 87230f27..bff9cb2e 100755
--- a/scripts/farm/farm-worker-loop.sh
+++ b/scripts/farm/farm-worker-loop.sh
@@ -170,7 +170,7 @@ QUEUES="${QUEUES:-recipes/incoming recipes/incoming-go recipes/incoming-gnome re
# 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"
+ cargo build --release --bin takana --bin hammer -j"$JOBS" 2>&1 | tail -2 || echo " ⚠ rebuild falló — uso el binario existente"
fi
# EL MISMO REBUILD, PERO POR CICLO Y NO SÓLO AL ARRANCAR (2026-09-06). El bloque de arriba corre
@@ -192,11 +192,11 @@ fi
rebuild_si_hace_falta() {
command -v cargo >/dev/null 2>&1 || return 0
bin=target/release/hammer
- [ -x "$bin" ] || { echo "$(date -u +%FT%TZ) no hay binario: compilando"; cargo build --release --bin hammer -j"$JOBS" 2>&1 | tail -2; return 0; }
+ [ -x "$bin" ] || { echo "$(date -u +%FT%TZ) no hay binario: compilando"; cargo build --release --bin takana --bin hammer -j"$JOBS" 2>&1 | tail -2; return 0; }
# ¿Algún fuente más nuevo que el binario? (Cargo.lock incluido: un bump de dep también cuenta.)
if [ -n "$(find crates Cargo.toml Cargo.lock -newer "$bin" -type f -print -quit 2>/dev/null)" ]; then
echo "$(date -u +%FT%TZ) el source es más nuevo que el binario ⇒ recompilo hammer"
- cargo build --release --bin hammer -j"$JOBS" 2>&1 | tail -2 || echo " ⚠ rebuild falló — sigo con el binario existente"
+ cargo build --release --bin takana --bin hammer -j"$JOBS" 2>&1 | tail -2 || echo " ⚠ rebuild falló — sigo con el binario existente"
fi
}
diff --git a/scripts/farm/vps-setup.sh b/scripts/farm/vps-setup.sh
index ddaced47..ea919c47 100755
--- a/scripts/farm/vps-setup.sh
+++ b/scripts/farm/vps-setup.sh
@@ -138,7 +138,7 @@ fi
. "$HOME/.cargo/env"
echo "==> 5. build hammer (target/release/hammer)"
-cargo build --release --bin hammer
+cargo build --release --bin takana --bin hammer
echo "==> 6. rootfs Alpine edge + zig (bootstrap reproducible; varios min la 1ra vez)"
./scripts/bootstrap-devfs.sh
diff --git a/scripts/why-differs-barrido.sh b/scripts/why-differs-barrido.sh
index 4f5d96ea..9671c88e 100755
--- a/scripts/why-differs-barrido.sh
+++ b/scripts/why-differs-barrido.sh
@@ -74,7 +74,7 @@ def solo_metadatos(d):
def main():
if not HAMMER.exists():
- sys.exit(f"falta {HAMMER} (cargo build --release --bin hammer)")
+ sys.exit(f"falta {HAMMER} (cargo build --release --bin takana --bin hammer)")
grupos = sellados_por_nombre()
nombres = sorted(grupos)