gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

selfhost: el REF se re-ancla en d152f060 — el núcleo de 5 tiene otro árbol

    of_tree(stage1)  b3:9adefb82…  →  b3:d152f060…

Con `util-linux` en STAGE1_COMPONENTS el árbol del stage1 cambia, así que la
referencia conocida-buena de selfhost-verify.sh tenía que moverse. La anterior se
deja ESCRITA en el comentario a propósito: una corrida vieja que la produzca no
está rota, está desactualizada, y distinguir esas dos cosas es justo para lo que
sirve este valor.

⚠ Y queda dicho en el propio script, porque es fácil confundirlo: EXPECT_REF es
lo que el HOST calcula y sólo cruza MÁQUINAS. Que la VM reproduzca ese mismo
árbol con su toolchain de adentro es otra comprobación —la del `✓ REPRODUCIBLE`—
y sigue corriendo.

Las otras tres menciones de 9adefb82 en el corpus (sandbox.rs, takana-build,
recipe.rs) no se tocan: hablan del baseline como dato histórico de otras
discusiones —el no-determinismo del build paralelo, el self-contained de zig, la
compatibilidad de strip_debug— y siguen siendo ciertas en su contexto.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

7cce81611c922bc05a8400df9c8b543127ea3cf9 · por Sergio · (hace 29 d) · padre ed4518ac9 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

2 archivos · +18 −4

diff --git a/crates/takana-bootstrap/src/lib.rs b/crates/takana-bootstrap/src/lib.rs
index 5e48cf76..e53d4c86 100644
--- a/crates/takana-bootstrap/src/lib.rs
+++ b/crates/takana-bootstrap/src/lib.rs
@@ -181,7 +181,8 @@ pub type RootfsHash = ArtifactHash;
 /// con `supervision: Restart` reintentando un binario inexistente para siempre.
 ///
 /// ⚠ **Lo que esto cuesta, dicho entero:** el `of_tree` del stage1 cambia, así que el baseline del
-/// selfhost-verify (`9adefb82/7fa6cb4e`) deja de valer y hay que re-verificar; el núcleo que se
+/// selfhost-verify (`9adefb82/7fa6cb4e`) dejó de valer — el nuevo `of_tree` es `b3:d152f060…`,
+/// anclado en `scripts/selfhost-verify.sh`; el núcleo que se
 /// reconstruye bit a bit dentro de la VM pasa a incluir un paquete C grande; y la raíz de confianza
 /// crece en ~119 binarios, de los cuales el producto usa uno. Ese último punto es el que hay que
 /// revisar si algún día molesta: lo que hace falta es `agetty`, no util-linux entero.
@@ -413,8 +414,9 @@ fn assemble_rootfs(
 // ── Capa de servicios: el PRODUCTO (Separación Mecanismo/Política) ──────────────────────────────
 //
 // `STAGE1_COMPONENTS` + `STAGE1_SEED_CARD` son el **mecanismo base**: el núcleo atómico que el
-// selfhost-verify reconstruye bit a bit. ⚠ El baseline `of_tree` 9adefb82/7fa6cb4e es de cuando
-// el núcleo eran CUATRO componentes: `util-linux` entró el 2026-09-22 y hay que re-verificar. Los
+// selfhost-verify reconstruye bit a bit. ⚠ El baseline `of_tree` 9adefb82/7fa6cb4e era de cuando
+// el núcleo eran CUATRO componentes; con `util-linux` dentro (2026-09-22) el árbol es
+// `b3:d152f060…`, ya anclado en `scripts/selfhost-verify.sh`. Los
 // **servicios** (sshd, …) son **política de producto**: NO entran al núcleo (no contaminan el
 // `of_tree` ni obligan a un rebuild pesado de openssl/zlib dentro de la VM). Se inyectan por
 // **hidratación tardía** sobre el rootfs base ya sellado, produciendo un `product-rootfs` APARTE.
diff --git a/scripts/selfhost-verify.sh b/scripts/selfhost-verify.sh
index 79419caa..0946885f 100755
--- a/scripts/selfhost-verify.sh
+++ b/scripts/selfhost-verify.sh
@@ -43,7 +43,19 @@ TOOLCHAIN_TAG="${TOOLCHAIN_TAG:-alpine-3.23.4-builder}"
 # Baseline DETERMINISTA con codegen-units=1 + CARGO_BUILD_JOBS=1 en el sandbox: el segundo serializa
 # el backend paralelo de rustc/LLVM (ThinLTO), sin el cual arje-zero divergía ~62 KB a >1 CPU (el
 # viejo 0039b2b9… era un build paralelo no-reproducible). Ver §8c y SDD 09 §2.
-EXPECT_REF="${EXPECT_REF:-b3:9adefb82b8457c8616cc89e6bb725a787ea52641f65d60d989d819e4872735ac}"
+#
+# ⚠ **Re-anclada el 2026-09-22: `util-linux` entró a `STAGE1_COMPONENTS`** y el núcleo pasó de 4 a 5
+# componentes, así que el árbol del stage1 cambió y con él su `of_tree`. La anterior era
+# `b3:9adefb82b8457c8616cc89e6bb725a787ea52641f65d60d989d819e4872735ac`, válida mientras el núcleo
+# fue `musl busybox hammerd arje-zero`; se deja escrita acá porque una corrida vieja que la produzca
+# no está rota, está desactualizada, y distinguir las dos cosas es justo para lo que sirve este
+# valor. Por qué entró util-linux: la card `console-getty` vive en la seed del NÚCLEO y su `exec`
+# tiene que existir en ESE rootfs — ver `takana-bootstrap/src/lib.rs`, `STAGE1_COMPONENTS`.
+#
+# ⚠ Y esto es lo que el HOST calcula, no el veredicto de auto-alojamiento. Que la VM reproduzca este
+# mismo árbol con su propio toolchain es lo que dice `✓ REPRODUCIBLE` más abajo; son dos
+# comprobaciones distintas y esta variable sólo cruza máquinas, no capas.
+EXPECT_REF="${EXPECT_REF:-b3:d152f060f570dbf6ace4b0cb61732caee3671f1f7a270eaa3a7755ed2fb94fb8}"
 : "${KVM:=$([[ -w /dev/kvm ]] && echo 1 || echo 0)}"
 
 say() { printf '\n\033[1;36m==> %s\033[0m\n' "$*"; }