Bootstrap: manifiesto versionado (bootstrap.json) + Stage 0 anota su línea
Lote 1 del track posterior. Implementa el embrión del log de transparencia (SDD 11 §4): crate hammer-bootstrap::manifest con BootstrapManifest/StageEntry. - append-only e idempotente (de-dup por (stage, artifact_hash)) - escritura atómica (tmp + rename); ts informativo, fuera de todo hash - stage0() anota su línea en ambos caminos (sello nuevo e idempotente); un sha erróneo no genera línea - 9 tests nuevos (4 de manifest + 5 de stage0/manifest), workspace 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
1731e7ef23
commit
ba4d520c44
+10
-4
@@ -98,12 +98,18 @@ hash(stage1) vs hash(stage1')
|
||||
- **Distintos** ⇒ hay no-determinismo (timestamps, paths embebidos, orden de enlace). Se
|
||||
caza y se elimina; es exactamente el trabajo que [SDD 09](09-trust-model.md) §2 exige.
|
||||
|
||||
## 4. Manifiesto de bootstrap (embrión del log de transparencia)
|
||||
## 4. Manifiesto de bootstrap (embrión del log de transparencia) ✅
|
||||
|
||||
Cada etapa anota una línea `(stage, recipe_hash, artifact_hash, seed_hash, ts)` en un
|
||||
`bootstrap.json` versionado. Ese manifiesto **es** la semilla del log de transparencia
|
||||
([SDD 09 §4](09-trust-model.md)): un tercero reproduce el bootstrap y verifica que sus hashes
|
||||
coinciden con los publicados, sin confiar en el binario del autor.
|
||||
`bootstrap.json` versionado (en la raíz del store). Ese manifiesto **es** la semilla del log de
|
||||
transparencia ([SDD 09 §4](09-trust-model.md)): un tercero reproduce el bootstrap y verifica que
|
||||
sus hashes coinciden con los publicados, sin confiar en el binario del autor.
|
||||
|
||||
Implementado en `hammer-bootstrap::manifest` (`BootstrapManifest` / `StageEntry`): append-only e
|
||||
**idempotente** (de-dup por `(stage, artifact_hash)`), escritura atómica, y `ts` que **no** entra
|
||||
en ningún hash (dos reproducciones del mismo bootstrap difieren a lo sumo en ese campo). Stage 0
|
||||
ya anota su línea: `recipe_hash = None` (la semilla se ingiere, no se compila) y
|
||||
`artifact_hash == seed_hash` (la semilla es a la vez insumo y producto).
|
||||
|
||||
## 5. Interfaz
|
||||
|
||||
|
||||
Reference in New Issue
Block a user