Files
transcriber/docs/adr/ADR-2026-08-14-provider-payload-stored-verbatim.md
T
av 1576d06735 внутренняя модель перестроена вокруг аудиозаписи
- audiorecords вместо transcribe_jobs: приложения (texts, structures,
  recognitions, record_events, topics) живут своими коллекциями, ссылки на
  исходник и на приведённую копию перестали переставляться
- рубеж называет достигнутое, отказ стал признаком остановки с причиной, а
  сторожей стало двое: число отказов и время в рубеже
- воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг
  выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
2026-08-14 20:20:33 +03:00

3.7 KiB
Raw Blame History

Ответ распознавателя хранится дословно, двоичной формой и вложением

  • Дата: 2026-08-14
  • Источник: openspec/changes/archive/2026-08-14-record-centric-model/design.md, раздел «Сырой ответ провайдера хранится вложением, а не колонкой»

Решение

Ответ SpeechKit сохраняется целиком — сообщения потока подряд, каждое своей двоичной записью с длиной впереди, — и лежит вложением коллекции попыток распознавания, а не колонкой.

Почему

Цитата источника:

Хранится он вообще потому, что результат операции у провайдера не переспрашивается. Отвергнутый вариант — не хранить и разобрать на лету: дешевле сегодня, но связь реплики с говорящим мы строить пока не умеем, и когда научимся, архив пересчитать будет не из чего, а повторная операция стоит денег за каждую запись.

Вложением, а не колонкой:

Ответ на многочасовую запись — мегабайты. Хранилище читает запись целиком, а шаг опроса читает строку попытки раз в несколько секунд: положенный колонкой, ответ ехал бы в память при каждом опросе — тот же промах, что расшифровка в перечне колонок захвата сегодня.

Двоичной формой, а не текстовой, — решение ревью кода того же изменения. Замер: текстовое представление собирается по нашей скомпилированной схеме и молча выбрасывает поля, которых в ней нет, а провайдер добавляет их без предупреждения. Двоичная форма неизвестные поля переносит: они переживают запись и чтение и станут читаемыми, когда схема обновится. Ради этого архив и заводился.

Последствия

  • + архив пересчитывается из сохранённого без единого рубля: связь реплики с говорящим станет доступна, когда мы научимся её читать.
  • + шаг опроса читает строку попытки, не поднимая мегабайты в память.
  • формат файла на диске объявлен необратимым: сохранённое не читается глазами и не разбирается ничем, кроме нашего же кода, а прочесть архив без сервиса нельзя вовсе.
  • каталог данных растёт быстрее прежнего: ответ многословнее самой расшифровки — несёт альтернативы, время каждого слова и разбор говорящих. Потолок в 256 МиБ на вложение назван строкой в database.md, а сколько там на деле у шестичасовой записи, не мерил никто.