koharu-scene がプロジェクトの意味を、koharu-storage が完全状態と不変データの永続化を担当します。
解析・内容・表示を分ける
プロジェクトは順序付きページを持ちます。各ページには安定した外部エンティティ ID、ローカル arena、階層、型付きコンポーネントと関係があります。 検出形状は解析のままで、移動可能な表示レイヤーにはなりません。OCR の来歴を保って翻訳を変え、意味テキストを書き換えずに組版を変更できます。編集を適用する
スナップショットは不変で、安価に複製できます。パッチはプロジェクトと基準リビジョンに結びつき、操作の前提条件と undo 用の逆操作を記録します。古いパッチを暗黙に受け入れません。派生処理は明示的に rebase
し、参照入力や重複する書き込みが変わっていれば失敗します。
状態を公開する
ストレージはドメインを解釈しません。完全なシーンを不透明なペイロードとしてstate-a.khr と state-b.khr に交互に保存し、不変の内容アドレス blob、チェックサム、参照 blob 集合で検証します。
1
不足する blob を公開する
それを参照する状態を公開する前に、必要なデータを保存します。
2
非アクティブ側を書き込む
出力先の隣で新しいスロットを構築し、フラッシュします。
3
アトミックに公開する
新しいスロットを永続化します。公開に失敗しても以前の有効なスロットが残ります。
復旧と回収
開くときは最新の有効状態を選び、新しい側が破損していれば他方に戻れます。blob は読み取り専用メモリマップを使えますが、シーンの利用者へその詳細を公開しません。 明示的なガベージコレクションは、両方の有効なディスク状態と、undo 履歴を含む生存中のシーンスコープが参照する blob を保持します。アプリケーションの担当範囲
アプリは.khrproj、名前、現在ページ、undo グループ、UI 投影を担当します。レンダラー、パイプライン、Agent はスナップショットを読み意味パッチを提出し、保存ファイルへ直接書き込みません。