Spaces und Projekte
Notarium zieht eine klare Linie zwischen zwei Organisationseinheiten: dem Space — einer isolierten Wissensbasis und einer Sicherheitsgrenze — und dem Projekt — einem getaggten Ordner innerhalb eines Space. Das sind zwei verschiedene Dinge mit verschiedenen Aufgaben: ein Space isoliert, ein Projekt organisiert.
Der Space — die Einheit der Isolation
Ein Space ist eine in sich geschlossene Wissensbasis: mit eigenem Index, eigenem Graphen, eigener Suche, eigenem Baum, eigenem Verlaufsprotokoll und eigenem Kreis von Mitgliedern. Spaces überschneiden sich nicht: die Notizen, die Suche und die Verknüpfungen des einen sind aus dem anderen nicht sichtbar. Ein Space erfüllt zwei Rollen zugleich — Organisation („persönlich“ / „Arbeit“ / „Archiv“) und Sicherheitsgrenze: auf Space-Ebene wird entschieden, wer was sieht.
- Jeder Space wird von genau einer Engine-Instanz bedient — die Isolation ergibt sich aus der Architektur selbst.
- Die Identität eines Space ist eine stabile interne
space_id; der Slug (URL-sicher: lateinische Kleinbuchstaben, Ziffern, Bindestriche und Unterstriche —[a-z0-9_-]) ist eine umbenennbare Adresse und ein URL-Handle, währenddisplayNameeine menschenlesbare Bezeichnung ist. Ein Slug lässt sich gefahrlos umbenennen: der alte Name wandert in den Alias-Verlauf und löst weiterhin auf (/s/<alt>leitet auf den aktuellen um). - Adressierung:
/s/<slug>in der Oberfläche und/api/s/<slug>/…in REST.
Mehr zu Rollen und Privatsphäre findest du im Abschnitt Zugriffsmodell.
Der persönliche Space
Jeder Nutzer hat garantiert einen persönlichen Space — sein Standard-Zuhause:
- er wird beim Anlegen des Kontos erstellt und kann nicht gelöscht werden;
- er dient als Standard-Landingpage und beherbergt das private Gedächtnis der Agenten über dich sowie dein Profil;
- er ist ein vollwertiger Arbeitsbereich: du kannst sofort Notizen anlegen und Projekte taggen, ohne zuvor irgendetwas separat einzurichten.
Das ist der einzige Unterschied zwischen einem persönlichen und einem gewöhnlichen Space. Ein weiteres Mitglied mit Lesezugriff würde dein privates Gedächtnis und deine persönlichen Notizen sehen — deshalb sind Einladungen in einen persönlichen Space serverseitig verboten und nicht bloß in der Oberfläche ausgeblendet.
Das Projekt — ein getaggter Ordner
Ein Projekt ist eine leichtgewichtige, optionale Entität: ein gewöhnlicher Ordner-Teilbaum innerhalb eines Space, der als Projekt getaggt wurde. Inhalte müssen nicht in Projekten liegen — ein ungetaggter Ordner bleibt einfach ein Ordner.
Der Tag ist eine Dot-Datei .notariummeta im Wurzelverzeichnis des Ordners (JSON mit einer stabilen id). Sie reist bei jeder Verschiebung mit dem Ordner mit, auch bei einer externen (git, Dateimanager) — die Identität eines Projekts ist im Ordner selbst verankert, nicht allein in der Datenbank.
myspace/
├─ research/
│ └─ .notariummeta ← getaggter Ordner = Projekt
├─ inbox/ ← einfacher Ordner (kein Projekt)
└─ ...
- Die Adressierung ist ein Handle
(space, slug), nach demgroup/project-Modell von GitLab. Der Slug eines Projekts ist innerhalb eines Space eindeutig; gleichnamige Projekte über verschiedene Spaces hinweg werden über das Feldspaceauseinandergehalten. Das Wurzelprojekt fällt zu bloß<space>zusammen (z. B.main, nichtmain/main). - Der Slug eines Projekts ist eine transliterierte kebab-case-Form von
displayNameoder des letzten Pfadsegments (nicht des gesamten Pfads). - Einen Ordner taggen, den Tag entfernen oder ein „New project“ anlegen sind menschliche Aktionen (die Berechtigung
space:write). Ein Agent legt keine Container an: ihm gehört der Inhalt, dem Menschen die Struktur. - Beim Anlegen eines Space wird dessen Wurzel automatisch als Projekt getaggt — damit der Agent sofort in
<space>schreiben kann, ohne manuelles Taggen.
Ein Projekt ist ein Scope und eine Adresse, aber keine Sicherheitsgrenze: die Zugriffsentscheidung liegt immer bei der Mitgliedschaft im Space. Wie ein Agent Projekte adressiert, steht unter Intent-Tools.
Projekte stützen sich auf die Metadaten-Datenbank und den lokalen Tag-Speicher — ohne sie lässt sich ein Projekt nicht öffnen.