# Ответ распознавателя хранится дословно, двоичной формой и вложением - **Дата:** 2026-08-14 - **Источник:** openspec/changes/archive/2026-08-14-record-centric-model/design.md, раздел «Сырой ответ провайдера хранится вложением, а не колонкой» ## Решение Ответ SpeechKit сохраняется целиком — сообщения потока подряд, каждое своей двоичной записью с длиной впереди, — и лежит **вложением** коллекции попыток распознавания, а не колонкой. ## Почему Цитата источника: > Хранится он вообще потому, что **результат операции у провайдера не > переспрашивается**. Отвергнутый вариант — не хранить и разобрать на лету: > дешевле сегодня, но связь реплики с говорящим мы строить пока не умеем, и > когда научимся, архив пересчитать будет не из чего, а повторная операция стоит > денег за каждую запись. Вложением, а не колонкой: > Ответ на многочасовую запись — мегабайты. Хранилище читает запись целиком, а > шаг опроса читает строку попытки раз в несколько секунд: положенный колонкой, > ответ ехал бы в память при каждом опросе — тот же промах, что расшифровка в > перечне колонок захвата сегодня. Двоичной формой, а не текстовой, — решение ревью кода того же изменения. Замер: текстовое представление собирается по нашей скомпилированной схеме и **молча выбрасывает поля, которых в ней нет**, а провайдер добавляет их без предупреждения. Двоичная форма неизвестные поля переносит: они переживают запись и чтение и станут читаемыми, когда схема обновится. Ради этого архив и заводился. ## Последствия - `+` архив пересчитывается из сохранённого без единого рубля: связь реплики с говорящим станет доступна, когда мы научимся её читать. - `+` шаг опроса читает строку попытки, не поднимая мегабайты в память. - `−` **формат файла на диске объявлен необратимым**: сохранённое не читается глазами и не разбирается ничем, кроме нашего же кода, а прочесть архив без сервиса нельзя вовсе. - `−` каталог данных растёт быстрее прежнего: ответ многословнее самой расшифровки — несёт альтернативы, время каждого слова и разбор говорящих. Потолок в 256 МиБ на вложение назван строкой в `database.md`, а сколько там на деле у шестичасовой записи, не мерил никто.