# 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 `hammer`: 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 `hammer`.
- 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 0–6 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.
