Concepts clés
Ato décrit une Computation par ce qu'elle peut encore faire et conserve un point scellé de cette Computation séparé de la manière dont ce point est physiquement reproduit. Les termes ci-dessous constituent le vocabulaire utilisé dans le reste des guides pour développeurs.
Gardez les distinctions : une continuation n'est pas une Capsule, une Capsule n'est pas un Run, un Record n'est pas la computation qu'il décrit, et une Materialization n'est pas l'identité de quoi que ce soit.
Computation
Une Computation est le travail restant à partir d'un point actuel. Ce n'est pas la transcription de tout ce qui s'est produit avant ce point : les étapes terminées ont disparu, et ce qui compte est ce qui peut encore se produire à partir d'ici.
Une interaction fait évoluer une Computation vers la suivante :
C ──α──▶ C'
Les interactions incluent un processus qui écrit sur sa sortie standard, un utilisateur qui tape une commande ou une requête réseau qui arrive. La composition construit une Computation plus grande à partir de Computations plus petites reliées par des Ports.
Contract
Un Contract — en français, un contrat — est une condition observable sur une Computation : « la compilation a réussi », « l'erreur du compilateur est reproduite », « le serveur répond à GET /health avec 200 ».
C ⊨ K
Un Contract énonce ce qui doit être vrai pour qu'une Computation future compte comme le même type de point. C'est un prédicat, pas un artefact. Un Record peut montrer qu'un Contract était vérifié lors d'une observation, mais le Record ne devient pas le Contract.
Capsule
Une Capsule est un point scellé, immuable et adressable d'une computation — une continuation ouverte et persistante que l'on peut conserver, transmettre, reprendre, composer et dériver en branches.
Le wire v2 à racine Computation utilise ComputationRef ; Portable Application wire v3/v4 utilise ContractRef. Ces références ne sont pas interchangeables. Voir Portable Capsules (anglais).
Run
Un Run est une évaluation vivante reprise depuis une Capsule. Le scellement est immuable ; un Run avance à mesure que des interactions se produisent.
Capsule immutable
Run evolving
Record evidence
Deux Runs repris depuis la même Capsule évoluent séparément sans modifier le point dont ils sont partis.
Record
Un Record est une preuve durable qu'une interaction a été observée. Les Records sont la manière dont l'historique d'un Run est conservé et dont le Replay (le rejeu des interactions enregistrées) reconstruit un point sur une autre machine.
Un Record explique comment un Run a atteint un point. Il n'est pas le point lui-même et ne redéfinit pas la Capsule.
Materialization
Une Materialization est un moyen physique de réaliser une Capsule logique sur un hôte donné. La Capsule répond à « à partir d'où dois-je continuer ? » ; la Materialization répond à « comment revenir à ce point sur cette machine ? ».
logical continuation != physical realization
Ajouter, remplacer ou retirer une Materialization compatible ne crée pas une nouvelle Capsule.
État actuel :
- Le wire v2 à racine Computation peut utiliser Replay (
ato.replay@1) avec les Adapters disponibles. Portable Application v3/v4 utilise la Derivation sélectionnée. - Un instantané d'espace de travail (
ato.snapshot@1) peut être capturé et vérifié, mais il ne peut pas encore restaurer un point à lui seul. - Un matérialiseur de snapshots de VM possède une interface de restauration, mais nécessite un backend adapté et un hôte compatible ; la reprise entre hôtes arbitraires n’est pas garantie.
Binding
Un Binding associe une exigence logique à une ressource d'exécution concrète. Un Port qui nécessite un terminal est lié à un PTY réel ; un Port d'espace de travail est lié à un répertoire réel sur le disque.
Les Bindings sont résolus à chaque run. Ils n'entrent pas dans l'identité de la Capsule.
Ports et Protocol
Un Port est une frontière typée pour l'interaction sur une Computation. Son Protocol et son rôle décident quelles interactions sont valides. La composition relie des Ports entre eux ; un runtime connecte un Port à un point de terminaison physique via un Binding.
Où le modèle s'arrête
L’exécution entre hôtes dépend des routes et environnements pris en charge ; elle n’est pas universellement garantie. Voir Portable Capsules (anglais).