diff --git a/docs/10-roadmap.md b/docs/10-roadmap.md index e12be9a2..58cee248 100644 --- a/docs/10-roadmap.md +++ b/docs/10-roadmap.md @@ -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 ` 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 0–6 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.