docs: arje-zero reproducible verificado (lock determinista) — 4/4 componentes
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) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
d26e38253b
commit
cc2969f9e6
@@ -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`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user