# Приложение живёт своим пространством адресов, а не общим с хранилищем - **Дата:** 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`. Оплачено стадией — на сервере данных нет, внешней программы на прежнем контракте не существует.