Files
transcriber/tasks/items/duration-bounds-from-metadata.md
T
av b4b19db6e4 tasks: заведён урожай ревью remove-telegram-intake
- шесть записей по кластерам причин: журнал под внешним значением, нулевой
  код ответа в журнале, затирание вложения бедным ответом, открытый анониму
  адрес подтверждения почты, рубеж расшифровки без работы, пределы длительности
- находка про код 500 у отказа приёма дописана в json-api-for-spa: там живёт
  единая точка отображения доменной ошибки
- telegram-account-link и bot-api-only-through-bot-client оставлены с оговоркой,
  что предмета у них нет до возвращения входа
2026-08-15 07:46:16 +03:00

3.9 KiB

🔬 Пределы длительности, приходящей из метаданных

  • Тип: research
  • Категория: Очередь — Заведена урожаем ревью и встала в конец машинально: место в плане стройки назначает человек.
  • Зачем: Длительность приходит от ffprobe числом и не проверяется ничем: приведение к целому переполняется, а испорченная гистограмма чинится только перезапуском.
  • Теги: review-2026-08-15

Длительность записи сервис берёт у источника метаданных и не проверяет ни на знак, ни на потолок. Дальше сервис приводит её к целому, умножает на тысячу и кладёт колонкой записи, а заодно отправляет в гистограмму длительностей.

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

Потолок записи у проекта объявлен — шесть часов, — и из него выведен предел размера файла. Длительность такого предела не имеет вовсе.

Вопрос

Может ли ffprobe вернуть длительность вне диапазона целого на входе, который собрал отправитель, — и какой предел ставить на границе адаптера?

Что для ответа нужно узнать:

  • какое поле и в какой форме ffprobe берёт за длительность у контейнеров, которые сервис принимает: доверяет ли объявленному в контейнере числу или считает по потоку;
  • есть ли контейнер, где число объявлено явно и потому подделывается: Matroska либо Ogg с подделанной меткой позиции — первые кандидаты;
  • что делает приём, если длительность отрицательна либо больше объявленного потолка: отвергать запись, обрезать значение или принимать, назвав в журнале.

Куда ляжет ответ

Наблюдение о поведении ffprobe — в docs/research/, своей записью с командой и условиями замера: разведки о ffmpeg у проекта пока нет ни одной, а открытые вопросы про долгие записи и видео стоят в architecture.md. Выбранный предел — задачей следующим прогоном.

Рамки

Прогон на реальных ключах Yandex запрещён и здесь не нужен: разведка меряет ffprobe, а не распознавание. Найдено прогоном ревью задачи remove-telegram-intake 2026-08-15, враждебный проход, секция свойств без построенного пути — путь не достроен именно потому, что нужен специально собранный контейнер.