fix(arje): validate.sh robusto frente a timeout 124 + pipefail
timeout 5 retorna 124 al matar ente-zero (dev mode termina solo). Bajo set -euo pipefail eso abortaba el script antes de chequear el log, así que build-arje-initrd.sh reportaba "seed inválida" aunque la Card estuviera bien. Cambios: - Capturamos el output a un archivo (no pipeline) con set +e alrededor del timeout, así el exit code no importa. - El check sigue siendo grep -q sobre "Tarjeta Semilla cargada y validada"; si falla, ahora imprimimos las primeras 40 líneas del log al stderr para debug. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
1 archivos · +16 −3
- seeds/validate.sh +16 −3
diff --git a/seeds/validate.sh b/seeds/validate.sh
index edb2de7..4615098 100755
--- a/seeds/validate.sh
+++ b/seeds/validate.sh
@@ -29,12 +29,25 @@ trap 'rm -rf "$SCRATCH"' EXIT
cp "$SEED" "$SCRATCH/seed.card.json"
cd "$SCRATCH"
-timeout 5 "$BIN" 2>&1 | tee /tmp/arje-validate.log | \
- grep -E "Tarjeta Semilla cargada|semilla inválida|JSON no contiene|Caused by" | head -5
+LOG="$SCRATCH/ente-zero.log"
-if grep -q "Tarjeta Semilla cargada y validada" /tmp/arje-validate.log; then
+# `timeout` retorna 124 al matar el proceso (dev-mode termina solo a los 4 s
+# de todas formas). Aceptamos cualquier exit code aquí; lo que importa es lo
+# que escribió al log.
+set +e
+timeout 5 "$BIN" >"$LOG" 2>&1
+set -e
+
+# Mostrar las líneas relevantes (no es fatal si no aparecen — el check real
+# es el `grep -q` siguiente).
+grep -E "Tarjeta Semilla cargada|semilla inválida|JSON no contiene|Caused by" \
+ "$LOG" | head -5 || true
+
+if grep -q "Tarjeta Semilla cargada y validada" "$LOG"; then
echo "[validate] OK: $SEED"
exit 0
fi
echo "[validate] FALLÓ: $SEED" >&2
+echo "[validate] log completo:" >&2
+sed -n '1,40p' "$LOG" >&2
exit 1