Track posterior: Stage 0 del bootstrap (crate hammer-bootstrap) + ADR 0008
Primer eslabón ejecutable del bootstrap from-scratch (SDD 11). Stage 0 ingiere un
toolchain semilla pinned al store sin compilarlo:
- SeedSpec{kind,version,url,sha256}. seed_hash() deriva el ArtifactHash de la
identidad pinned (clase+versión+sha256), no de rutas del host ni del url → el
mismo tarball desde otro espejo produce el mismo artefacto.
- stage0(seed, store): descarga (curl, file:// offline-ok), verifica sha256
ANTES de extraer, untar y seal en el store. Idempotente si ya está sellado;
un sha erróneo no sella nada.
- Reusa el lab: hammer_build::download (+ nuevo verify_sha256 público), Store::seal.
Staging bajo el root del store para que el rename de seal sea atómico.
ADR 0008 fija la decisión (3 stages, zig semilla primaria, musl-cross-make
escotilla, ingerir-no-compilar el Stage 0). Renumerado a 0008 porque el 0007 lo
tomó la decisión de adoptar arje como init; SDD 11 y refs alineados con arje
(init supervisado que entrega el CRASHED real, ADR 0007).
4 unit tests (hash por identidad, ingest+seal+readonly, idempotencia, rechazo de
sha) sin red (file://). Workspace 218 verde.
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
ea10c9f716
commit
3d6d25661c
@@ -3,6 +3,7 @@ resolver = "2"
|
||||
members = [
|
||||
"crates/hammer-core",
|
||||
"crates/hammer-build",
|
||||
"crates/hammer-bootstrap",
|
||||
"crates/hammer-overlay",
|
||||
"crates/hammer-journal",
|
||||
"crates/hammer-agent",
|
||||
@@ -20,6 +21,7 @@ repository = "https://gitea.gioser.net/sergio/hammer"
|
||||
[workspace.dependencies]
|
||||
hammer-core = { path = "crates/hammer-core" }
|
||||
hammer-build = { path = "crates/hammer-build" }
|
||||
hammer-bootstrap = { path = "crates/hammer-bootstrap" }
|
||||
hammer-overlay = { path = "crates/hammer-overlay" }
|
||||
hammer-journal = { path = "crates/hammer-journal" }
|
||||
hammer-agent = { path = "crates/hammer-agent" }
|
||||
|
||||
Reference in New Issue
Block a user