takana etapa 5c: comentarios de scripts, MOTD, y un BUG que introdujo la etapa 4

250 líneas de comentario en 151 scripts. Control verificado: el diff no toca
NI UNA línea que no empiece por #, y la sintaxis de los 151 pasa.

El barrido saltea heredocs y cadenas triples, y el guardián DISPARÓ 3 veces:
las tres eran el MOTD que el script escribe DENTRO de la imagen construida —
texto del producto, no comentario del script. Se cambiaron aparte y a
propósito, que es rebranding, no limpieza.

Y el hallazgo caro:  casaba contra ,
que es el TARGET de tracing — o sea el module_path!, o sea el nombre del crate.
La etapa 4 lo movió a  y el script quedó casando NADA. No fallaba:
imprimía cero atribuciones, indistinguible de un log sin problemas. Comprobado
con el binario (RUST_LOG=info sobre zlib), no deducido. Ahora acepta las dos, y
tiene que seguir aceptándolas porque los logs viejos en disco dicen la vieja.

Además 14 rutas de módulo  en docs, que el barrido anterior no tocó
porque  no es frontera de palabra.
This commit is contained in:
Sergio
2026-09-09 19:28:48 +00:00
parent 97ceb72411
commit 476168bb07
103 changed files with 273 additions and 268 deletions
+5 -5
View File
@@ -71,7 +71,7 @@ pre-requisito de validación.
`open_by_handle_at`+`CAP_DAC_READ_SEARCH`) queda para el track posterior: `nix` 0.30 no
parsea los info-records de FID y el modo FID perdería el fd que hoy hashea el contenido.
- [x] Hash del contenido tras la mutación (`content_hash`) y de-dup idempotente.
`hammer_journal::content_hash_of`/`hash_file` (blake3 plano, estilo `b3sum`, distinto del
`takana_journal::content_hash_of`/`hash_file` (blake3 plano, estilo `b3sum`, distinto del
`of_inputs` de artefactos). `Journal::record_dedup` omite el evento si deja el archivo
idéntico al último de ese path (o un `Delete` sobre algo ya borrado); `last_for_path` lo
resuelve. El watcher hashea cada `CLOSE_WRITE` y usa `record_dedup`: una reescritura sin
@@ -86,7 +86,7 @@ pre-requisito de validación.
- [x] Bridge `Mutation::SourcePatch``Recipe` + `build` + hidratación.
- [x] CLI: `takana apply [--prefix DIR] [--base-ref base.json]`,
`takana swm-verify`, `takana export --journal DIR > out.swm`.
- [x] `patch_url` / `content_url` remotos. `hammer_build::download` (curl, sólo fuera del
- [x] `patch_url` / `content_url` remotos. `takana_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; `takana apply` descarga `content_url`
y **verifica BLAKE3 antes de escribir** (hash erróneo ⇒ nada tocado). Su integridad la
@@ -98,7 +98,7 @@ pre-requisito de validación.
modelados: `Mutation::SourcePatch` (y `RecipeInline`) llevan campos `repo`/`commit`
**xor** `tarball`/`sha256` (resueltos por `swm::swm_source_kind`, misma regla que
`recipe::Source::kind`); `takana export` reconstruye ambos sin caer a `file_drop`.
- [x] Firma `signature` (ed25519) y `TrustStore` local. `hammer_core::sign`: `KeyPair`
- [x] Firma `signature` (ed25519) y `TrustStore` local. `takana_core::sign`: `KeyPair`
(genera/carga/escribe claves), `TrustStore::load(dir)` (lee `*.ed25519.pub`),
`Swm::verify_signature(&trust) → SigStatus` (`trusted`/`unknown-key`/`bad-sig`/
`unsigned`) sobre bytes canónicos JSON del manifiesto sin la firma. CLI:
@@ -121,7 +121,7 @@ pre-requisito de validación.
- [x] Subsistemas independientes en `hammerd::main` (FIFO/watcher/bus en threads); si uno
falla en init, los demás siguen.
- [x] Política expresiva leída de `/etc/hammer/agent-caps.toml` (`hammerd --agent-caps`).
`hammer_core::AgentCapsConfig`: `default` + `[[rule]]` por `uid`/`gid` (primera que casa
`takana_core::AgentCapsConfig`: `default` + `[[rule]]` por `uid`/`gid` (primera que casa
gana), `caps_for(uid,gid)`. `bus::policy_from_config` la enchufa; sin fichero o con
fichero inválido, cae a la política por-UID por defecto (avisando). Ejemplo en
`examples/agent-caps.toml`. El `default_policy` hardcoded queda como fallback.
@@ -328,7 +328,7 @@ Diseño completo en [SDD 11 — Bootstrap from-scratch](11-bootstrap.md). Resume
de-Alpinizados:** `recipes/{flex,bison}.toml` (kconfig), `recipes/openssl.toml` (3.5.4, certs/extract-cert),
`recipes/elfutils.toml` (sólo libelf 0.194 para objtool, con shims musl mínimos). Capa de arranque
restante: m4, libz/libzstd, gcc (status libc).
-**Etapa A — orquestador `bootstrap all` + log de transparencia exportable:** `hammer_bootstrap::all`
-**Etapa A — orquestador `bootstrap all` + log de transparencia exportable:** `takana_bootstrap::all`
encadena stage0→stage1→stage2 en una corrida del host (`takana bootstrap all --url … --sha256 … --version …`)
y deja el `bootstrap.json` poblado; `takana bootstrap manifest` lo imprime (la superficie de publicación
del log, SDD 11 §4). El veredicto `✓ REPRODUCIBLE` lo sigue sellando el rebuild in-VM (`selfhost-verify.sh`),