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 1182Shell 87Rust 63Markdown 541592 Definiciones

granja: la siembra de la flota fallaba justo en el caso que existe para arreglar

Con '.fleet' ausente —el hub recién clonado, o sea el único caso que importa— el 'cat' de un
fichero inexistente devuelve 1, y como el script corre con 'set -o pipefail' la tubería hereda
ese estado y el '&& mv' no dispara: el fichero se generaba correctamente y se quedaba sin
mover. Se añaden los '|| true' que faltaban.

⚠ Y por qué mi prueba no lo vio, que es lo que vale anotar: extraje el bloque real del script
para probarlo, pero le puse 'set -u' en vez del 'set -uo pipefail' que el script trae. Copié
el código y no el ENTORNO en que corre, y sin pipefail el caso pasaba. El extractor ahora lee
la línea 'set -' del propio script en vez de que yo la escriba de memoria.

Verificado con un ciclo REAL tras borrar .fleet a mano:
  ── cosecha-cron arranca
  ==> dev.gioser.net (154.197.1.13)
     siembra ✓
     manifiesto ✓ (worker: 764 · total: 4743)
  .fleet quedó: dev.gioser.net 154.197.1.13

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2

f1d69f4f99e0bf82459facb9bd6137f2cefd2f5e · por Sergio · (hace 1 mes) · padre 0eb353b57 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

1 archivos · +5 −1

diff --git a/scripts/farm/cosecha-cron.sh b/scripts/farm/cosecha-cron.sh
index 5c63489b..04cb61cb 100755
--- a/scripts/farm/cosecha-cron.sh
+++ b/scripts/farm/cosecha-cron.sh
@@ -71,7 +71,11 @@ FLEET="$ROOT/scripts/farm/.fleet"
 # falla. Se unen por NOMBRE (el fijo gana) para que lo efímero de hcloud conviva sin duplicarse.
 FLEET_FIJA="$ROOT/scripts/farm/flota-permanente"
 if [ -s "$FLEET_FIJA" ]; then
-  { grep -vE '^[[:space:]]*(#|$)' "$FLEET_FIJA"; cat "$FLEET" 2>/dev/null; } \
+  # Los `|| true` NO son adorno: este script corre con `set -o pipefail`, y un `.fleet` ausente
+  # —que es EXACTAMENTE el caso que esta siembra existe para arreglar— hace fallar al `cat`, la
+  # tubería hereda ese estado y el `&& mv` no dispara. Resultado medido: el fichero se generaba
+  # bien y se quedaba sin mover, o sea que la siembra fallaba justo en el único caso que importa.
+  { grep -vE '^[[:space:]]*(#|$)' "$FLEET_FIJA" || true; cat "$FLEET" 2>/dev/null || true; } \
     | awk 'NF && !visto[$1]++' > "$FLEET.seed" && mv "$FLEET.seed" "$FLEET"
 fi
 HAMMER="${HAMMER:-$ROOT/target/release/hammer}"