# 仕様

> 仕様ドラフト v0.2 は、L0 Files から L4 Sync まで、累積する 5 つの準拠レベルを定めます。各レベルは、一組のコンセプトと、一組の実行可能な受け入れテストに対応します。`conformance.json` のない「互換」の主張は受け付けません。

> **草案.** 参照実装も、実行できる準拠テストスイートも、まだありません。以下の受け入れテストは仕様の一部です。その役目は、「互換」という言葉を検証できるものにすることです。

## 仕様の構成要素

| 構成要素 | 内容 | 目標バージョン |
| --- | --- | --- |
| Core | 6 つの名詞、Store の契約、ブランチと保護ツリー、マージ、ソフト削除。 | v0.3 ドラフト |
| Lease & Record | リースの形式（`authorization_details` のプロファイル）、記録と読み取りマニフェストの形式、`explain`。 | v0.3 ドラフト |
| Interfaces | マウントの意味、Git と S3 の投影、HTTP API、MCP のツール面。 | v0.4 ドラフト |
| Memory | ノートの規約、導出物とレシピ、予算つきの読み取り、証拠ポインタ。 | v0.4 ドラフト |
| Guard | ラベル、セッション汚染、ポリシーのプロファイル、Gate Card、忘却の報告。 | v0.5 ドラフト |
| Sync | ハンドオフバンドル、ラベルのしきい値、墓標（tombstone）。 | 今後 |
| Conformance Suite | 各レベルの実行可能な受け入れテスト。 | 各バージョンと同時 |

## 準拠レベル

レベルは累積します。L2 を主張するなら、L0 と L1 も満たさなければなりません。

| レベル | 名前 | カバーするコンセプト | 一言で |
| --- | --- | --- | --- |
| L0 | Files | Agent Home、Agent Branch | 履歴を持つディレクトリ。 |
| L1 | Authority | Flight Recorder、Capability Lease、Human Gate | 誰が、どの権限で、何をしたか。 |
| L2 | Memory | Agent Memory、Budgeted Reads | 読めて、持ち運べる記憶。 |
| L3 | Guard | Trust Labels、Cascade Forget | 被害の限定。 |
| L4 | Sync | なし（任意） | 複数のノード。 |

## L0 Files：履歴を持つディレクトリ

1. 実行のブランチでファイルを変更しても、保護されたメインラインは変わらない。
2. 保護ツリーへの直接の書き込みは、認証情報が有効でも拒否される。
3. 保護ツリーのファイルを削除したあと、回収エリアから復元できる。
4. エクスポートしてからインポートすると、バイト単位で同一のツリーと履歴が得られる。
5. 標準的なビューを少なくとも 2 つ提供する：マウントと Git、またはそのどちらかと S3。

## L1 Authority：誰が、どの権限で、何をしたか

1. リースのないリクエストは拒否され、その拒否は記録される。
2. 親より広い子リースの申請は拒否される。
3. リースの期限が切れると、マウントは読み取り専用になる。失効は、実装が宣言した時間内に有効になる。
4. どのリースも、スナップショットを削除できない。
5. どのコミットも、実行、リース、読み取りマニフェストまで `explain` できる。
6. 記録チェーンの検証が通る。1 件の記録を改ざんすると、検証は失敗する。
7. 保護ツリーへのマージでは、Gate Card が NAS の計算した差分を示し、承認はダイジェストに束縛される。差分が変われば、承認は無効になる。

## L2 Memory：読めて、持ち運べる記憶

1. 索引をすべて削除して再構築したあと、黄金の想起テストが通る。
2. Memory 層なしで、ノートを読める。
3. すべての導出物が、レシピと入力を持つ。
4. 予算つきの読み取りは、予算が小さすぎるときに縮退し、実際に返したビューを宣言する。
5. 証拠ポインタを検証できる。コミットが変わったあとも、ポインタは元の内容を指し続ける。

## L3 Guard：被害の限定

1. B と C を持つリースの下で、`external` を読んだセッションが C 型の操作を起動すると、拒否されるか、ゲートに回される。
2. 導出物は、入力のラベルの和集合を引き継ぐ。
3. 汚染されたセッションが書いたノートは、自動で読み込まれない。
4. 忘却の要求は、「カバーできない範囲」を含む報告を出す。リーガルホールドは忘却を妨げられる。
5. ポリシーの評価は LLM を呼び出さない。ポリシーエンジンはモデルへの外向きの呼び出しを持たないので、監査できる。

## L4 Sync：複数のノード

1. 2 つのノードが同期したあと、ツリーが一致する。
2. 許可レベルがより低いノードへ、機微度の高いオブジェクトを送らない。
3. 忘却の墓標が、相手のノードへ伝わる。
4. ハンドオフバンドルを、相手のノードで実行でき、リースは狭くなる一方である。

## 宣言の形式

実装は `conformance.json` を公開しなければなりません。準拠するレベル、各テストの結果、既知の差異を記したものです。このファイルのない「互換」の主張は受け付けません。

*conformance.json*

```json
{
  "implementation": "example-nas",
  "version": "0.1.0",
  "spec": "0.2",
  "level": "L1",
  "tests": { "L0.1": "pass", "L0.2": "pass", "L0.3": "pass", "L0.4": "pass", "L0.5": "pass",
             "L1.1": "pass", "L1.2": "pass", "L1.3": "pass", "L1.4": "pass",
             "L1.5": "pass", "L1.6": "pass", "L1.7": "pass" },
  "deviations": ["L1.3: revocation takes effect within 60 seconds"]
}
```

## バージョンと互換性

- セマンティックバージョニング。0.x の間は、互換性を保証しない。
- 新しいフィールドは、後方互換である。
- 廃止するフィールドは、少なくとも 1 つのバージョンの間、警告期間を置く。

## 仕様がまだ定めていないこと

トランスポートプロトコルのバージョンの詳細、特定のポリシー言語、トークンの署名アルゴリズム、特定のストレージエンジン、そしてユーザーインターフェース。

---

正規 URL: https://agentnas.com/ja/spec/
更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0
