E2E manual con un agente real — hito de la Fase 0
Este es el hito de la Fase 0: meltemid pilota un agente de codificación real vía ACP y ejecuta un /propose de extremo a extremo. El e2e automatizado (cargo test) usa el mock-agent; este procedimiento usa un agente real instalado en tu máquina, con su propia autenticación (constitución §2, juego limpio).
Requisitos
Sección titulada «Requisitos»- Toolchain Rust del repo (
rust-toolchain.toml). - Un agente con soporte ACP instalado y autenticado con su propia cuenta. Opciones habituales (jul-2026):
- Gemini CLI:
gemini --acp→agent.command = ["gemini", "--acp"] - OpenCode:
opencode acp→agent.command = ["opencode", "acp"] - Kilo Code:
kilo acp→agent.command = ["kilo", "acp"] - Cursor CLI:
agent acp→agent.command = ["agent", "acp"] - Claude Code / Codex (vía los adaptadores propios que Meltemi empaqueta):
agent.id = "claude-code"oagent.id = "codex-cli"— basta con tener el CLI oficial del proveedor instalado y con sesión iniciada; el adaptador viaja junto al daemon y no se instala aparte. El estatus legal de cada entrada lo declara el registro y lo muestra la flota; verdocs/agentes.mdydocs/research/integracion-agentes.md.
- Gemini CLI:
Detalle de disponibilidad y flags por agente: docs/research/integracion-agentes.md.
-
Compilar el daemon y el cliente de prueba:
cargo build -p meltemidEsto produce
target/debug/meltemidytarget/debug/meltemi-devclient. -
Elegir un repositorio fixture (nunca este repo — los e2e van contra repos temporales):
mkdir /tmp/mi-fixture && cd /tmp/mi-fixture && git init -
Configurar el agente en
.meltemi/config.tomldel fixture:[agent]command = ["gemini", "--acp"] # o el que corresponda -
Lanzar el propose con el cliente de prueba (arranca el daemon bajo demanda):
target/debug/meltemi-devclient propose "add a hello command" /tmp/mi-fixtureEl cliente de prueba auto-aprueba las peticiones de permiso del agente e imprime los
session/eventa medida que llegan. -
Verificar el resultado. La salida incluye
{changeName, proposalPath, status}. El archivoproposalPath(/tmp/mi-fixture/.meltemi/changes/<nombre>/proposal.md) debe contener la propuesta redactada por el agente. -
Apagar el daemon:
target/debug/meltemi-devclient shutdown
Qué demuestra el hito
Sección titulada «Qué demuestra el hito»- El daemon arranca bajo demanda desde el cliente (tarea 3.3).
- Ejecuta el binario oficial del agente con su propia auth (juego limpio).
- Completa el handshake ACP, crea sesión y envía el prompt (4.1–4.3).
- Las peticiones de permiso del agente fluyen al cliente y su decisión vuelve al agente (4.4).
- El agente rellena
proposal.mdy el turno termina sin dejar procesos huérfanos (4.5, 5.1–5.3).
Y después: conformidad por nivel
Sección titulada «Y después: conformidad por nivel»Este procedimiento demuestra que un agente real completa un ciclo. Lo que no
demuestra es que los criterios de su nivel se cumplan uno por uno contra el
binario que tienes instalado; eso es la corrida de conformidad manual, opt-in y
documentada aparte: docs/conformidad-manual.md.
Diagnóstico
Sección titulada «Diagnóstico»agent_not_detected/ el daemon no arranca el agente: revisa que el comando deagent.command(o el binario delagent.idelegido;meltemi fleetmuestra qué se detecta) esté en elPATHy autenticado.- Ver el tráfico ACP: exporta
MELTEMI_LOG=debugantes de lanzar el daemon; el log operacional vive en el directorio de datos del usuario (<data_dir>/logs/meltemid.log). - Sesión inspeccionable: el registro JSONL de la sesión queda en
<data_dir>/projects/<project_key>/sessions/<session_id>.jsonl(cada evento, incluidas las decisiones de permiso).