diff --git a/docs/10-roadmap.md b/docs/10-roadmap.md index 715f04b5..522f5eb3 100644 --- a/docs/10-roadmap.md +++ b/docs/10-roadmap.md @@ -251,8 +251,13 @@ Diseño completo en [SDD 11 — Bootstrap from-scratch](11-bootstrap.md). Resume sh/sed/grep/awk/tar/find, GNU coreutils para cp/mkdir/install); el swap monta el busybox estático de hammer sobre `/toolchain/bin/busybox` (`--swap busybox=:bin/busybox`, sin código nuevo). Con make+busybox de hammer los 4/4 (incl. busybox compilándose a sí mismo con hammer-busybox de shell) - reproducen `of_tree=9adefb82…`. Expuesto con `SWAP_BUSYBOX=1`. **Pendiente:** correr el verify in-VM - con los swaps para el `✓ REPRODUCIBLE` end-to-end; luego linux-headers → bwrap → rust/llvm. + reproducen `of_tree=9adefb82…`. Expuesto con `SWAP_BUSYBOX=1`. **✓ REPRODUCIBLE in-VM con ambos swaps + (2026-06-13):** `KVM=1 MEM=24576 SWAP_MAKE=1 SWAP_BUSYBOX=1 ./scripts/selfhost-verify.sh` en `libre` + reconstruyó los 4/4 dentro de la VM con el `/toolchain` hammerizado (make `fbad44ac…` + busybox + `56664d70…` pisando los de Alpine) y el `of_tree(stage1')` **igualó** la referencia `9adefb82…` ⇒ + `✓ REPRODUCIBLE: stage1' == stage1`, `DRIVER_RC=0` (~54 min, arje-zero cu=1 in-VM). **La procedencia + del builder ya no es "todo Alpine" y el auto-alojamiento sigue bit-a-bit.** **Pendiente:** seguir + reemplazando piezas — linux-headers → bwrap → rust/llvm (cada una swapeada y re-verificada igual). - ⏭️ **También pendiente (Stage 1):** bus único (B.2: exponer el `CRASHED` a la capa de IA) y atestación arje (A1/A2). diff --git a/docs/runbooks/stage1-vm-boot.md b/docs/runbooks/stage1-vm-boot.md index a561648e..9c7076f0 100644 --- a/docs/runbooks/stage1-vm-boot.md +++ b/docs/runbooks/stage1-vm-boot.md @@ -449,6 +449,18 @@ adentro (arje-zero cu=1 compiló en **27m32s** in-VM), selló el rootfs key `2bd (auto-alojado bit a bit)`, `DRIVER_RC=0`. **El auto-alojamiento bit-a-bit de Stage 1 queda cerrado y confirmado en el bucle completo** (host↔VM), no sólo host↔host. +**✓ REPRODUCIBLE con swaps de la variante (b) — verificado end-to-end in-VM (2026-06-13).** +`KVM=1 MEM=24576 SWAP_MAKE=1 SWAP_BUSYBOX=1 ./scripts/selfhost-verify.sh` en `libre`: el builder se +ensambla pisando el `/toolchain` Alpine con el **make** (`b3:fbad44ac…`) y el **busybox** +(`b3:56664d70…`) que hammer compiló desde fuente, y la VM reconstruye los **4/4** con ese toolchain +hammerizado — incluido busybox compilándose a sí mismo con hammer-busybox de shell. Sellaron in-VM: +`musl 57b66a2e…`, `busybox 56664d70…`, `hammerd d08fd273…`, `arje-zero bd0f8475…` (cu=1), y el +`of_tree(stage1')` **igualó la referencia** `9adefb82…` ⇒ `✓ REPRODUCIBLE: stage1' == stage1`, +`DRIVER_RC=0` (`RESULTADO: ✓ REPRODUCIBLE`, elapsed **3261 s** ≈ 54 min con `arje-zero` cu=1 in-VM). +**La procedencia del builder deja de ser "todo Alpine": make+busybox son ya de hammer, auditados, y +el auto-alojamiento sigue siendo bit-a-bit.** Siguiente pieza de la variante (b): linux-headers → +bwrap → rust/llvm (cada una swapeada y re-verificada con este mismo comando). + **Tarea reproducible end-to-end: `scripts/selfhost-verify.sh`.** Un solo comando hace TODO el pipeline (stage0 → stage1 baseline → stage2 ref → inyectar `overlay.ko`/`e1000.ko` del kernel local → ensamblar builder → empaquetar → bootear + driver no-interactivo → veredicto), pensado para correr en una