ato

Docs/基本概念

更新日 2026-10-23

基本概念

Ato では、Computation(計算)を「まだ何ができるか」で記述し、その seal された地点を、その地点を物理的に再生成する方法から切り離して扱います。以下の用語は、以降の開発者向けガイドで使われる語彙です。

区別を保ってください。継続は Capsule(不変の継続地点)ではなく、Capsule は Run(実行中の評価)ではなく、Record(観測の記録)はそれが記述する Computation ではなく、Materialization(実体化)は何かの同一性ではありません。

Computation

Computation は、現在の地点から残っている作業です。その地点までに起きたすべてを記録したものではありません。完了したステップは失われ、ここからなお起こりうることが重要です。

インタラクションによって、ある Computation は次の Computation へ進化します:

C ──α──▶ C'

インタラクションには、プロセスが標準出力へ書き込むこと、ユーザーがコマンドを入力すること、ネットワークリクエストが到着することなどが含まれます。合成では、Port(型付き境界)を介して接続されたより小さな Computation から、より大きな Computation を構築します。

Contract

Contract(観測可能な条件) は、Computation に対する観測可能な条件です。たとえば「ビルドが成功した」「コンパイラエラーが再現した」「サーバーが GET /health に 200 で応答した」などです。

C ⊨ K

Contract は、将来の Computation が同じ種類の地点と見なされるために何が成り立つ必要があるかを示します。Contract は成果物ではなく述語です。Record(観測の記録)は、ある観測で Contract が成り立っていたことを示せますが、Record が Contract になるわけではありません。

Capsule

Capsule は、Computation における seal 済みで不変の、アドレス可能な地点です。永続する開かれた継続であり、保存、受け渡し、resume、合成、fork ができます。

Computation 起点の wire v2 は ComputationRef を使います。Portable Application の wire v3 / v4 は ContractRef を使い、両者を読み替えることはできません。Portable Capsuleを参照してください。

Run

Run は、Capsule から resume された生きた評価です。seal は不変であり、Run はインタラクションに応じて進みます。

Capsule   immutable
Run       evolving
Record    evidence

同じ Capsule から resume された 2 つの Run は、開始した地点を変えることなく、それぞれ別々に発展します。

Record

Record は、インタラクションが観測されたことの永続的な証拠です。Record は、Run の履歴を保持する方法であり、replay が別のマシンで地点を再構成する方法でもあります。

Record は、Run がどのように地点へ到達したかを説明します。地点そのものではなく、Capsule を再定義するものでもありません。

Materialization

Materialization は、論理的な Capsule を特定のホスト上で実現する物理的な方法です。Capsule は「どこから継続すべきか」に答え、Materialization は「このマシンでそこへどう戻るか」に答えます。

logical continuation  !=  physical realization

互換性のある Materialization を追加、置換、削除しても、新しい Capsule は作成されません。

現在の状況:

  • Computation 起点の wire v2 では、利用可能な Adapter を介した Replay(ato.replay@1)で地点を再構成できます。Portable Application v3/v4 は選択された Derivation を使います。
  • ワークスペーススナップショット(ato.snapshot@1)は取得と検証ができますが、単独で地点を復元することはまだできません。
  • VM snapshot materializer は復元可能なインターフェースを持ちますが、実際の復元には対応する backend と互換ホストが必要です。任意のホスト間での再開は保証されません。

Binding

Binding(結合) は、論理的な要件を具体的なランタイムリソースへ対応付けます。ターミナルを必要とする Port は実際の PTY に、ワークスペースの Port はディスク上の実際のディレクトリに結合されます。

Binding は Run ごとに解決されます。Capsule の同一性には含まれません。

Port と Protocol

Port は、Computation 上のインタラクションのための型付き境界です。Protocol とロールによって、どのインタラクションが有効かが決まります。合成は Port 同士を接続し、ランタイムは Binding を介して Port を物理的なエンドポイントへ接続します。

モデルが届かない範囲

モデルは実装より広い範囲を扱います。ホストをまたぐ実行は対応する経路と環境に限られ、普遍的な保証ではありません。Portable Capsuleと CLI クイックスタートを参照してください。