# Cascade Forget (カスケード忘却)

*系譜に沿って派生物を削除し、履歴は保持クラスで扱い、できなかったことを報告します。*

> **Cascade Forget** は、系譜に沿った削除です。元データを削除するとき、あるいは誰かが忘れてほしいと求めたとき、NAS はそこから派生したものすべて（要約、埋め込み、それを引用するノート、キャッシュ、共有リンク）を見つけ、削除するか、その元データなしで導出し直し、**報告** を出します。何を行い、何ができなかったかです。

**AN-09** · 準拠レベル: L3 Guard · グループ: 知識

## 解決する課題

ファイルを削除しても、その埋め込みも、要約も、記憶がそこから推論した事実も消えません。スナップショットとバックアップは残り、内容はバージョン履歴にも残っています。

「復元できること」と「忘れられること」は、1 本の軸の両端であり、ほとんどのシステムは、その選択を人間に渡しません。書き込んだあとで忘れることを考えても、たいてい手遅れです。

## 仕組み

- **系譜。** すべての派生物が入力を記録します。逆引きの索引が「X に依存するものすべて」に答えます。ノートの `sources` フィールドも系譜です。
- **保持クラスは、書き込み時に決めます**（履歴はあとから書き換えられないため）。`scratch`（短い TTL、バックアップに入れず、実行の終了時に掃除できる）、`normal`（バージョン管理され、復元できる）、`sensitive`（独自の鍵ドメインを持ち、鍵を破棄すれば粉砕できる）。
- **復元と忘却の緊張関係。** ソフト削除の期間内なら復元でき、その期間を過ぎてはじめて完全に削除されます。忘却の要求は、その期間を飛ばせます。
- **手順。** 要求（人間か運用者が出します。エージェントは求められるだけで、実行はできません）、系譜のたどり、派生物の削除と混合起源の事実の導出し直し、`normal` クラスでは影響を受けるパスの履歴の書き換えとスナップショットの掃除、`sensitive` クラスでは鍵の破棄、そして最後に報告。
- **報告：** 削除したファイルの数、取り除いた派生物、履歴を書き換えたか、破棄した鍵、まだ期限が切れていないスナップショット、そして **カバーできない範囲の明示的な一覧：** NAS の外のコピー、モデル提供者のログ、モデルの重み。
- 必ず [Human Gate](https://agentnas.com/ja/concepts/human-gate/)（または事前に承認するポリシー）を通ります。**リーガルホールド** は忘却を妨げ、その事実は記録されます。

## 小さく始める

- まず、保持クラスとソフト削除から始め、すべての派生物の入力を記録します。
- 最初の到達点は「元のファイルを削除したら、そのすべての派生物を列挙して削除する」です。
- 暗号粉砕は `sensitive` クラスのために取っておきます。最初からあらゆる場所で行う必要はありません。

## インターフェースのスケッチ

説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。

*forget-report.json*

```json
{
  "forget_id": "fgt_3b7c",
  "selector": { "paths": ["/shared/crm/acme/**"], "subject": "customer/acme" },
  "retention_class": "sensitive",
  "report": {
    "files_removed": 142,
    "derived_removed": { "embeddings": 3621, "summaries": 210, "notes_rewritten": 6 },
    "history": "rewritten (3 commits)",
    "keys_destroyed": ["key_acme"],
    "snapshots_pending": ["nightly-2026-11-10 (expires 2026-11-17)"],
    "not_covered": ["copies outside the NAS", "model provider logs", "model weights"]
  },
  "state": "pending_expiry"
}
```

## 仕様が求めること

- 忘却は、系譜に沿って、元データからすべての派生物へ伝播しなければならない。
- 保持クラスは、書き込み時に割り当てなければならない（既定は `normal`）。
- 忘却の報告は、カバーできない範囲（NAS の外のコピー、提供者のログ、モデルの重み）を列挙しなければならない。
- リーガルホールドは、忘却を妨げなければならず、記録されなければならない。
- エージェントは忘却を要求してもよいが、実行してはならない。
- 報告は、モデルが何かを「忘れた」と主張してはならない。

## 借りたものと、新しいもの

以下はすべて確立された考え方です。**新しいのは、** **保持クラス** をストレージの明示的な属性として扱い、「復元できること」と「忘れられること」が 1 本の軸の上のトレードオフだと認めることです。

- [OpenLineage](https://openlineage.io)
- [GDPR Article 17](https://gdpr-info.eu/art-17-gdpr/)
- [Long-term memory security survey (forget and rollback)](https://arxiv.org/abs/2604.16548)

## 正直な限界

- バックアップ、NAS の外のコピー、モデル提供者のログは、対象外です。
- 複数の出典から推論された事実では、「影響を受ける範囲」を定めるのが困難です。
- 履歴の書き換えは、コストが高く、リスクもあります。

## 未解決の問い

- 混合起源の事実の影響範囲を、どう定義するか。
- リーガルホールドと忘却の要求が衝突したとき、手順はどうあるべきか。

## よくある質問

### モデルに忘れさせることはできますか？

できませんし、できるとは主張しません。できるのは、NAS の内側のファイルと派生物の削除、`sensitive` クラスについては履歴と鍵の破棄です。モデル提供者のログとモデルの重みは対象外で、報告にもそう明記されます。

### なぜ保持クラスを、書き込み時に選ぶのですか？

履歴はあとから書き換えるのが難しいからです。すでにバックアップや履歴に入ったものは、書き換えるか、期限が切れるのを待つしかありません。書き込み時に `scratch`、`normal`、`sensitive` のどれかを決めることが、あとできれいに削除できるための前提です。

### エージェントが、自分から忘れるよう求められますか？

要求を出すことはできますが、実行はできません。忘却は元に戻せないため、人間か、事前に承認するポリシーを通さなければならず、リーガルホールドがそれを妨げることもあります。

## 関連するコンセプト

- [Agent Memory (エージェントの記憶)](https://agentnas.com/ja/concepts/agent-memory/): 読んで直せるノートが真実で、索引は捨てられるキャッシュです。
- [Flight Recorder (フライトレコーダー)](https://agentnas.com/ja/concepts/flight-recorder/): 実行ごとに、ハッシュでつながれた記録を残します。実行が何を読んだかも含みます。
- [Agent Branch (エージェント・ブランチ)](https://agentnas.com/ja/concepts/agent-branch/): 実行ごとに、コピーオンライトのブランチで作業します。メインに届くのは、レビューを経たマージだけです。

---

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