# Длительность и размер лежат колонками записи, и равенство со строкой файла не поддерживается - **Дата:** 2026-08-15 - **Источник:** openspec/changes/archive/2026-08-15-app-json-contract/design.md, раздел «Три новых колонки записи и один шаг схемы» ## Решение Длительность и размер принятого легли колонками аудиозаписи, хотя обе величины уже есть у строки её файла. Равенство между ними не поддерживается никем — намеренно. «Неизвестно» эти колонки не выражают: ноль означает ноль. ## Почему Обе величины показываются в списке, а список по норме `storage` читается без содержимого. Ревью дизайна возражало: величины станут копиями, которые некому держать равными. Решением владельца колонки остались, а равенство объявлено **ненужным**: «на записи лежит снимок принятого, взятый приёмом один раз; на файле — величины той копии, которой файл является сейчас». Уточнение длительности — перечитали метаданные, сменили источник, нарезали длинную запись — меняет вторые и не трогает первые. Это разные вопросы: «что человек прислал» и «что лежит сейчас». Отличимость «неизвестно» от нуля снята после ревью кода и по замеру: числовая колонка хранилища пустого значения не держит вовсе и кладёт пустое нулём. Платить за отличимость четвёртой колонкой-признаком либо текстовым типом у чисел не за что — обе величины ставит приём и ставит всегда, а запись с непрочитанными метаданными отвергается отказом и не заводится. ## Последствия - `+` страница списка не читает по строке файла на каждую запись; - `+` смысл у двух пар чисел разный и записан нормой, а не подразумевается; - `−` в применённом шаге схемы навсегда остаются две колонки, повторяющие величины строки файла; расхождение между ними — не поломка, и заметить его нечем; - `−` запись, заведённая рукой в панели без величин, покажет человеку ноль.