663fd6e38a
Pieza 2 del DM: declara `mirada-compositor --greeter` como hijo genesis
de arje-zero en `seeds/arje-host.card.json`, reemplazando el agetty de
tty1. Con `supervision: Restart { 2000, 60000 }`, arje-zero lo
respawnea si panica — la resiliencia «PID 2 supervisado» (sshd queda
como rescate remoto). Va en arje-host (boot de hardware real con rootfs
y mesa), NO en arje-prod (seed del initrd, sin GPU).
Además: `seeds/validate.sh` tenía referencias `ente-zero` stale del
rename ente→arje — corregidas a `arje-zero` (paquete + binario). Las
tres seeds validan. Tabla de seeds actualizada en docs/arje-boot.md.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
54 lines
1.6 KiB
Bash
Executable File
54 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Valida una Tarjeta Semilla pasándola por el parser+validate de brahman-card.
|
|
# Uso: seeds/validate.sh seeds/arje-prod.card.json
|
|
#
|
|
# Método: copiamos la Card como `seed.card.json` en un cwd vacío y corremos
|
|
# arje-zero en dev-mode 4 s. Si carga, valida, e instancia genesis, la
|
|
# Card es estructuralmente correcta — los binarios de los hijos pueden
|
|
# faltar en el host (vivirán en /usr/sbin del initrd).
|
|
|
|
set -euo pipefail
|
|
|
|
if [ "$#" -ne 1 ]; then
|
|
echo "uso: $0 <ruta/seed.card.json>" >&2
|
|
exit 2
|
|
fi
|
|
|
|
SEED="$(realpath "$1")"
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
BIN="$REPO_DIR/target/release/arje-zero"
|
|
|
|
if [ ! -x "$BIN" ]; then
|
|
echo "[validate] compilando arje-zero (release)…"
|
|
(cd "$REPO_DIR" && cargo build --quiet --release -p arje-zero)
|
|
fi
|
|
|
|
SCRATCH="$(mktemp -d -t arje-validate.XXXXXX)"
|
|
trap 'rm -rf "$SCRATCH"' EXIT
|
|
cp "$SEED" "$SCRATCH/seed.card.json"
|
|
|
|
cd "$SCRATCH"
|
|
LOG="$SCRATCH/arje-zero.log"
|
|
|
|
# `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
|