gioser

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 1572Shell 203Rust 109Markdown 993728 Sutichaykuna

exp-ec: portable al worker — el lock relativo, `takana` por ruta y el techo por entorno

Tres cosas mías que sólo se vieron al correrlo allá. El lock estaba cableado a `/work/.farm-build.lock`,
que es la ruta de la CAJA (donde `work` es symlink a /work); en el worker `work` es un directorio de
verdad y flock moría con `cannot open lock file`. `takana` no está en el PATH del worker, que lo
invoca por `./target/release/takana`. Y el techo de 420 s alcanza para las ligeras pero no para llvm,
firefox ni los kernels, así que ahora es `TLIMITE`.

Todas por entorno y con el valor de antes por defecto, así que la corrida de la caja no cambia.

065fc4e4817222c46c549f95ae2c14b9f36f4bce · ruwaq Sergio · (1 killa ñawpaq) · tayta 76a0f8c39 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

1 qillqakuna · +11 −1

diff --git a/scripts/farm/exp-ec.sh b/scripts/farm/exp-ec.sh
index af40c210..d8036f76 100755
--- a/scripts/farm/exp-ec.sh
+++ b/scripts/farm/exp-ec.sh
@@ -24,6 +24,16 @@ TMP=${TMPDIR:-/tmp}/exp-ec
 REC=$(cd "$(dirname "$0")/../.." && pwd)/recipes
 mkdir -p "$TMP"; OUT="$TMP/resultados.tsv"; : > "$OUT"
 
+# El lock va RELATIVO a la raíz del repo, que es donde CLAUDE.md lo define (`work/.farm-build.lock`).
+# En la caja `work` es un symlink a /work y en el worker es un directorio de verdad: cablear la ruta
+# absoluta de una máquina rompe en la otra con `flock: cannot open lock file`.
+LOCK=${LOCK:-work/.farm-build.lock}
+# Y `takana` no está en el PATH del worker — allá se invoca por su ruta dentro del árbol.
+TAKANA=${TAKANA:-$(command -v takana 2>/dev/null || echo ./target/release/takana)}
+# Techo por receta. 420 s alcanza para las ligeras; la cola pesada (llvm, firefox, kernels) pide
+# mucho más y se le pasa TLIMITE por entorno. Un timeout NO es un veredicto: se cuenta aparte.
+TLIMITE=${TLIMITE:-420}
+
 while read -r r; do
   [ -f "$r" ] || continue
   n=$(basename "$r" .toml)
@@ -36,7 +46,7 @@ while read -r r; do
   [ -n "$last" ] && sed -i "${last}i exit 77" "$REC/exp-ec-$n.toml"
 
   log="$TMP/$n.log"
-  timeout 420 flock -o /work/.farm-build.lock takana build "$REC/exp-ec-$n.toml" > "$log" 2>&1
+  timeout "$TLIMITE" flock -o "$LOCK" "$TAKANA" build "$REC/exp-ec-$n.toml" > "$log" 2>&1
   rc=$?
   if grep -q "exit 77" "$log"; then v="SOBREVIVE"
   elif [ $rc -eq 124 ]; then v="TIMEOUT"