tawasuyu

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…

TOML 604Rust 56Shell 36Markdown 281227 Definitions

build: SOURCE_DATE_EPOCH + TZ=UTC en el sandbox (determinismo pre-Stage 2)

Stage 2 compara el content-hash (of_tree) de stage1 vs stage1' rebuildeado; para
que coincidan, el build debe ser determinista. Las rutas ya lo son (el source se
bindea en /src, constante entre rebuilds); el knob que faltaba es el timestamp:
SOURCE_DATE_EPOCH=1 (+ TZ=UTC) fija los que tar/ar/gzip y __DATE__/__TIME__ embeben.

No cambia ningún ArtifactHash (input-addressed) ⇒ caché intacta; sólo normaliza
los bytes de salida de builds futuros. Plan C.2 #5.

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

974504e0689177e26d88f74b46534a7573da29b5 · by Sergio · (4 months ago) · parent 9676fff0d · browse the tree at this commit

Semantic delta · 1

crates/hammer-build/src/sandbox.rs

1 files · +6 −0

diff --git a/crates/hammer-build/src/sandbox.rs b/crates/hammer-build/src/sandbox.rs
index 20e1d98b..5e7a559c 100644
--- a/crates/hammer-build/src/sandbox.rs
+++ b/crates/hammer-build/src/sandbox.rs
@@ -165,6 +165,12 @@ impl Sandbox {
             ("AR", "zig ar"),
             ("LC_ALL", "C"),
             ("LANG", "C"),
+            // Reproducibilidad (pre-Stage 2): fija los timestamps que muchas herramientas embeben
+            // (tar, ar, gzip, __DATE__/__TIME__ vía SOURCE_DATE_EPOCH). Valor fijo y arbitrario
+            // (1970-01-01 00:00:01). Las rutas ya son deterministas: el source se bindea en `/src`
+            // (constante entre rebuilds, sea cual sea el work dir del host). Ver SDD 11 / runbook.
+            ("SOURCE_DATE_EPOCH", "1"),
+            ("TZ", "UTC"),
         ];
         if self.cache_dir.is_some() {
             defaults.push(("ZIG_GLOBAL_CACHE_DIR", "/cache/zig"));