AN-02 L0 Nivel de conformidad: Files Grupo: Trabajo

Agent Branch rama del agente

Cada ejecución trabaja en una rama copy-on-write. Solo una fusión revisada llega a la línea principal.

Definición

Un Agent Branch permite que cada ejecución trabaje en una rama copy-on-write. Los cambios llegan a la línea principal protegida solo mediante una fusión revisada (un Agent PR), y puedes crear puntos de control y restaurar en cualquier momento.

v0.2 Borrador de especificación Actualizado

El problema

Los agentes cometen errores a la velocidad de las máquinas, y los datos compartidos no tienen forma de “probar, ver el diff, revisar, deshacer”. Además, los agentes en paralelo se pisan entre sí.

En un incidente de abril de 2026, un agente usó un token demasiado amplio para borrar en 9 segundos un volumen de producción y las copias de seguridad que estaban en el mismo volumen. Si solo hubiera podido escribir en una rama, si los borrados hubieran sido lógicos y si las instantáneas hubieran estado fuera de su autoridad, el daño habría sido mucho menor.

Cómo funciona

  • Las ramas son baratas (según el motor, idealmente cercanas a O(1)). Una concesión otorga escritura dentro de la rama y propose hacia el destino.
  • Árboles protegidos. La línea principal solo se puede actualizar mediante una fusión: ni siquiera una credencial filtrada puede escribir en ella directamente.
  • Agent PR. El diff, la intención, la procedencia (un resumen del manifiesto de lectura), los resultados de las comprobaciones y un resumen de etiquetas. Si las comprobaciones pasan y la política lo permite, se fusiona de forma automática; si no, pasa a una Human Gate.
  • Borrado lógico. Los borrados en un árbol protegido van a una papelera, que por defecto se conserva 7 días; las instantáneas pertenecen al propietario y están fuera de la autoridad de cualquier concesión.
  • Puntos de control. Instantáneas con nombre; restore devuelve los archivos a un punto de control.
  • Fusión. El texto usa una fusión a tres bandas y los demás archivos se fusionan archivo por archivo. Si hay un conflicto, se detiene y nunca sobrescribe en silencio; los datos estructurados necesitan un fusionador registrado, o una persona.
  • TTL y cuota, para evitar las bombas de ramas.
  • Intentos en paralelo. Abre N ramas para una misma tarea, fusiona la mejor y recicla el resto.

Empezar en pequeño

  • Ramas y worktrees de Git, más un main protegido en Forgejo, Gitea o GitHub.
  • Para directorios grandes usa instantáneas y clones de btrfs o ZFS; para almacenamiento de objetos, los forks de Tigris o lakeFS.
  • Empieza por acertar con “los borrados van a la papelera” y “las instantáneas son del propietario”. Son lo más barato y lo que más daño evita.

Esbozo de la interfaz

Solo ilustrativo. Los nombres de los campos pueden cambiar antes de la especificación v0.3.

nas cli
nas branch create cleo/release-notes --from main --ttl 48h
nas checkpoint create before-refactor
nas propose --into main --checks links,schema
nas restore before-refactor
nas trash list                    # recycle area, kept 7 days by default
nas trash restore <path>

Lo que pide la especificación

  • Un árbol protegido DEBE poder actualizarse solo mediante una fusión; ninguna credencial puede escribir en él directamente.
  • Una fusión DEBE producir un commit que lleve procedencia (ejecución, concesión, principal).
  • Ninguna concesión PUEDE permitir borrar una instantánea ni una copia de seguridad.
  • Un borrado en un árbol protegido DEBE ser lógico y recuperable dentro de la ventana configurada (7 días por defecto).
  • Un conflicto NO DEBE resolverse en silencio; la fusión DEBE detenerse y avisar.
  • Una rama DEBE tener un TTL y una cuota.

Lo prestado y lo nuevo

Lo que sigue es todo práctica establecida. Lo nuevo: unir la rama a una ejecución y una concesión, de modo que la rama sea la unidad de autorización y la fusión sea la unidad de revisión. Las ramas y las instantáneas en sí no son nuevas.

Límites honestos

  • Una rama solo protege los datos dentro del NAS. No deshace los efectos secundarios externos: un correo ya enviado, una API ya llamada.
  • Los archivos binarios grandes y los archivos de bases de datos son difíciles de fusionar.
  • La fatiga de revisión sigue siendo posible, así que las rutas de bajo riesgo pueden fusionarse automáticamente y se mide la tasa de aprobación.

Preguntas abiertas

  • ¿Cómo se registran los fusionadores semánticos y cómo se les da confianza?
  • ¿Cómo debe ser la interacción ante los conflictos binarios?

Preguntas

¿En qué se diferencia de una rama de Git?

Mecánicamente no es magia: se puede construir sobre Git. La diferencia es que une la rama a una ejecución y a una concesión, de modo que “solo puede escribir en su propia rama” se convierte en una regla de autorización y la fusión pasa a ser el único punto de revisión.

¿Una rama evita todos los accidentes?

No. Solo protege los datos dentro del NAS: un correo ya enviado o una API externa ya llamada no se deshacen al revertir una rama. Esas acciones deben pasar por egress en la concesión y por una Human Gate.

¿Cada fusión necesita que una persona la apruebe?

No. Una fusión cuyas comprobaciones pasan, cuya ejecución no leyó contenido externo y que no implica borrar ni compartir puede pasar de forma automática. Solo hace falta una persona en unos pocos casos; consulta Human Gate.

Citar esta página

Direcciones estables y una cita sugerida para personas, buscadores y agentes.

Cita sugerida
Agent NAS project. “Agent Branch (rama del agente).” agentnas.com, 2026-11-11. https://agentnas.com/es/concepts/agent-branch/