Files
transcriber/tasks/items/pin-runtime-image-base.md
T
av f7a8a1df9d tasks: восемь записей интейка получили место в плане стройки
- migrations-step-norm-and-tests, gate-steps-subject-guard и
  review-config-from-go-upgrade уехали в голову: слой проверок, которым верят
  все задачи ниже;
- rollback-restores-wrong-session-duration встал рядом с соседом про откат,
  bot-api-only-through-bot-client — рядом с чисткой транспорта,
  pin-runtime-image-base — перед spa-skeleton, откуда начинаются пересборки;
- pipeline-spec-purpose-drift закрыта реализованной, а
  docs-consistency-2026-08-13 переписана под пять оставшихся находок: шестую
  свело повышение раскладки.
2026-08-13 16:11:58 +03:00

3.6 KiB
Raw Blame History

🧹 Закрепить версию рантайм-базы образа

  • Тип: chore
  • Категория: Очередь — Встаёт прямо перед spa-skeleton: частые пересборки образа начинаются с приложением, и до него незакреплённая база ничего не ломает.
  • Зачем: Финальный слой Dockerfile собирается на alpine:latest, а task image идёт с --pull, поэтому два образа из одного коммита с разницей в неделю несут разный ffmpeg — регрессия конвертации после такой пересборки выглядит как задачи в failed при пустом диффе репозитория, и откат на прежний коммит её не чинит.

Класс тот же, ради которого задача go-1-26-upgrade завела шаг сверки версий: объявленное и собранное расходятся, а сверять некому. Разница в том, что там расходились числа внутри репозитория, а здесь репозиторий вообще не называет числа — версия рантайм-базы задана словом «последняя».

Цена названа условием, а не замером: сколько именно и как часто меняется ffmpeg в alpine:latest, никто не мерил. Известно, что он в таблице отказов docs/architecture.md стоит со столбцом «Отдаёт мусор»: «Выходной файл пуст, отказ вылезет на распознавании».

Перечень мест, где объявлена версия Go, эта задача не расширяет: он закрыт решением go-1-26-upgrade, и рантайм-база — другой предмет.

Затрагивает

  • финальный слой Dockerfile — тег базового образа;
  • раздел «Деплой» в docs/architecture.md.

Критерии приёмки

  • Репозиторий называет версию рантайм-базы числом, а не словом «последняя». Оракул — grep по Dockerfile: тег финального слоя содержит мажор и минор.
  • Два образа, собранные из одного коммита, несут один ffmpeg. Оракул — собрать task image дважды с интервалом и сравнить ffmpeg -version внутри обоих.
  • Решение записано там, где его найдёт разбор отказа конвертации. Оракул — раздел «Деплой» docs/architecture.md называет закреплённую базу и причину.
  • Гейт зелёный целиком. Оракул — task gate.

Рамки

Версию базы выбирает человек: перескок на минор новее может принести другой ffmpeg ровно с тем же исходом, ради предотвращения которого задача и заведена. Выкладку не запускаем.

Если решено оставить latest, задача кончается записью принятого остатка в docs/architecture.md, а не правкой Dockerfile. Это законный исход.