スペースとプロジェクト
Notarium は組織化の単位を 2 つに分けます。スペース — 隔離されたナレッジベースであり、セキュリティ境界 — と、プロジェクト — スペース内のタグ付きフォルダです。この 2 つは役割の異なる別物です。スペースは隔離し、プロジェクトは整理します。
スペース — 隔離の単位
スペースは自己完結したナレッジベースです。独自のインデックス、グラフ、検索、ツリー、履歴ログ、そして独自のメンバー構成を持ちます。スペース同士は重なりません。あるスペースのノート・検索・リンクは、別のスペースからは見えません。スペースは 2 つの役割を同時に担います。組織化(「個人」/「仕事」/「アーカイブ」)と、セキュリティ境界です。誰が何を見るかは、まさにスペースのレベルで決まります。
- 各スペースはちょうど 1 つのエンジンインスタンスによって処理されます。隔離はアーキテクチャそのものに由来します。
- スペースの同一性は安定した内部の
space_idです。slug(URL セーフ: 小文字のラテン文字、数字、ハイフン、アンダースコア —[a-z0-9_-])は変更可能なアドレスであり URL ハンドルで、displayNameは人間が読めるラベルです。slug のリネームは安全です。古い名前はエイリアス履歴に移り、解決され続けます(/s/<old>は現在のものへリダイレクトします)。 - アドレッシング: インターフェースでは
/s/<slug>、REST では/api/s/<slug>/…。
ロールとプライバシーの詳細は、アクセスモデルを参照してください。
個人スペース
すべてのユーザーには必ず個人スペースがあります。それがデフォルトのホームです。
- アカウントのプロビジョニング時に作成され、削除できません。
- デフォルトのランディングページとして機能し、あなたとあなたのプロフィールに関するエージェントのプライベートメモリを保持します。
- 一人前のワークスペースです。別途何かをセットアップすることなく、すぐにノートを取り、プロジェクトにタグを付け始められます。
これが個人スペースと通常のスペースとの唯一の違いです。読み取りアクセスを持つ別のメンバーは、あなたのプライベートメモリと個人ノートを見てしまうことになります。そのため、個人スペースへの招待はインターフェースで隠されているだけでなく、サーバー側で禁止されています。
プロジェクト — タグ付きフォルダ
プロジェクトは軽量でオプショナルなエンティティです。スペース内にあるごく普通のフォルダのサブツリーを、プロジェクトとしてタグ付けしたものです。コンテンツはプロジェクトの中に置かなければならないわけではありません。タグの付いていないフォルダは、ただのフォルダのままです。
タグはフォルダのルートにある dot ファイル .notariummeta(安定した id を持つ JSON)です。これはフォルダの移動に伴って一緒に移動します。外部の移動(git、ファイルマネージャ)も含みます。プロジェクトの同一性は、データベースだけでなくフォルダそのものにアンカーされているのです。
myspace/
├─ research/
│ └─ .notariummeta ← タグ付きフォルダ = プロジェクト
├─ inbox/ ← 普通のフォルダ(プロジェクトではない)
└─ ...
- アドレッシングはハンドル
(space, slug)で、GitLab のgroup/projectモデルに倣います。プロジェクトの slug はスペース内で一意です。スペース間の同名はspaceフィールドで区別されます。ルートプロジェクトは単なる<space>に畳み込まれます(例:main/mainではなくmain)。 - プロジェクトの slug は、
displayNameまたはパスの最後のセグメント(パス全体ではない)を字訳した kebab-case 形です。 - フォルダにタグを付ける、タグを外す、あるいは「New project」を作成することは、人間のアクションです(
space:write権限)。エージェントはコンテナを作りません。エージェントはコンテンツを所有し、人間は構造を所有します。 - スペースの作成は、そのルートを自動的にプロジェクトとしてタグ付けします。手動でタグを付けなくても、エージェントがすぐに
<space>へ書き込めるようにするためです。
プロジェクトはスコープでありアドレスですが、セキュリティ境界ではありません。アクセスの判断は常にスペースのメンバーシップに委ねられます。エージェントがプロジェクトをどうアドレッシングするかは、インテントツールを参照してください。
プロジェクトはメタデータデータベースとローカルのタグストレージに依存します。これらがなければプロジェクトは開けません。