Выпуски в main, бета в ветке beta
Решение владельца 28.09.2026. Заменяет ADR-0017; из него действуют: выпуск — метка
vX.Y.Z, обновление назад не ходит, бета — выбор владельца.
В main живут только выпуски. Вся работа после 0.4.8 (0.4.9 и дальше) идёт в ветку beta
и попадает в main выпуском. Бета-обновления — это Update branch beta: решает ветка.
iva beta и кнопка «🧪 Обновления» ставят ветку beta и, для прежних бета-сборок, флаг
iva.beta=true; iva stable возвращает ветку main и снимает флаг. Не записалась ветка —
команда отказывает и флаг не трогает. Прежний выбор беты (флаг при main или без ветки)
обновление переводит на ветку beta и переписывает iva.updateBranch один раз; своя ветка
(release/<v>) остаётся как есть. Обновление ни в одной ветке не уводит установку назад:
цель — предок установленного коммита значит «уже последняя». Активного коммита нет в зеркале — отказ: безопасность перехода не доказать. Ветка beta недоступна —
отказ одной строкой, а не HEAD зеркала. Откат только явный: repair.sh, iva rollback.
install.sh с IVA_BETA=1 всегда ставит ветку beta (чужой BRANCH — строка
предупреждения), над существующей установкой пишет выбор в зеркало и .git до передачи
обновлятору; установка беты: curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/beta/install.sh | IVA_BETA=1 bash.
repair.sh идёт только за настроенной веткой; на main не откатывает установку, чей коммит
есть в любой ветке origin и новее выпуска; origin не ответил — ремонт отменён, ничего не
сброшено. Вся сеть ремонта (головы, ветка, метки) идёт до сброса, сброс один; прежний флаг при main ремонт переводит на beta, как обновлятор. Установку любой версии, 0.4.8 включительно, переводит на бету beta.sh:
curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/beta/beta.sh | bash; он
называет прежнюю ветку и проверяет, что активная версия сменилась.
Обоснование. Обновлятор 0.4.8 и старше выбора не знает и ставит вершину своей ветки. Пока
принятые правки ложились в main, кнопка «Обновить» у каждой старой установки ставила
непроверенную вершину: выбор ADR-0017 до них не доходил. Когда в main только выпуск,
старый обновлятор сам ставит выпуск, а бету получает только тот, кто её выбрал.
Цена. Две ветки: выпуск — это слияние beta в main с меткой, исправления идут в beta и
доходят до main следующим выпуском, бэкпортов по-прежнему нет. Установка 0.4.8 не узнает
о бете, пока владелец сам не запустит beta.sh или не обновится до выпуска с iva beta.
Отвергнутые альтернативы. Одна ветка с метками (ADR-0017) — старый обновлятор ставит вершину. Принудительный перевод старых установок на выпуск кодом — такого кода у них нет.
View original Markdown ↗