Fase 4: patch_url / content_url remotos en .swm
Cierra el último hueco de "sólo inline": ahora un .swm puede referenciar el patch y el contenido de un file_drop por URL. - hammer-build/src/download.rs: fetch_url_bytes / fetch_url_to_file (curl, sólo fuera del sandbox; acepta file:// para tests offline). 3 tests. - swm_bridge::build_source_patch: descarga patch_url a swm-recipes/<commit>.patch antes de compilar (ya no lo rechaza). Test reescrito con file://. - CLI apply: file_drop con content_url descarga y verifica BLAKE3 ANTES de escribir; hash erróneo ⇒ nada tocado (verificado e2e). Integridad: content_hash (file_drop) y build reproducible + expected_hash (patch). 22 binarios de test verdes; e2e por file:// (apply + caso de hash inválido que no escribe). 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
6db3e3e302
commit
7a6bfb4c4d
+5
-1
@@ -66,7 +66,11 @@ pre-requisito de validación.
|
||||
- [x] Bridge `Mutation::SourcePatch` → `Recipe` + `build` + hidratación.
|
||||
- [x] CLI: `hammer apply [--prefix DIR] [--base-ref base.json]`,
|
||||
`hammer swm-verify`, `hammer export --journal DIR > out.swm`.
|
||||
- [ ] `patch_url` / `content_url` remotos (hoy sólo inline).
|
||||
- [x] `patch_url` / `content_url` remotos. `hammer_build::download` (curl, sólo fuera del
|
||||
sandbox; acepta `file://` para tests offline). `build_source_patch` descarga `patch_url`
|
||||
al `swm-recipes/<commit>.patch` antes de compilar; `hammer apply` descarga `content_url`
|
||||
y **verifica BLAKE3 antes de escribir** (hash erróneo ⇒ nada tocado). Su integridad la
|
||||
cubre `content_hash` (file_drop) y el build reproducible + `expected_hash` (patch).
|
||||
- [x] Provenance en `export`: mapa artefacto→receta vía sidecar `.hammer/recipe.toml` que
|
||||
`hammer-build::build` escribe dentro del artefacto antes de sellar. `hammer export`
|
||||
agrupa eventos por `artifact_hash` y emite UN `source_patch` por grupo cuya receta
|
||||
|
||||
Reference in New Issue
Block a user