- порядок беклога и роадмапа назначен слоями: проверки, которым можно верить → долги входа → владелец записи и контракт API → конвейер под тестами → приложение и возможности поверх; у каждого движения записана причина; - заведены восемь задач под пункты «Завершения», которых не закрывала ни одна запись, — цель any-audio-source была без задач вовсе; - у четырёх задач сняты критерии, требовавшие того, что делает задача ниже по очереди; исправлены ссылки на несуществующий repo/sqlite и на отменённую разведку об очереди.
43 lines
3.6 KiB
Markdown
43 lines
3.6 KiB
Markdown
# 🧹 Закрепить версию рантайм-базы образа
|
||
|
||
- **Тип:** chore
|
||
- **Категория:** Очередь — Закрепление базы образа окупается при частых пересборках, а они начнутся с приложением.
|
||
- **Зачем:** Финальный слой 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`. Это законный исход.
|