46 KiB
| read_when | summary | title | x-i18n | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Релізні лінії, контрольний список оператора, бокси валідації, іменування версій і ритм | Політика випусків |
|
OpenClaw має три публічні гілки релізів:
- stable: релізи з тегами, які за замовчуванням публікуються в npm
beta, або в npmlatest, коли це явно запитано - beta: теги попередніх релізів, які публікуються в npm
beta - dev: рухома вершина
main
Назви версій
- Версія стабільного релізу:
YYYY.M.D- Git-тег:
vYYYY.M.D
- Git-тег:
- Версія стабільного коригувального релізу:
YYYY.M.D-N- Git-тег:
vYYYY.M.D-N
- Git-тег:
- Версія beta-попереднього релізу:
YYYY.M.D-beta.N- Git-тег:
vYYYY.M.D-beta.N
- Git-тег:
- Не додавайте нулі на початку місяця або дня
latestозначає поточний підвищений стабільний реліз npmbetaозначає поточну ціль установлення beta- Стабільні та стабільні коригувальні релізи за замовчуванням публікуються в npm
beta; оператори релізу можуть явно вибратиlatestабо пізніше підвищити перевірену збірку beta - Кожен стабільний реліз OpenClaw постачає npm-пакет і застосунок macOS разом; beta-релізи зазвичай спочатку перевіряють і публікують шлях npm/package, а складання/підписування/нотаризацію застосунку Mac залишають для стабільних релізів, якщо це явно не запитано
Періодичність релізів
- Релізи рухаються спочатку через beta
- Стабільний реліз виходить лише після перевірки останньої beta
- Мейнтейнери зазвичай створюють релізи з гілки
release/YYYY.M.D, створеної з поточногоmain, щоб перевірка релізу та виправлення не блокували нову розробку вmain - Якщо beta-тег уже надіслано або опубліковано і він потребує виправлення, мейнтейнери створюють
наступний тег
-beta.Nзамість видалення або повторного створення старого beta-тега - Детальна процедура релізу, затвердження, облікові дані та нотатки щодо відновлення доступні лише мейнтейнерам
Контрольний список оператора релізу
Цей контрольний список є публічною формою процесу релізу. Приватні облікові дані, підписування, нотаризація, відновлення dist-tag і деталі екстреного відкату залишаються в runbook релізів лише для мейнтейнерів.
- Почніть із поточного
main: підтягніть останні зміни, підтвердьте, що цільовий коміт надіслано, і підтвердьте, що поточний CI дляmainдостатньо зелений, щоб створювати від нього гілку. - Перепишіть верхній розділ
CHANGELOG.mdна основі реальної історії комітів за допомогою/changelog, залиште записи орієнтованими на користувача, закомітьте його, надішліть його, і виконайте rebase/pull ще раз перед створенням гілки. - Перегляньте записи сумісності релізу в
src/plugins/compat/registry.tsіsrc/commands/doctor/shared/deprecation-compat.ts. Видаляйте застарілу сумісність лише тоді, коли шлях оновлення залишається покритим, або зафіксуйте, чому вона навмисно зберігається. - Створіть
release/YYYY.M.Dз поточногоmain; не виконуйте звичайну роботу над релізом безпосередньо вmain. - Підвищте кожне потрібне місце версії для запланованого тега, запустіть
pnpm plugins:sync, щоб пакети Plugin, придатні для публікації, мали спільну версію релізу та метадані сумісності, потім запустіть локальну детерміновану попередню перевірку:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:build,pnpm plugins:sync:checkіpnpm release:check. - Запустіть
OpenClaw NPM Releaseзpreflight_only=true. Поки тег не існує, повний 40-символьний SHA гілки релізу дозволено для попередньої перевірки лише з метою валідації. Збережіть успішнийpreflight_run_id. - Запустіть усі передрелізні тести через
Full Release Validationдля гілки релізу, тега або повного SHA коміту. Це єдина ручна точка входу для чотирьох великих тестових середовищ релізу: Vitest, Docker, QA Lab і Package. - Якщо перевірка не проходить, виправте проблему в гілці релізу та повторно запустіть найменший невдалий файл, гілку, job workflow, профіль пакета, провайдера або allowlist моделі, що доводить виправлення. Повторно запускайте повну umbrella-перевірку лише тоді, коли змінена поверхня робить попередні докази застарілими.
- Для beta поставте тег
vYYYY.M.D-beta.N, потім запустітьOpenClaw Release Publishз відповідної гілкиrelease/YYYY.M.D. Він перевіряєpnpm plugins:sync:check, спочатку публікує всі пакети Plugin, придатні для публікації, в npm, другим кроком публікує той самий набір у ClawHub, а потім підвищує підготовлений артефакт попередньої перевірки OpenClaw npm з dist-tagbeta. Після публікації запустіть post-publish package acceptance для опублікованого пакетаopenclaw@YYYY.M.D-beta.Nабоopenclaw@beta. Якщо надіслана або опублікована beta потребує виправлення, створіть наступний-beta.N; не видаляйте і не переписуйте стару beta. - Для стабільного релізу продовжуйте лише після того, як перевірена beta або release candidate має
потрібні докази валідації. Публікація стабільного npm також проходить через
OpenClaw Release Publish, повторно використовуючи успішний артефакт попередньої перевірки черезpreflight_run_id; готовність стабільного релізу macOS також потребує упакованих.zip,.dmg,.dSYM.zipі оновленогоappcast.xmlуmain. - Після публікації запустіть npm post-publish verifier, необов’язковий окремий
published-npm Telegram E2E, коли вам потрібен post-publish доказ каналу,
підвищення dist-tag за потреби, нотатки GitHub release/prerelease з
повного відповідного розділу
CHANGELOG.mdі кроки оголошення релізу.
Попередня перевірка релізу
- Запустіть
pnpm check:test-typesперед передрелізною перевіркою, щоб тестовий TypeScript залишався покритим поза швидшим локальним gatepnpm check - Запустіть
pnpm check:architectureперед передрелізною перевіркою, щоб ширші перевірки циклів імпорту та меж архітектури були зеленими поза швидшим локальним gate - Запустіть
pnpm build && pnpm ui:buildпередpnpm release:check, щоб очікувані релізні артефактиdist/*і bundle Control UI існували для етапу валідації pack - Запустіть ручний workflow
Full Release Validationперед схваленням релізу, щоб запустити всі передрелізні тестові boxes з однієї точки входу. Він приймає гілку, tag або повний commit SHA, запускає ручнийCIі запускаєOpenClaw Release Checksдля install smoke, package acceptance, Docker release-path suites, live/E2E, OpenWebUI, QA Lab parity, Matrix і Telegram lanes. Зrelease_profile=fullіrerun_group=allвін також запускає package Telegram E2E проти артефактуrelease-package-under-testз release checks. Надайтеnpm_telegram_package_specпісля публікації, коли той самий Telegram E2E також має підтвердити опублікований npm package. Надайтеevidence_package_spec, коли приватний звіт доказів має підтвердити, що валідація відповідає опублікованому npm package, без примусового Telegram E2E. Приклад:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D - Запустіть ручний workflow
Package Acceptance, коли потрібен side-channel доказ для package candidate, поки релізна робота триває. Використовуйтеsource=npmдляopenclaw@beta,openclaw@latestабо точної release version;source=ref, щоб упакувати довірену гілку/tag/SHApackage_refз поточним harnessworkflow_ref;source=urlдля HTTPS tarball з обов’язковим SHA-256; абоsource=artifactдля tarball, завантаженого іншим GitHub Actions run. Workflow resolves candidate topackage-under-test, повторно використовує Docker E2E release scheduler проти цього tarball і може запускати Telegram QA проти того самого tarball зtelegram_mode=mock-openaiабоtelegram_mode=live-frontier. Коли вибрані Docker lanes містятьpublished-upgrade-survivor, package artifact є candidate, аpublished_upgrade_survivor_baselineвибирає published baseline. Приклад: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: install/channel/agent, gateway network і config reload lanespackage: artifact-native package/update/plugin lanes без OpenWebUI або live ClawHubproduct: package profile плюс MCP channels, cron/subagent cleanup, OpenAI web search і OpenWebUIfull: Docker release-path chunks з OpenWebUIcustom: точний вибірdocker_lanesдля сфокусованого повторного запуску
- Запустіть ручний workflow
CIнапряму, коли потрібне лише повне звичайне CI покриття для release candidate. Ручні CI dispatches bypass changed scoping і примусово запускають Linux Node shards, bundled-plugin shards, channel contracts, Node 22 compatibility,check,check-additional, build smoke, docs checks, Python skills, Windows, macOS, Android і Control UI i18n lanes. Приклад:gh workflow run ci.yml --ref release/YYYY.M.D - Запустіть
pnpm qa:otel:smokeпід час валідації release telemetry. Він проганяє QA-lab через локальний OTLP/HTTP receiver і перевіряє експортовані назви trace span, обмежені attributes і редагування content/identifier без потреби в Opik, Langfuse або іншому зовнішньому collector. - Запустіть
pnpm release:checkперед кожним tagged release - Запустіть
OpenClaw Release Publishдля mutating publish sequence після того, як tag існує. Dispatch його зrelease/YYYY.M.D(абоmain, коли публікується main-reachable tag), передайте release tag і успішний OpenClaw npmpreflight_run_id, і залиште default plugin publish scopeall-publishable, якщо ви не виконуєте навмисний focused repair. Workflow serializes plugin npm publish, plugin ClawHub publish і OpenClaw npm publish, щоб core package не було опубліковано перед його externalized plugins. - Release checks тепер виконуються в окремому ручному workflow:
OpenClaw Release Checks OpenClaw Release Checksтакож запускає QA Lab mock parity gate плюс fast live Matrix profile і Telegram QA lane перед схваленням релізу. Live lanes використовують середовищеqa-live-shared; Telegram також використовує Convex CI credential leases. Запустіть ручний workflowQA-Lab - All Lanesзmatrix_profile=allіmatrix_shards=true, коли потрібен повний Matrix transport, media і E2EE inventory паралельно.- Cross-OS install і upgrade runtime validation є частиною публічних
OpenClaw Release ChecksіFull Release Validation, які напряму викликають reusable workflow.github/workflows/openclaw-cross-os-release-checks-reusable.yml - Цей поділ навмисний: тримайте реальний npm release path коротким, deterministic і artifact-focused, тоді як повільніші live checks залишаються у власному lane, щоб вони не затримували й не блокували publish
- Secret-bearing release checks слід dispatch через
Full Release Validationабо зmain/release workflow ref, щоб workflow logic і secrets залишалися контрольованими OpenClaw Release Checksприймає гілку, tag або повний commit SHA, якщо resolved commit reachable з OpenClaw branch або release tag- Validation-only preflight
OpenClaw NPM Releaseтакож приймає поточний повний 40-символьний workflow-branch commit SHA без потреби в pushed tag - Цей SHA path призначений лише для валідації й не може бути promoted у реальний publish
- У SHA mode workflow synthesizes
v<package.json version>лише для package metadata check; реальний publish усе ще потребує справжнього release tag - Обидва workflows тримають реальний publish і promotion path на GitHub-hosted runners, тоді як non-mutating validation path може використовувати більші Blacksmith Linux runners
- Цей workflow запускає
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheз використанням обох workflow secretsOPENAI_API_KEYіANTHROPIC_API_KEY - npm release preflight більше не чекає на окремий release checks lane
- Запустіть
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(або відповідний beta/correction tag) перед схваленням - Після npm publish запустіть
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(або відповідну beta/correction version), щоб перевірити published registry install path у свіжому temp prefix - Після beta publish запустіть
OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC=openclaw@YYYY.M.D-beta.N OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci pnpm test:docker:npm-telegram-live, щоб перевірити installed-package onboarding, Telegram setup і реальний Telegram E2E проти опублікованого npm package, використовуючи shared leased Telegram credential pool. Локальні одноразові maintainer runs можуть пропускати Convex vars і передавати три env credentialsOPENCLAW_QA_TELEGRAM_*напряму. - Maintainers можуть запускати ту саму post-publish check з GitHub Actions через
ручний workflow
NPM Telegram Beta E2E. Він навмисно manual-only і не запускається на кожному merge. - Maintainer release automation тепер використовує preflight-then-promote:
- реальний npm publish має пройти успішний npm
preflight_run_id - реальний npm publish має бути dispatched з тієї самої гілки
mainабоrelease/YYYY.M.D, що й успішний preflight run - stable npm releases default to
beta - stable npm publish може явно цілитися в
latestчерез workflow input - token-based npm dist-tag mutation тепер живе в
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlдля безпеки, боnpm dist-tag addвсе ще потребуєNPM_TOKEN, тоді як public repo keeps OIDC-only publish - public
macOS Releaseє validation-only; коли tag існує лише на release branch, але workflow dispatched зmain, встановітьpublic_release_branch=release/YYYY.M.D - реальний private mac publish має пройти успішні private mac
preflight_run_idіvalidate_run_id - реальні publish paths promote prepared artifacts замість того, щоб rebuilding them again
- реальний npm publish має пройти успішний npm
- Для stable correction releases на кшталт
YYYY.M.D-Npost-publish verifier також перевіряє той самий temp-prefix upgrade path зYYYY.M.DдоYYYY.M.D-N, щоб release corrections не могли непомітно залишити старіші global installs на base stable payload - npm release preflight fails closed, якщо tarball не містить одночасно
dist/control-ui/index.htmlі non-empty payloaddist/control-ui/assets/, щоб ми знову не shipped empty browser dashboard - Post-publish verification також перевіряє, що published plugin entrypoints і
package metadata присутні в installed registry layout. Реліз, який
ships missing plugin runtime payloads, fails postpublish verifier і
не може бути promoted to
latest. pnpm test:install:smokeтакож enforces npm packunpackedSizebudget on candidate update tarball, щоб installer e2e catches accidental pack bloat перед release publish path- Якщо release work touched CI planning, extension timing manifests або
extension test matrices, regenerate and review planner-owned
plugin-prerelease-extension-shardmatrix outputs from.github/workflows/plugin-prerelease.ymlперед approval, щоб release notes не описували stale CI layout - Stable macOS release readiness також includes updater surfaces:
- GitHub release має в підсумку містити packaged
.zip,.dmgі.dSYM.zip appcast.xmlonmainмає point at new stable zip after publish- packaged app має keep non-debug bundle id, non-empty Sparkle feed
URL і
CFBundleVersionна або вище canonical Sparkle build floor for that release version
- GitHub release має в підсумку містити packaged
Release test boxes
Full Release Validation — це спосіб, яким operators запускають усі передрелізні тести з
однієї точки входу. Для pinned commit proof на швидко змінюваній гілці використовуйте
helper, щоб кожен child workflow запускався з тимчасової гілки, зафіксованої на target
SHA:
pnpm ci:full-release --sha <full-sha>
Helper pushes release-ci/<sha>-..., dispatches Full Release Validation
from that branch with ref=<sha>, verifies every child workflow headSha
matches the target, then deletes the temporary branch. This avoids proving a
newer main child run by accident.
Для валідації release branch або tag запустіть його з довіреного workflow
ref main і передайте release branch або tag як ref:
gh workflow run full-release-validation.yml \
--ref main \
-f ref=release/YYYY.M.D \
-f provider=openai \
-f mode=both \
-f release_profile=stable \
-f evidence_package_spec=openclaw@YYYY.M.D-beta.N
Робочий процес визначає цільовий ref, запускає ручний CI з
target_ref=<release-ref>, запускає OpenClaw Release Checks і запускає
окремий пакетний Telegram E2E, коли release_profile=full з
rerun_group=all або коли задано npm_telegram_package_spec. Потім OpenClaw Release Checks розгортає install smoke, cross-OS release checks, live/E2E Docker
coverage для release path, Package Acceptance з QA пакета Telegram, QA Lab
parity, live Matrix і live Telegram. Повний запуск прийнятний лише тоді, коли
зведення Full Release Validation
показує normal_ci і release_checks як успішні. У режимі full/all
дочірній npm_telegram також має бути успішним; поза full/all він пропускається,
якщо не було надано опублікований npm_telegram_package_spec. Фінальне
зведення verifier містить таблиці найповільніших завдань для кожного дочірнього запуску, щоб release
manager міг бачити поточний критичний шлях без завантаження логів.
Див. Повна валідація релізу для
повної матриці етапів, точних назв завдань workflow, відмінностей між stable і full профілями,
артефактів і ручок для сфокусованого повторного запуску.
Дочірні workflow запускаються з довіреного ref, який виконує Full Release Validation, зазвичай --ref main, навіть коли цільовий ref вказує на
старішу релізну гілку або тег. Окремого input 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: найшвидший release-critical OpenAI/core live і Docker pathstable: minimum плюс stable provider/backend coverage для затвердження релізуfull: stable плюс широке advisory provider/media coverage
OpenClaw Release Checks використовує довірений workflow ref, щоб один раз визначити цільовий
ref як release-package-under-test, і повторно використовує цей артефакт як у
release-path Docker checks, так і в Package Acceptance. Це утримує всі
package-facing бокси на тих самих байтах і уникає повторних збірок пакета.
Cross-OS OpenAI install smoke використовує OPENCLAW_CROSS_OS_OPENAI_MODEL, коли
змінну repo/org задано, інакше openai/gpt-5.5, оскільки ця lane
доводить встановлення пакета, onboarding, запуск gateway і один live agent turn,
а не бенчмарк найповільнішої моделі за замовчуванням. Ширша live provider
matrix залишається місцем для model-specific coverage.
Використовуйте ці варіанти залежно від етапу релізу:
# Validate an unpublished release candidate branch.
gh workflow run full-release-validation.yml \
--ref main \
-f ref=release/YYYY.M.D \
-f provider=openai \
-f mode=both \
-f release_profile=stable
# Validate an exact pushed commit.
gh workflow run full-release-validation.yml \
--ref main \
-f ref=<40-char-sha> \
-f provider=openai \
-f mode=both
# After publishing a beta, add published-package Telegram E2E.
gh workflow run full-release-validation.yml \
--ref main \
-f ref=release/YYYY.M.D \
-f provider=openai \
-f mode=both \
-f release_profile=full \
-f evidence_package_spec=openclaw@YYYY.M.D-beta.N \
-f npm_telegram_package_spec=openclaw@YYYY.M.D-beta.N \
-f npm_telegram_provider_mode=mock-openai
Не використовуйте повну umbrella як перший повторний запуск після сфокусованого виправлення. Якщо один box
падає, використовуйте невдалий дочірній workflow, job, Docker lane, package profile, model
provider або QA lane для наступного доказу. Запускайте повну umbrella знову лише тоді, коли
виправлення змінило спільну release orchestration або зробило попередній all-box evidence
застарілим. Фінальний verifier umbrella повторно перевіряє записані child workflow run
ids, тому після успішного повторного запуску child workflow повторно запускайте лише невдалий
батьківський job Verify full validation.
Для обмеженого відновлення передайте rerun_group в umbrella. all — це справжній
запуск release candidate, ci запускає лише звичайний дочірній CI, plugin-prerelease
запускає лише release-only plugin child, release-checks запускає кожен release
box, а вужчі release groups — це install-smoke, cross-os,
live-e2e, package, qa, qa-parity, qa-live і npm-telegram.
Сфокусовані повторні запуски npm-telegram потребують npm_telegram_package_spec; запуски full/all
з release_profile=full використовують артефакт пакета release-checks.
Vitest
Vitest box — це ручний дочірній workflow CI. Ручний CI навмисно
обходить changed scoping і примусово виконує звичайний тестовий граф для release
candidate: Linux Node shards, bundled-plugin shards, channel contracts, Node 22
compatibility, check, check-additional, build smoke, docs checks, Python
skills, Windows, macOS, Android і Control UI i18n.
Використовуйте цей box, щоб відповісти: "чи пройшло дерево джерел повний звичайний набір тестів?" Це не те саме, що release-path product validation. Докази, які слід зберігати:
- зведення
Full Release Validation, що показує URL запущеногоCIrun - зелений
CIrun на точному цільовому SHA - назви невдалих або повільних shard із CI jobs під час розслідування регресій
- артефакти таймінгів Vitest, такі як
.artifacts/vitest-shard-timings.json, коли запуск потребує аналізу продуктивності
Запускайте ручний CI напряму лише тоді, коли релізу потрібен детермінований звичайний CI, але не Docker, QA Lab, live, cross-OS або package boxes:
gh workflow run ci.yml --ref main -f target_ref=release/YYYY.M.D
Docker
Docker box живе в OpenClaw Release Checks через
openclaw-live-and-e2e-checks-reusable.yml, плюс release-mode
workflow install-smoke. Він перевіряє release candidate через упаковані
Docker середовища, а не лише тести рівня джерел.
Release Docker coverage включає:
- повний install smoke з увімкненим повільним Bun global install smoke
- підготовку/повторне використання root Dockerfile smoke image за цільовим SHA, з QR, root/gateway і installer/Bun smoke jobs, що виконуються як окремі install-smoke shards
- repository E2E lanes
- release-path 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 coverage всередині chunk
plugins-runtime-services, коли це запитано - розділені bundled plugin install/uninstall lanes
bundled-plugin-install-uninstall-0доbundled-plugin-install-uninstall-23 - live/E2E provider suites і Docker live model coverage, коли release checks включають live suites
Використовуйте Docker артефакти перед повторним запуском. Release-path scheduler завантажує
.artifacts/docker-tests/ з логами lane, summary.json, failures.json,
таймінгами фаз, scheduler plan JSON і командами повторного запуску. Для сфокусованого відновлення
використовуйте docker_lanes=<lane[,lane]> у reusable live/E2E workflow замість
повторного запуску всіх release chunks. Згенеровані команди повторного запуску включають попередні
package_artifact_run_id і підготовлені Docker image inputs, коли доступні, щоб
невдала lane могла повторно використати той самий tarball і GHCR images.
QA Lab
QA Lab box також є частиною OpenClaw Release Checks. Це agentic
behavior і channel-level release gate, окремий від Vitest і Docker
package mechanics.
Release QA Lab coverage включає:
- mock parity gate, що порівнює OpenAI candidate lane з Opus 4.6 baseline за допомогою agentic parity pack
- швидкий live Matrix QA profile з використанням середовища
qa-live-shared - live Telegram QA lane з використанням Convex CI credential leases
pnpm qa:otel:smoke, коли release telemetry потребує явного локального доказу
Використовуйте цей box, щоб відповісти: "чи поводиться реліз коректно у QA сценаріях і live channel flows?" Зберігайте URL артефактів для parity, Matrix і Telegram lanes під час затвердження релізу. Повне Matrix coverage залишається доступним як ручний sharded QA-Lab run, а не release-critical lane за замовчуванням.
Пакет
Package box — це installable-product gate. Він підтримується
Package Acceptance і resolver
scripts/resolve-openclaw-package-candidate.mjs. Resolver нормалізує
candidate у tarball package-under-test, який споживає Docker E2E, перевіряє
інвентар пакета, записує версію пакета та SHA-256 і тримає
workflow harness ref окремо від package source ref.
Підтримувані джерела candidate:
source=npm:openclaw@beta,openclaw@latestабо точна release version OpenClawsource=ref: пакувати довіренуpackage_refbranch, tag або full commit SHA з вибранимworkflow_refharnesssource=url: завантажити HTTPS.tgzз обов’язковимpackage_sha256source=artifact: повторно використати.tgz, завантажений іншим GitHub Actions run
OpenClaw Release Checks запускає Package Acceptance з source=artifact,
підготовленим release package artifact, suite_profile=custom,
docker_lanes=doctor-switch update-channel-switch upgrade-survivor published-upgrade-survivor plugins-offline plugin-update,
published_upgrade_survivor_baselines=release-history,
published_upgrade_survivor_scenarios=reported-issues і
telegram_mode=mock-openai. Package Acceptance утримує migration, update, stale
plugin dependency cleanup, offline plugin fixtures, plugin update і Telegram
package QA проти того самого resolved tarball. Це GitHub-native
заміна більшої частини package/update coverage, яка раніше потребувала
Parallels. Cross-OS release checks усе ще важливі для OS-specific onboarding,
installer і platform behavior, але package/update product validation має
надавати перевагу Package Acceptance.
Канонічний checklist для update і plugin validation —
Тестування оновлень і plugins. Використовуйте його, коли
вирішуєте, яка local, Docker, Package Acceptance або release-check lane доводить
plugin install/update, doctor cleanup або published-package migration change.
Exhaustive published update migration з кожного stable пакета 2026.4.23+ — це
окремий ручний workflow Update Migration, а не частина Full Release CI.
Legacy package-acceptance leniency навмисно обмежена в часі. Пакети до
2026.4.25 можуть використовувати compatibility path для metadata gaps, уже опублікованих
до npm: private QA inventory entries, відсутні в tarball, відсутній
gateway install --wrapper, відсутні patch files у tarball-derived git
fixture, відсутній persisted update.channel, legacy plugin install-record
locations, відсутній marketplace install-record persistence і config metadata
migration під час plugins update. Опублікований пакет 2026.4.26 може попереджати
про local build metadata stamp files, які вже були shipped. Пізніші пакети
мають задовольняти сучасні package contracts; ті самі gaps провалюють release
validation.
Використовуйте ширші Package Acceptance profiles, коли release question стосується фактичного installable package:
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
Поширені package profiles:
smoke: quick package install/channel/agent, gateway network і config reload lanespackage: install/update/plugin package contracts без live ClawHub; це release-check defaultproduct:packageплюс MCP channels, cron/subagent cleanup, OpenAI web search і OpenWebUIfull: Docker release-path chunks з OpenWebUIcustom: точний списокdocker_lanesдля сфокусованих повторних запусків
Для підтвердження пакета-кандидата Telegram увімкніть telegram_mode=mock-openai або
telegram_mode=live-frontier у Package Acceptance. Workflow передає
розв’язаний tarball package-under-test у доріжку Telegram; окремий
workflow Telegram досі приймає опубліковану npm-специфікацію для перевірок
після публікації.
Вхідні дані 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 Checks приймає такі вхідні дані, керовані оператором:
ref: гілка, тег або повний SHA коміту для валідації. Перевірки, що містять secrets, вимагають, щоб розв’язаний коміт був досяжний з гілки OpenClaw або релізного тегу.
Правила:
- Стабільні та корекційні теги можна публікувати або в
beta, або вlatest - Beta-теги prerelease можна публікувати лише в
beta - Для
OpenClaw NPM Releaseвхідний повний SHA коміту дозволений лише колиpreflight_only=true OpenClaw Release ChecksіFull Release Validationзавжди призначені лише для валідації- Реальний шлях публікації має використовувати той самий
npm_dist_tag, що використовувався під час preflight; workflow перевіряє ці metadata перед продовженням публікації
Послідовність стабільного npm-релізу
Коли готуєте стабільний npm-реліз:
- Запустіть
OpenClaw NPM Releaseзpreflight_only=true- До створення тегу можна використовувати поточний повний SHA коміту гілки workflow для пробного запуску preflight workflow лише з валідацією
- Виберіть
npm_dist_tag=betaдля звичайного потоку спочатку в beta абоlatestлише коли ви навмисно хочете пряму стабільну публікацію - Запустіть
Full Release Validationна релізній гілці, релізному тегу або повному SHA коміту, коли потрібні звичайний CI плюс покриття live prompt cache, Docker, QA Lab, Matrix і Telegram з одного ручного workflow - Якщо вам навмисно потрібен лише детермінований звичайний граф тестів, запустіть
ручний workflow
CIна release ref натомість - Збережіть успішний
preflight_run_id - Запустіть
OpenClaw NPM Releaseзнову зpreflight_only=false, тим самимtag, тим самимnpm_dist_tagі збереженимpreflight_run_id - Якщо реліз потрапив у
beta, використайте приватний workflowopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml, щоб просунути цю стабільну версію зbetaдоlatest - Якщо реліз навмисно опубліковано напряму в
latest, аbetaмає негайно вказувати на ту саму стабільну збірку, використайте той самий приватний workflow, щоб спрямувати обидва dist-tags на стабільну версію, або дозвольте його запланованій самовідновлювальній синхронізації переміститиbetaпізніше
Зміна dist-tag розміщена у приватному repo з міркувань безпеки, оскільки вона досі
потребує NPM_TOKEN, тоді як публічний repo зберігає публікацію лише через OIDC.
Це робить і шлях прямої публікації, і шлях просування спочатку через beta задокументованими та видимими для оператора.
Якщо maintainer мусить повернутися до локальної npm-автентифікації, запускайте будь-які команди 1Password
CLI (op) лише всередині виділеної tmux-сесії. Не викликайте op
напряму з основної оболонки агента; утримання його всередині tmux робить prompts,
alerts і обробку OTP видимими та запобігає повторним сповіщенням хоста.
Публічні посилання
.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
Maintainers використовують приватну документацію релізів у
openclaw/maintainers/release/README.md
для фактичного runbook.