docs(roadmap): Fases 3/4/6 → , Fase 5 con CRASHED diferido, estado actual al día

Sincroniza las cabeceras con la realidad: tras cerrar la op del watcher (Fase 3)
y la anidación LIFO (Fase 2), ningún ítem de las fases 0–6 queda abierto salvo
CRASHED real, explícitamente diferido al track posterior. Reescribe "Estado
actual" (seguía describiendo el día 1) con el bucle agéntico validado, 214 tests
verdes y el siguiente paso: bootstrap from-scratch del track posterior.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-06-10 20:41:56 +00:00
co-authored by Claude Opus 4.8
parent fe9a2d50cf
commit 9f7c1aa040
+15 -8
View File
@@ -54,7 +54,7 @@ pre-requisito de validación.
`overlay_nested_stack_inside_userns`, gated en `HAMMER_OVERLAY_TESTS`. Pendiente menor:
unicidad de orden entre procesos concurrentes (track posterior).
### Fase 3 — Diario de mutaciones ▶ *en progreso*
### Fase 3 — Diario de mutaciones
- [x] Crate `hammer-journal`: `MutationEvent`, `Source` (HammerHydrate/HammerCommit/External),
append/read/tail/follow JSON-líneas. RFC 3339 sin chrono.
- [x] `hammerd` con `fanotify` (FAN_CLOSE_WRITE) sobre `/bin`,`/sbin`,`/usr/bin`,`/usr/sbin`,
@@ -77,7 +77,7 @@ pre-requisito de validación.
resuelve. El watcher hashea cada `CLOSE_WRITE` y usa `record_dedup`: una reescritura sin
cambios ni ensucia el diario ni despierta el bus.
### Fase 4 — Formato y flujo `.swm` ▶ *en progreso*
### Fase 4 — Formato y flujo `.swm`
- [x] `Swm` de/serialización YAML estable (roundtrip).
- [x] `verify_schema` (estructura + invariantes por mutación) y `verify_base` (distro_version
+ pins) con `BaseRef` / `BaseCompat`.
@@ -107,7 +107,7 @@ pre-requisito de validación.
`config_edit` + `file_drop`. `source_patch` reusa el camino de Fase 0/1 (gated en
`HAMMER_NETWORK_TESTS`).
### Fase 5 — Bus de agente *en progreso*
### Fase 5 — Bus de agente *(queda `CRASHED` real, diferido al track posterior)*
- [x] `/run/init.control` (FIFO humano): `mkfifo`, reader que loguea cada línea, y
`hammer ctl <line>` que escribe al FIFO con error claro si no existe.
- [x] `/run/agent.sock` (JSON-líneas) con handshake `Hello/Welcome`, auth via
@@ -136,7 +136,7 @@ pre-requisito de validación.
gating `no_cap`, `Query`, `Modified` fan-out, `Init`→FIFO. Un `Compile` real reusa el
camino de Fase 0/1 (gated en `HAMMER_NETWORK_TESTS`).
### Fase 6 — Integración de la IA ▶ *en progreso*
### Fase 6 — Integración de la IA
- [x] Crate `hammer-agent` con tres piezas:
- `AgentClient`: cliente síncrono del bus (handshake, `compile`/`inject`/`query`/`init`
bloqueantes, drenado de eventos asíncronos).
@@ -186,10 +186,17 @@ pre-requisito de validación.
---
## Estado actual
-Repo y workspace Rust inicializados.
- ✅ SDDs y ADRs redactados.
- ✅ Esqueletos de crates que compilan (`hammer build` stub).
- ⏭️ Siguiente: implementar el sandbox de build real (Fase 0) y montar la VM/LXC Alpine.
-**Fases 06 cerradas** sobre Alpine: build determinista → hidratación → overlay
(con anidación LIFO) → diario (con `op` Create/Edit/Delete) → `.swm` firmado → bus de
agente → bucle agéntico con IA (mock + Claude real tras `llm-claude`).
- ✅ El bucle completo está validado: una intención en lenguaje natural produce un cambio
probado en overlay, presentado para `commit` humano.
- ✅ 214 tests verdes en el workspace (1 e2e de overlayfs gated en `HAMMER_OVERLAY_TESTS`;
los de red en `HAMMER_NETWORK_TESTS`).
- ⏳ Único ítem de las fases diferido: `CRASHED` real (necesita supervisión de servicios →
init propio del track posterior).
- ⏭️ **Siguiente: arrancar el track posterior** (distro propia). Primer paso natural sin
bloquear nada: el bootstrap from-scratch Stage 0/1 con `zig`/`musl-cross-make`.
## Notas de entorno
- Desarrollo principal: laptop del autor.