marca: takana — branding + ADR 0016 del renombre
El sistema pasa de hammer a takana (martillo en quechua/aimara): traducción literal, conserva la metáfora de forja y mantiene el registro agentivo del resto de la familia (khipu/yupana/harkaq/qorpa/churay). Medido antes de tocar nada: hash_inputs es una LISTA DE CAMPOS, no el fichero crudo (recipe.rs:535) ⇒ los comentarios de las 692 recetas importadas se pueden renombrar GRATIS, sin mover un solo ArtifactHash. Pero las fases SÍ entran al hash: las 10 recetas con .hammer-zig-cc dentro de una fase se congelan, igual que los 5 cargo_vendor_dir (que ni siquiera están en hash_inputs y aun así pueden cambiar bytes). El renombre va por etapas con alias; el directorio /mnt/vvv/hammer es lo último porque el cron de la cosecha lo referencia por ruta absoluta y moverlo mata el latido en silencio. No se adoptan dos ejemplos de la hoja de marca: 'takana forja' (viola la regla 4, los verbos van en inglés) y .tkn (el formato es .swm, 266 menciones).
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
# ADR 0016 — Renombre del sistema: `hammer` → `takana`
|
||||
|
||||
- **Estado:** ACEPTADO (decisión del usuario, 2026-09-09)
|
||||
- **Reemplaza:** nada. **Afecta:** toda la superficie de CLI (regla 4 de `CLAUDE.md`).
|
||||
|
||||
## Contexto
|
||||
|
||||
Los nombres propios del proyecto se reparten por **rol**, no por estética: `khipu` registra
|
||||
(`docs/state/build-state*.json`), `yupana` reckona sobre el khipu (`scripts/yupana.py`), `harkaq`
|
||||
guarda (la jaula), `qorpa` hospeda (imágenes ajenas), `churay` pone (distribución multi-origen).
|
||||
Cada uno dice qué hace su pieza. El único nombre que designa **el todo** es el del constructor.
|
||||
|
||||
`takana` (quechua y aimara: *martillo, mazo*) es la traducción literal de `hammer`. Conserva la
|
||||
metáfora que el proyecto ya usa —forja, yunque, sellar— y mantiene el registro agentivo del resto de
|
||||
la familia. Es hermana de `tawasuyu`: el territorio (apps, compositor) × la herramienta (la forja).
|
||||
|
||||
Se descartaron: `chani` (valor/precio — nombra el *hash*, no el motor; y "valor" es cosa, no rol),
|
||||
`tocapu` (la marca inscripta — mismo hueco que `chani`), `anta` (cobre — es materia, no rol; y no
|
||||
suena quechua: sin q, k, h, ll ni ñ).
|
||||
|
||||
## Decisión
|
||||
|
||||
1. El sistema se llama **takana**. La marca vive en `docs/marca/`.
|
||||
2. El renombre va **por etapas con alias**, nunca de un saque. `hammer` sigue funcionando hasta que
|
||||
el último llamador migre.
|
||||
3. Dos cosas de la hoja de marca **no** se adoptan (ver §Choques).
|
||||
|
||||
## Lo medido (2026-09-09)
|
||||
|
||||
Nada de esto es estimación; sale de `git grep` y de leer `recipe.rs`.
|
||||
|
||||
| qué | cuánto | consecuencia |
|
||||
|---|---|---|
|
||||
| ficheros que nombran `hammer` | 1242 (5779 ocurrencias) | radio total |
|
||||
| en `recipes/`, y son **comentarios** de importación | 692 | **gratis**: ver abajo |
|
||||
| recetas con `.hammer-zig-cc` **dentro de una fase** | 10 | **caro**: re-hashea |
|
||||
| recetas con `cargo_vendor_dir = ".hammer-cargo-vendor"` | 5 | **congelar**: ver abajo |
|
||||
| ficheros que **invocan** la CLI | 124 | migración real |
|
||||
| crates `hammer-*` (+ `hammerd`) | 12 | renombre de paquetes |
|
||||
|
||||
**El hallazgo que decide todo:** `Recipe::hash_inputs` (`crates/hammer-core/src/recipe.rs:535`) no
|
||||
hashea el fichero crudo — construye una **lista de campos**: `source_id`, `compiler`, `target`,
|
||||
`link`, huella del lab, `zig_version`/`strip_debug` si están fijados, los patches, los `flags`, las
|
||||
**fases** (`configure`/`compile`/`install`) y los hashes de las deps.
|
||||
|
||||
- ⇒ **Los comentarios no entran.** Renombrar «hammer» en los 692 comentarios de recetas importadas
|
||||
**no mueve ni un ArtifactHash**. Es churn de diff, no de build.
|
||||
- ⇒ **Las fases sí entran**, con etiqueta (`phase:compile=…`). Las 10 recetas que escriben
|
||||
`.hammer-zig-cc` lo hacen *dentro* de la fase: renombrar ese literal las re-hashea y obliga a
|
||||
reconstruirlas **y a todo su cono descendente**. El literal es un temporal interno del árbol de
|
||||
build, invisible al usuario. **Se congela como está.**
|
||||
- ⇒ `cargo_vendor_dir` **no** está en `hash_inputs`. Renombrar `.hammer-cargo-vendor` sería
|
||||
invisible al hash **pero puede cambiar los bytes del artefacto** — la misma familia de problema
|
||||
que «el lab está fuera de `hash_inputs`». **Se congela como está.**
|
||||
|
||||
**Y el cron apunta a una ruta absoluta:** `*/30 * * * * /mnt/vvv/hammer/scripts/farm/cosecha-cron.sh`.
|
||||
Renombrar el **directorio** del repo mata el latido de la granja **en silencio** — no falla nada,
|
||||
simplemente deja de cosechar. El directorio es lo **último** que se toca, y con el cron parado.
|
||||
|
||||
## Plan por etapas
|
||||
|
||||
1. **Marca + este ADR.** Aditivo, no rompe nada. ← *hecho*
|
||||
2. **Alias.** El binario pasa a llamarse `takana`; `hammer` queda como symlink en `target/release/`.
|
||||
A partir de acá los dos nombres funcionan y nada se rompe, ni acá ni en el worker (que arrastra
|
||||
binario viejo: la siembra excluye `/target`).
|
||||
3. **Llamadores** (124 ficheros): `scripts/`, `scripts/farm/`, runbooks, `CLAUDE.md`. En tandas
|
||||
chicas, con `flock -o` cuando toque algo que construya.
|
||||
4. **Crates** `hammer-*` → `takana-*` y `hammerd` → `takanad`.
|
||||
5. **Comentarios de recetas** (692). Gratis en hash, ruidoso en diff: va en un commit propio y solo.
|
||||
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.
|
||||
|
||||
Etapas 2–6 no arrancan hasta que la 1 esté pusheada, y ninguna se mezcla con otra en un commit.
|
||||
|
||||
## Choques con la hoja de marca
|
||||
|
||||
La hoja (`docs/marca/README.md`) es la referencia de identidad visual y de voz. Dos ejemplos suyos
|
||||
contradicen contratos ya vigentes y **no se adoptan**:
|
||||
|
||||
1. **`takana forja sistema.tkn`** — `forja` es un verbo en castellano y la **regla 4** manda la
|
||||
superficie de CLI en inglés, sin excepción: el verbo es `build`. La voz de marca en castellano
|
||||
rige lo que el usuario **lee** (ayuda, errores, logs), no lo que **teclea**. «Forjado en 41 s.»
|
||||
es correcto; `takana forja` no.
|
||||
2. **`.tkn`** — el formato de paquete es **`.swm`** (266 menciones; Etapa F completa: pack, repo,
|
||||
install, deps, firma, DB, HTTP). Cambiar la extensión rompe repos e instalaciones existentes por
|
||||
una razón puramente cosmética. Queda `.swm`.
|
||||
|
||||
## Nota sobre los ficheros de marca
|
||||
|
||||
Los dos SVG difieren correctamente (chispa `#FFF6DE` sobre oscuro, `#17130E` sobre claro) —
|
||||
verificado por sha256 y por los colores presentes, no por el nombre del fichero. Ambos traen un
|
||||
manifiesto **C2PA** de procedencia embebido; se conserva tal cual vino, sin limpiar.
|
||||
@@ -0,0 +1,36 @@
|
||||
# Takana — marca
|
||||
|
||||
**La forja determinista de Tawasuyu.** /takana/ — martillo, en quechua y aimara.
|
||||
Hermana de Tawasuyu: comparte la retícula andina y el núcleo de luz; hereda solo la porción de fuego del espectro.
|
||||
|
||||
## Símbolo
|
||||
Martillo en retícula tocapu 7×7. Cabeza 7×3 con bordes medios vacíos (guiño al «#» del hash).
|
||||
Gradiente de fragua irradiando desde la chispa del golpe.
|
||||
- Fondo oscuro: chispa blanca (`simbolo-fondo-oscuro.svg`)
|
||||
- Fondo claro: chispa negra (`simbolo-fondo-claro.svg`)
|
||||
- No rotar, no recolorear, no deformar. Espacio libre mínimo: 1 celda alrededor.
|
||||
|
||||
## Paleta
|
||||
- Obsidiana `#17130E` — fondo
|
||||
- Piedra `#2A241B` — superficie
|
||||
- Alpaca `#F2EBDD` — tinta
|
||||
- Brasa `oklch(68% 0.19 45)` ≈ `#DF6B2A` — acento
|
||||
- Inti `oklch(80% 0.16 85)` ≈ `#E3A63D` — acento cálido
|
||||
- Rojo fragua `oklch(52% 0.21 30)` ≈ `#A63A25` — extremo del gradiente
|
||||
- Chispa `#FFF6DE` (oscuro) / `#17130E` (claro)
|
||||
|
||||
## Tipografía
|
||||
- Display / wordmark: **Chivo Black (900)**, mayúsculas, tracking 2–6%
|
||||
- Texto: **IBM Plex Sans**
|
||||
- Código y datos: **IBM Plex Mono**
|
||||
(Google Fonts, licencia libre)
|
||||
|
||||
## Voz
|
||||
1. **Habla en piedra** — frases cortas, verbos de oficio: forjar, labrar, templar.
|
||||
2. **Determinista** — nunca promete: verifica. Cada afirmación con su hash.
|
||||
3. **Andina, no folclórica** — quechua/aimara nombran con precisión, no adornan.
|
||||
|
||||
Ejemplos: «Forjado en 41 s.» · «Idéntico al build 7f3a…» · `takana forja sistema.tkn`
|
||||
|
||||
## Ecosistema
|
||||
TAWASUYU (el territorio: apps, compositor, filosofía) × TAKANA (la herramienta: distro, forja determinista).
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 9.2 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 9.2 KiB |
Reference in New Issue
Block a user