# Обязательность владельца держит схема, а не приём - **Дата:** 2026-08-15 - **Источник:** openspec/changes/archive/2026-08-15-remove-telegram-intake/design.md, разделы «Схема теряет только необязательность владельца» и «Владелец записи перестаёт быть необязательным и в модели» ## Решение Колонка владельца у аудиозаписи и у файла перестала принимать пустое значение — шагом схемы `202608140003`. Ничья запись не заводится ничем: ни приёмом, ни конвейером, ни рукой в панели. Поле владельца в модели стало обычной строкой вместо ссылки, которой позволено отсутствовать. Существующие строки шаг **не проверяет**, и это принято сознательно: искать ничьи строки надо запросом до выкладки. ## Почему Цитата источника: > **Держать обязательность одним приёмом, схему не трогать.** Так было задумано > сперва, и это оставляло дыру: ничью запись заводили руками в панели, она > уходила в конвейер, стоила денег на распознавание и не доставалась потом > никому. Решение владельца от 2026-08-14 — обязательность держит схема. Прежнее решение было обратным и записано спекой `storage`: «Колонка MUST допускать пустое значение… Обязательность для приёма по HTTP держит сама capability `intake`, а не схема». Цену за него платили записи входа Telegram — у них владельца не было по построению. Вход убран ([ADR-2026-08-15-telegram-intake-removed-temporarily](ADR-2026-08-15-telegram-intake-removed-temporarily.md)), исключение исчезло вместе с ним, и владелец сервиса подтвердил, что записей без владельца в боевой базе нет. Про непроверку существующих строк цитата источника: > **Проверяется это запросом, а не прогоном шага**, и разница выяснилась ревью с > оракулом: хранилище держит обязательность связи проверкой записи при > сохранении, а не ограничением таблицы. Смена признака на базе с ничьей записью > проходит зелёным и такую запись оставляет… Заставить шаг считать строки самому > владелец решил не делать: безопасность держится ручной проверкой, и она названа > первым шагом плана перехода. Правило «пустой владелец не совпадает ни с одной записью» при этом осталось и избыточным не стало: схема запрещает **заводить** ничью запись, а правило — **спрашивать** ничьим именем. ## Последствия - `+` значения «владельца нет» не существует ни на одном уровне: ни в схеме, ни в модели, ни в отборе. - `+` дыра «ничью запись заводят руками в панели» закрыта тем же механизмом, что и приём, — одним, а не двумя. - `−` откат шага возвращает необязательность, но операционно недостижим: команд библиотеки сервис не подключает, и это верно для всех шагов схемы проекта. - `−` ничья запись, если её проглядят перед выкладкой, становится незакрываемой: захват выдаёт её воркеру, а всякое сохранение — включая то, которым ставится признак остановки, — отказывает. Следа не остаётся ни в метрике, ни в журнале событий, только строка в логе контейнера.