docs: runbook para validar Stage 1 booteando en QEMU

Procedimiento operativo end-to-end para de-riesgar lo construido: stage0 (ingerir
zig) → stage1 (build + ensamblar el rootfs) → empaquetar initramfs (cpio newc +
gzip) → bootear en QEMU con el kernel del host → criterios de éxito.

Fundamentado en los comandos reales del repo (scripts/bootstrap-devfs.sh, la URL
y sha256 de zig 0.16.0, hammer bootstrap stage0/stage1). La prueba clave: matar
hammerd y ver a arje-zero reiniciarlo con backoff — el CRASHED real.

Honesto sobre su estado: es el procedimiento, no un transcript verificado; el
cross-compile y el boot reales aún no se corrieron (ese es el punto). §7
anticipa los ajustes probables (init, /dev/console, getty/tty, -lgcc_s).

Enlazado desde SDD 12 §I2 y el índice de docs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-06-11 02:00:29 +00:00
co-authored by Claude Opus 4.8
parent 14e10d9292
commit 56af1b5748
3 changed files with 136 additions and 2 deletions
+3 -2
View File
@@ -139,8 +139,9 @@ descarta: acoplar los grafos de build de los dos repos es justo lo que C.3 evita
`/sys/fs/cgroup`, `/dev/pts`, `/dev/shm`) + `/sbin/init``/usr/bin/arje-zero`, y ya **no** escribe
el `/etc/inittab` provisional. arje supervisa hammerd ⇒ **CRASHED real manejado por el init**.
La seed embebida se **verificó contra el tipo real** `card_core::Card` (`from_json` + `validate()`
pasan), no sólo como JSON válido. El boot completo se valida en VM (no testeable sin kernel); los
unit tests cubren la seed y el ensamblado, como el resto de Stage 1.
pasan), no sólo como JSON válido. El boot completo se valida en VM (no testeable sin kernel) — ver
el [runbook de boot en QEMU](runbooks/stage1-vm-boot.md); los unit tests cubren la seed y el
ensamblado, como el resto de Stage 1.
- **I3 — bus único (plan B.2).** hammerd `announce` en `arje-bus` (cambio en hammerd) y **expone el
`CRASHED` a la capa de IA** de hammer (`agent.sock` emite `{"t":"crashed",…}`). El `agent.sock`
(JSON, API de IA) queda **encima**; `arje-bus` (postcard) es el plano de control del init.