docs(arje): organiza core/ + seeds canónicas + boot reproducible
1#!/usr/bin/env bash
2# Valida una Tarjeta Semilla pasándola por el parser+validate de brahman-card.
3# Uso: seeds/validate.sh seeds/arje-prod.card.json
4#
5# Método: copiamos la Card como `seed.card.json` en un cwd vacío y corremos
6# ente-zero en dev-mode 4 s. Si carga, valida, e instancia genesis, la
7# Card es estructuralmente correcta — los binarios de los hijos pueden
8# faltar en el host (vivirán en /usr/sbin del initrd).
9
10set -euo pipefail
11
12if [ "$#" -ne 1 ]; then
13 echo "uso: $0 <ruta/seed.card.json>" >&2
14 exit 2
15fi
16
17SEED="$(realpath "$1")"
18SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
19REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
20BIN="$REPO_DIR/target/release/ente-zero"
21
22if [ ! -x "$BIN" ]; then
23 echo "[validate] compilando ente-zero (release)…"
24 (cd "$REPO_DIR" && cargo build --quiet --release -p ente-zero)
25fi
26
27SCRATCH="$(mktemp -d -t arje-validate.XXXXXX)"
28trap 'rm -rf "$SCRATCH"' EXIT
29cp "$SEED" "$SCRATCH/seed.card.json"
30
31cd "$SCRATCH"
32timeout 5 "$BIN" 2>&1 | tee /tmp/arje-validate.log | \
33 grep -E "Tarjeta Semilla cargada|semilla inválida|JSON no contiene|Caused by" | head -5
34
35if grep -q "Tarjeta Semilla cargada y validada" /tmp/arje-validate.log; then
36 echo "[validate] OK: $SEED"
37 exit 0
38fi
39echo "[validate] FALLÓ: $SEED" >&2
40exit 1