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
This commit is contained in:
Sergio
2026-09-08 18:52:51 +00:00
co-authored by Claude Opus 5
parent 0eb353b572
commit f1d69f4f99
+5 -1
View File
@@ -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}"