Files
brahman/seeds/validate.sh
T
sergio 8592bab19e docs(arje): organiza core/ + seeds canónicas + boot reproducible
- crates/core/README.md: agrupamiento lógico de los 31 crates absorbidos
  de arje (ente-*) y del protocolo brahman (brahman-*) en 6 grupos —
  Init/PID 1, contratos, discovery, IPC+CAS, cerebro, 14 shims compat
  systemd. No se movieron crates físicamente (rompería paths
  cross-workspace).

- seeds/arje-minimal.card.json: PID1 + /bin/sh, smoke test QEMU.
- seeds/arje-prod.card.json: PID1 + 14 shims compat + tmpfiles/binfmt
  one-shots + echo + getty (16 children). Validados con
  brahman_card::Card::validate.
- seeds/validate.sh: carga la seed vía ente-zero en dev mode.

- scripts/build-arje-initrd.sh: empaqueta CPIO+gzip newc layout
  /init→/sbin/ente-zero, /usr/sbin/ente-*-compat, /ente/seed.card.json,
  /bin/{sh,...} (busybox o glibc+ldd). Tested: produce 20 MB initrd OK.
- scripts/run-arje-qemu.sh: qemu-system-x86_64 con KVM auto-detect,
  -kernel/-initrd/-append "rdinit=/init console=ttyS0,115200 panic=10".

- docs/arje-boot.md: doc end-to-end — layout initramfs, QEMU (con kernel
  del host o externo), GRUB bare metal, Proxmox/libvirt args:, schema
  de Card con todas las validaciones, debugging (sockets de
  introspección, snapshot/restore, metrics), checklist pre-deploy.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 18:40:05 +00:00

41 lines
1.3 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
# ente-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/ente-zero"
if [ ! -x "$BIN" ]; then
echo "[validate] compilando ente-zero (release)…"
(cd "$REPO_DIR" && cargo build --quiet --release -p ente-zero)
fi
SCRATCH="$(mktemp -d -t arje-validate.XXXXXX)"
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
if grep -q "Tarjeta Semilla cargada y validada" /tmp/arje-validate.log; then
echo "[validate] OK: $SEED"
exit 0
fi
echo "[validate] FALLÓ: $SEED" >&2
exit 1