Files
selfpost/docs/roadmap.md
T
mixeme 44683a4996 docs: domain-admin may cover multiple assigned domains
Clarify that the global administrator sets which domains a domain-admin can manage.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-09 13:21:43 +03:00

6.0 KiB

Дорожная карта: открытая работа (1.x+)

Статус: внутренний трекер расширений границ v1.0 после явного согласования (product.md, .cursor/rules/agent-rules.mdc). Детальный дизайн — в plans/. Пункты со статусом кандидат требуют OK до кодирования.

Версионирование: по умолчанию SemVer MINOR в линии 1.x+ (1.1.0…), если дефолты и миграции совместимы с 1.0.0. Major 2.x — только при явном breaking.

Процесс: development.md. История закрытых фаз — в git log и CHANGELOG.md.


Индекс

ID Тема Статус План
web-split Разбиение internal/web согласовано plans/web-split.md
domain-admin Роль администратора домена согласовано plans/domain-admin.md
inbound-relay Входящий релей (backup-MX / пересылка) согласовано plans/inbound-relay.md
contributing CONTRIBUTING.md кандидат

Рекомендуемый порядок (не обязателен): web-split → domain-admin → inbound-relay — сначала разрез пакета, затем сквозная авторизация роли, затем новый вертикальный срез входящего релея. Отклонение допустимо; жёстких фаз нет.

После /clear — пункт со статусом согласовано или в работе, затем чеклист в linked plan.


inbound-relay

Цель: опциональный приём почты на порт 25 для явно настроенных доменов и пересылка на upstream (backup-MX / relay-forwarder). По умолчанию выключено (INBOUND_RELAY_ENABLE=false); исходящий тракт без флага не меняется.

Граница: расширение v1.0 — product.md исключает приём входящей почты и mailbox'ы. Это relay/forward, не IMAP/POP3/webmail; антиспам-движок — вне образа, только точка подключения.

Готово, когда: см. критерии в plans/inbound-relay.md.

Зависимости / риски: готовый исходящий тракт; open relay/backscatter; расширение поверхности атаки (порт 25 на приём). Модель: Opus. Порядок: рекомендуется после web-split и domain-admin. Версия: целевой bump 1.x; возможен 2.x — уточнить по итогам реализации.


domain-admin

Цель: роль с доступом к одному или нескольким назначенным доменам (перечень задаёт глобальный администратор) — приложения, DKIM/DNS, журнал отправки по каждому из них; без глобальных операций (добавление доменов, полный бэкап, очередь, mail.log).

Граница: расширение v1.0 — product.md фиксирует одного администратора. Не вторая копия всевластного админа, а ограниченный доступ к назначенным доменам (одному или нескольким).

Готово, когда: см. plans/domain-admin.md.

Зависимости / риски: таблица пользователей, роль в сессии, авторизация в каждом хендлере, setup/бэкап. Порядок: рекомендуется после web-split, до inbound-relay. Версия: 1.x MINOR при совместимой миграции текущего админа в глобального.


web-split

Цель: осознанно разрезать internal/web (или зафиксировать плоский пакет) перед ростом от inbound-relay и domain-admin.

Граница: внутренний рефакторинг; поведение панели для оператора не меняется.

Готово, когда: пакет разрезан по выбранной схеме или зафиксировано, что остаётся плоским — см. plans/web-split.md.

Зависимости / риски: экспорт пакетно-приватного API. Порядок: рекомендуется первым среди согласованных фич (до domain-admin и inbound-relay). Версия: 1.x, сам по себе breaking не тянет.


contributing

Цель: CONTRIBUTING.md в корне — dev loop, проверки перед PR, протокол коммитов; development.md ссылается, не дублирует.

Граница: документация процесса; уместна при внешнем потоке PR.

Готово, когда: файл в корне; development.md не дублирует его.

Зависимости / риски: пока один разработчик и нет PR — низкий приоритет. Версия: без значения для semver.