Files
takana/docs/adr/0004-no-custom-nix.md
Sergio 97ceb72411 takana etapa 5b: los 59 docs de diseño, runbooks y ADR
645 líneas. Los ADR entran porque en este repo SON documentos vivos, no
registros inmutables: el 0013 tiene 5 commits, el 0009 dos. Eso se comprobó
antes de decidir, no se asumió por convención general.

EXCLUIDOS por ser REGISTRO o generado: docs/evidencia/ (6), el HANDOFF de la
noche de KDE (1) y docs/state/ (24, se regenera solo). Reescribir un comando
dentro de una evidencia la falsifica.

Y el ADR 0016 se excluye de todo barrido, con un aviso adentro para el próximo
que barra: habla SOBRE el renombre, así que necesita seguir diciendo 'hammer'.
El barrido se lo llevó puesto y lo dejó titulado 'Renombre del sistema: takana
→ takana'; revertido.

Congelados, verificados uno por uno 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 y
HAMMER_LIVE.
2026-09-09 19:25:51 +00:00

35 lines
1.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ADR 0004 — No escribir nuestro propio Nix
- **Estado:** aceptada
- **Fecha:** 2026-06-06
## Contexto
Es tentador escribir desde cero un motor completo de grafo de dependencias con caché
content-addressed, resolución, y aislamiento — "nuestro propio Nix". El concepto de hashing de
derivaciones es el núcleo de nuestra fábrica.
## Decisión
**No** construir un motor de build genérico tipo Nix desde cero. Implementamos lo **mínimo**
que necesita `takana`: un builder con recetas explícitas, sandbox `bubblewrap`, hashing CAS
BLAKE3 de entradas conocidas, y un DAG simple de dependencias declaradas. Nada de un lenguaje
funcional, evaluación perezosa, ni resolución general de paquetes.
## Razones
- Un motor de grafo hermético con caché correcta es, por sí solo, un proyecto de **años**.
No es donde está el valor de `takana`.
- Nuestro valor es el **pegamento AI-nativo** (overlay + diario + `.swm` + bus), no reescribir
teoría de build ya resuelta.
- El alcance mínimo (recetas explícitas + CAS + DAG) cubre las Fases 06 sin esa complejidad.
## Consecuencias
- No tendremos resolución automática de dependencias estilo distro completa al principio; las
recetas declaran sus `deps` explícitamente. Suficiente para el MVP.
- Si en el futuro hiciera falta más potencia de grafo, se evaluará **usar Nix como backend de
build** (no reescribirlo) y sólo hidratar su salida a FHS. Decisión diferida.
- Mantiene el código del lab pequeño, auditable y comprensible — coherente con la filosofía de
baja entropía.