Files
transcriber/docs/adr/ADR-2026-08-15-app-namespace.md
T
av 3a2da3004b приём и чтение записей сведены к одному контракту приложения
- адреса приложения переехали в своё пространство `/app/`, опрос готовности
  убран целиком: рубеж и причину остановки владелец узнаёт карточкой записи,
  текст — отдельным адресом названного вида
- заведена единая точка отображения доменной ошибки и слой, приводящий к той же
  форме отказы библиотеки: тело несёт машиночитаемый код рядом с сообщением
- у записи появились имя файла отправителя, длительность и размер своими
  колонками, а у ленты владельца — свой индекс: без него страница сканировала
  весь архив сервиса
2026-08-15 13:51:23 +03:00

2.9 KiB
Raw Blame History

Приложение живёт своим пространством адресов, а не общим с хранилищем

  • Дата: 2026-08-15
  • Источник: openspec/changes/archive/2026-08-15-app-json-contract/design.md, раздел «Переезд в /app/, а слой сессии — на корень»

Решение

Все адреса приложения переехали из /api/ в собственный корень /app/, а слой предъявления сессии повешен на группу корня, а не на перечень адресов.

Почему

Пространство /api/ принадлежит хранилищу: оно вешает туда собственные наборы адресов, и поменять этот префикс нельзя — он литерал библиотеки, а не настройка. Свободных имён сегодня хватает, но соседство остаётся: обновление библиотеки вправе занять новое имя рядом с нашим, и разойдутся они молча — тем же адресом начнёт отвечать не тот обработчик.

Прецедент в проекте уже принят тем же доводом: адреса входа вынесены на /auth/* решением от 2026-08-12.

Слой на корень, а не на перечень: «перечень рос бы с каждым новым адресом приложения, и забытый в нём адрес молча перестал бы принимать куку».

Последствия

  • + соседство с чужими адресами кончилось: имя, занятое библиотекой, наших адресов больше не задевает;
  • + новый адрес приложения получает слой предъявления по построению, а не по памяти того, кто его добавил;
  • правило неизвестного пути перечисляет теперь четыре корня сервиса вместо одного: /api/, /app/, /auth/ и /_/;
  • ограничитель частоты хранилища, настроенный на его собственный корень, наших адресов не покрывает — своё правило заводится нами, и его включение вводит в действие заодно умолчательные правила хранилища;
  • ломка полная: прежние адреса приёма и опроса отвечают 404. Оплачено стадией — на сервере данных нет, внешней программы на прежнем контракте не существует.