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.
This commit is contained in:
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user