Scaffold inicial: workspace Rust + SDDs completos
Arranque del proyecto hammer (distro AI-nativa: laboratorio funcional en el sótano, terminal mutable clásica arriba, integración de IA programadora). - Workspace Rust (compila, tests verdes): hammer-core, hammer-build, hammer-cli (bin `hammer`), hammerd. - SDDs 00-10 + 6 ADRs en docs/ con toda la arquitectura. - Esqueletos navegables mapeados a las fases del roadmap; Fase 0/1 listas para implementar el sandbox real. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# 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)).
|
||||
Reference in New Issue
Block a user