ato

Docs/Conceptos básicos

Actualizado 2026-10-23

Conceptos básicos

Ato describe un Computation(cómputo) por lo que todavía puede hacer y mantiene un punto sellado de ese Computation separado de la forma en que el punto se produce físicamente de nuevo. Los términos de abajo son el vocabulario que usan el resto de las guías para desarrolladores.

Mantén las distinciones: una continuación no es un Capsule(una cápsula), un Capsule no es un Run(una ejecución), un Record(un registro) no es el Computation que describe y una Materialization(una materialización) no es la identidad de nada.

Computation

Un Computation es el trabajo que queda desde un punto actual. No es una transcripción de todo lo que ocurrió antes de ese punto: los pasos completados desaparecen y lo que importa es lo que todavía puede ocurrir desde aquí.

Una interacción evoluciona un Computation hacia el siguiente:

C ──α──▶ C'

Las interacciones incluyen un proceso que escribe en su salida estándar, un usuario que escribe un comando o una solicitud de red que llega. La composición construye un Computation más grande a partir de otros más pequeños conectados mediante Port(puertos).

Contract

Un Contract(contrato) es una condición observable sobre un Computation: "la compilación se realizó correctamente", "el error del compilador se reproduce", "el servidor responde a GET /health con 200".

C ⊨ K

Un Contract dice qué debe cumplirse para que un Computation futuro cuente como el mismo tipo de punto. Es un predicado, no un artefacto. Un Record puede mostrar que un Contract se cumplió en una observación, pero el Record no se convierte en el Contract.

Capsule

Un Capsule es un punto sellado, inmutable y direccionable de un Computation: una continuación abierta y persistente que se puede preservar, pasar, reanudar, componer y bifurcar.

El wire v2 con raíz de Computation usa ComputationRef; Portable Application wire v3/v4 usa ContractRef. No son intercambiables. Consulta Portable Capsules (inglés).

Run

Un Run es una evaluación en vivo reanudada desde un Capsule. El sellado es inmutable; un Run avanza a medida que ocurren interacciones.

Capsule   immutable
Run       evolving
Record    evidence

Dos Run reanudados desde el mismo Capsule se desarrollan por separado sin cambiar el punto del que partieron.

Record

Un Record es evidencia duradera de que se observó una interacción. Los Record son la forma en que se conserva el historial de un Run y en que Replay(la repetición) reconstruye un punto en otra máquina.

Un Record explica cómo un Run llegó a un punto. No es el punto en sí y no redefine el Capsule.

Materialization

Una Materialization es una forma física de realizar un Capsule lógico en un host concreto. El Capsule responde "¿desde dónde debo continuar?"; la Materialization responde "¿cómo vuelvo allí en esta máquina?".

logical continuation  !=  physical realization

Añadir, reemplazar o quitar una Materialization compatible no crea un Capsule nuevo.

Estado actual:

  • Wire v2 con raíz Computation puede usar Replay (ato.replay@1) mediante los Adapter disponibles. Portable Application v3/v4 usa la Derivation seleccionada.
  • Una instantánea de espacio de trabajo (ato.snapshot@1) se puede capturar y verificar, pero todavía no puede restaurar un punto por sí sola.
  • Un materializador de instantáneas de VM ofrece una interfaz de restauración, pero requiere un backend adecuado y un host compatible; no garantiza la reanudación entre hosts arbitrarios.

Binding

Un Binding(una vinculación) asigna un requisito lógico a un recurso de tiempo de ejecución concreto. Un Port que necesita una terminal está vinculado a un PTY real; un Port de espacio de trabajo está vinculado a un directorio real en disco.

Los Binding se resuelven en cada ejecución. No entran en la identidad del Capsule.

Ports y Protocol

Un Port(un puerto) es un límite tipado para la interacción en un Computation. Su Protocol y su rol deciden qué interacciones son válidas. La composición conecta Port entre sí; un tiempo de ejecución conecta un Port a un endpoint físico mediante un Binding.

Dónde termina el modelo

La ejecución entre hosts solo está disponible para rutas y entornos compatibles; no es una garantía universal. Consulta Portable Capsules (inglés).