- stable: релизы с тегами, которые по умолчанию публикуются в npm
beta, либо в npmlatestпо явному запросу - beta: предварительные релизные теги, которые публикуются в npm
beta - dev: движущаяся вершина
main
Именование версий
- Версия стабильного релиза:
YYYY.M.PATCH- Git-тег:
vYYYY.M.PATCH
- Git-тег:
- Версия корректирующего стабильного релиза:
YYYY.M.PATCH-N- Git-тег:
vYYYY.M.PATCH-N
- Git-тег:
- Версия предварительного beta-релиза:
YYYY.M.PATCH-beta.N- Git-тег:
vYYYY.M.PATCH-beta.N
- Git-тег:
- Не дополняйте месяц или патч ведущими нулями
- Начиная с обновления процесса релизов в июне 2026 года, третий компонент — это последовательный номер ежемесячного релизного поезда, а не календарный день. Стабильные и beta-релизы определяют текущий поезд; теги только alpha не занимают и не продвигают номер патча beta/stable. Теги и npm-версии до обновления сохраняют существующие имена и остаются действительными; релизная автоматизация продолжает сравнивать их по году, месяцу, патчу, каналу и номеру предварительного или корректирующего релиза.
- Alpha/nightly-сборки используют следующий невыпущенный патч-поезд и
увеличивают только
alpha.Nдля повторных сборок. После появления beta для этого патча новые alpha-сборки переходят к следующему патчу. Игнорируйте устаревшие теги только alpha с более высокими номерами патчей при выборе beta- или стабильного поезда. - npm-версии неизменяемы. Если beta-тег уже опубликован, не удаляйте, не
публикуйте повторно и не используйте его заново; выпускайте следующий номер
beta или следующий ежемесячный патч. Поскольку
2026.6.5-beta.1уже был опубликован во время перехода, релизные поезда июня 2026 года должны использовать патч5или выше. Не публикуйте новые стабильные или beta-поезда июня 2026 года как2026.6.2,2026.6.3или2026.6.4. - После стабильного
2026.6.5следующий новый beta-поезд —2026.6.6-beta.1, даже если уже существуют автоматизированные теги только alpha с более высокими номерами патчей. latestозначает текущий продвинутый стабильный npm-релизbetaозначает текущую целевую версию установки beta- Стабильные и корректирующие стабильные релизы по умолчанию публикуются в npm
beta; операторы релиза могут явно выбратьlatestили позже продвинуть проверенную beta-сборку - Каждый стабильный релиз OpenClaw поставляет npm-пакет, приложение macOS и подписанные установщики Windows Hub вместе; beta-релизы обычно сначала проверяют и публикуют путь npm/пакета, а сборка/подпись/нотаризация/продвижение нативного приложения резервируются для стабильного релиза, если явно не запрошено иное
Каденция релизов
- Релизы движутся сначала через beta
- Стабильный релиз следует только после проверки последней beta
- Мейнтейнеры обычно выпускают релизы из ветки
release/YYYY.M.PATCH, созданной от текущейmain, чтобы релизная проверка и исправления не блокировали новую разработку вmain - Если beta-тег был отправлен или опубликован и требует исправления,
мейнтейнеры выпускают следующий тег
-beta.Nвместо удаления или пересоздания старого beta-тега - Подробная процедура релиза, утверждения, учетные данные и заметки по восстановлению доступны только мейнтейнерам
Контрольный список оператора релиза
Этот контрольный список описывает публичную форму релизного процесса. Закрытые учетные данные, подпись, нотаризация, восстановление dist-tag и детали экстренного отката остаются в релизном runbook только для мейнтейнеров.- Начните с текущей
main: подтяните последние изменения, подтвердите, что целевой коммит отправлен, и подтвердите, что текущий CImainдостаточно зеленый, чтобы создавать от нее ветку. - Сгенерируйте верхний раздел
CHANGELOG.mdиз слитых PR и всех прямых коммитов с момента последнего достижимого релизного тега. Делайте записи ориентированными на пользователей, удаляйте дублирующиеся пересекающиеся записи PR/прямых коммитов, закоммитьте переписанный файл, отправьте его и выполните rebase/pull еще раз перед созданием ветки. - Проверьте записи релизной совместимости в
src/plugins/compat/registry.tsиsrc/commands/doctor/shared/deprecation-compat.ts. Удаляйте истекшую совместимость только когда путь обновления остается покрытым, либо зафиксируйте, почему она намеренно сохраняется. - Создайте
release/YYYY.M.PATCHот текущейmain; не выполняйте обычную релизную работу напрямую вmain. - Поднимите каждое требуемое место версии для предполагаемого тега, затем
выполните
pnpm release:prep. Он обновляет версии Plugin, инвентарь Plugin, схему конфигурации, метаданные конфигурации встроенных каналов, baseline документации конфигурации, экспорты SDK Plugin и baseline API SDK Plugin в правильном порядке. Закоммитьте любой сгенерированный дрейф перед тегированием. Затем выполните локальную детерминированную предпроверку:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:buildиpnpm release:check. - Запустите
OpenClaw NPM Releaseсpreflight_only=true. Пока тега нет, полный 40-символьный SHA релизной ветки разрешен для предпроверки только с целью валидации. Предпроверка генерирует релизное свидетельство зависимостей для точного извлеченного графа зависимостей и сохраняет его в артефакте npm-предпроверки. Сохраните успешныйpreflight_run_id. - Запустите все предварительные релизные тесты через
Full Release Validationдля релизной ветки, тега или полного SHA коммита. Это единственная ручная точка входа для четырех больших релизных тестовых блоков: Vitest, Docker, QA Lab и Package. - Если валидация не проходит, исправьте в релизной ветке и повторно запустите минимальный упавший файл, lane, задание workflow, профиль пакета, provider или allowlist моделей, который доказывает исправление. Повторно запускайте полный зонтичный набор только когда измененная поверхность делает прежние свидетельства устаревшими.
- Для тегированного beta-кандидата выполните
pnpm release:candidate -- --tag vYYYY.M.PATCH-beta.Nиз соответствующей веткиrelease/YYYY.M.PATCH. Для stable также передайте требуемый исходный релиз Windows:pnpm release:candidate -- --tag vYYYY.M.PATCH --windows-node-tag vX.Y.Z. Помощник выполняет локальные проверки сгенерированного релиза, запускает или проверяет полную релизную валидацию и свидетельства npm-предпроверки, выполняет Parallels fresh/update proof против точно подготовленного tarball плюс Telegram package proof, записывает планы npm Plugin и ClawHub и печатает точную командуOpenClaw Release Publishтолько после того, как пакет свидетельств зеленый.OpenClaw Release Publishпараллельно отправляет выбранные или все публикуемые пакеты Plugin в npm и тот же набор в ClawHub, а затем продвигает подготовленный артефакт npm-предпроверки OpenClaw с соответствующим dist-tag, как только публикация Plugin в npm завершается успешно. После успешного завершения дочерней публикации OpenClaw в npm он создает или обновляет соответствующую страницу релиза/предрелиза GitHub из полного соответствующего разделаCHANGELOG.md. Стабильные релизы, опубликованные в npmlatest, становятся последним релизом GitHub; стабильные maintenance-релизы, оставленные в npmbeta, создаются с GitHublatest=false. Workflow также загружает свидетельства зависимостей предпроверки, манифест полной валидации и postpublish-свидетельства проверки реестра в GitHub release для реагирования на инциденты после релиза. Workflow публикации сразу печатает ID дочерних запусков, автоматически утверждает release environment gates, которые workflow token имеет право утверждать, суммирует неудачные дочерние задания с хвостами логов, закрывает GitHub release и свидетельства зависимостей сразу после успешной публикации OpenClaw в npm, ожидает ClawHub всякий раз, когда публикуется OpenClaw в npm, затем выполняетpnpm release:verify-betaи загружает postpublish-свидетельства для GitHub release, npm-пакета, выбранных npm-пакетов Plugin, выбранных пакетов ClawHub, ID дочерних workflow-запусков и необязательного ID запуска NPM Telegram. Путь ClawHub повторяет попытки при временных сбоях установки зависимостей CLI, публикует Plugin с успешным preview даже когда одна preview-ячейка нестабильна, и завершается проверкой реестра для каждой ожидаемой версии Plugin, чтобы частичные публикации оставались видимыми и пригодными для повторной попытки. Затем выполните post-publish package acceptance против опубликованного пакетаopenclaw@YYYY.M.PATCH-beta.Nилиopenclaw@beta. Если отправленный или опубликованный prerelease требует исправления, выпускайте следующий соответствующий prerelease-номер; не удаляйте и не переписывайте старый prerelease. - Для stable продолжайте только после того, как проверенная beta или
release candidate имеет требуемые свидетельства валидации. Публикация
stable в npm также проходит через
OpenClaw Release Publish, повторно используя успешный артефакт предпроверки черезpreflight_run_id; готовность stable-релиза macOS также требует упакованные.zip,.dmg,.dSYM.zipи обновленныйappcast.xmlвmain. Workflow публикации macOS автоматически публикует подписанный appcast в публичнуюmainпосле проверки релизных ассетов; если защита ветки блокирует прямой push, он открывает или обновляет PR appcast. Готовность stable Windows Hub требует подписанные ассетыOpenClawCompanion-Setup-x64.exe,OpenClawCompanion-Setup-arm64.exeиOpenClawCompanion-SHA256SUMS.txtна GitHub-релизе OpenClaw. Передайте точный подписанный тег релизаopenclaw/openclaw-windows-nodeкакwindows_node_tagи его утвержденную кандидатом карту digest установщиков какwindows_node_installer_digests;OpenClaw Release Publishсохраняет черновик релиза, запускаетWindows Node Releaseи проверяет все три ассета перед публикацией. - После публикации выполните npm post-publish verifier, необязательный standalone опубликованный-npm Telegram E2E, когда нужно post-publish свидетельство канала, продвижение dist-tag при необходимости, проверьте сгенерированную страницу GitHub release, выполните шаги релизного объявления, затем завершите закрытие stable main, прежде чем считать стабильный релиз завершенным.
Закрытие stable main
Стабильная публикация не завершена, покаmain не содержит фактическое
состояние поставленного релиза.
- Начните со свежей последней ветки
main. Сверьтеrelease/YYYY.M.PATCHс ней и перенесите вперед реальные исправления, отсутствующие вmain. Не объединяйте вслепую адаптеры совместимости, тестов или проверки, предназначенные только для релиза, в более новуюmain. - Установите для
mainвыпущенную стабильную версию, а не предполагаемую следующую ветку релиза. Запуститеpnpm release:prepпосле изменения версии в корне, затемpnpm deps:shrinkwrap:generate. - Сделайте так, чтобы раздел
## YYYY.M.PATCHвCHANGELOG.mdнаmainточно совпадал с помеченной тегом веткой релиза. Включите стабильное обновлениеappcast.xml, если релиз для Mac его опубликовал. - Не добавляйте
YYYY.M.PATCH+1, бета-версию или пустой будущий раздел журнала изменений вmain, пока оператор явно не начнет эту ветку релиза. - Запустите
pnpm release:generated:check,pnpm deps:shrinkwrap:checkиOPENCLAW_TESTBOX=1 pnpm check:changed. Выполните push, затем убедитесь, чтоorigin/mainсодержит выпущенную версию и журнал изменений, прежде чем считать стабильный релиз завершенным. - Поддерживайте актуальность переменных репозитория
RELEASE_ROLLBACK_DRILL_IDиRELEASE_ROLLBACK_DRILL_DATEпосле каждой приватной тренировки отката.OpenClaw Stable Main Closeoutначинается с push вmain, который несет выпущенную версию, журнал изменений и appcast после публикации стабильного релиза. Он читает неизменяемые доказательства после публикации, чтобы связать выпущенный тег с его запусками Full Release Validation и Publish, затем проверяет стабильное состояние main, релиз, обязательную стабильную выдержку и блокирующие доказательства производительности. Он прикрепляет неизменяемый манифест закрытия и контрольную сумму к релизу GitHub. Автоматический триггер push пропускает устаревшие релизы, которые предшествуют неизменяемым доказательствам после публикации; он никогда не считает такой пропуск завершенным закрытием. Полное закрытие требует наличия обоих артефактов и совпадающей контрольной суммы. Частичный манифест воспроизводит записанные в нем SHAmainи тренировку отката, чтобы заново сгенерировать идентичные байты, затем прикрепляет отсутствующую контрольную сумму; недействительная пара или контрольная сумма без манифеста остаются блокирующими. Запуск, инициированный push, без переменных репозитория для тренировки отката пропускается без завершения закрытия; отсутствующая или более чем 90-дневная запись тренировки по-прежнему блокирует ручное закрытие, подкрепленное доказательствами. Приватные команды восстановления остаются в runbook только для сопровождающих. Используйте ручной dispatch только для исправления или повторного выполнения стабильного закрытия, подкрепленного доказательствами. Устаревший корректирующий fallback-тег может повторно использовать доказательства базового пакета только тогда, когда корректирующий тег разрешается в тот же исходный коммит, что и базовый стабильный тег. Коррекция с другим исходным кодом должна опубликовать и проверить собственные доказательства пакета.
Предварительная проверка релиза
- Выполните
pnpm check:test-typesперед предварительной проверкой релиза, чтобы тестовый TypeScript оставался покрытым вне более быстрого локального контрольного шагаpnpm check - Выполните
pnpm check:architectureперед предварительной проверкой релиза, чтобы более широкие проверки циклов импортов и архитектурных границ были зелеными вне более быстрого локального контрольного шага - Выполните
pnpm build && pnpm ui:buildпередpnpm release:check, чтобы ожидаемые релизные артефактыdist/*и пакет Control UI существовали для шага проверки упаковки - Выполните
pnpm release:prepпосле повышения версии в корне и перед созданием тега. Он запускает все детерминированные релизные генераторы, которые часто расходятся после изменения версии/конфигурации/API: версии Plugin, инвентарь Plugin, базовую схему конфигурации, метаданные конфигурации встроенных каналов, базовый снимок документации конфигурации, экспорты SDK Plugin и базовый снимок API SDK Plugin.pnpm release:checkповторно запускает эти проверки в режиме проверки и за один проход сообщает о каждом найденном сбое сгенерированного расхождения перед запуском проверок релиза пакета. - Синхронизация версий Plugin по умолчанию обновляет версии официальных пакетов Plugin и существующие
минимальные значения
openclaw.compat.pluginApiдо версии релиза OpenClaw. Считайте это поле минимальным уровнем API SDK/среды выполнения Plugin, а не просто копией версии пакета: для релизов только Plugin, которые намеренно остаются совместимыми со старыми хостами OpenClaw, оставляйте минимальный уровень равным самому старому поддерживаемому API хоста и документируйте этот выбор в доказательствах релиза Plugin. - Запустите ручной рабочий процесс
Full Release Validationперед одобрением релиза, чтобы запустить все предрелизные тестовые среды из одной точки входа. Он принимает ветку, тег или полный SHA коммита, запускает ручнойCIи запускаетOpenClaw Release Checksдля установочного smoke-теста, приемки пакета, проверок пакета между ОС, паритета QA Lab, Matrix и дорожек Telegram. Стабильные и полные запуски всегда включают исчерпывающие live/E2E и Docker soak для релизного пути;run_release_soak=trueсохраняется для явного beta soak. Package Acceptance предоставляет канонический пакетный Telegram E2E во время проверки кандидата, избегая второго параллельного live-опросчика. Укажитеrelease_package_specпосле публикации беты, чтобы повторно использовать выпущенный пакет npm в release checks, Package Acceptance и пакетном Telegram E2E без повторной сборки релизного tarball. Указывайтеnpm_telegram_package_specтолько когда Telegram должен использовать другой опубликованный пакет, отличный от остальной проверки релиза. Указывайтеpackage_acceptance_package_spec, когда Package Acceptance должен использовать другой опубликованный пакет, отличный от спецификации релизного пакета. Указывайтеevidence_package_spec, когда отчет доказательств релиза должен доказывать, что проверка соответствует опубликованному пакету npm без принудительного Telegram E2E. Пример:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.PATCH - Запустите ручной рабочий процесс
Package Acceptance, когда нужны доказательства по боковому каналу для кандидата пакета, пока релизная работа продолжается. Используйтеsource=npmдляopenclaw@beta,openclaw@latestили точной версии релиза;source=ref, чтобы упаковать доверенную ветку/тег/SHApackage_refс текущим стендомworkflow_ref;source=urlдля публичного HTTPS tarball с обязательным SHA-256 и строгой политикой публичного URL;source=trusted-urlдля именованной политики доверенного источника с обязательнымиtrusted_source_idи SHA-256; илиsource=artifactдля tarball, загруженного другим запуском GitHub Actions. Рабочий процесс разрешает кандидата вpackage-under-test, повторно использует планировщик релиза Docker E2E против этого tarball и может запускать Telegram QA против того же tarball сtelegram_mode=mock-openaiилиtelegram_mode=live-frontier. Когда выбранные дорожки Docker включаютpublished-upgrade-survivor, артефакт пакета является кандидатом, аpublished_upgrade_survivor_baselineвыбирает опубликованную базовую версию.update-restart-authиспользует пакет-кандидат как установленный CLI и как package-under-test, чтобы проверить управляемый путь перезапуска команды обновления кандидата. Пример:gh workflow run package-acceptance.yml --ref main -f workflow_ref=main -f source=npm -f package_spec=openclaw@beta -f suite_profile=product -f published_upgrade_survivor_baseline=openclaw@2026.4.26 -f telegram_mode=mock-openaiОбщие профили:smoke: дорожки установки/канала/агента, сети Gateway и перезагрузки конфигурацииpackage: дорожки пакета/обновления/перезапуска/Plugin, нативные для артефакта, без OpenWebUI или live ClawHubproduct: профиль пакета плюс каналы MCP, очистка cron/субагентов, веб-поиск OpenAI и OpenWebUIfull: фрагменты релизного пути Docker с OpenWebUIcustom: точный выборdocker_lanesдля сфокусированного повторного запуска
- Запускайте ручной рабочий процесс
CIнапрямую, когда нужно только детерминированное обычное покрытие CI для релизного кандидата. Ручные запуски CI обходят область измененных файлов и принудительно включают Linux Node shards, shards встроенных Plugin, shards контрактов Plugin и каналов, совместимость Node 22,check-*,check-additional-*, smoke-проверки собранных артефактов, проверки документации, Python Skills, Windows, macOS и дорожки i18n Control UI. Отдельные ручные запуски CI выполняют Android только при запуске сinclude_android=true;Full Release Validationпередает этот ввод своему дочернему CI. Пример с Android:gh workflow run ci.yml --ref release/YYYY.M.PATCH -f include_android=true - Запускайте
pnpm qa:otel:smokeпри проверке релизной телеметрии. Он проверяет QA-lab через локальный приемник OTLP/HTTP и проверяет экспорт трасс, метрик и логов, а также ограниченные атрибуты трасс и редактирование содержимого/идентификаторов без необходимости в Opik, Langfuse или другом внешнем сборщике. - Запускайте
pnpm qa:otel:collector-smokeпри проверке совместимости со сборщиком. Он направляет тот же экспорт OTLP QA-lab через реальный Docker-контейнер OpenTelemetry Collector перед утверждениями локального приемника. - Запускайте
pnpm qa:prometheus:smokeпри проверке защищенного сбора Prometheus. Он проверяет QA-lab, отклоняет неаутентифицированные обращения за сбором и проверяет, что критически важные для релиза семейства метрик не содержат содержимого промптов, сырых идентификаторов, токенов аутентификации и локальных путей. - Запускайте
pnpm qa:observability:smoke, когда нужно выполнить smoke-дорожки OpenTelemetry и Prometheus из исходного checkout подряд. - Выполняйте
pnpm release:checkперед каждым помеченным тегом релизом - Предварительная проверка
OpenClaw NPM Releaseгенерирует доказательства релиза зависимостей перед упаковкой npm tarball. Шлюз уязвимостей npm advisory блокирует релиз. Отчет о рисках транзитивного манифеста, поверхности владения/установки зависимостей и изменениях зависимостей служит только релизным доказательством. Отчет об изменениях зависимостей сравнивает релизного кандидата с предыдущим достижимым релизным тегом. - Предварительная проверка загружает доказательства зависимостей как
openclaw-release-dependency-evidence-<tag>и также встраивает их вdependency-evidence/внутри подготовленного артефакта предварительной проверки npm. Реальный путь публикации повторно использует этот артефакт предварительной проверки, затем прикрепляет те же доказательства к релизу GitHub какopenclaw-<version>-dependency-evidence.zip. - Запустите
OpenClaw Release Publishдля изменяющей последовательности публикации после того, как тег существует. Запускайте его изrelease/YYYY.M.PATCH(илиmainпри публикации тега, достижимого из main), передайте тег релиза, успешныйpreflight_run_idnpm OpenClaw и успешныйfull_release_validation_run_id, и оставьте область публикации Plugin по умолчаниюall-publishable, если вы не запускаете намеренно сфокусированное исправление. Рабочий процесс сериализует публикацию npm Plugin, публикацию ClawHub Plugin и публикацию npm OpenClaw, чтобы основной пакет не публиковался раньше своих вынесенных наружу Plugin. - Стабильный
OpenClaw Release Publishтребует точныйwindows_node_tagпосле существования соответствующего не prerelease-релизаopenclaw/openclaw-windows-node. Он также требует одобренную кандидатом картуwindows_node_installer_digests. Перед запуском любого дочернего публикационного процесса он проверяет, что исходный релиз опубликован, не является prerelease, содержит обязательные установщики x64/ARM64 и по-прежнему соответствует этой одобренной карте. Затем он запускаетWindows Node Release, пока релиз OpenClaw еще является черновиком, передавая закрепленную карту дайджестов установщиков без изменений. Дочерний рабочий процесс скачивает подписанные установщики Windows Hub из этого точного тега, сверяет их с закрепленными дайджестами, проверяет, что их подписи Authenticode используют ожидаемого подписанта OpenClaw Foundation на Windows runner, записывает манифест SHA-256 и загружает установщики вместе с манифестом в канонический релиз OpenClaw на GitHub, затем повторно скачивает продвинутые артефакты и проверяет членство в манифесте и хэши. Родитель проверяет текущий контракт артефактов x64, ARM64 и checksum перед публикацией. Прямое восстановление отклоняет неожиданные имена артефактовOpenClawCompanion-*перед заменой ожидаемых контрактных артефактов закрепленными исходными байтами. Вручную запускайтеWindows Node Releaseтолько для восстановления и всегда передавайте точный тег, никогдаlatest, плюс явную JSON-картуexpected_installer_digestsиз одобренного исходного релиза. Ссылки загрузки на сайте должны указывать на точные URL артефактов релиза OpenClaw для текущего стабильного релиза или наreleases/latest/download/...только после проверки, что перенаправление GitHub latest указывает на тот же релиз; не ссылайтесь только на страницу релиза companion-репозитория. - Проверки релиза теперь выполняются в отдельном ручном рабочем процессе:
OpenClaw Release Checks OpenClaw Release Checksтакже запускает дорожку mock-паритета QA Lab плюс быстрый live-профиль Matrix и дорожку Telegram QA перед одобрением релиза. Live-дорожки используют окружениеqa-live-shared; Telegram также использует аренды учетных данных Convex CI. Запустите ручной рабочий процессQA-Lab - All Lanesсmatrix_profile=allиmatrix_shards=true, когда нужен полный инвентарь транспорта Matrix, медиа и E2EE параллельно.- Межплатформенная проверка среды выполнения установки и обновления входит в публичные
OpenClaw Release ChecksиFull Release Validation, которые напрямую вызывают переиспользуемый рабочий процесс.github/workflows/openclaw-cross-os-release-checks-reusable.yml - Это разделение намеренно: сохраняйте реальный путь релиза npm коротким, детерминированным и сосредоточенным на артефактах, а более медленные live-проверки держите в собственной дорожке, чтобы они не задерживали и не блокировали публикацию
- Проверки релиза с секретами следует запускать через
Full Release Validationили из workflow refmain/release, чтобы логика рабочего процесса и секреты оставались контролируемыми OpenClaw Release Checksпринимает ветку, тег или полный SHA коммита, если разрешенный коммит достижим из ветки OpenClaw или релизного тега- Предварительная проверка только для валидации
OpenClaw NPM Releaseтакже принимает текущий полный 40-символьный SHA коммита ветки рабочего процесса без требования запушенного тега - Этот путь SHA предназначен только для валидации и не может быть продвинут в реальную публикацию
- В режиме SHA рабочий процесс синтезирует
v<package.json version>только для проверки метаданных пакета; реальная публикация все равно требует реальный релизный тег - Оба рабочих процесса сохраняют реальный путь публикации и продвижения на GitHub-hosted runners, а неизменяющий путь валидации может использовать более крупные Blacksmith Linux runners
- Этот рабочий процесс выполняет
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheс использованием секретов рабочего процессаOPENAI_API_KEYиANTHROPIC_API_KEY - Предварительная проверка релиза npm больше не ждет отдельную дорожку release checks
- Перед локальным созданием тега релизного кандидата выполните
RELEASE_TAG=vYYYY.M.PATCH-beta.N pnpm release:fast-pretag-check. Помощник запускает быстрые релизные предохранители, проверки релиза npm/ClawHub Plugin, сборку, сборку UI иrelease:openclaw:npm:checkв порядке, который выявляет типичные ошибки, блокирующие одобрение, до запуска workflow публикации GitHub. - Выполните
RELEASE_TAG=vYYYY.M.PATCH node --import tsx scripts/openclaw-npm-release-check.ts(или соответствующий beta/correction tag) перед одобрением - После публикации npm выполните
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.PATCH(или соответствующую beta/correction-версию), чтобы проверить путь установки из опубликованного реестра в свежем временном префиксе - После публикации beta выполните
OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC=openclaw@YYYY.M.PATCH-beta.N OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci pnpm test:docker:npm-telegram-live, чтобы проверить onboarding установленного пакета, настройку Telegram и реальный Telegram E2E для опубликованного npm-пакета с использованием общего пула арендуемых учетных данных Telegram. Разовые локальные проверки сопровождающего могут опустить переменные Convex и передать три учетные env-данныеOPENCLAW_QA_TELEGRAM_*напрямую. - Чтобы запустить полный post-publish beta smoke с машины сопровождающего, используйте
pnpm release:beta-smoke -- --beta betaN. Вспомогательный скрипт запускает проверку npm update/fresh-target в Parallels, отправляетNPM Telegram Beta E2E, опрашивает точный workflow run, загружает артефакт и выводит отчет Telegram. - Сопровождающие могут запустить ту же post-publish-проверку из GitHub Actions через
ручной workflow
NPM Telegram Beta E2E. Он намеренно доступен только вручную и не запускается при каждом merge. - Автоматизация release для сопровождающих теперь использует схему preflight-then-promote:
- реальная публикация npm должна пройти успешный npm
preflight_run_id - реальная публикация npm должна быть запущена из той же ветки
mainилиrelease/YYYY.M.PATCH, что и успешный preflight run - стабильные npm-релизы по умолчанию используют
beta - стабильная публикация npm может явно выбрать
latestчерез входной параметр workflow - token-based изменение npm dist-tag теперь находится в
openclaw/releases/.github/workflows/openclaw-npm-dist-tags.yml, потому чтоnpm dist-tag addвсе еще требуетNPM_TOKEN, а исходный репозиторий сохраняет публикацию только через OIDC - публичный
macOS Releaseпредназначен только для валидации; когда tag существует только в release-ветке, но workflow запускается изmain, задайтеpublic_release_branch=release/YYYY.M.PATCH - реальная публикация macOS должна пройти успешные macOS
preflight_run_idиvalidate_run_id - реальные пути публикации продвигают подготовленные артефакты вместо повторной сборки
- реальная публикация npm должна пройти успешный npm
- Для стабильных correction-релизов вроде
YYYY.M.PATCH-Npost-publish-верификатор также проверяет тот же путь обновления во временном префиксе сYYYY.M.PATCHдоYYYY.M.PATCH-N, чтобы release corrections не могли незаметно оставить старые глобальные установки на базовом стабильном payload - npm release preflight завершается отказом, если tarball не включает и
dist/control-ui/index.html, и непустой payloaddist/control-ui/assets/, чтобы мы снова не поставили пустой браузерный dashboard - Post-publish-верификация также проверяет наличие опубликованных entrypoints Plugin и
метаданных пакета в установленной структуре реестра. Релиз, в котором отсутствуют runtime payloads Plugin,
проваливает postpublish-верификатор и
не может быть продвинут в
latest. pnpm test:install:smokeтакже контролирует бюджет npm packunpackedSizeдля candidate update tarball, чтобы installer e2e ловил случайное раздувание пакета до пути публикации release- Если release-работа затрагивала планирование CI, timing manifests расширений или
матрицы тестов расширений, заново сгенерируйте и проверьте принадлежащие planner
выходные данные матрицы
plugin-prerelease-extension-shardиз.github/workflows/plugin-prerelease.ymlперед approval, чтобы release notes не описывали устаревшую раскладку CI - Готовность стабильного macOS release также включает поверхности updater:
- GitHub release в итоге должен содержать упакованные
.zip,.dmgи.dSYM.zip appcast.xmlвmainпосле публикации должен указывать на новый стабильный zip; workflow публикации macOS фиксирует это автоматически или открывает appcast PR, когда прямой push заблокирован- упакованное приложение должно сохранять не-debug bundle id, непустой URL ленты Sparkle
и
CFBundleVersionне ниже канонического минимума сборки Sparkle для этой версии release
- GitHub release в итоге должен содержать упакованные
Тестовые боксы релиза
Full Release Validation — это способ, которым операторы запускают все предрелизные тесты из одной точки входа. Для доказательства закрепленного коммита в быстро меняющейся ветке используйте helper, чтобы каждый дочерний workflow запускался из временной ветки, зафиксированной на целевом SHA:
release-ci/<sha>-..., запускает Full Release Validation из этой ветки с ref=<sha>, проверяет, что headSha каждого дочернего workflow совпадает с целевым, а затем удаляет временную ветку. Это позволяет случайно не доказать более новый дочерний запуск main.
Для проверки релизной ветки или тега запускайте его из доверенного workflow ref main и передавайте релизную ветку или тег как ref:
CI с target_ref=<release-ref>, затем запускает OpenClaw Release Checks. OpenClaw Release Checks разворачивает install smoke, кросс-OS проверки релиза, live/E2E Docker покрытие релизного пути при включенном soak, Package Acceptance с каноническим Telegram package E2E, QA Lab parity, live Matrix и live Telegram. Полный/all запуск приемлем только тогда, когда сводка Full Release Validation показывает normal_ci, plugin_prerelease и release_checks как успешные, если только сфокусированный перезапуск намеренно не пропустил отдельний дочерний Plugin Prerelease. Используйте отдельный дочерний npm-telegram только для сфокусированного перезапуска опубликованного пакета с release_package_spec или npm_telegram_package_spec. Итоговая сводка verifier включает таблицы самых медленных заданий для каждого дочернего запуска, чтобы release manager мог видеть текущий критический путь без скачивания логов.
См. Полная проверка релиза для полной матрицы этапов, точных имен заданий workflow, различий между stable и full профилями, артефактов и дескрипторов сфокусированных перезапусков.
Дочерние workflow запускаются из доверенного ref, который запускает Full Release Validation, обычно --ref main, даже если целевой ref указывает на более старую релизную ветку или тег. Отдельного входного параметра workflow-ref для Full Release Validation нет; выбирайте доверенный harness, выбирая ref запуска workflow.
Не используйте --ref main -f ref=<sha> для доказательства точного коммита на движущемся main; сырые SHA коммитов не могут быть refs для workflow dispatch, поэтому используйте pnpm ci:full-release --sha <sha>, чтобы создать закрепленную временную ветку.
Используйте release_profile, чтобы выбрать ширину live/provider:
minimum: самый быстрый релизно-критичный OpenAI/core live и Docker путьstable: minimum плюс стабильное покрытие provider/backend для одобрения релизаfull: stable плюс широкое advisory покрытие provider/media
run_release_soak=true, чтобы запросить тот же sweep для beta. Этот sweep покрывает последние четыре стабильных пакета плюс закрепленные базовые версии 2026.4.23 и 2026.5.2, а также более старое покрытие 2026.4.15, с удалением дублирующихся базовых версий и шардированием каждой базовой версии в отдельное задание Docker runner.
OpenClaw Release Checks использует доверенный workflow ref, чтобы один раз разрешить целевой ref как release-package-under-test, и повторно использует этот артефакт в кросс-OS, Package Acceptance и Docker проверках релизного пути, когда выполняется soak. Это удерживает все package-facing боксы на одних и тех же байтах и избегает повторных сборок пакета.
После того как beta уже опубликована в npm, задайте release_package_spec=openclaw@YYYY.M.PATCH-beta.N, чтобы release checks один раз скачали поставленный пакет, извлекли SHA исходника сборки из dist/build-info.json и повторно использовали этот артефакт для кросс-OS, Package Acceptance, Docker релизного пути и package Telegram lanes.
Кросс-OS OpenAI install smoke использует OPENCLAW_CROSS_OS_OPENAI_MODEL, когда задана переменная repo/org, иначе openai/gpt-5.4, потому что эта lane доказывает установку пакета, onboarding, запуск gateway и один live agent turn, а не бенчмаркинг самой медленной модели по умолчанию. Более широкая live provider matrix остается местом для модельно-специфичного покрытия.
Используйте эти варианты в зависимости от стадии релиза:
Verify full validation.
Для ограниченного восстановления передайте rerun_group в umbrella. all — настоящий запуск release-candidate, ci запускает только обычный дочерний CI, plugin-prerelease запускает только релизный дочерний plugin, release-checks запускает каждый релизный бокс, а более узкие релизные группы — install-smoke, cross-os, live-e2e, package, qa, qa-parity, qa-live и npm-telegram.
Сфокусированные перезапуски npm-telegram требуют release_package_spec или npm_telegram_package_spec; full/all запуски используют канонический package Telegram E2E внутри Package Acceptance. Сфокусированные кросс-OS перезапуски могут добавить cross_os_suite_filter=windows/packaged-upgrade или другой фильтр OS/suite. Сбои release-check QA блокируют обычную проверку релиза, включая требуемый дрейф динамических инструментов OpenClaw в стандартном уровне.
Запуски Tideclaw alpha все еще могут считать непакетно-защитные release-check lanes рекомендательными. Когда live_suite_filter явно запрашивает gated QA live lane, такую как Discord, WhatsApp или Slack, соответствующая переменная repo OPENCLAW_RELEASE_QA_*_LIVE_CI_ENABLED должна быть включена; иначе захват входных данных падает вместо тихого пропуска lane.
Vitest
Бокс Vitest — это ручной дочерний workflowCI. Ручной CI намеренно обходит changed scoping и принудительно запускает обычный граф тестов для release candidate: Linux Node shards, bundled-plugin shards, plugin и channel contract shards, совместимость Node 22, check-*, check-additional-*, built-artifact smoke checks, docs checks, Python skills, Windows, macOS и Control UI i18n. Android включается, когда Full Release Validation запускает бокс, потому что umbrella передает include_android=true; отдельный ручной CI требует include_android=true для покрытия Android.
Используйте этот бокс, чтобы ответить: «прошло ли дерево исходников полный обычный набор тестов?» Это не то же самое, что product validation релизного пути. Доказательства, которые нужно сохранить:
- сводка
Full Release Validation, показывающая URL запущенногоCI - зеленый запуск
CIна точном целевом SHA - имена упавших или медленных shards из заданий CI при расследовании регрессий
- артефакты таймингов Vitest, такие как
.artifacts/vitest-shard-timings.json, когда запуску нужен анализ производительности
include_android=true, когда прямой release-candidate CI должен покрывать Android:
Docker
Бокс Docker находится вOpenClaw Release Checks через openclaw-live-and-e2e-checks-reusable.yml, а также в release-mode workflow install-smoke. Он проверяет release candidate через упакованные Docker окружения, а не только тесты уровня исходников.
Релизное Docker покрытие включает:
- полный install smoke с включенным медленным Bun global install smoke
- подготовку/повторное использование root Dockerfile smoke image по целевому SHA, с QR, root/gateway и installer/Bun smoke заданиями, запускаемыми как отдельные install-smoke shards
- repository E2E lanes
- Docker chunks релизного пути:
core,package-update-openai,package-update-anthropic,package-update-core,plugins-runtime-plugins,plugins-runtime-services,plugins-runtime-install-a,plugins-runtime-install-b,plugins-runtime-install-c,plugins-runtime-install-d,plugins-runtime-install-e,plugins-runtime-install-f,plugins-runtime-install-gиplugins-runtime-install-h - покрытие OpenWebUI внутри chunk
plugins-runtime-servicesпри запросе - разделенные bundled plugin install/uninstall lanes
bundled-plugin-install-uninstall-0throughbundled-plugin-install-uninstall-23 - live/E2E provider suites и Docker live model coverage, когда release checks включают live suites
.artifacts/docker-tests/ с lane logs, summary.json, failures.json, таймингами фаз, JSON плана планировщика и командами перезапуска. Для сфокусированного восстановления используйте docker_lanes=<lane[,lane]> на reusable live/E2E workflow вместо перезапуска всех release chunks. Сгенерированные команды перезапуска включают предыдущий package_artifact_run_id и подготовленные входные данные Docker image, когда они доступны, поэтому упавшая lane может повторно использовать тот же tarball и GHCR images.
QA Lab
Бокс QA Lab также является частьюOpenClaw Release Checks. Это релизный gate для агентского поведения и уровня каналов, отдельный от Vitest и Docker package mechanics.
Релизное покрытие QA Lab включает:
- mock parity lane, сравнивающую кандидатную lane OpenAI с baseline Opus 4.6 с использованием agentic parity pack
- быстрый live Matrix QA profile с использованием окружения
qa-live-shared - live Telegram QA lane с использованием Convex CI credential leases
pnpm qa:otel:smoke,pnpm qa:otel:collector-smoke,pnpm qa:prometheus:smokeилиpnpm qa:observability:smoke, когда release telemetry требует явного локального доказательства
Package
Бокс Package — это gate устанавливаемого продукта. Он поддерживаетсяPackage Acceptance и resolver scripts/resolve-openclaw-package-candidate.mjs. Resolver нормализует кандидата в tarball package-under-test, потребляемый Docker E2E, проверяет inventory пакета, записывает версию пакета и SHA-256 и удерживает workflow harness ref отдельно от package source ref.
Поддерживаемые источники кандидатов:
source=npm:openclaw@beta,openclaw@latestили точная версия релиза OpenClawsource=ref: упаковывает доверенную веткуpackage_ref, тег или полный SHA коммита с выбранным harnessworkflow_refsource=url: скачивает публичный HTTPS.tgzс обязательнымpackage_sha256; учетные данные в URL, нестандартные HTTPS-порты, частные/внутренние/специальные имена хостов или разрешенные адреса, а также небезопасные перенаправления отклоняютсяsource=trusted-url: скачивает HTTPS.tgzс обязательнымиpackage_sha256иtrusted_source_idиз именованной политики в.github/package-trusted-sources.json; используйте это для принадлежащих сопровождающим корпоративных зеркал или частных репозиториев пакетов вместо добавления обхода частной сети на уровне входных данных вsource=urlsource=artifact: повторно использует.tgz, загруженный другим запуском GitHub Actions
OpenClaw Release Checks запускает Package Acceptance с source=artifact,
подготовленным артефактом релизного пакета, suite_profile=custom,
docker_lanes=doctor-switch update-channel-switch skill-install update-corrupt-plugin upgrade-survivor published-upgrade-survivor update-restart-auth plugins-offline plugin-update,
telegram_mode=mock-openai. Package Acceptance проверяет миграцию, обновление,
перезапуск после обновления с настроенной аутентификацией, живую установку skill
из ClawHub, очистку устаревших зависимостей Plugin, офлайн-фикстуры Plugin,
обновление Plugin и пакетную QA для Telegram относительно одного и того же
разрешенного tarball. Блокирующие проверки релиза используют базовый пакет по
умолчанию из последней опубликованной версии; beta-профиль с
run_release_soak=true, release_profile=stable или release_profile=full
расширяется до каждой стабильной базовой версии, опубликованной в npm, начиная
с 2026.4.23 и до latest, плюс фикстуры сообщенных проблем. Используйте
Package Acceptance с source=npm для уже выпущенного кандидата, source=ref
для локального npm-tarball, привязанного к SHA, до публикации,
source=trusted-url для принадлежащего сопровождающим корпоративного/частного
зеркала или source=artifact для подготовленного tarball, загруженного другим
запуском GitHub Actions. Это встроенная в GitHub замена большей части покрытия
пакетов/обновлений, для которого раньше требовался Parallels. Кросс-ОС проверки
релиза все еще важны для специфичного для ОС onboarding, установщика и поведения
платформы, но продуктовая валидация пакетов/обновлений должна предпочитать
Package Acceptance.
Канонический чеклист для валидации обновлений и Plugin находится в
Тестирование обновлений и Plugin. Используйте
его, когда решаете, какая локальная, Docker, Package Acceptance или
release-check линия доказывает изменение установки/обновления Plugin, очистки
doctor или миграции опубликованного пакета. Исчерпывающая миграция обновлений
из каждого стабильного пакета 2026.4.23+ — это отдельный ручной workflow
Update Migration, а не часть Full Release CI.
Устаревшее послабление package-acceptance намеренно ограничено по времени.
Пакеты до 2026.4.25 включительно могут использовать путь совместимости для
пробелов в метаданных, уже опубликованных в npm: частные записи QA-инвентаря,
отсутствующие в tarball, отсутствующий gateway install --wrapper, отсутствующие
patch-файлы в git-фикстуре, полученной из tarball, отсутствующий сохраненный
update.channel, устаревшие расположения install-record для Plugin,
отсутствующее сохранение marketplace install-record и миграция метаданных
конфигурации во время plugins update. Опубликованный пакет 2026.4.26 может
предупреждать о локальных stamp-файлах метаданных сборки, которые уже были
выпущены. Более поздние пакеты должны соответствовать современным контрактам
пакетов; те же пробелы приводят к сбою валидации релиза.
Используйте более широкие профили Package Acceptance, когда релизный вопрос
касается фактически устанавливаемого пакета:
smoke: быстрые линии установки пакета/канала/агента, сети Gateway и перезагрузки конфигурацииpackage: контракты установки/обновления/перезапуска/пакета Plugin плюс доказательство живой установки skill из ClawHub; это значение по умолчанию для release-checkproduct:packageплюс MCP-каналы, очистка cron/subagent, веб-поиск OpenAI и OpenWebUIfull: Docker-фрагменты релизного пути с OpenWebUIcustom: точный списокdocker_lanesдля сфокусированных повторных запусков
telegram_mode=mock-openai
или telegram_mode=live-frontier в Package Acceptance. Workflow передает
разрешенный tarball package-under-test в линию Telegram; отдельный workflow
Telegram по-прежнему принимает опубликованную npm-спецификацию для проверок
после публикации.
Автоматизация публикации релиза
OpenClaw Release Publish — обычная изменяющая точка входа для публикации. Она
оркестрирует workflow доверенного издателя в порядке, нужном релизу:
- Извлечь релизный тег и разрешить SHA его коммита.
- Проверить, что тег достижим из
mainилиrelease/*. - Запустить
pnpm plugins:sync:check. - Запустить
Plugin NPM Releaseсpublish_scope=all-publishableиref=<release-sha>. - Запустить
Plugin ClawHub Releaseс теми же scope и SHA. - Запустить
OpenClaw NPM Releaseс релизным тегом, npm dist-tag и сохраненнымpreflight_run_idпосле проверки сохраненногоfull_release_validation_run_id. - Для стабильных релизов создать или обновить GitHub-релиз как черновик,
запустить
Windows Node Releaseс явнымwindows_node_tagи одобренными для кандидатаwindows_node_installer_digests, а затем проверить канонические ассеты установщика/контрольных сумм перед публикацией черновика.
latest задается явно:
Plugin NPM Release и
Plugin ClawHub Release только для сфокусированного исправления или повторной
публикации. OpenClaw Release Publish отклоняет
plugin_publish_scope=selected, когда publish_openclaw_npm=true, чтобы
основной пакет не мог выйти без каждого публикуемого официального Plugin,
включая @openclaw/diffs-language-pack. Для исправления выбранного Plugin
задайте publish_openclaw_npm=false с plugin_publish_scope=selected и
plugins=@openclaw/name или запустите дочерний workflow напрямую.
Входные данные workflow NPM
OpenClaw NPM Release принимает эти входные данные, контролируемые оператором:
tag: обязательный релизный тег, напримерv2026.4.2,v2026.4.2-1илиv2026.4.2-beta.1; когдаpreflight_only=true, это также может быть текущий полный 40-символьный SHA коммита ветки workflow для preflight только с валидациейpreflight_only:trueдля только валидации/сборки/пакета,falseдля реального пути публикацииpreflight_run_id: обязателен на реальном пути публикации, чтобы workflow повторно использовал подготовленный tarball из успешного preflight-запускаnpm_dist_tag: целевой npm-тег для пути публикации; по умолчаниюbeta
OpenClaw Release Publish принимает эти входные данные, контролируемые
оператором:
tag: обязательный релизный тег; уже должен существоватьpreflight_run_id: id успешного preflight-запускаOpenClaw NPM Release; обязателен, когдаpublish_openclaw_npm=truefull_release_validation_run_id: id успешного запускаFull Release Validation; обязателен, когдаpublish_openclaw_npm=truewindows_node_tag: точный непререлизный релизный тегopenclaw/openclaw-windows-node; обязателен для стабильной публикации OpenClawwindows_node_installer_digests: одобренная для кандидата компактная JSON-карта текущих имен установщиков Windows к их закрепленным digestsha256:; обязательна для стабильной публикации OpenClawnpm_dist_tag: целевой npm-тег для пакета OpenClawplugin_publish_scope: по умолчаниюall-publishable; используйтеselectedтолько для сфокусированного исправления только Plugin сpublish_openclaw_npm=falseplugins: разделенные запятыми имена пакетов@openclaw/*, когдаplugin_publish_scope=selectedpublish_openclaw_npm: по умолчаниюtrue; задавайтеfalseтолько при использовании workflow как оркестратора исправлений только Pluginwait_for_clawhub: по умолчаниюfalse, чтобы доступность npm не блокировалась sidecar ClawHub; задавайтеtrueтолько когда завершение workflow должно включать завершение ClawHub
OpenClaw Release Checks принимает эти входные данные, контролируемые оператором:
ref: ветка, тег или полный SHA коммита для валидации. Проверки с секретами требуют, чтобы разрешенный коммит был достижим из ветки OpenClaw или релизного тега.run_release_soak: включить исчерпывающие live/E2E, Docker release-path и all-since upgrade-survivor soak для проверок beta-релиза. Принудительно включаетсяrelease_profile=stableиrelease_profile=full.
- Стабильные и корректирующие теги могут публиковаться либо в
beta, либо вlatest - Beta prerelease-теги могут публиковаться только в
beta - Для
OpenClaw NPM Releaseввод полного SHA коммита разрешен только когдаpreflight_only=true OpenClaw Release ChecksиFull Release Validationвсегда являются только валидационными- Реальный путь публикации должен использовать тот же
npm_dist_tag, который использовался во время preflight; workflow проверяет эти метаданные перед продолжением публикации
Последовательность стабильного npm-релиза
При подготовке стабильного npm-релиза:- Запустите
OpenClaw NPM Releaseсpreflight_only=true- До появления тега можно использовать текущий полный SHA коммита ветки workflow для проверочного dry run только валидации preflight workflow
- Выберите
npm_dist_tag=betaдля обычного потока сначала beta илиlatestтолько когда вы намеренно хотите прямую стабильную публикацию - Запустите
Full Release Validationна релизной ветке, релизном теге или полном SHA коммита, когда вам нужна обычная CI-проверка плюс покрытие live prompt cache, Docker, QA Lab, Matrix и Telegram из одного ручного workflow - Если вам намеренно нужен только детерминированный обычный граф тестов, вместо этого запустите
ручной workflow
CIна релизном ref - Выберите точный непререлизный релизный тег
openclaw/openclaw-windows-node, подписанные установщики x64 и ARM64 которого должны поставляться. Сохраните его какwindows_node_tag, а их проверенную карту дайджестов сохраните какwindows_node_installer_digests. Вспомогательный инструмент release candidate записывает оба значения и включает их в сгенерированную команду публикации. - Сохраните успешные
preflight_run_idиfull_release_validation_run_id - Запустите
OpenClaw Release Publishс тем жеtag, тем жеnpm_dist_tag, выбраннымwindows_node_tag, сохраненнымwindows_node_installer_digests, сохраненнымpreflight_run_idи сохраненнымfull_release_validation_run_id; он публикует внешние plugins в npm и ClawHub перед продвижением пакета OpenClaw npm - Если релиз попал в
beta, используйте workflowopenclaw/releases/.github/workflows/openclaw-npm-dist-tags.yml, чтобы продвинуть эту стабильную версию изbetaвlatest - Если релиз намеренно был опубликован напрямую в
latest, аbetaдолжна сразу следовать той же стабильной сборке, используйте тот же релизный workflow, чтобы направить оба dist-tags на стабильную версию, или позвольте его запланированной самовосстанавливающейся синхронизации переместитьbetaпозже
NPM_TOKEN, тогда как исходный репозиторий сохраняет публикацию только через OIDC.
Так и прямой путь публикации, и путь продвижения сначала beta остаются
задокументированными и видимыми оператору.
Если сопровождающему нужно откатиться к локальной npm-аутентификации, запускайте любые команды 1Password
CLI (op) только внутри выделенной сессии tmux. Не вызывайте op
напрямую из основной оболочки агента; удержание его внутри tmux делает prompts,
alerts и обработку OTP наблюдаемыми и предотвращает повторяющиеся host alerts.
Публичные ссылки
.github/workflows/full-release-validation.yml.github/workflows/package-acceptance.yml.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-cross-os-release-checks-reusable.ymlscripts/resolve-openclaw-package-candidate.mjsscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
openclaw/maintainers/release/README.md
для фактического runbook.