From 6623f809094506ffcefc99f6e2e622810f2d6ee6 Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 9 Sep 2026 19:29:40 +0000 Subject: [PATCH] ADR 0016: etapa 5 cerrada, con los dos guardianes que dispararon 5a recetas (1427 comentarios, cero hashes movidos y medido), 5b docs (59), 5c scripts (250, sin tocar una sola linea que no empiece por #). Los dos guardianes que hicieron trabajo real: la linea base de hashes atrapo 3 recetas que se movian porque un comentario de SHELL dentro de una fase parece un comentario de TOML; y el salteo de heredocs atrapo 3 MOTD que son texto del producto, no comentarios. Y queda anotado el bug que introdujo la etapa 4: atribuir-fallos.py casaba contra el target de tracing, que es el module_path y por lo tanto el nombre del crate. Quedo casando nada sin fallar. --- docs/adr/0016-renombre-takana.md | 44 +++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/docs/adr/0016-renombre-takana.md b/docs/adr/0016-renombre-takana.md index 981ed977..657cd787 100644 --- a/docs/adr/0016-renombre-takana.md +++ b/docs/adr/0016-renombre-takana.md @@ -161,7 +161,49 @@ simplemente deja de cosechar. El directorio es lo **último** que se toca, y con **No se tocan:** las rutas `/var/lib/hammer` de sistemas ya instalados, el `-volid HAMMER_LIVE` del ISO (es identidad horneada en el medio) y el namespace `HARKAQ_*`, que es de otro subsistema. -5. **Comentarios de recetas** (692). Gratis en hash, ruidoso en diff: va en un commit propio y solo. +5. **Texto.** ← *hecho (2026-09-09)*, en tres commits. + + - **5a — recetas (741, 1427 comentarios).** Cero ArtifactHash movidos, y está **medido**: se + hashearon las 741 antes y después y los ficheros de hashes son idénticos byte a byte. + + **El guardián valió la pena.** El primer barrido filtraba por «la línea empieza con `#`» y + movió el hash de `helix`, `lsof` y `steam-runtime-sniper`. La causa: una fase se escribe como + `compile = …` y sus comentarios de **shell** también empiezan con `#`, pero viven + dentro del **valor** — y las fases sí entran en `hash_inputs`. El barrido definitivo calcula + los rangos de las cadenas multilínea de TOML y no entra ahí. Sin la línea base de hashes esto + se descubría meses después, en un rebuild. + + - **5b — 59 docs de diseño, runbooks y ADR.** Los ADR entran porque en **este** repo son + documentos vivos, no registros: el 0013 tiene 5 commits y el 0009 dos. Se comprobó antes de + decidir. **Excluidos** `docs/evidencia/`, el HANDOFF de la noche de KDE y `docs/state/` + (generado). **Y este fichero**, que habla *sobre* el renombre: el barrido lo dejó titulado + «Renombre del sistema: takana → takana». + + - **5c — 250 comentarios en 151 scripts,** con el control de que el diff no toca ni una línea + que no empiece por `#`. El barrido saltea heredocs, y ese guardián **disparó 3 veces**: eran + los `MOTD` que el script escribe **dentro de la imagen construida** — texto del producto, no + comentario. Se cambiaron aparte, como rebranding deliberado. + + **El hallazgo caro de la etapa 5, que en realidad es un bug que introdujo la 4:** + `scripts/atribuir-fallos.py` casaba contra `hammer_build: fetch …`. Ese prefijo es el **target + de `tracing`**, que por defecto es `module_path!()` — o sea **el nombre del crate**. Al renombrar + `hammer-build` → `takana-build`, el target pasó a `takana_build` 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**: los logs viejos que ya están en disco dicen la forma vieja. + + *(El mensaje del commit de 5c perdió cuatro fragmentos por sustitución de comandos del shell con + comillas invertidas. No se enmendó: `main` es compartida y el cron empuja cada 30 min, así que + reescribir historia es peor que un mensaje incompleto. El detalle vive acá.)* + + **Congelados y verificados con controles:** `/opt/hammer`, `/var/lib/hammer`, `/usr/bin/hammer`, + `/mnt/vvv/hammer`, la URL de gitea, `hammer-farm.service`, `hammer-live-install.sh`, + `BRIEFING-hammer.md`, `hammerd`, `hammer-recover`, `HAMMER_LIVE`, `.hammer-zig-cc`, + `.hammer-cargo-vendor` y dos identificadores más que aparecieron al barrer: + - `hammer-build-state/1` — el `schema` del estado generado. Nadie lo valida, pero el valor de un + identificador de esquema **es** ser estable; renombrarlo no gana nada. + - `hammer-edit` — es una **receta con artefacto sellado**: su `name` está en la ruta del store + (`store/cf075804…-hammer-edit`). Renombrarla huerfaniza el artefacto. 6. **Retirar el alias.** Y recién entonces, si se quiere, el directorio `/mnt/vvv/hammer` — parando el cron y reescribiendo el crontab en el mismo movimiento.