---
title: Жизненный цикл версий
description: Неизменяемые версии пайплайнов — почему правка это всегда новый карв, а не редактирование, и как версии промоутятся, пинятся и откатываются.
locale: ru
version: 0.2.0
canonical: https://enterium-developer-docs.pages.dev/developers/ru/pipelines/versioning/
---

> Documentation index: https://enterium-developer-docs.pages.dev/developers/llms.txt — every page of this portal has a Markdown twin at <route>.md; the frozen API contract is at https://enterium-developer-docs.pages.dev/developers/api/openapi.json.

Код пайплайна **неизменяем в пределах версии**. Как только `v3.1.16`
существует, её папка больше не редактируется — любая правка, сколь угодно
малая, становится **новым карвом**: байт-копия предыдущей версии плюс
изменённые файлы, зарегистрированная в каталоге под следующим номером.

## Зачем неизменяемость

- **Воспроизводимость.** `pipeline_run` записывает исполненную версию;
  поскольку та не может измениться под ним, любой прошлый прогон можно
  перечитать — или перезапустить — ровно таким, каким он был.
- **Мгновенный откат.** Промоушен — перестановка указателя `latest`
  (и пина дейлирана). Откат — перестановка обратно. Без revert-коммитов,
  без деплоя откатанных файлов, без двусмысленного «почти то же самое».
- **Безопасная параллельность.** Сессии, карвящие следующую версию, не
  могут дестабилизировать версию, на которую запинен прод.

## Жизненный цикл версии

1. **Карв** — скопировать папку текущей версии под следующим номером,
   внести правку, обновить `manifest.yaml`, если изменился список шагов
   или контракт.
2. **Регистрация** — однострочная запись в `pipelines/catalog.yaml`.
3. **Верификация** — прогнать на реальных данных в dev-контуре; сравнить
   качество вывода с действующей версией.
4. **Промоушен** — передвинуть `latest` и перепинить дейлиран. Промоушен
   прод-дефолта — решение, гейтуемое владельцем.
5. **Хранение предшественника** — предыдущая версия остаётся в списке как
   цель отката. Отжившие линии удаляются из дерева только явным решением
   об очистке; история остаётся в git.

## Конвенции нумерации

- Версии следуют SemVer на пайплайн (`vMAJOR.MINOR.PATCH`), независимо от
  версий модулей самой платформы.
- **Мажорная линия отмечает архитектурное поколение.** Пример: для
  Collect линия v3 — поколение векторного ранжирования (по эмбеддингам);
  v1/v2 — поколение по ключевым словам. Обе линии сосуществуют в
  каталоге, старшая остаётся аварийным фолбэком.
- Поведенческое изменение при неизменном контракте манифеста — MINOR;
  фикс в рамках того же поведения — PATCH.

## Пины

Ночной дейлиран не следует за `latest` слепо: он пинит версии Collect и
Generate явно. Это даёт осознанный двухшаговый промоушен — сначала
приземлить версию, затем передвинуть пин — и регрессия, найденная между
шагами, никогда не доезжает до флота.
