# SDD 00 — Visión y filosofía

## 1. El problema

El panorama de distribuciones Linux te obliga a elegir entre dos extremos malos:

- **Inmutables / declarativas** (NixOS, Guix, Fedora Silverblue): determinismo y
  reproducibilidad reales, pero a costa de tu agencia. El sistema operativo *es* el grafo.
  Pierdes la estructura familiar de directorios, pierdes el control directo en la terminal,
  y vives editando un archivo de configuración abstracto en lugar de habitar el sistema.
  Para una herramienta de automatización (una IA), además, la complejidad está *oculta tras
  capas de abstracción* que la obligan a simular a un humano.

- **Tradicionales / imperativas** (Arch, Gentoo, Slackware): control y mutabilidad totales,
  pero con el tiempo se pudren — el gestor de paquetes pierde el rastro de lo que el usuario
  hizo a mano, se acumulan archivos huérfanos, y reproducir tu sistema en otra máquina es
  imposible sin documentar cada acción manualmente.

Ninguno de los dos sirve bien para el escenario que viene: **un usuario con una IA
programadora que entiende, modifica y comparte su sistema en cualquier contexto.**

## 2. La tesis

Se puede tener lo mejor de ambos separando dos mundos que hoy están fusionados:

> **La automatización funcional es mi empleada en el sótano. En el piso de arriba mando yo.**

- **El sótano (el laboratorio):** compilación determinista, hermética, direccionada por
  contenido. Aquí reina la teoría de grafos y el hashing. Cero efectos secundarios.
- **El piso de arriba (el userland):** un Linux clásico, mutable, con `/bin`, `/lib`, `/etc`
  reales. Aquí reina el usuario. Un `rm -rf` rompe cosas de verdad. La terminal es un espacio
  vivo de interacción directa, no la interfaz de lectura de un archivo de config.

El puente entre ambos es la **hidratación**: los artefactos del store se proyectan al FHS
real por hardlinks, normalizados para no arrastrar rutas del store.

## 3. Por qué esto es AI-nativo (el verdadero diferenciador)

La distro en sí no es la innovación — ensamblar componentes conocidos (musl, busybox, un
kernel) es trabajo conocido. **La innovación es el substrato de baja entropía** que resulta:

1. **Compilación determinista** → la IA pide cambios de fuente, recompila en el lab aislado,
   y el binario es predecible. Vuelve atrás sin dramas.
2. **El sistema ejecutable es texto plano + binarios atómicos** → la IA no parsea bases de
   datos binarias de configuración (registro de Windows, journal de systemd). Lee/escribe
   archivos e inspecciona binarios con `readelf`/`objdump`.
3. **Mutabilidad = agencia real** → la IA experimenta en un overlay y promueve cambios. Si se
   equivoca, desmontas la capa. Sin rollbacks complejos ni snapshots pesados.
4. **musl mantiene el código C legible** para el contexto de un LLM (glibc es un laberinto de
   macros prehistóricas).
5. **El enlazado estático** garantiza que una herramienta mutada por la IA corre sin romper
   enlaces de librerías en otros programas.

Mientras la industria diseña sistemas para *proteger al sistema del administrador*
(restringiendo, aislando, inmutabilizando) — y al hacerlo también ciega a las herramientas de
IA — `hammer` hace lo contrario: **mantiene las tuberías expuestas y de baja entropía**, y
trata al usuario (y a su IA) como un operador consciente, no como un peligro.

## 4. Principios de diseño

- **Determinismo en la fábrica, libertad en la ejecución.** No negociar ninguno de los dos.
- **Texto plano y binarios atómicos por encima de bases de datos opacas.** Si algo del sistema
  no se puede `cat`, `grep` o `readelf`, es una bandera roja.
- **Verificar, no confiar.** Se comparten recetas reproducibles, nunca binarios cocidos.
- **La IA propone; el humano dispone.** Toda acción de la IA es reversible y queda registrada.
- **No reinventar lo resuelto.** Usamos motores y compiladores existentes como herramientas;
  el valor está en el pegamento AI-nativo, no en reescribir Nix o un toolchain.
- **El diario es la verdad.** Vives imperativamente; el sistema deriva el estado declarativo
  *a posteriori*. Nunca al revés.

## 5. Anti-objetivos (lo que `hammer` NO es)

- No es un gestor de paquetes inmutable ni un daemon que restaura estado.
- No reescribe un motor de build desde cero (ver [ADR 0004](adr/0004-no-custom-nix.md)).
- No compila contra `HEAD` vivo a ciegas (ver [ADR 0006](adr/0006-pinned-commits.md)).
- No oculta complejidad tras abstracciones que cieguen al usuario o a la IA.
- No promete estabilidad de ABL de musl como magia (ver [SDD 03](03-hydration.md)).
