- audiorecords вместо transcribe_jobs: приложения (texts, structures, recognitions, record_events, topics) живут своими коллекциями, ссылки на исходник и на приведённую копию перестали переставляться - рубеж называет достигнутое, отказ стал признаком остановки с причиной, а сторожей стало двое: число отказов и время в рубеже - воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
3.7 KiB
Ответ распознавателя хранится дословно, двоичной формой и вложением
- Дата: 2026-08-14
- Источник: openspec/changes/archive/2026-08-14-record-centric-model/design.md, раздел «Сырой ответ провайдера хранится вложением, а не колонкой»
Решение
Ответ SpeechKit сохраняется целиком — сообщения потока подряд, каждое своей двоичной записью с длиной впереди, — и лежит вложением коллекции попыток распознавания, а не колонкой.
Почему
Цитата источника:
Хранится он вообще потому, что результат операции у провайдера не переспрашивается. Отвергнутый вариант — не хранить и разобрать на лету: дешевле сегодня, но связь реплики с говорящим мы строить пока не умеем, и когда научимся, архив пересчитать будет не из чего, а повторная операция стоит денег за каждую запись.
Вложением, а не колонкой:
Ответ на многочасовую запись — мегабайты. Хранилище читает запись целиком, а шаг опроса читает строку попытки раз в несколько секунд: положенный колонкой, ответ ехал бы в память при каждом опросе — тот же промах, что расшифровка в перечне колонок захвата сегодня.
Двоичной формой, а не текстовой, — решение ревью кода того же изменения. Замер: текстовое представление собирается по нашей скомпилированной схеме и молча выбрасывает поля, которых в ней нет, а провайдер добавляет их без предупреждения. Двоичная форма неизвестные поля переносит: они переживают запись и чтение и станут читаемыми, когда схема обновится. Ради этого архив и заводился.
Последствия
+архив пересчитывается из сохранённого без единого рубля: связь реплики с говорящим станет доступна, когда мы научимся её читать.+шаг опроса читает строку попытки, не поднимая мегабайты в память.−формат файла на диске объявлен необратимым: сохранённое не читается глазами и не разбирается ничем, кроме нашего же кода, а прочесть архив без сервиса нельзя вовсе.−каталог данных растёт быстрее прежнего: ответ многословнее самой расшифровки — несёт альтернативы, время каждого слова и разбор говорящих. Потолок в 256 МиБ на вложение назван строкой вdatabase.md, а сколько там на деле у шестичасовой записи, не мерил никто.