Clarify that the global administrator sets which domains a domain-admin can manage. Co-authored-by: Cursor <cursoragent@cursor.com>
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.