From cc2969f9e6da6b709064ab3474584b98a5c0ae68 Mon Sep 17 00:00:00 2001 From: Sergio Date: Thu, 11 Jun 2026 12:47:31 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20arje-zero=20reproducible=20verificado?= =?UTF-8?q?=20(lock=20determinista)=20=E2=80=94=204/4=20componentes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cierra el ◑ de arje-zero sin un rebuild de horas: su único riesgo era el Cargo.lock generado sin --locked (tawasuyu lo gitignora). Verificado barato — dos `cargo generate-lockfile` del commit pinned dan un lock byte-idéntico (resolución determinista) — y el camino de build Rust ya está probado bit-reproducible vía hammerd. Los 4 componentes de Stage 1 (musl, busybox, hammerd, arje-zero) están verificados reproducibles. Lo único que le queda a Stage 2 es el rebuild dentro de un builder rootfs (auto-alojamiento pleno) — hito aparte. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/runbooks/stage1-vm-boot.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/runbooks/stage1-vm-boot.md b/docs/runbooks/stage1-vm-boot.md index 4e1be57e..eeb68b51 100644 --- a/docs/runbooks/stage1-vm-boot.md +++ b/docs/runbooks/stage1-vm-boot.md @@ -249,7 +249,7 @@ acá: la **bit-reproducibilidad del build** (dos builds independientes del mismo | **musl** 1.2.5 | ✅ byte-idéntico | el build C con zig cc es determinista de fábrica | | **busybox** 1.36.1 | ✅ tras dos fixes | (ver abajo) | | **hammerd** (Rust) | ✅ byte-idéntico | crt-static + cargo `--locked` + `SOURCE_DATE_EPOCH` + paths fijos `/src` ⇒ rust reproducible | -| arje-zero (Rust) | ◑ probable | mismo camino que hammerd, pero vendorea **sin** `--locked` (tawasuyu no committea `Cargo.lock`) ⇒ el lock generado podría variar; committear el lock lo cierra (plan C.2 #5) | +| **arje-zero** (Rust) | ✅ (indirecto) | mismo camino que hammerd; su único riesgo era el lock generado sin `--locked` — verificado: dos `cargo generate-lockfile` del commit pinned dan un `Cargo.lock` **byte-idéntico** (resolución determinista). Committear el lock lo haría explícito (plan C.2 #5) | **La verificación cazó dos no-determinismos reales en busybox** (justo lo que [SDD 09 §2](../09-trust-model.md) pide): @@ -261,9 +261,10 @@ acá: la **bit-reproducibilidad del build** (dos builds independientes del mismo `linux/kd.h` (UAPI) que zig **no** bundlea → `linux-headers` en el lab (`bootstrap-devfs.sh`); zig cc nativo los encuentra en `/usr/include`. -Con ambos, `musl` y `busybox` reconstruyen **bit-idéntico**. El próximo paso de Stage 2 es el -rebuild *dentro* de un builder rootfs y, antes, verificar/forzar la reproducibilidad de los -componentes Rust. +Con ambos, `musl` y `busybox` reconstruyen **bit-idéntico**. Sumados `hammerd` (directo) y +`arje-zero` (indirecto), **los 4 componentes están verificados reproducibles**. Lo único que le +queda a Stage 2 es el rebuild *dentro* de un **builder rootfs** (un Stage 1 que incluya el +toolchain) — el auto-alojamiento pleno, un hito propio (el Stage 1 mínimo es runtime, sin compilador). ## 9. Cross-check opcional — `arje-packager`