Пространства и проекты
Notarium различает две единицы организации: пространство (space) — изолированную базу и границу безопасности, и проект — помеченную папку внутри пространства. Это разные сущности с разными задачами: пространство изолирует, проект — организует работу.
Пространство — единица изоляции
Пространство — это самодостаточная база знаний: свой индекс, граф, поиск, дерево, журнал истории и свой состав участников. Пространства не пересекаются: заметки, поиск и связи одного не видны из другого. Пространство несёт две роли разом — организация («личное» / «работа» / «архив») и граница безопасности: именно на уровне пространства решается, кто и что видит.
- Каждое пространство обслуживается ровно одним экземпляром движка — изоляция обеспечивается самой архитектурой.
- Идентичность пространства — стабильный внутренний
space_id; slug (URL-safe: строчные латинские буквы, цифры, дефисы и подчёркивания —[a-z0-9_-]) — это переименуемый адрес и URL-хэндл, аdisplayName— человекочитаемая метка. Переименование slug безопасно: старое имя уходит в alias-историю и продолжает резолвиться (/s/<старый>редиректит на текущий). - Адресация:
/s/<slug>в интерфейсе и/api/s/<slug>/…в REST.
Подробнее о ролях и приватности — в разделе Модель доступа.
Личное пространство
У каждого пользователя гарантированно есть личное пространство — его дом по умолчанию:
- оно создаётся при выдаче учётной записи и неудаляемо;
- служит лендингом по умолчанию и хранит приватную память агентов о вас и ваш профиль;
- это полноценное рабочее пространство: в нём можно сразу вести заметки и помечать проекты, не заводя ничего отдельного.
Это единственное отличие личного пространства от обычного. Другой участник с доступом на чтение увидел бы вашу приватную память и личные заметки — поэтому приглашения в личное пространство запрещены на сервере, а не только скрыты в интерфейсе.
Проект — помеченная папка
Проект — это лёгкая опциональная сущность: обычная папка-поддерево внутри пространства, которую пометили как проект. Контент не обязан жить в проектах — папка без метки остаётся просто папкой.
Метка — dot-файл .notariummeta в корне папки (JSON со стабильным id). Он путешествует вместе с папкой при любом переносе, в том числе внешнем (git, файловый менеджер), — идентичность проекта якорится в самой папке, а не только в базе.
myspace/
├─ research/
│ └─ .notariummeta ← помеченная папка = проект
├─ inbox/ ← обычная папка (не проект)
└─ ...
- Адресация — хэндл
(space, slug)по модели GitLabgroup/project. Slug проекта уникален внутри пространства; одноимённость между пространствами разводится полемspace. Корневой проект схлопывается до просто<space>(напримерmain, а неmain/main). - Slug проекта — транслитерированный kebab от
displayNameили последнего сегмента пути (не всего пути). - Пометить папку, снять метку или создать «New project» — действия человека (право
space:write). Агент контейнеры не создаёт: он владеет содержимым, человек — структурой. - Создание пространства автоматически помечает его корень как проект — чтобы агент мог сразу писать в
<space>без ручной пометки.
Проект — это охват и адрес, но не граница безопасности: решение о доступе всегда остаётся за членством в пространстве. Как агент адресует проекты — см. Интент-инструменты.
Проекты опираются на служебную БД и локальное хранилище меток — без них проект не открыть.