Жизненный цикл версий
Код пайплайна неизменяем в пределах версии. Как только v3.1.16
существует, её папка больше не редактируется — любая правка, сколь угодно
малая, становится новым карвом: байт-копия предыдущей версии плюс
изменённые файлы, зарегистрированная в каталоге под следующим номером.
Зачем неизменяемость
Заголовок раздела «Зачем неизменяемость»- Воспроизводимость.
pipeline_runзаписывает исполненную версию; поскольку та не может измениться под ним, любой прошлый прогон можно перечитать — или перезапустить — ровно таким, каким он был. - Мгновенный откат. Промоушен — перестановка указателя
latest(и пина дейлирана). Откат — перестановка обратно. Без revert-коммитов, без деплоя откатанных файлов, без двусмысленного «почти то же самое». - Безопасная параллельность. Сессии, карвящие следующую версию, не могут дестабилизировать версию, на которую запинен прод.
Жизненный цикл версии
Заголовок раздела «Жизненный цикл версии»- Карв — скопировать папку текущей версии под следующим номером,
внести правку, обновить
manifest.yaml, если изменился список шагов или контракт. - Регистрация — однострочная запись в
pipelines/catalog.yaml. - Верификация — прогнать на реальных данных в dev-контуре; сравнить качество вывода с действующей версией.
- Промоушен — передвинуть
latestи перепинить дейлиран. Промоушен прод-дефолта — решение, гейтуемое владельцем. - Хранение предшественника — предыдущая версия остаётся в списке как цель отката. Отжившие линии удаляются из дерева только явным решением об очистке; история остаётся в git.
Конвенции нумерации
Заголовок раздела «Конвенции нумерации»- Версии следуют SemVer на пайплайн (
vMAJOR.MINOR.PATCH), независимо от версий модулей самой платформы. - Мажорная линия отмечает архитектурное поколение. Пример: для Collect линия v3 — поколение векторного ранжирования (по эмбеддингам); v1/v2 — поколение по ключевым словам. Обе линии сосуществуют в каталоге, старшая остаётся аварийным фолбэком.
- Поведенческое изменение при неизменном контракте манифеста — MINOR; фикс в рамках того же поведения — PATCH.
Ночной дейлиран не следует за latest слепо: он пинит версии Collect и
Generate явно. Это даёт осознанный двухшаговый промоушен — сначала
приземлить версию, затем передвинуть пин — и регрессия, найденная между
шагами, никогда не доезжает до флота.