El diseño completo del hueco: qué declara el PAQUETE (`[[service]]`, hecho) y qué decide el PERFIL (si arranca, pendiente), que es la misma partición que systemd hace entre [Service] e [Install] y que `arje-absorb` respeta al absorber sólo lo habilitado. Deja escritas las dos cosas que cuestan caro si se descubren después: 1. El SDD 06 decía «el init (arje) lee ese árbol» de /etc/hammer/init.d/*.rule. Es FALSO: el único uso de INIT_RULES_DIR en el repo es escribirlo. Había TRES convenciones de dónde vive un servicio y ninguna se tocaba con las otras (más una cuarta en `query service:`). Canónicos son los de arje —genesis de la seed y cards.d/—; la mutación del .swm queda derogada o reapuntada, y la afirmación falsa queda marcada en su propio doc. 2. La trampa para el emisor: el sidecar .hammer/recipe.toml NO entra al ArtifactHash, así que el openssh ya sellado no lleva el bloque y, con el hash sin mover, NUNCA se reconstruye solo. Derivar la seed del sidecar hoy daría un producto SIN sshd, en silencio. Por eso product_seed_card() sigue usando la constante a propósito, y re-sellar es una unidad aparte CON control de reproducibilidad — openssh no está certificado como reproducible.
3.7 KiB
3.7 KiB
Documentación de diseño de takana
Estos documentos son la fuente de verdad del diseño. El código los implementa; cuando haya discrepancia, o se corrige el código o se actualiza el SDD con un commit que explique por qué.
Software Design Documents (SDD)
| # | Documento | Qué cubre |
|---|---|---|
| 00 | Visión y filosofía | Por qué existe, qué problema resuelve, la actitud de ingeniería |
| 01 | Arquitectura general | El modelo de dos mundos, componentes, flujo de datos |
| 02 | El laboratorio de build | Sandbox, zig cc, recetas, CAS, grafo de dependencias |
| 03 | Hidratación y store | Store content-addressed, hardlinks a FHS, patchelf, rollback |
| 04 | Overlay de experimentación | overlayfs en caliente, try/commit/discard |
| 05 | Diario de mutaciones | fanotify, log append-only, config-sin-ser-declarativa |
| 06 | Formato .swm |
Manifiesto de mutación compartible, esquema, firma |
| 07 | Bus de init y de agente | /run/init.control, /run/agent.sock, protocolo |
| 08 | Integración de la IA | El bucle agéntico, seguridad, intención → .swm |
| 09 | Modelo de confianza | Reproducibilidad, verificar-no-confiar, log de transparencia |
| 10 | Roadmap | Fases, MVP, primer entregable |
| 11 | Bootstrap from-scratch | Track posterior: Stage 0/1/2, auto-alojamiento, semilla pinned |
| 12 | arje como init real del Stage 1 |
Contrato de runtime: seed card, hammerd supervisado, CRASHED real |
| 16 | harkaq: la jaula de takana | Landlock+seccomp sobre el bwrap actual; política = clausura; evidencia negativa de hermeticidad |
| 26 | atuq: el envoltorio Gecko |
Navegador propio como artefacto DERIVADO de firefox (no fork de fuente); la toolchain clang como puerta de PGO/LTO; qué se promete y qué no |
| 30 | Los servicios que trae un paquete | [[service]] en la receta → Card de arje; por qué arje-absorb no cubre una distro construida desde fuente; los tres árboles de servicios y cuál es el canónico |
Runbooks (operativos)
| Runbook | Para qué |
|---|---|
| Validar Stage 1 booteando en QEMU | stage0→stage1→initramfs→QEMU; criterios de éxito y troubleshooting |
Architecture Decision Records (ADR)
Decisiones tomadas, con su contexto y consecuencias. Ver adr/.