Adopción
Se usan cuatro nombres para referirse a cómo empiezas — init, seed, descubrimiento, entrevista —
y dos de ellos son comandos mientras que los otros dos son conversaciones. Esa asimetría es
la razón por la que el orden suele adivinarse mal, así que parte por ahí:
| qué es | quién lo ejecuta | |
|---|---|---|
mvac init | un comando | tú, una vez |
| descubrimiento | un protocolo | el agente, siguiendo la skill |
mvac seed | un comando, dentro del descubrimiento | el agente |
| entrevista | un protocolo, después de seed | el agente pregunta, un humano responde |
mvac doors | un comando | el agente, al final |
No existe mvac interview. Seed nombra archivos; no puede decir qué significan.
La entrevista es donde un humano dice cuáles de esos archivos llevan reglas y por qué,
y ocurre después de seed en lugar de reemplazarlo — la salida de seed es la
entrada de la entrevista.
El recorrido
mvac init
│
└── session zero — one question: does this already exist as code?
│
├── yes → discovery: seed → read by category → the three open
│ questions → interview → map + proposed rows →
│ validate in blast-radius batches → mvac doors
│
└── no → interview: the loop → the boundaries → the
non-negotiables and their why → what is published
→ the first slice, landed as the first change
│
steady state: change new → plan → apply → land → closeLas dos ramas son asimétricas a propósito. El descubrimiento termina en doors, porque
ya hay repos esperando una puerta. En el camino desde cero
aún no hay nada sobre lo que proyectar: apply en greenfield crea cada repo con
su primer commit y su puerta ya escritos, aunque la lista de cierre de init
sigue nombrando doors, que refresca la puerta del propio brain. Y si pasaste
--provider a init, esa proyección ya ocurrió en la misma ejecución —
doors sirve para adoptar un harness más adelante.
Qué aporta cada fase
init— el brain existe y los hooks de git quedan armados.verifyahora se ejecuta en cada commit sin que lo pidas;--provider claudeañade una ejecución al inicio de la sesión. No lee tu código, no entrevista a nadie y escribe cero ley: la tabla está vacía a propósito, y la puerta lo dice.- seed — un inventario determinista de dónde vive realmente la arquitectura: compuertas de políticas, grafo del workspace, manifiestos de despliegue, modelos, decisiones. Nada de eso es ley. Su valor es que es aburrido y repetible: los mismos archivos dan el mismo inventario. Coincide con un conjunto fijo de patrones, así que lo que no nombra queda a la lectura que tu agente haga del árbol.
- la entrevista — las razones, que no están en el código. Un
REVOKE UPDATEen una migración sugiere una regla; solo una persona sabe si es una promesa o un accidente que nadie limpió. - filas propuestas, validadas por lotes — ley por la que respondió un humano. Ordenadas por radio de impacto: primero dinero y pérdida de datos, luego promesas publicadas, luego contratos internos, luego convenciones.
doors— cada repo y cada harness sabe dónde está el brain y qué obliga, en su propio formato, desde una única fuente canónica.- estado estable — toda decisión entra como un cambio, y
closerechaza archivar hasta que las afirmaciones (claims) que declaró se cumplan de verdad.
Dónde empiezas
- Un ecosistema que ya existe en código — el caso común.
init, luego el camino de descubrimiento. Espera que la entrevista sea la parte lenta; también es la parte que decide si la ley es verdadera. - Un repo que es a la vez brain y código — mismo camino,
repos: { brain: . }. Las anclas apuntan abrain:<glob>y no hay montaje ni pin que revisar. Este sitio y la herramienta que lo construye son ese caso. - Nada construido todavía — el camino de la entrevista. Decide solo la primera porción. Una especificación especulativa es un brain que miente desde el primer día.
Qué cambia según el caso, y qué no
- Un repo que ya tiene opiniones — un
AGENTS.md, husky,pre-commit, uncore.hooksPathajeno, un.gitignoreque se tragaría el brain.initrevisa antes de escribir, encadena un hook existente en lugar de reemplazarlo, rechaza en lugar de pisar, e imprime la estrategia que usó. - Un repo declarado que no está en disco — seed lo lista en
skippeden lugar de adivinar.mvac repos synclo clona. - Un repo que no existe en absoluto — es legal. Decláralo en un cambio;
applyen greenfield lo crea. - Adoptar un harness tres meses después — una línea en
.multivac/config.yml(una vez que la configuración está commiteada,verifyrechaza un commit que la edita a menos que haya un cambio abierto) másmvac doors.initconserva la configuración que encuentra, así que volver a ejecutarlo no recogería la línea. - Un repo consumidor — sin configuración propia; resuelve el brain a través del montaje y verifica su propio árbol de trabajo, acotado a sus anclas.
Lo que no cambia es el estado estable. Todos los caminos anteriores convergen en los mismos cinco subcomandos, y desde ahí la forma del trabajo es idéntica sin importar cómo llegaste.
Siguiente
La versión paso a paso de la sesión cero, con salida real, está en la guía: Sesión cero. Por qué multivac se apoya en herramientas guiadas por especificaciones en lugar de reemplazarlas está en Composición.