整合性と内訳ビュー
VMark の整合性レイヤーは、再帰的に育てていく執筆プロジェクトを誠実に保ちます:各 AI 生成が実際にどのドキュメントを読んだかを記録し、その上流ドキュメントが後から変化したことに気づき、必要なときに、どの下流アーティファクトが古くなっている可能性があるかを正確に示します。何も自動更新されることはありません——編集長はあなたのままです。
仕組み(30 秒)
- 来歴の追跡はオプトインです。 まず 設定 → ファイルと画像 → 保存 → 保存時に識別ブロックを書き込む をオンにしてください。オンにするまでは、保存、Genie の適用、承認された AI 提案、MCP 書き込み、以前のバージョンへの復元、ファイルエクスプローラーからの新規ファイル作成のいずれの書き込みでも、ファイルに識別ブロックが書き込まれたり
.vmark/が作成されたりすることはありません。 - 有効にすると、保存、Genie の適用、承認された AI 提案、MCP 書き込み、以前のバージョンへの復元、ワークフローの
save-fileステップは、そのすべてがワークスペース内の平文の台帳(.vmark/——git フレンドリーで人間が読める JSONL。派生したindex.dbを削除しても何も失われません)に変換として記録されます。 - すでに台帳があるワークスペース(以前に作成した
.vmark/や、共同作業者がコミットしたもの)では、設定がオフでも、追跡中のドキュメントへの書き込みは引き続き記録されます。台帳が以前に記録したことのあるドキュメント、またはファイル自体がすでに独自のvmark:識別ブロックを持つドキュメント(移動した、コピーしてきた、チェックアウトした追跡済みファイルなど)が追跡中とみなされ、台帳自身のスキャンが取り込むのもまさにこれらです。識別ブロックは書き込まれません。識別ブロックを持たないドキュメントは対象外となり、そのため入力が不完全になった書き込みはexactではなくinferredとして記録されます。 - AI が他のドキュメントを読みながらあるドキュメントを書くと、それらの読み取りは依存エッジとなり、読んだ時点のリビジョンに固定(ピン留め)されます。アプリ内の計測された経路は
exactな入力を記録し、MCP 書き込みはセッション中に観測された読み取りセットをinferredとして正直に記録します。 - 上流ドキュメントが固定されたリビジョンを越えて進むと、そのエッジは古く(stale)なります。2 つのリビジョンが並行して進化した場合(例:git ブランチ上)、エッジは分岐(diverged)です——推測ではなく、事実として表示されます。
- VMark の外(ターミナル、他のエディタ)で編集されたファイルは、スキャン時に観測された外部編集として照合されます——履歴は途切れず、来歴不明として正直にマークされます。
内訳ビュー
ウィンドウ → 整合性の内訳(またはコマンドパレット:「整合性の内訳」)から開きます。厳密にプル型です:開いたとき、または更新を押したときにだけ更新され、バックグラウンドで催促してくることはありません。
項目はアーティファクト(下流ドキュメント)ごとにグループ化され、上流ドキュメント、固定されたリビジョン、現在の状態が表示されます:
| 状態 | 意味 |
|---|---|
version-stale | 上流が、このアーティファクトの生成元だったリビジョンを越えて進んだ |
diverged | 固定されたリビジョンと現在のリビジョンが並行——系譜がつながっていない |
diverged-multi-head | 上流自体に並行する複数の現行版がある |
waived | 理由を記録したうえで、あなたが分岐を受け入れた |
unpinnable | 上流を解決できない(例:無効なピン) |
アクション
各項目には 3 つの誠実なアクションがあります——どれも履歴を書き換えません:
- 新しい版を受け入れる——アーティファクトが新しい上流とまだ両立することを記録します(追認)。項目はリストから消えます。上流が再び変化すれば戻ってきます。
- 改訂——アーティファクトを開いて更新できるようにします。新しい版を保存すると、古いエッジは退役します。
- 免除——意図的な分岐を、必須の理由とともに記録します(信頼できない語り手は存在します)。v0 では、免除は意図的に狭く設計されています:このエッジと、それが解決の基準とする特定の上流リビジョンにだけ適用されます。免除済みの項目は区別されたマークとともに表示され続け、上流が再び動けば再度開かれます。
上流に複数の現行版がある場合、「新しい版を受け入れる」と「免除」は無効になります——解決の基準となる単一のリビジョンが存在しないためです。まず改訂する(または版どうしを調停する)必要があります。
不要な通知を静める
内訳の各行にある 2 つのコントロールで、レイヤーが確認を求める範囲を絞り込めます。どちらも人間専用です——どの MCP ツールもこれらを設定できません。
完了としてマーク(ドキュメントのライフサイクル)。 下流のドキュメントが完成したら——公開済みの章、納品済みのレポートなど——その行のいずれかで 完了としてマーク を選びます。これはそのドキュメントへのすべての依存を、現在一覧にないものも含めて静めます。そのため確認が求められます。そのエッジはパネル下部の折りたたまれた 確認しない項目 グループに移り、完了した文書 というラベルが付きます:引き続き追跡され、求めれば表示されますが、もう作業を中断させることはありません。再開 はワンクリックで、確認なしにそれらを元に戻します。再開は中断を再び加えるだけだからです。ライフサイクルは frontmatter ではなく台帳に記録されるので、ドキュメントを完了としてマークしても、そのドキュメントの新しいリビジョンは作られません。
セクションへの固定。 固定されていないエッジは「上流のファイルが変わったか?」を問います。セクションに固定 はそれを「依存しているセクションが変わったか?」に絞り込みます:上流ドキュメントから見出しを選ぶと、エッジはその見出しのパスに固定されます。固定先のセクションに変更がない間は、それ以外の場所での上流の編集があっても、エッジは 依存先セクションに変更なし として抑制されたグループに留まります。セクション内部の編集は、それを アンカー先セクションが変更されました として表示します。見出しがなくなった場合、エッジは黙ってファイル全体の動作に戻るのではなく、アンカーが失われました として示されます。固定先を変更 で固定し直し、ファイル全体 で固定を解除します。固定はそれ自体が改訂可能な台帳エントリなので、後のリビジョンでもエッジに追従します。
整合性ログと通知の判定
整合性ログ(内訳パネル内の折りたたみ表示)は、台帳が保持するエッジごとの履歴です:すべてのチェック、追認、免除、各エッジが何回解決されたか(3 回解決)、そして 2 回以上解決されたエッジの数——これはチャーン(繰り返しの解決)であり、ノイズの多い依存グラフの本当の負担です。モデルが確信度のしきい値を下回って回答したセマンティックチェックは、保存された判定と確信度とともに表示されます(モデルの回答は …(確信度 …)、しきい値未満)。そのため「シグナルなし」と「回答はしたが確信度が足りなかった」は区別されたままです。ログは台帳全体から読み込まれるため、展開したときにだけ読み込まれ、展開するたびに再読み込みされます。
この通知は妥当でしたか? 表示された各行には 通知は妥当? があり、はい、いいえ、わからない の 3 つの答えがあります——意図的にデフォルトはありません。答えはそれぞれ独自の台帳エントリとして記録され、ログで集計されます(判定:妥当 … · ノイズ … · 不明 … · 未判定 …)。これはレイヤーが調整の基準とする、陳腐化の妥当性の指標です:ノイズと判定した通知は、セクションへの固定や完了のマークの候補になります。
セマンティックチェック、設定、コンテキスト
版の陳腐化は、上流が動いたことを伝えるだけです。セマンティックチェックは、その動きが派生ドキュメントと実際に矛盾するかどうかを伝えます。チェックはプル型のみです:古くなったエッジでチェックを押すと、VMark は設定済みの AI プロバイダーに、固定された上流リビジョン、現在のリビジョン、派生テキストの比較を依頼します。判定はバッジとして表示されます——検証済みで有効、矛盾あり(必ず逐語的な根拠の引用付き)、そしてモデルが確信を持てなかった、タイムアウトした、または確信度の基準に届かない回答をした場合の未検証です。不明は正直さの表れであり、隠されることはありません。チェックは、どちらかのドキュメントが再び動いた瞬間——あるいは設定セットが変わった瞬間に失効します。
カノン設定とは、あなたが明示した事実です(「エレナは左利き」)。ドキュメント内のテキストを選択して選択範囲から設定を抽出を実行すると、設定は来歴(どのドキュメントの、どのリビジョンか)を伴う下書きとして生まれます。設定を確認・管理するには、コマンドパレットから カノン設定 を実行してください——このパネルにはメニュー項目もショートカットもなく、選択範囲から設定を抽出 を実行すると新しい下書きとともに自動的に開きます。カノンになったら設定を確立済みに昇格させてください——セマンティックチェックに渡されるのは確立済みの設定だけです。設定の修正や終了は履歴を追記します。何も削除されることはありません。コンテキスト内で設定を非表示にするのは可逆的な可視性の操作であり、終了ではありません。
コンテキストとは、ワークスペースの名前付きビューです(default コンテキストは常に存在します)。各コンテキストは「現在」が何を意味するか、どの設定が適用されるかを選びます。子コンテキストは親の設定を加算的に継承します。コンテキストはデフォルトで温室です——チェックの判定は助言的な緊張として読めます。強制へ切り替える(明示的で確認を伴う操作)と、矛盾はカノン違反として表示されます。内訳ビューのコンテキストピッカーは、どのコンテキストを通して見るかを選びます。チェック結果は、それを生んだまさにそのコンテキストと設定スナップショットに束縛され、決して他へ漏れ出しません。
来歴・委任・ブランチ
プロジェクトが実際に進化していくなかで、整合性レイヤーを誠実に保つものが 3 つあります——どれも急かさず、すべてプル型です。
来歴の復元。 派生ドキュメントを手作業で編集すると(VMark でも外部エディタでも)、その編集は記録された入力を正しく失います——古い依存エッジはもう新しいテキストを説明しません。内訳の来歴不明グループがそれらの復元を申し出ます:入力を提案を押すと、VMark はそのドキュメントの直近の入力セット(ロールは保持)を、あらかじめチェックした編集可能な状態で提案します。来歴を確定すると、新しいリビジョンを作らずにエッジを現在のバージョンへ付け直すので、そのドキュメント自身の下流が偽りの変更を見ることはありません。もともと入力を持たなかったドキュメントは決して一覧に現れません——復元するものは何もなく、急かす理由もありません。
エージェントへの委任。 既定では、古くなったエッジを解決できるのはあなただけです。AI エージェントにあなたの代わりに新しい版を受け入れさせる、または免除させたい場合は(coherence_resolve MCP ツール経由)、内訳から期限付きの委任を付与してください:エージェントに名前を付け、範囲(新しい版を受け入れる、免除、またはその両方)を選び、有効期限を設定します(既定は 7 日、決して「無期限」にはできません)。委任による解決はすべてその付与に紐づけて記録されるので、監査証跡は誰の権限の下で誰が操作したかを常に示します。どの付与もワンクリックで取り消せます。カノン設定とコンテキストは人間専用のままです——エージェントが設定を昇格させたり、コンテキストを強制したりすることは決してできません。
ブランチのコンテキスト。 コンテキストは git ブランチに対応づけられます。対応づけられたブランチをチェックアウトすると、内訳は切り替えを提案する候補チップを表示します——自分から切り替えることは決してありません。そのブランチにまだコンテキストがなければ、チップはブランチ名を付けたコンテキストの作成を提案します。(fast-forward ではない)本物のマージが着地すると、閉じられるバナーが内訳の確認を促します。そこに現れる乖離や陳腐化は内訳の通常の状態なので、新しく何かが走るわけではありません——確認へと案内されるだけです。
Frontmatter の ID
保存時に識別ブロックを書き込む がオンの場合、ファイルが最初にキャプチャされたとき、VMark はその frontmatter に小さな ID ブロックを追加します:
vmark:
id: 018f3c7a-9f2e-7cc1-b302-5e9d4a6b21c7この ID によって、ドキュメントはリネームや移動をまたいで履歴を保ちます。コンテンツのハッシュには一切影響せず(追加しても「変更」にはなりません)、frontmatter の他の内容には手を付けません。ファイルをコピーした場合、重複した ID は検出されて提示され、あなたが解決します——自動修正は決して行われません。
VMark にファイルを一切変更させたくない場合は、保存時に識別ブロックを書き込む をオフのままにしてください——これが既定値です。オフの間は、どのような方法で書き込まれたファイルにも、AI や MCP の編集が読み取っただけのファイルにも、VMark はこのブロックを追加しません。
Git との相互運用
.vmark/の台帳ファイルは git で追跡され、ブランチをまたいできれいにマージできます(追記専用、merge=union)。- チェックアウト、ブランチ切り替え、リセットはナビゲーションとして認識されます——幻のリビジョンを作ることはありません。
git revertと、新しいコンテンツを生むマージは、git 起因の変換としてキャプチャされます。- 派生インデックス(
index.db)は gitignore されており、必要なときにいつでも平文の台帳から再構築されます。
AI エージェント向け(MCP)
外部エージェントは、VMark で開いたことのあるワークスペースについて、coherence MCP ツール(status、edges、claims、contexts アクション)を通じて整合性の状態を照会できます。status は純粋な読み取りです。edges は先に照合を実行します——ワークスペース自身の台帳に来歴レコードを追記することはありますが、あなたのドキュメントには決して触れません。このツールは readOnlyHint: true を宣言しているため、クライアントはこれを自動承認できます。
解決(追認/免除)は別のツール coherence_resolve にあり、既定では人間の手に残ります:エージェントがこれを呼び出せるのは、あなたがその特定のエージェントに期限付きの委任を付与した後だけで、すべての解決はその付与に紐づけて監査ログに記録されます。これを coherence から切り離しておくことで、エージェントが台帳への書き込み能力を黙って得ることなく、読み取りツールを自動承認できるようになっています。
カノン設定とコンテキストは、MCP 経由では一切変更できません。