Ir al contenido

El substrato soberano

El substrato es el plano de control soberano del sistema. La idea rectora: lo que define quien puede hacer que, con que datos y bajo que reglas, es nuestro; la infraestructura pesada vive detras de puertos con adapters reemplazables.

Nova es el agente que recibe la necesidad en lenguaje natural y la convierte en un squad. No es un formulario ni un selector: interpreta, propone una triada de agentes (entre 2 y 3), y ajusta la propuesta hasta que el usuario confirma. En el Acuerdo de Operacion, Nova coordina y explica como trabaja el equipo. La estructura entre los agentes es plana: ninguno manda sobre otro, se co-crean bajo la coordinacion de Nova.

Rutas: /api/discovery/chat (discovery) y /api/discovery/charter (Acuerdo de Operacion).

apps/api es la superficie HTTP del substrato. Monta las rutas de discovery, workspaces, intents, FORGE, approvals y SLO. Sobre ella corre la orquestacion: traducir intents y composiciones en operaciones del catalogo, y despacharlas a la capa durable. El bearer de acceso no es global a toda la API: las rutas expuestas estan protegidas y con rate limit.

Las operaciones no corren en el request HTTP: se despachan a Inngest, que las ejecuta como pasos idempotentes con reintentos y estado durable. Es una de las zonas de mayor cuidado del sistema: la idempotencia y la reversibilidad son requisitos, no adornos. Postgres es la fuente de verdad; Inngest coordina el avance.

Todo el estado con autoridad vive en Postgres. Las operaciones leen y escriben ahi; el resto de los planos son coordinacion o ejecucion sobre ese estado. Las migraciones y el manejo de datos sensibles se tratan como zona de alto riesgo, con snapshots antes de operaciones destructivas.

FORGE genera y ejecuta codigo del modelo en un sandbox por proceso. No es libre: una operacion con tool_binding solo puede forjarse si su capability esta en la allowlist FORGEABLE_CAPABILITIES, una decision humana explicita. Un chequeo de seguridad estatico bloquea patrones peligrosos (red, filesystem fuera del sandbox, procesos). Ampliar lo forjable es editar esa allowlist a mano, no un default.

Los approvals son donde el substrato se detiene y espera al humano. El Acuerdo de Operacion los hace explicitos: cada agente tiene un alcance, y hay puntos donde la decision es de la persona antes de que el trabajo avance. Rutas: /api/approvals y /api/approvals/*.