Задания, отчёты и патчи, лежавшие в C:\Users\Ochenstarik\projects и в домашней папке, перенесены в agents/. Разложено по агентам там, где имя файла позволяло определить автора; остальное — в _salvage-2026-08-18/ и разбирается вручную. Патчи в notes/salvage-2026-08-18/ — незакоммиченная работа из брошенных рабочих копий: она существовала только на диске. Тяжёлое (релизные архивы, инсталляторы, наборы данных) в репозиторий не попало: оно лежит рядом, в Agent_projects/_archive и Agent_projects/_data. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
6.6 KiB
Codex: выпустить v0.1.0-alpha.20 и закрыть дыру в проверке выпуска
Репозиторий
- https://github.com/ochenstarik-ui/server-monitor-manager
- База:
main@7c43977 - Ветка:
codex/release-alpha20 mainзащищён: PR обязателен, обязательны статусыbuild-and-testиbuild, force-push запрещён- один PR — одна тема; описание PR заполняется после завершения CI
Что произошло
Тег v0.1.0-alpha.19 создан на 7c43977, Release pipeline упал, релиз не опубликован. Номер сожжён и не переиспользуется — так же, как alpha.10 и alpha.11.
Причина в шаге Package bootstrap workflow linux-release.yml:
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
sed -i "s/^PROGRAM_VERSION=.*$/PROGRAM_VERSION=\"${GITHUB_REF_NAME}\"/" "$DIST_DIR/ochenstarik-server-monitor-manager.sh"
grep -Fq "readonly DEFAULT_RELEASE_TAG=\"${GITHUB_REF_NAME}\"" "$DIST_DIR/smm-setup.sh"
fi
Проверка требует, чтобы DEFAULT_RELEASE_TAG в deploy/smm-setup.sh совпадал с выпускаемым тегом. В main там v0.1.0-alpha.18. Проверка сама по себе правильная: она не даёт выпустить установщик, который по умолчанию тянет ассеты чужого релиза.
Дыра в другом. Весь блок закрыт условием refs/tags/*, поэтому пробный прогон через workflow_dispatch идёт по refs/heads/main и эту проверку пропускает. Репетиция перед тегированием, введённая как раз для того, чтобы не сжигать номера, не покрывает единственный шаг, который на теге и ломается. Пока это так, каждый выпуск остаётся лотереей.
Часть 1 — сделать репетицию честной
Дать linux-release.yml вход workflow_dispatch с необязательным параметром tag и выполнять при пробном прогоне те же проверки согласованности версий, что и на настоящем теге: подстановку PROGRAM_VERSION и сверку DEFAULT_RELEASE_TAG. Публикация при этом по-прежнему не выполняется — она остаётся привязанной к refs/tags/*.
Смысл: прогон workflow_dispatch с tag=v0.1.0-alpha.20 должен падать ровно там же, где упал бы настоящий тег, и по той же причине.
Если сочтёте, что вход-параметр — плохое решение, допустима альтернатива: вынести сверку согласованности версий в обычный тест, исполняемый на каждом PR, который сравнивает DEFAULT_RELEASE_TAG с последним тегом в docs/release-policy.md. Обоснуйте выбор в отчёте.
Часть 2 — привести версии в согласие
Обновить до v0.1.0-alpha.20 все места, где номер зашит. На момент написания их пять:
deploy/smm-setup.sh:6—readonly DEFAULT_RELEASE_TAG;deploy/smm-setup.sh:37— текст справкиSMM_TAG Release tag (default: ...);docs/linux-bootstrap.md:9,12,13— команды скачивания;.github/workflows/windows-build.yml:43—SMM_TEST_RELEASE_TAGдля шага live-release.
Перечень проверьте сами: git grep -n 'alpha\.18' по deploy/, docs/, .github/. Если после обновления где-то останется старый номер, это дефект.
Заведите проверку, которая не даёт им разъехаться впредь: все зашитые упоминания версии релиза должны сверяться автоматически, а не глазами при следующем выпуске.
Часть 3 — записать судьбу alpha.19
В docs/release-policy.md: v0.1.0-alpha.19 — тег создан, Release pipeline упал на сверке DEFAULT_RELEASE_TAG, релиз не опубликован, номер не переиспользуется.
Часть 4 — выпустить
- Прогнать
Release pipelineчерезworkflow_dispatchсtag=v0.1.0-alpha.20на своей ветке и получить зелёный — теперь это осмысленная репетиция, а не формальность. - Создать и запушить тег обычным
git push. - Убедиться, что релиз опубликован и что
Release Verificationзапустился сам поworkflow_runи зелёный. - Тег не двигать ни при каких обстоятельствах.
Границы
Antigravity ведёт Control и веб-консоль. Не трогать: src/**.
Ваша область: deploy/**, .github/workflows/linux-release.yml, .github/workflows/windows-build.yml в части SMM_TEST_RELEASE_TAG, tests/bootstrap/**, docs/linux-bootstrap.md, docs/release-policy.md.
Критерий приёмки
- пробный прогон с параметром
tagвыполняет сверку версий и падает на несогласованности; - все зашитые упоминания версии обновлены до
v0.1.0-alpha.20, расхождение ловится автоматически; - судьба
alpha.19записана вdocs/release-policy.md; v0.1.0-alpha.20опубликован, набор ассетов совпадает сtests/release-verification/verify-assets.sh;Release Verificationотработал по событию и зелёный, ссылка на прогон в отчёте;- всё через PR, CI зелёный, PR не смержен до зелёного.
Отчёт
В описании PR, раздельно: что проверено локально, что в CI со ссылками на прогоны, что не проверялось и почему.