Notariumドキュメント
ドキュメントのバージョン: latest

バージョン履歴

すべてのノートは独自のリビジョンログ、つまりそれが経てきたすべての状態の履歴を保持します。これはフォルダにgitのレイヤーをかぶせたものではなく、アプリケーションレベルでのバージョン管理です。ログはメタデータデータベース(メタデータDB)に存在し、Notariumを経由した状態やファイル同期が検知した状態を蓄積していきます。その一方で .md ファイルそのものは信頼できる情報源であり続けます。ログはそれを置き換えるのではなく、補完するものです。

リビジョンとはスナップショットである

各リビジョンは、編集時点でのノートの完全な状態、すなわちタイトル・タグ・スラッグ・正規化された本文を保存します。行単位の差分ではありません。バージョン比較のための差分はその場で計算されます。スナップショットから復元できるからです。

リビジョンの本文は内容によってアドレス指定される(コンテンツアドレス方式、sha-256)ため、同一の内容は一度だけ保存されます。バージョンの復元、エージェントの編集ループ、繰り返し現れる状態がコピーを増やすことはありません。重複排除は内容そのものに基づいて行われます。

ログのキーはファイルパスではなく、ノートの内部識別子(notarium-id)です。だからこそ履歴はフォルダ間の移動やリネームを乗り越えて残ります。それは依然として同じ履歴を持つ同じノートだからです。

来歴: 誰が、どのように編集したか

すべてのリビジョンには署名が付きます。変更がどこから来たのかが分かります。リビジョンには種類と、編集を行ったプリンシパルがあります。

リビジョンの種類意味
writeNotariumを通じた保存(人間またはエージェント)
externalファイル同期がディスク上で直接検知した状態
restore過去のバージョンへのロールバック(元への参照を保持)
deleteトゥームストーン: 削除されたノートの最後の状態

編集者は、特定のユーザー・エージェントの個人トークン・インターフェースのいずれかとして記録されます。外部編集には編集者がいません。署名すべき者がいないからです。こうして履歴には、人間が何を編集し、AIエージェントが何をしたのかが正確に映し出されます。人間とエージェントの編集の切り分けについて詳しくは、人間とエージェント を参照してください。

外部編集の粒度

ファイルに直接加えられた編集(Notariumを迂回した編集)を、ログは同期サイクルの精度で捉えます。ポーリングの合間の複数の変更は、観測された一つの状態にまとめられます。Notarium自体を通じた編集は正確に記録されます。

リビジョンはさらに、追加および削除された文字数のカウントも保持します。前のバージョンに対する編集の「コスト」です。

閲覧・比較・復元

ノートの履歴は読書モードから利用できます。サイドパネルの History タブがバージョンのタイムラインを表示します。誰が編集したか、+N −M のカウント、そして日付です。リビジョンを選ぶと、現在のテキストの代わりにそれが開き、Changes(挿入と削除がハイライトされた単語単位の差分)と Content(内容そのもの)を切り替えられます。

History タブ:編集者とカウントを伴うリビジョン。v3 はエージェントによる編集です

ロールバックには Restore this version ボタンを使います。復元はログから本文を取り出し、それを楽観的バージョンチェックで保護された新しい編集として書き込みます。もしその間にノートが変更されていた場合は、コンフリクト(409)が返り、何かが黙って上書きされることはありません。

保存と削除

デフォルトでは履歴は丸ごと保持されます。Notariumがリビジョンを自動的に間引くことはありません。ノートの履歴を完全に消したい場合は、ゴミ箱 から手動で消去します。ノートを削除すると最後の状態を持つトゥームストーンが作られ(これは復元できます)、最終的な完全消去は履歴も消し去ります。

ログの限界

バージョン履歴にはメタデータDBが必要です。メタデータDBがなければ、履歴はプロセスが動いている間しか存在しません。古いリビジョンをスケジュールに沿って自動的に間引く仕組みはありません。履歴は丸ごと保持します。

関連トピック: ファイルファースト — 信頼できる情報源としてのファイル、ゴミ箱 — 削除と復元、アクセスモデル — 誰がバージョンをロールバックできるか。