Skip to content

整合性と内訳ビュー

VMark の整合性レイヤーは、再帰的に育てていく執筆プロジェクトを誠実に保ちます:各 AI 生成が実際にどのドキュメントを読んだかを記録し、その上流ドキュメントが後から変化したことに気づき、必要なときに、どの下流アーティファクトが古くなっている可能性があるかを正確に示します。何も自動更新されることはありません — 編集長はあなたのままです。

仕組み(30 秒)

  • 保存、Genie の適用、承認された AI 提案、MCP 書き込み、ワークフローの save-file ステップは、そのすべてがワークスペース内の平文の台帳(.vmark/ — git フレンドリーで人間が読める JSONL。派生した index.db を削除しても何も失われません)に変換として記録されます。
  • AI が他のドキュメントを読みながらあるドキュメントを書くと、それらの読み取りは依存エッジとなり、読んだ時点の正確なリビジョンに固定(ピン留め)されます。
  • 上流ドキュメントが固定されたリビジョンを越えて進むと、そのエッジは**古く(stale)なります。2 つのリビジョンが並行して進化した場合(例:git ブランチ上)、エッジは分岐(diverged)**です — 推測ではなく、事実として表示されます。
  • VMark の外(ターミナル、他のエディタ)で編集されたファイルは、スキャン時に観測された外部編集として照合されます — 履歴は途切れず、来歴不明として正直にマークされます。

内訳ビュー

ウィンドウ > 整合性の内訳(またはコマンドパレット:「整合性の内訳」)から開きます。厳密にプル型です:開いたとき、または更新を押したときにだけ更新され、バックグラウンドで催促してくることはありません。

項目はアーティファクト(下流ドキュメント)ごとにグループ化され、上流ドキュメント、固定されたリビジョン、現在の状態が表示されます:

状態意味
version-stale上流が、このアーティファクトの生成元だったリビジョンを越えて進んだ
diverged固定されたリビジョンと現在のリビジョンが並行 — 系譜がつながっていない
diverged-multi-head上流自体に並行する複数の現行版がある
waived理由を記録したうえで、あなたが分岐を受け入れた
unpinnable上流を解決できない(例:無効なピン)

アクション

各項目には 3 つの誠実なアクションがあります — どれも履歴を書き換えません:

  • 新しい版を受け入れる — アーティファクトが新しい上流とまだ両立することを記録します(追認)。項目はリストから消えます。上流が再び変化すれば戻ってきます。
  • 改訂 — アーティファクトを開いて更新できるようにします。新しい版を保存すると、古いエッジは退役します。
  • 免除 — 意図的な分岐を、必須の理由とともに記録します(信頼できない語り手は存在します)。免除済みの項目は区別されたマークとともに表示され続け、上流が再び動けば再度開かれます。

上流に複数の現行版がある場合、「新しい版を受け入れる」と「免除」は無効になります — 解決の基準となる単一のリビジョンが存在しないためです。まず改訂する(または版どうしを調停する)必要があります。

セマンティックチェック、設定、コンテキスト

版の陳腐化は、上流が動いたことを伝えるだけです。セマンティックチェックは、その動きが派生ドキュメントと実際に矛盾するかどうかを伝えます。チェックは厳密にプル型です:古くなったエッジでチェックを押すと、VMark は設定済みの AI プロバイダーに、固定された上流リビジョン、現在のリビジョン、派生テキストの比較を依頼します。判定はバッジとして表示されます — 検証済みで有効矛盾あり(必ず逐語的な根拠の引用付き)、そしてモデルが確信を持てなかった、タイムアウトした、または確信度の基準に届かない回答をした場合の未検証です。不明は正直さの表れであり、隠されることはありません。チェックは、どちらかのドキュメントが再び動いた瞬間 — あるいは設定セットが変わった瞬間に失効します。

カノン設定とは、あなたが明示した事実です(「エレナは左利き」)。ドキュメント内のテキストを選択して選択範囲から設定を抽出を実行すると、設定は来歴(どのドキュメントの、どのリビジョンか)を伴う下書きとして生まれます。カノンになったら確立済みに昇格させてください — セマンティックチェックに渡されるのは確立済みの設定だけです。設定の修正や終了は履歴を追記します。何も削除されることはありません。コンテキスト内で設定を非表示にするのは可逆的な可視性の操作であり、終了ではありません。

