gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1378Shell 129Rust 79Markdown 732463 Definiciones

ADR 0016: estado de la etapa 6 y las 7 etiquetas que casi se rompen

La etapa 6 no es un barrido: son seis despliegues coordinados. Dos hechos
(--takana-bin, y la unit del worker fijando las dos variables, que era lo que
bloqueaba retirar las caidas), dos que conviene esperar, uno atado al baseline
del selfhost, y el directorio del repo que necesita decision porque hay otro
agente trabajando adentro ahora mismo.

Y queda anotada la tabla de las 7 etiquetas de separacion de dominio que el
barrido ancho habria reescrito, con hammer-tree-v1 a la cabeza: es el prefijo
de ArtifactHash::of_tree, o sea los 4750 hashes del store.

9bd95cd30796ad6c68c0b226e6d75047736cfd53 · por Sergio · (hace 1 mes) · padre e20a5f44d · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

1 archivos · +41 −2

diff --git a/docs/adr/0016-renombre-takana.md b/docs/adr/0016-renombre-takana.md
index 657cd787..355cce33 100644
--- a/docs/adr/0016-renombre-takana.md
+++ b/docs/adr/0016-renombre-takana.md
@@ -204,8 +204,47 @@ simplemente deja de cosechar. El directorio es lo **último** que se toca, y con
      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.
+5 bis. **El texto que faltaba** (comentarios de `crates/`, `CLAUDE.md`, el skill de granja).
+   ← *hecho*. 205 líneas. **Y el barrido ancho estuvo a un commit de romper el corpus entero**: el
+   primer intento reescribía los `.rs` completos y entre las líneas de código que tocaba había
+   **siete etiquetas de separación de dominio, que son entrada de hash**:
+
+   | literal | qué es |
+   |---|---|
+   | `b"hammer-tree-v1"` | **el prefijo de `ArtifactHash::of_tree`** (`takana-core/src/hash.rs:60`) — la función que hashea TODOS los artefactos. Cambiarlo mueve los 4750 hashes del store |
+   | `b"hammer-seed-v1"`, `b"hammer-stage1-rootfs-v2"`, `b"hammer-product-rootfs-v3"`, `b"hammer-product-attested-v2"`, `b"hammer-builder-rootfs-v1"` | entradas de hash de la cadena de bootstrap |
+   | `b"hammer-attest-dev-rootkey-0001!!"` | clave raíz de atestación, `[u8; 32]` |
+
+   Se revirtió y se rehízo sólo sobre comentarios, esquivando además las cadenas crudas de Rust
+   (`r#"…"#`), porque el `SYSTEM_PROMPT` del traductor tiene líneas que empiezan como comentario.
+   **La lección de toda la etapa 5: un literal que parece prosa puede ser entrada de hash, y la
+   única forma de saberlo es mirar dónde se usa.**
+
+6. **Retirar las compatibilidades.** ← *no es un barrido: son seis despliegues coordinados, y tres
+   no se hacen sin decidirlo.* Estado al 2026-09-09:
+
+   - ✅ **`--takana-bin`** con `--hammer-bin` de alias. Era la última superficie de CLI con el
+     nombre viejo.
+   - ✅ **Destrabado el retiro de las caídas de entorno.** Se midió que la unit del worker era el
+     **único** sitio fuera del repo que traía una variable vieja puesta
+     (`Environment=HAMMER_DIR=/opt/hammer`); ahora fija las dos, desplegada y verificada.
+   - ⏳ **Retirar el binario `hammer`** — quedan 0 llamadores en el repo y el worker usa `takana`.
+     Es la red de seguridad de lo que no se encontró: conviene esperar un ciclo completo de granja
+     y una corrida de selfhost antes de sacarla.
+   - ⏳ **Retirar las caídas `HAMMER_X`** — posible ya para `HAMMER_DIR`; el resto espera a
+     confirmar que ningún entorno las trae puestas.
+   - 🔒 **`/usr/bin/hammer` dentro del rootfs del producto** — está **dentro de un árbol que se
+     hashea**. Moverlo cambia el hash del producto y obliga a rehacer el baseline del selfhost.
+     Va junto con esa deuda, no antes.
+   - ⚠ **`hammer-farm.service` y `/opt/hammer`** — despliegue coordinado en el worker: parar,
+     renombrar, `daemon-reload`, arrancar. Reversible, pero es hacia afuera.
+   - ⛔ **`/mnt/vvv/hammer`, el directorio del repo** — **necesita decisión y coordinación.** El
+     cron lo referencia por ruta absoluta, y sobre todo: **hay otro agente trabajando en este
+     directorio ahora mismo** (se le vieron ficheros sin commitear y commits entrando durante esta
+     sesión). Moverlo le rompe la sesión en el medio, que es exactamente lo que el preámbulo de
+     `CLAUDE.md` existe para evitar.
+
+   **Deuda que sigue abierta desde la etapa 4:** rehacer el baseline `of_tree` del selfhost.
 
 Etapas 2–6 no arrancan hasta que la 1 esté pusheada, y ninguna se mezcla con otra en un commit.