SergioandClaude Opus 5 ca9bde0251 kernel: la clausura contrastada contra un olddefconfig de verdad — 65/68 con 0 falsos positivos
Hasta acá el armador era análisis puro: la clausura decía qué debía morir y nadie lo había
contrastado con el resolvedor real. NO hace falta construir un kernel para hacerlo: lo caro
es la fase compile (35-60 min); toda la cadena del armador vive en configure y corre en
segundos.

Método: árbol 6.16.12 entero, `make defconfig` de base (el config de linux.toml NO sirve de
base: ya apaga wifi/audio/fs a mano, así que el lado disable no apagaría nada y la
predicción no se pondría a prueba — fue mi primer error), el fragmento del plan, y
olddefconfig. Verdad de campo = los símbolos que pasaron de encendidos a apagados.

  sólo depends on ....... clausura 1775  aciertos 64/68  SOBRA 0  falta 4
  + huérfanos select .... clausura 1794  aciertos 65/68  SOBRA 0  falta 3
  + comparaciones ....... clausura 1795  aciertos 65/68  SOBRA 0  falta 3

SOBRA 0 en las tres: el predictor nunca dice que muere algo que sobrevive, que es la única
dirección en la que puede equivocarse sin fabricar un ladrillo.

Dos refinamientos que salieron de la medición, cada uno con su test:
  · HUÉRFANOS DE SELECT. Un símbolo sin prompt no se marca a mano: sólo entra por select.
    Si caen todos sus selectores, cae él, aunque nadie dependa de él (caso ACPI_NHLT). Se
    exige >=1 selector: sin ninguno entra por un default, y darlo por muerto mataría media
    tabla.
  · `X = y` SÍ ES DEPENDENCIA DURA. Medio drivers/video/fbdev declara su dependencia de FB
    como `depends on (FB = y) && ARM`. Tratar toda comparación como opaca dejaba esos
    drivers fuera. `X = n` sigue fuera a propósito: con X en n es VERDADERA. De regalo, las
    fugas select sin declarar de sin-graficos cayeron de 8+ a 1.

Los 3 que faltan NO son un fallo, son otra pregunta: CRYPTO_LIB_ARC4, REGMAP y
SYSTEM_DATA_VERIFICATION tienen selectores FUERA de la clausura (PPP_MPPE, 111 usuarios más
de REGMAP…). Se quedaron sin usuarios en ESE config; encendés PPP y ARC4 vuelve.
«Inalcanzable» y «apagado ahora» no son lo mismo, y la clausura contesta la primera.

Y un bug que sólo aparece corriendo el resolvedor: el diff-back contaba como promesa
incumplida todo símbolo pedido ausente del .config. Pero Kconfig NO EMITE un símbolo cuyas
dependencias no se cumplen ⇒ un `-d WLAN` cuya raíz ya cayó simplemente no sale. Con esa
cuenta un plan perfecto se reportaba roto (2 falsos incumplidos de 16). Ahora: ausente +
se pedía apagar = éxito; ausente + se pedía encender = fallo. La corrida real sale 14
cumplidos, 0 incumplidos.

GUARDIÁN NUEVO, y hacía falta: las cuatro recetas de kernel NO son el mismo kernel — linux
y linux-metal van por 6.16.12, linux-metal-dual y linux-generic por 7.1.2. Planear una
contra el árbol de la otra calcularía clausuras sobre símbolos que ahí no existen, y
saldría SIN RUIDO. KconfigTree lee ahora su versión del Makefile de arriba y `plan` FALLA
si no coincide con la de la receta (los diagnósticos sólo avisan). Aviso de la sesión de
granja/store, verificado antes de implementarlo.

Catálogo: las dos fugas que destapó la clausura más grande quedan declaradas con motivo
(FB_SYSMEM_HELPERS_DEFERRED por HID_PICOLCD_FB; DRM_DISPLAY_DP_TUNNEL_STATE_DEBUG por
DRM_I915_DEBUG), y las notas sobre THUNDERBOLT/REISERFS_FS pasan a pasado: ya se
corrigieron en 2602218.

Runbook §4.bis: cómo probar un plan entero en 30 s en vez de 40 min.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 14:20:52 +00:00

hammer

Una distribución Linux construida con un laboratorio funcional y hermético en el sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada desde el suelo para que una IA programadora entienda, modifique y comparta el sistema.

hammer no es otro gestor de paquetes inmutable. Es una arquitectura de dos mundos:

  • El laboratorio compila desde fuentes upstream (commits fijados), de forma determinista y aislada (bubblewrap + zig cc + musl estático), y direcciona cada artefacto por su hash (BLAKE3) en un content-addressed store.
  • El userland es un Linux clásico, mutable, con FHS de verdad (/bin, /lib, /etc). Los binarios se hidratan desde el store por hardlinks. Puedes pisar archivos en caliente, romper cosas con un rm -rf, y revertir cuando quieras.

Entre ambos mundos viven las tres piezas que hacen a hammer distinto:

  1. Overlay de experimentación — prueba cambios sobre el sistema real con red de seguridad; hammer try / commit / discard.
  2. Diario de mutaciones — un daemon fanotify registra todo lo que tú (o la IA) cambiáis a mano. Vives imperativamente; el sistema genera el delta contra la base limpia. El diario es tu configuración — sin ser declarativa.
  3. Manifiesto .swm — compartes la receta de la mutación (parche de fuente + flags + ediciones de config), no el binario cocinado. El receptor reproduce y verifica; no confía en tu binario.

Encima de todo corre el bus de agente (/run/agent.sock): la IA habla un protocolo pequeño y legible, dispara compilaciones, inyecta en el overlay, escucha fallos y reacciona. Tú tienes la última palabra.

Estado

Fase de arranque. Validamos la capa AI-nativa sobre Alpine (musl + FHS ya cocidos) antes de bajar a distro propia. Ver docs/10-roadmap.md.

Documentación de diseño (SDD)

Toda la arquitectura está en docs/. Empieza por docs/00-vision.md y docs/01-architecture.md.

Estructura

crates/
  hammer-core   tipos compartidos: Recipe, Swm, hashing CAS, store
  hammer-build  el laboratorio: sandbox + compilación + hidratación
  hammer-cli    el binario `hammer` (build, hydrate, try, commit, apply, export…)
  hammerd       daemon: bus de agente + diario de mutaciones
docs/           SDDs y ADRs

Stack

Capa Decisión
Base de validación Alpine (musl + FHS mutable)
Tooling / daemons Rust (estático-musl)
Compilador del lab zig cc por defecto, pluggable por receta
Sandbox de build bubblewrap (namespaces)
Direccionamiento BLAKE3 content-addressed store
Despliegue Hidratación por hardlinks + patchelf

Filosofía

La automatización es mi empleada en el sótano, pero en el piso de arriba mando yo.

Eficiencia matemática en la manufactura, libertad biológica en la ejecución.

S
Description
No description provided
Readme MIT
128 MiB
Languages
Rust 39.4%
Shell 25.8%
Python 20.6%
HTML 10.4%
C 2.1%
Other 1.6%