コンテキストとは、ワークスペースの名前付きビューです(default コンテキストは常に存在します)。各コンテキストは「現在」が何を意味するか、どの設定が適用されるかを選びます。子コンテキストは親の設定を加算的に継承します。コンテキストはデフォルトで温室です — チェックの判定は助言的な緊張として読めます。強制へ切り替える(明示的で確認を伴う操作)と、矛盾はカノン違反として表示されます。内訳ビューのコンテキストピッカーは、どのコンテキストを通して見るかを選びます。チェック結果は、それを生んだまさにそのコンテキストと設定スナップショットに束縛され、決して他へ漏れ出しません。

来歴・委任・ブランチ

プロジェクトが実際に進化していくなかで、整合性レイヤーを誠実に保つものが 3 つあります — どれも急かさず、すべてプル型です。

**来歴の復元。**派生ドキュメントを手作業で編集すると(VMark でも外部エディタでも)、その編集は記録された入力を正しく失います — 古い依存エッジはもう新しいテキストを説明しません。内訳の来歴不明グループがそれらの復元を申し出ます:入力を提案を押すと、VMark はそのドキュメントの直近の入力セット(ロールは保持)を、あらかじめチェックした編集可能な状態で提案します。来歴を確定すると、新しいリビジョンを作らずにエッジを現在のバージョンへ付け直すので、そのドキュメント自身の下流が偽りの変更を見ることはありません。もともと入力を持たなかったドキュメントは決して一覧に現れません — 復元するものは何もなく、急かす理由もありません。

エージェントへの委任。既定では、古くなったエッジを解決できるのはあなただけです。AI エージェントにあなたの代わりに新しい版を受け入れさせる、または免除させたい場合は(読み取り専用+resolve の MCP サーフェス経由)、内訳から期限付きの委任を付与してください:エージェントに名前を付け、範囲(新しい版を受け入れる、免除、またはその両方)を選び、有効期限を設定します(既定は 7 日、決して「無期限」にはできません)。委任による解決はすべてその付与に紐づけて記録されるので、監査証跡は誰の権限の下で誰が操作したかを常に示します。どの付与もワンクリックで取り消せます。カノン設定とコンテキストは人間専用のままです — エージェントが設定を昇格させたり、コンテキストを強制したりすることは決してできません。

ブランチのコンテキスト。コンテキストは git ブランチに対応づけられます。対応づけられたブランチをチェックアウトすると、内訳は切り替えを提案する候補チップを表示します — 自分から切り替えることは決してありません。そのブランチにまだコンテキストがなければ、チップはブランチ名を付けたコンテキストの作成を提案します。(fast-forward ではない)本物のマージが着地すると、閉じられるバナーが内訳の確認を促します。そこに現れる乖離や陳腐化は内訳の通常の状態なので、新しく何かが走るわけではありません — 確認へと案内されるだけです。

Frontmatter の ID

ファイルが最初にキャプチャされたとき、VMark はその frontmatter に小さな ID ブロックを追加します:

yaml
vmark:
  id: 018f3c7a-9f2e-7cc1-b302-5e9d4a6b21c7

この ID によって、ドキュメントはリネームや移動をまたいで履歴を保ちます。コンテンツのハッシュには一切影響せず(追加しても「変更」にはなりません)、frontmatter の他の内容には手を付けません。ファイルをコピーした場合、重複した ID は検出されて提示され、あなたが解決します — 自動修正は決して行われません。

Git との相互運用

  • .vmark/ の台帳ファイルは git で追跡され、ブランチをまたいできれいにマージできます(追記専用、merge=union)。
  • チェックアウト、ブランチ切り替え、リセットはナビゲーションとして認識されます — 幻のリビジョンを作ることはありません。
  • git revert と、新しいコンテンツを生むマージは、git 起因の変換としてキャプチャされます。
  • 派生インデックス(index.db)は gitignore されており、必要なときにいつでも平文の台帳から再構築されます。

AI エージェント向け(MCP)

外部エージェントは、VMark で開いたことのあるワークスペースについて、coherence MCP ツールstatusedges アクション)を通じて整合性の状態を照会できます。status は純粋な読み取りです。edges は先に照合を実行します — ワークスペース自身の台帳に来歴レコードを追記することはありますが、あなたのドキュメントには決して触れません。解決(追認/免除)は、このバージョンでは意図的に MCP に公開されていません — 判断はアプリの中の人間に委ねられます。