Files
transcriber/docs/adr/ADR-2026-08-15-record-snapshot-columns.md
T
av 3a2da3004b приём и чтение записей сведены к одному контракту приложения
- адреса приложения переехали в своё пространство `/app/`, опрос готовности
  убран целиком: рубеж и причину остановки владелец узнаёт карточкой записи,
  текст — отдельным адресом названного вида
- заведена единая точка отображения доменной ошибки и слой, приводящий к той же
  форме отказы библиотеки: тело несёт машиночитаемый код рядом с сообщением
- у записи появились имя файла отправителя, длительность и размер своими
  колонками, а у ленты владельца — свой индекс: без него страница сканировала
  весь архив сервиса
2026-08-15 13:51:23 +03:00

3.1 KiB
Raw Blame History

Длительность и размер лежат колонками записи, и равенство со строкой файла не поддерживается

  • Дата: 2026-08-15
  • Источник: openspec/changes/archive/2026-08-15-app-json-contract/design.md, раздел «Три новых колонки записи и один шаг схемы»

Решение

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

Почему

Обе величины показываются в списке, а список по норме storage читается без содержимого. Ревью дизайна возражало: величины станут копиями, которые некому держать равными. Решением владельца колонки остались, а равенство объявлено ненужным: «на записи лежит снимок принятого, взятый приёмом один раз; на файле — величины той копии, которой файл является сейчас». Уточнение длительности — перечитали метаданные, сменили источник, нарезали длинную запись — меняет вторые и не трогает первые. Это разные вопросы: «что человек прислал» и «что лежит сейчас».

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

Последствия

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