chore(i18n): refresh uk translations
Some checks are pending
Docs Live Smoke / smoke (push) Waiting to run
Translate uk / translate (push) Waiting to run
Translate zh-CN / translate (push) Waiting to run

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-29 11:39:57 +00:00
parent 71ea48b53d
commit 1b6da89baf
2 changed files with 626 additions and 546 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,163 +1,242 @@
---
read_when:
- Пошук визначень загальнодоступних каналів випуску
- Запуск перевірки релізу або приймального тестування пакета
- Пошук правил іменування версій і періодичності випусків
summary: Релізні лінії, контрольний список оператора, бокси валідації, іменування версій і каденція
- Пошук визначень публічних каналів випуску
- Запуск перевірки випуску або приймання пакета
- Шукаємо іменування версій і періодичність випусків
summary: Релізні лінії, контрольний список оператора, бокси валідації, іменування версій і періодичність
title: Політика випусків
x-i18n:
generated_at: "2026-04-29T10:40:36Z"
generated_at: "2026-04-29T11:37:38Z"
model: gpt-5.5
provider: openai
source_hash: 815c4bffe7930384584533e934996592114af510ebd775fc873086d63c74203f
source_hash: bc944cc72f61226363cd6684c1b4830c518874da21bcf8127d365772275f17f7
source_path: reference/RELEASING.md
workflow: 16
---
OpenClaw має три публічні гілки релізів:
OpenClaw має три публічні канали випусків:
- stable: позначені тегами релізи, які за замовчуванням публікуються в npm `beta`, або в npm `latest`, коли це явно запитано
- beta: передрелізні теги, які публікуються в npm `beta`
- stable: позначені тегами випуски, які типово публікуються в npm `beta`, або в npm `latest`, коли це явно запитано
- beta: теги попередніх випусків, які публікуються в npm `beta`
- dev: рухома вершина `main`
## Назви версій
## Іменування версій
- Версія стабільного релізу: `YYYY.M.D`
- Версія стабільного випуску: `YYYY.M.D`
- Git-тег: `vYYYY.M.D`
- Версія коригувального стабільного релізу: `YYYY.M.D-N`
- Версія корекційного стабільного випуску: `YYYY.M.D-N`
- Git-тег: `vYYYY.M.D-N`
- Версія beta-передрелізу: `YYYY.M.D-beta.N`
- Версія попереднього beta-випуску: `YYYY.M.D-beta.N`
- Git-тег: `vYYYY.M.D-beta.N`
- Не додавайте початкові нулі до місяця чи дня
- `latest` означає поточний просунутий стабільний npm-реліз
- Не додавайте початковий нуль до місяця або дня
- `latest` означає поточний просунутий стабільний npm-випуск
- `beta` означає поточну ціль встановлення beta
- Стабільні та коригувальні стабільні релізи за замовчуванням публікуються в npm `beta`; оператори релізу можуть явно націлитися на `latest` або пізніше просунути перевірену beta-збірку
- Кожен стабільний реліз OpenClaw постачається разом із npm-пакетом і застосунком macOS;
beta-релізи зазвичай спершу перевіряють і публікують шлях npm/пакета, а
збирання/підписування/нотаризація Mac-застосунку лишаються для стабільних релізів, якщо їх явно не запитано
- Стабільні та корекційні стабільні випуски типово публікуються в npm `beta`; оператори випуску можуть явно націлитися на `latest` або пізніше просунути перевірену beta-збірку
- Кожен стабільний випуск OpenClaw постачає npm-пакет і застосунок macOS разом;
beta-випуски зазвичай спершу перевіряють і публікують шлях npm/пакета, а
збирання/підписування/нотаризація застосунку Mac зарезервовані для стабільних випусків, якщо не запитано явно
## Частота релізів
## Періодичність випусків
- Релізи рухаються спочатку через beta
- Стабільний реліз виходить лише після перевірки останньої beta
- Мейнтейнери зазвичай створюють релізи з гілки `release/YYYY.M.D`, створеної
з поточного `main`, щоб перевірка релізу та виправлення не блокували нову
- Випуски рухаються спочатку через beta
- Стабільний випуск іде лише після перевірки останньої beta
- Супровідники зазвичай відгалужують випуски з гілки `release/YYYY.M.D`, створеної
з поточного `main`, щоб перевірка випуску й виправлення не блокували нову
розробку в `main`
- Якщо beta-тег уже надіслано або опубліковано й він потребує виправлення, мейнтейнери створюють
наступний тег `-beta.N` замість видалення чи повторного створення старого beta-тега
- Докладна процедура релізу, схвалення, облікові дані та нотатки з відновлення
доступні лише мейнтейнерам
- Якщо beta-тег уже було надіслано або опубліковано й він потребує виправлення, супровідники створюють
наступний тег `-beta.N` замість видалення або повторного створення старого beta-тега
- Докладна процедура випуску, погодження, облікові дані та нотатки з відновлення
доступні лише супровідникам
## Контрольний список оператора релізу
## Контрольний список оператора випуску
Цей контрольний список є публічною формою релізного процесу. Приватні облікові дані,
підписування, нотаризація, відновлення dist-tag і подробиці екстреного відкату лишаються в
релізному runbook лише для мейнтейнерів.
Цей контрольний список описує публічну форму процесу випуску. Приватні облікові дані,
підписування, нотаризація, відновлення dist-tag і подробиці екстреного відкату залишаються в
інструкції з випуску лише для супровідників.
1. Почніть із поточного `main`: підтягніть останні зміни, підтвердьте, що цільовий коміт надіслано,
і підтвердьте, що поточний CI `main` достатньо зелений, щоб створити з нього гілку.
2. Перепишіть верхній розділ `CHANGELOG.md` на основі реальної історії комітів за допомогою
`/changelog`, залиште записи орієнтованими на користувачів, закомітьте їх, надішліть і виконайте rebase/pull
і підтвердьте, що поточний CI `main` достатньо зелений, щоб відгалужуватися від нього.
2. Перепишіть верхній розділ `CHANGELOG.md` з реальної історії комітів за допомогою
`/changelog`, залиште записи орієнтованими на користувача, закомітьте це, надішліть зміни й виконайте rebase/pull
ще раз перед створенням гілки.
3. Перегляньте записи сумісності релізу в
3. Перегляньте записи сумісності випуску в
`src/plugins/compat/registry.ts` і
`src/commands/doctor/shared/deprecation-compat.ts`. Видаляйте прострочену
сумісність лише тоді, коли шлях оновлення лишається покритим, або зафіксуйте, чому її
сумісність лише тоді, коли шлях оновлення залишається покритим, або зафіксуйте, чому її
навмисно збережено.
4. Створіть `release/YYYY.M.D` з поточного `main`; не виконуйте звичайну релізну роботу
4. Створіть `release/YYYY.M.D` з поточного `main`; не виконуйте звичайну роботу над випуском
безпосередньо в `main`.
5. Оновіть кожне потрібне місце з версією для запланованого тега, потім запустіть
5. Підніміть версію в кожному обов’язковому місці для запланованого тега, потім запустіть
локальну детерміновану попередню перевірку:
`pnpm check:test-types`, `pnpm check:architecture`,
`pnpm build && pnpm ui:build` і `pnpm release:check`.
6. Запустіть `OpenClaw NPM Release` з `preflight_only=true`. До появи тега
повний 40-символьний SHA релізної гілки дозволений для попередньої перевірки лише з метою валідації.
6. Запустіть `OpenClaw NPM Release` з `preflight_only=true`. До існування тега
повний 40-символьний SHA гілки випуску дозволений для попередньої перевірки лише з метою валідації.
Збережіть успішний `preflight_run_id`.
7. Запустіть усі передрелізні тести через `Full Release Validation` для
релізної гілки, тега або повного SHA коміту. Це єдина ручна точка входу
для чотирьох великих релізних тестових середовищ: Vitest, Docker, QA Lab і Package.
8. Якщо перевірка не пройшла, виправте в релізній гілці й повторно запустіть найменший невдалий
файл, гілку, завдання workflow, профіль пакета, провайдера або allowlist моделей, що
доводить виправлення. Повторно запускайте повну umbrella-перевірку лише тоді, коли змінена поверхня робить
гілки випуску, тега або повного SHA коміту. Це єдина ручна точка входу
для чотирьох великих тестових боксів випуску: Vitest, Docker, QA-лабораторія і Package.
8. Якщо валідація не пройшла, виправте в гілці випуску й повторно запустіть найменший файл,
канал, завдання workflow, профіль пакета, провайдера або allowlist моделі, що
доводить виправлення. Повторно запускайте повну парасольку лише тоді, коли змінена поверхня робить
попередні докази застарілими.
9. Для beta позначте тегом `vYYYY.M.D-beta.N`, опублікуйте з npm dist-tag `beta`, потім запустіть
post-publish package acceptance проти опублікованого пакета `openclaw@YYYY.M.D-beta.N`
післяпублікаційне приймання пакета для опублікованого пакета `openclaw@YYYY.M.D-beta.N`
або `openclaw@beta`. Якщо надіслана або опублікована beta потребує виправлення, створіть
наступний `-beta.N`; не видаляйте й не переписуйте стару beta.
10. Для стабільного релізу продовжуйте лише після того, як перевірена beta або release candidate має
потрібні докази перевірки. Стабільна npm-публікація повторно використовує успішний
артефакт попередньої перевірки через `preflight_run_id`; готовність стабільного релізу macOS
10. Для стабільного випуску продовжуйте лише після того, як перевірена beta або кандидат у випуск матиме
необхідні докази валідації. Публікація стабільного npm повторно використовує успішний
артефакт попередньої перевірки через `preflight_run_id`; готовність стабільного macOS-випуску
також потребує запакованих `.zip`, `.dmg`, `.dSYM.zip` і оновленого
`appcast.xml` у `main`.
11. Після публікації запустіть npm post-publish verifier, необов’язковий автономний
published-npm Telegram E2E, коли потрібен post-publish доказ каналу,
просування dist-tag за потреби, нотатки GitHub release/prerelease з
повного відповідного розділу `CHANGELOG.md` і кроки оголошення релізу.
11. Після публікації запустіть npm-перевірник після публікації, необов’язковий автономний
опублікований-npm Telegram E2E, коли потрібен доказ каналу після публікації,
просування dist-tag за потреби, нотатки GitHub-випуску/попереднього випуску з
повного відповідного розділу `CHANGELOG.md` і кроки оголошення випуску.
## Попередня перевірка релізу
## Попередня перевірка випуску
- Запустіть `pnpm check:test-types` перед передрелізною перевіркою, щоб тестовий TypeScript залишався покритим поза швидшим локальним шлюзом `pnpm check`
- Запустіть `pnpm check:architecture` перед передрелізною перевіркою, щоб ширші перевірки циклів імпортів і архітектурних меж були зеленими поза швидшим локальним шлюзом
- Запустіть `pnpm build && pnpm ui:build` перед `pnpm release:check`, щоб очікувані релізні артефакти `dist/*` і бандл Control UI існували для кроку валідації пакування
- Запустіть ручний workflow `Full Release Validation` перед схваленням релізу, щоб запустити всі передрелізні test boxes з однієї точки входу. Він приймає гілку, тег або повний SHA коміту, запускає ручний `CI` і запускає `OpenClaw Release Checks` для install smoke, package acceptance, наборів release-path для Docker, live/E2E, OpenWebUI, паритету QA Lab, Matrix і Telegram lanes. Надавайте `npm_telegram_package_spec` лише після публікації пакета, коли також потрібно виконати post-publish Telegram E2E. Надавайте `evidence_package_spec`, коли приватний звіт доказів має підтвердити, що валідація відповідає опублікованому npm-пакету, не примушуючи запускати Telegram E2E. Приклад:
- Запустіть `pnpm check:test-types` перед передрелізною перевіркою, щоб тестовий TypeScript залишався
покритим поза швидшим локальним бар’єром `pnpm check`
- Запустіть `pnpm check:architecture` перед передрелізною перевіркою, щоб ширші перевірки циклів
імпортів і меж архітектури були зеленими поза швидшим локальним бар’єром
- Запустіть `pnpm build && pnpm ui:build` перед `pnpm release:check`, щоб очікувані
релізні артефакти `dist/*` і бандл Control UI існували для кроку
валідації пакування
- Запустіть ручний workflow `Full Release Validation` перед схваленням релізу, щоб
запустити всі передрелізні тестові boxes з однієї точки входу. Він приймає гілку,
тег або повний SHA коміту, запускає ручний `CI` і запускає
`OpenClaw Release Checks` для install smoke, package acceptance, Docker
release-path suiteів, live/E2E, OpenWebUI, паритету QA Lab, Matrix і Telegram
lanes. Надавайте `npm_telegram_package_spec` лише після публікації пакета
і коли post-publish Telegram E2E також має виконатися. Надавайте
`evidence_package_spec`, коли приватний evidence-звіт має довести, що
валідація відповідає опублікованому npm-пакету без примусового Telegram E2E.
Приклад:
`gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D`
- Запустіть ручний workflow `Package Acceptance`, коли потрібен доказ із побічного каналу для кандидата пакета, поки релізна робота триває. Використовуйте `source=npm` для `openclaw@beta`, `openclaw@latest` або точної релізної версії; `source=ref`, щоб запакувати довірену гілку/тег/SHA `package_ref` з поточним harness `workflow_ref`; `source=url` для HTTPS tarball з обов’язковим SHA-256; або `source=artifact` для tarball, завантаженого іншим запуском GitHub Actions. Workflow визначає кандидата як `package-under-test`, повторно використовує планувальник Docker E2E релізу для цього tarball і може запускати Telegram QA для того самого tarball з `telegram_mode=mock-openai` або `telegram_mode=live-frontier`.
- Запустіть ручний workflow `Package Acceptance`, коли потрібне side-channel підтвердження
для кандидата пакета, поки релізна робота триває. Використовуйте `source=npm` для
`openclaw@beta`, `openclaw@latest` або точної релізної версії; `source=ref`,
щоб упакувати довірену гілку/тег/SHA `package_ref` з поточним
harness `workflow_ref`; `source=url` для HTTPS tarball з обов’язковим
SHA-256; або `source=artifact` для tarball, завантаженого іншим запуском
GitHub Actions. Workflow розв’язує кандидата до
`package-under-test`, повторно використовує Docker E2E release scheduler для цього
tarball і може запускати Telegram QA для того самого tarball з
`telegram_mode=mock-openai` або `telegram_mode=live-frontier`.
Приклад: `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 telegram_mode=mock-openai`
Поширені профілі:
- `smoke`: lanes встановлення/каналу/агента, мережі Gateway і перезавантаження конфігурації
- `package`: lanes пакета/оновлення/Plugin, нативні для артефакта, без OpenWebUI або live ClawHub
- `product`: профіль package плюс MCP-канали, очищення cron/subagent, вебпошук OpenAI і OpenWebUI
- `full`: фрагменти Docker release-path з OpenWebUI
- `smoke`: lanes інсталяції/channel/agent, Gateway-мережі та перезавантаження config
- `package`: package/update/plugin lanes, прив’язані до артефакта, без OpenWebUI або live ClawHub
- `product`: профіль package плюс MCP channels, очищення cron/subagent,
OpenAI web search і OpenWebUI
- `full`: Docker release-path chunks з OpenWebUI
- `custom`: точний вибір `docker_lanes` для сфокусованого повторного запуску
- Запустіть ручний workflow `CI` напряму, коли потрібне лише повне звичайне покриття CI для кандидата релізу. Ручні запуски CI обходять changed scoping і примусово вмикають Linux Node shards, bundled-plugin shards, channel contracts, сумісність Node 22, `check`, `check-additional`, build smoke, перевірки документації, Python skills, Windows, macOS, Android і lanes Control UI i18n.
- Запустіть ручний workflow `CI` напряму, коли потрібне лише повне звичайне
CI-покриття для релізного кандидата. Ручні CI dispatch обходять changed
scoping і примусово запускають Linux Node shards, bundled-plugin shards, channel
contracts, сумісність Node 22, `check`, `check-additional`, build smoke,
перевірки docs, Python Skills, Windows, macOS, Android і Control UI i18n
lanes.
Приклад: `gh workflow run ci.yml --ref release/YYYY.M.D`
- Запустіть `pnpm qa:otel:smoke` під час валідації релізної телеметрії. Він проганяє QA-lab через локальний OTLP/HTTP receiver і перевіряє експортовані назви trace span, обмежені атрибути та редагування вмісту/ідентифікаторів без потреби в Opik, Langfuse або іншому зовнішньому collector.
- Запускайте `pnpm release:check` перед кожним тегованим релізом
- Релізні перевірки тепер запускаються в окремому ручному workflow:
- Запустіть `pnpm qa:otel:smoke`, коли валідуєте релізну телеметрію. Він проганяє
QA-lab через локальний OTLP/HTTP receiver і перевіряє експортовані назви trace
span, обмежені атрибути та редагування content/identifier без потреби в
Opik, Langfuse або іншому зовнішньому collector.
- Запускайте `pnpm release:check` перед кожним релізом із тегом
- Release checks тепер виконуються в окремому ручному workflow:
`OpenClaw Release Checks`
- `OpenClaw Release Checks` також запускає mock parity gate QA Lab плюс швидкий live Matrix profile і Telegram QA lane перед схваленням релізу. Live lanes використовують середовище `qa-live-shared`; Telegram також використовує оренди облікових даних Convex CI. Запустіть ручний workflow `QA-Lab - All Lanes` з `matrix_profile=all` і `matrix_shards=true`, коли потрібен повний інвентар Matrix transport, media та E2EE паралельно.
- Cross-OS runtime-валідація встановлення й оновлення є частиною публічних `OpenClaw Release Checks` і `Full Release Validation`, які напряму викликають reusable workflow `.github/workflows/openclaw-cross-os-release-checks-reusable.yml`
- Цей поділ навмисний: реальний npm release path має залишатися коротким, детермінованим і сфокусованим на артефактах, тоді як повільніші live checks залишаються у власній lane, щоб не затримувати й не блокувати публікацію
- Релізні перевірки із секретами слід запускати через `Full Release Validation` або з workflow ref `main`/release, щоб логіка workflow і секрети залишалися контрольованими
- `OpenClaw Release Checks` приймає гілку, тег або повний SHA коміту, якщо визначений коміт досяжний з гілки OpenClaw або релізного тегу
- validation-only preflight `OpenClaw NPM Release` також приймає поточний повний 40-символьний SHA коміту workflow-гілки без вимоги запушеного тегу
- Цей шлях SHA призначений лише для валідації й не може бути просунутий у реальну публікацію
- У режимі SHA workflow синтезує `v<package.json version>` лише для перевірки метаданих пакета; реальна публікація все одно потребує справжнього релізного тегу
- Обидва workflow залишають реальний шлях публікації й просування на GitHub-hosted runners, тоді як немутаційний шлях валідації може використовувати більші Blacksmith Linux runners
- `OpenClaw Release Checks` також запускає QA Lab mock parity gate плюс швидкий
live Matrix profile і Telegram QA lane перед схваленням релізу. Live
lanes використовують середовище `qa-live-shared`; Telegram також використовує Convex CI
credential leases. Запустіть ручний workflow `QA-Lab - All Lanes` з
`matrix_profile=all` і `matrix_shards=true`, коли потрібен повний Matrix
transport, media і E2EE inventory паралельно.
- Cross-OS валідація інсталяції та оновлення runtime є частиною публічних
`OpenClaw Release Checks` і `Full Release Validation`, які напряму викликають
reusable workflow
`.github/workflows/openclaw-cross-os-release-checks-reusable.yml`
- Це розділення навмисне: тримайте реальний npm release path коротким,
детермінованим і сфокусованим на артефактах, тоді як повільніші live checks залишаються у власному
lane, щоб вони не затримували і не блокували publish
- Release checks із секретами слід запускати через `Full Release
Validation` або з workflow ref `main`/release, щоб логіка workflow і
secrets залишалися контрольованими
- `OpenClaw Release Checks` приймає гілку, тег або повний SHA коміту, якщо
розв’язаний коміт доступний з гілки OpenClaw або релізного тегу
- Validation-only preflight `OpenClaw NPM Release` також приймає поточний
повний 40-символьний SHA коміту гілки workflow без потреби в запушеному тегу
- Цей SHA path призначений лише для валідації і не може бути просунутий у реальний publish
- У SHA mode workflow синтезує `v<package.json version>` лише для
перевірки package metadata; реальний publish все ще потребує справжнього release tag
- Обидва workflows тримають реальний publish і promotion path на GitHub-hosted
runners, тоді як немутувальний validation path може використовувати більші
Blacksmith Linux runners
- Цей workflow запускає
`OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cache`
з використанням workflow-секретів `OPENAI_API_KEY` і `ANTHROPIC_API_KEY`
- npm release preflight більше не чекає на окрему lane релізних перевірок
використовуючи workflow secrets `OPENAI_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 тег) перед схваленням
(або відповідний beta/correction tag) перед схваленням
- Після npm publish запустіть
`node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D`
(або відповідну beta/correction версію), щоб перевірити опублікований шлях встановлення з registry у свіжому тимчасовому префіксі
(або відповідну 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`
щоб перевірити onboarding встановленого пакета, налаштування Telegram і реальний Telegram E2E проти опублікованого npm-пакета з використанням спільного пулу орендованих облікових даних Telegram. Локальні одноразові запуски мейнтейнерів можуть опускати змінні Convex і передавати три облікові дані env `OPENCLAW_QA_TELEGRAM_*` напряму.
- Мейнтейнери можуть запустити таку саму post-publish перевірку з GitHub Actions через ручний workflow `NPM Telegram Beta E2E`. Він навмисно лише ручний і не запускається на кожному merge.
- Релізна автоматизація мейнтейнерів тепер використовує preflight-then-promote:
- реальна npm-публікація має пройти успішний npm `preflight_run_id`
- реальна npm-публікація має запускатися з тієї самої гілки `main` або `release/YYYY.M.D`, що й успішний preflight run
- стабільні npm-релізи типово використовують `beta`
- стабільна npm-публікація може явно цілитися в `latest` через workflow input
- token-based мутація npm dist-tag тепер розміщена в `openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml` з міркувань безпеки, оскільки `npm dist-tag add` досі потребує `NPM_TOKEN`, тоді як публічний репозиторій зберігає OIDC-only publish
- публічний `macOS Release` є validation-only
- реальна приватна mac publish має пройти успішні приватні mac `preflight_run_id` і `validate_run_id`
- реальні publish paths просувають підготовлені артефакти замість повторної перебудови
- Для стабільних correction releases на кшталт `YYYY.M.D-N` post-publish verifier також перевіряє той самий шлях оновлення temp-prefix з `YYYY.M.D` до `YYYY.M.D-N`, щоб release corrections не могли непомітно залишити старі глобальні встановлення на базовому stable payload
- npm release preflight fails closed, якщо tarball не містить і `dist/control-ui/index.html`, і непорожній payload `dist/control-ui/assets/`, щоб ми знову не відправили порожню браузерну dashboard
- Post-publish verification також перевіряє, що опубліковане встановлення з registry містить непорожні runtime-залежності bundled plugin під кореневою розкладкою `dist/*`. Реліз, який постачається з відсутніми або порожніми dependency payloads bundled plugin, не проходить postpublish verifier і не може бути просунутий до `latest`.
- `pnpm test:install:smoke` також забезпечує бюджет `unpackedSize` npm pack для candidate update tarball, щоб installer e2e виявляв випадкове роздування пакета до release publish path
- Якщо релізна робота торкнулася планування CI, timing manifests розширень або test matrices розширень, регенеруйте й перегляньте outputs matrix `plugin-prerelease-extension-shard`, якими володіє planner, з `.github/workflows/plugin-prerelease.yml` перед схваленням, щоб release notes не описували застарілий layout CI
- Готовність стабільного macOS-релізу також включає поверхні updater:
- GitHub release має в підсумку містити запаковані `.zip`, `.dmg` і `.dSYM.zip`
- `appcast.xml` у `main` має вказувати на новий stable zip після publish
- запакований застосунок має зберігати non-debug bundle id, непорожній Sparkle feed URL і `CFBundleVersion` на рівні або вище канонічного Sparkle build floor для цієї релізної версії
щоб перевірити installed-package onboarding, налаштування Telegram і реальний Telegram E2E
проти опублікованого npm-пакета з використанням спільного leased Telegram credential
pool. Локальні одноразові maintainer-запуски можуть пропустити Convex vars і передати три
env credentials `OPENCLAW_QA_TELEGRAM_*` напряму.
- Maintainers можуть запускати таку саму post-publish перевірку з GitHub Actions через
ручний workflow `NPM Telegram Beta E2E`. Він навмисно лише ручний і
не запускається на кожному merge.
- Maintainer release automation тепер використовує preflight-then-promote:
- реальний npm publish має пройти успішний npm `preflight_run_id`
- реальний npm publish має бути запущений з тієї самої гілки `main` або
`release/YYYY.M.D`, що й успішний preflight run
- стабільні npm releases за замовчуванням використовують `beta`
- стабільний 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 зберігає OIDC-only publish
- публічний `macOS Release` є лише validation-only
- реальний private mac publish має пройти успішні private mac
`preflight_run_id` і `validate_run_id`
- реальні publish paths просувають підготовлені артефакти замість повторного
їх rebuild
- Для стабільних correction releases на кшталт `YYYY.M.D-N` post-publish verifier
також перевіряє той самий temp-prefix upgrade path з `YYYY.M.D` до `YYYY.M.D-N`,
щоб release corrections не могли непомітно залишити старіші global installs на
базовому stable payload
- npm release preflight fails closed, якщо tarball не містить і
`dist/control-ui/index.html`, і непорожній payload `dist/control-ui/assets/`,
щоб ми знову не відправили порожній browser dashboard
- Post-publish verification також перевіряє, що published registry install
містить непорожні bundled plugin runtime deps під root layout `dist/*`.
Реліз, який виходить із відсутніми або порожніми bundled plugin
dependency payloads, не проходить postpublish verifier і не може бути просунутий
до `latest`.
- `pnpm test:install:smoke` також примусово перевіряє бюджет npm pack `unpackedSize` для
candidate update tarball, щоб installer e2e ловив випадкове pack bloat
до release publish path
- Якщо релізна робота торкалася CI planning, extension timing manifests або
extension test matrices, згенеруйте заново і перегляньте planner-owned
matrix outputs `plugin-prerelease-extension-shard` з
`.github/workflows/plugin-prerelease.yml` перед схваленням, щоб release notes не
описували застарілий CI layout
- Готовність стабільного macOS release також охоплює updater surfaces:
- GitHub release має зрештою містити packaged `.zip`, `.dmg` і `.dSYM.zip`
- `appcast.xml` на `main` має вказувати на новий stable zip після publish
- packaged app має зберігати non-debug bundle id, непорожній Sparkle feed
URL і `CFBundleVersion` на рівні або вище canonical Sparkle build floor
для цієї release version
## Релізні test boxes
## Релізні тестові boxes
`Full Release Validation` — це спосіб, яким оператори запускають усі передрелізні тести з однієї точки входу. Запускайте його з довіреного workflow ref `main` і передавайте релізну гілку, тег або повний SHA коміту як `ref`:
`Full Release Validation` — це спосіб, яким operators запускають усі передрелізні тести з
однієї точки входу. Запускайте його з довіреного workflow ref `main` і передавайте release
branch, tag або повний commit SHA як `ref`:
```bash
gh workflow run full-release-validation.yml \
@ -169,21 +248,42 @@ gh workflow run full-release-validation.yml \
-f evidence_package_spec=openclaw@YYYY.M.D-beta.N
```
Workflow визначає target ref, запускає ручний `CI` з `target_ref=<release-ref>`, запускає `OpenClaw Release Checks` і за потреби запускає автономний post-publish Telegram E2E, коли задано `npm_telegram_package_spec`. Потім `OpenClaw Release Checks` розгалужується на install smoke, cross-OS release checks, live/E2E Docker release-path coverage, Package Acceptance з Telegram package QA, паритет QA Lab, live Matrix і live Telegram. Повний запуск є прийнятним лише тоді, коли summary `Full Release Validation` показує `normal_ci` і `release_checks` як успішні, а будь-який необов’язковий child `npm_telegram` або успішний, або навмисно пропущений. Фінальна verifier summary містить таблиці найповільніших jobs для кожного child run, щоб release manager міг бачити поточний critical path без завантаження логів.
Child workflows запускаються з довіреного ref, який виконує `Full Release Validation`, зазвичай `--ref main`, навіть коли target `ref` вказує на старішу релізну гілку або тег. Окремого workflow-ref input для Full Release Validation немає; обирайте довірений harness, обираючи workflow run ref.
Workflow розв’язує target ref, запускає ручний `CI` з
`target_ref=<release-ref>`, запускає `OpenClaw Release Checks` і
опційно запускає standalone post-publish Telegram E2E, коли
`npm_telegram_package_spec` задано. `OpenClaw Release Checks` далі розгалужується на
install smoke, cross-OS release checks, live/E2E Docker release-path coverage,
Package Acceptance з Telegram package QA, QA Lab parity, live Matrix і
live Telegram. Повний запуск прийнятний лише тоді, коли summary `Full Release Validation`
показує `normal_ci` і `release_checks` як успішні, а будь-який optional
child `npm_telegram` або успішний, або навмисно пропущений. Фінальний
verifier summary містить таблиці slowest-job для кожного child run, щоб release
manager міг бачити поточний critical path без завантаження logs.
Child workflows запускаються з довіреного ref, який запускає `Full Release
Validation`, зазвичай `--ref main`, навіть коли target `ref` вказує на
старішу release branch або tag. Окремого workflow-ref input для Full Release Validation
немає; вибирайте довірений harness, вибираючи workflow run ref.
Використовуйте `release_profile`, щоб вибрати ширину live/provider:
- `minimum`: найшвидший release-critical OpenAI/core live і Docker path
- `stable`: minimum плюс стабільне покриття provider/backend для схвалення релізу
- `full`: stable плюс широке advisory покриття provider/media
- `stable`: minimum плюс stable provider/backend coverage для release approval
- `full`: stable плюс широке advisory provider/media coverage
`OpenClaw Release Checks` використовує довірений workflow ref, щоб один раз визначити target ref як `release-package-under-test`, і повторно використовує цей артефакт як у Docker checks release-path, так і в Package Acceptance. Це утримує всі package-facing boxes на тих самих байтах і уникає повторних збірок пакета.
`OpenClaw Release Checks` використовує довірений workflow ref, щоб один раз розв’язати target
ref як `release-package-under-test`, і повторно використовує цей артефакт і в
release-path Docker checks, і в Package Acceptance. Це тримає всі
package-facing boxes на тих самих байтах і уникає повторних package builds.
Cross-OS OpenAI install smoke використовує `OPENCLAW_CROSS_OS_OPENAI_MODEL`, коли
repo/org variable задано, інакше `openai/gpt-5.4-mini`, бо цей lane
доводить package install, onboarding, запуск Gateway і один live agent turn,
а не benchmark найповільнішої default model. Ширша live provider
matrix лишається місцем для model-specific coverage.
Використовуйте ці варіанти залежно від етапу релізу:
```bash
# Валідуйте неопубліковану гілку кандидата релізу.
# Validate an unpublished release candidate branch.
gh workflow run full-release-validation.yml \
--ref main \
-f ref=release/YYYY.M.D \
@ -191,14 +291,14 @@ gh workflow run full-release-validation.yml \
-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
# Після публікації beta додайте Telegram E2E для опублікованого пакета.
# After publishing a beta, add published-package Telegram E2E.
gh workflow run full-release-validation.yml \
--ref main \
-f ref=release/YYYY.M.D \
@ -210,39 +310,39 @@ gh workflow run full-release-validation.yml \
```
Не використовуйте повну парасольку як перший повторний запуск після сфокусованого виправлення. Якщо один бокс
зазнає збою, використовуйте невдалий дочірній робочий процес, завдання, Docker-ланку, профіль пакета, постачальника
моделі або QA-ланку для наступного підтвердження. Запускайте повну парасольку знову лише тоді, коли
зазнає невдачі, використайте невдалий дочірній workflow, job, Docker lane, профіль пакета, модельного
провайдера або QA lane для наступного підтвердження. Запускайте повну парасольку знову лише тоді, коли
виправлення змінило спільну оркестрацію релізу або зробило попередні докази з усіх боксів
застарілими. Фінальний перевіряльник парасольки повторно перевіряє записані id запусків дочірніх робочих процесів,
тому після успішного повторного запуску дочірнього робочого процесу повторно запустіть лише невдале
батьківське завдання `Verify full validation`.
застарілими. Фінальний перевіряльник парасольки повторно перевіряє записані ідентифікатори запусків дочірніх workflow,
тому після успішного повторного запуску дочірнього workflow повторно запускайте лише невдалий
батьківський job `Verify full validation`.
Для обмеженого відновлення передайте `rerun_group` до парасольки. `all` — це справжній
запуск реліз-кандидата, `ci` запускає лише звичайний дочірній CI, `plugin-prerelease`
запускає лише релізний дочірній процес плагіна, `release-checks` запускає кожен релізний
запуск release candidate, `ci` запускає лише звичайний дочірній CI, `plugin-prerelease`
запускає лише релізний дочірній plugin, `release-checks` запускає кожен релізний
бокс, а вужчі релізні групи — це `install-smoke`, `cross-os`,
`live-e2e`, `package`, `qa`, `qa-parity`, `qa-live` і `npm-telegram`, коли надано
окрему пакетну Telegram-ланку.
`live-e2e`, `package`, `qa`, `qa-parity`, `qa-live` і `npm-telegram`, коли
надано автономний package Telegram lane.
### Vitest
Бокс Vitest — це ручний дочірній робочий процес `CI`. Ручний CI навмисно
оминає звуження за змінами та примусово запускає звичайний тестовий граф для реліз-кандидата:
Linux Node-шарди, шарди вбудованих плагінів, контракти каналів, сумісність із Node 22,
`check`, `check-additional`, build smoke, перевірки документації, Python Skills, Windows,
macOS, Android і i18n Control UI.
Бокс Vitest — це ручний дочірній workflow `CI`. Ручний CI навмисно
оминає scoped перевірки змін і примусово запускає звичайний граф тестів для release
candidate: шарди Linux Node, шарди bundled-plugin, контракти каналів, сумісність Node 22,
`check`, `check-additional`, build smoke, перевірки docs, Python
skills, Windows, macOS, Android і Control UI i18n.
Використовуйте цей бокс, щоб відповісти на запитання: "чи пройшло дерево вихідного коду повний звичайний набір тестів?"
Це не те саме, що продуктова валідація релізного шляху. Докази, які потрібно зберігати:
Використовуйте цей бокс, щоб відповісти на запитання «чи пройшло дерево вихідного коду повний звичайний набір тестів?»
Це не те саме, що продуктова валідація release path. Докази, які треба зберегти:
- зведення `Full Release Validation`, що показує URL запущеного `CI`
- summary `Full Release Validation`, що показує URL запущеного `CI`
- зелений запуск `CI` на точному цільовому SHA
- назви невдалих або повільних шардів із завдань CI під час дослідження регресій
- артефакти таймінгів Vitest, як-от `.artifacts/vitest-shard-timings.json`, коли
- назви невдалих або повільних шардів із CI jobs під час дослідження регресій
- артефакти таймінгу Vitest, як-от `.artifacts/vitest-shard-timings.json`, коли
запуск потребує аналізу продуктивності
Запускайте ручний CI напряму лише тоді, коли релізу потрібен детермінований звичайний CI, але
не потрібні Docker, QA Lab, live, cross-OS або пакетні бокси:
не потрібні бокси Docker, QA Lab, live, cross-OS або package:
```bash
gh workflow run ci.yml --ref main -f target_ref=release/YYYY.M.D
@ -251,15 +351,15 @@ gh workflow run ci.yml --ref main -f target_ref=release/YYYY.M.D
### Docker
Бокс Docker живе в `OpenClaw Release Checks` через
`openclaw-live-and-e2e-checks-reusable.yml`, а також у релізному режимі робочого процесу
`install-smoke`. Він перевіряє реліз-кандидат через пакетовані
Docker-середовища, а не лише тести на рівні вихідного коду.
`openclaw-live-and-e2e-checks-reusable.yml`, плюс release-mode
workflow `install-smoke`. Він валідує release candidate через packaged
Docker-середовища, а не лише через тести рівня вихідного коду.
Релізне Docker-покриття включає:
Покриття релізного Docker включає:
- повний install smoke з увімкненим повільним Bun global install smoke
- E2E-ланки репозиторію
- Docker-фрагменти релізного шляху: `core`, `package-update-openai`,
- 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`,
@ -269,81 +369,81 @@ Docker-середовища, а не лише тести на рівні вих
`bundled-channels-core`, `bundled-channels-update-a`,
`bundled-channels-update-discord`, `bundled-channels-update-b` і
`bundled-channels-contracts`
- покриття OpenWebUI всередині фрагмента `plugins-runtime-services`, коли його запитано
- розділені ланки залежностей вбудованих каналів між channel-smoke, update-target
і фрагментами контрактів setup/runtime замість одного великого завдання для вбудованих каналів
- розділені ланки встановлення/видалення вбудованих плагінів
`bundled-plugin-install-uninstall-0` через
- покриття OpenWebUI всередині chunk `plugins-runtime-services`, коли це запитано
- розділені dependency lanes bundled-channel між channel-smoke, update-target
і setup/runtime contract chunks замість одного великого bundled-channel job
- розділені lanes встановлення/видалення bundled plugin
від `bundled-plugin-install-uninstall-0` до
`bundled-plugin-install-uninstall-23`
- live/E2E-набори постачальників і Docker live-покриття моделей, коли релізні перевірки
включають live-набори
- live/E2E provider suites і Docker live model coverage, коли release checks
включають live suites
Використовуйте Docker-артефакти перед повторним запуском. Планувальник релізного шляху завантажує
`.artifacts/docker-tests/` із журналами ланок, `summary.json`, `failures.json`,
таймінгами фаз, JSON плану планувальника та командами повторного запуску. Для сфокусованого відновлення
використовуйте `docker_lanes=<lane[,lane]>` у багаторазовому live/E2E-робочому процесі замість
повторного запуску всіх релізних фрагментів. Згенеровані команди повторного запуску включають попередні
`package_artifact_run_id` і підготовлені вхідні дані Docker-образів, коли вони доступні, щоб
невдала ланка могла повторно використати той самий tarball і GHCR-образи.
Використовуйте Docker-артефакти перед повторним запуском. Release-path scheduler завантажує
`.artifacts/docker-tests/` з lane logs, `summary.json`, `failures.json`,
phase timings, JSON плану scheduler і командами повторного запуску. Для сфокусованого відновлення
використовуйте `docker_lanes=<lane[,lane]>` у reusable live/E2E workflow замість
повторного запуску всіх релізних chunks. Згенеровані команди повторного запуску включають попередні
`package_artifact_run_id` і підготовлені inputs Docker image, коли вони доступні, щоб
невдалий lane міг повторно використати той самий tarball і GHCR images.
### QA Lab
Бокс QA Lab також є частиною `OpenClaw Release Checks`. Це релізний гейт
агентної поведінки та рівня каналів, окремий від механіки пакетів Vitest і Docker.
Бокс QA Lab також є частиною `OpenClaw Release Checks`. Це agentic
behavior і релізний gate рівня каналів, окремий від Vitest і Docker
package mechanics.
Релізне покриття QA Lab включає:
Покриття релізного QA Lab включає:
- mock parity gate, що порівнює кандидатну ланку OpenAI з базовою лінією Opus 4.6
- mock parity gate, що порівнює candidate lane OpenAI з baseline Opus 4.6
за допомогою agentic parity pack
- швидкий live Matrix QA-профіль із використанням середовища `qa-live-shared`
- live Telegram QA-ланку з використанням оренд облікових даних Convex CI
- швидкий live Matrix QA profile з використанням середовища `qa-live-shared`
- live Telegram QA lane з використанням Convex CI credential leases
- `pnpm qa:otel:smoke`, коли релізній телеметрії потрібне явне локальне підтвердження
Використовуйте цей бокс, щоб відповісти на запитання: "чи поводиться реліз правильно в QA-сценаріях і
live-потоках каналів?" Зберігайте URL артефактів для ланок parity, Matrix і Telegram
під час схвалення релізу. Повне Matrix-покриття залишається доступним як
ручний шардований запуск QA-Lab, а не типова релізно-критична ланка.
Використовуйте цей бокс, щоб відповісти на запитання «чи реліз поводиться правильно у QA-сценаріях і
live channel flows?» Зберігайте URL артефактів для lanes parity, Matrix і Telegram
під час затвердження релізу. Повне покриття Matrix залишається доступним як
ручний sharded QA-Lab run, а не стандартний release-critical lane.
### Пакет
Бокс Package — це гейт інстальованого продукту. Він спирається на
`Package Acceptance` і резолвер
`scripts/resolve-openclaw-package-candidate.mjs`. Резолвер нормалізує
кандидат у tarball `package-under-test`, який споживає Docker E2E, перевіряє
інвентар пакета, записує версію пакета та SHA-256 і тримає ref обв'язки
робочого процесу окремо від ref вихідного коду пакета.
Бокс Package — це gate інстальованого продукту. Він підтримується
`Package Acceptance` і resolver
`scripts/resolve-openclaw-package-candidate.mjs`. Resolver нормалізує
candidate у tarball `package-under-test`, який споживає Docker E2E, валідує
package inventory, записує версію пакета та SHA-256 і тримає
ref workflow harness окремо від ref вихідного коду пакета.
Підтримувані джерела кандидатів:
Підтримувані джерела candidate:
- `source=npm`: `openclaw@beta`, `openclaw@latest` або точна релізна
версія OpenClaw
- `source=ref`: запакувати довірену гілку `package_ref`, тег або повний commit SHA
з вибраною обв'язкою `workflow_ref`
- `source=url`: завантажити HTTPS `.tgz` з обов'язковим `package_sha256`
- `source=artifact`: повторно використати `.tgz`, завантажений іншим запуском GitHub Actions
- `source=npm`: `openclaw@beta`, `openclaw@latest` або точна версія релізу OpenClaw
- `source=ref`: пакує довірену `package_ref` branch, tag або повний commit SHA
з вибраним `workflow_ref` harness
- `source=url`: завантажує HTTPS `.tgz` з обов’язковим `package_sha256`
- `source=artifact`: повторно використовує `.tgz`, завантажений іншим запуском GitHub Actions
`OpenClaw Release Checks` запускає Package Acceptance із `source=ref`,
`package_ref=<release-ref>`, `suite_profile=custom`,
`docker_lanes=bundled-channel-deps-compat plugins-offline` і
`telegram_mode=mock-openai`. Docker-фрагменти релізного шляху покривають
перетин ланок install, update і plugin-update; Package Acceptance зберігає
артефактно-нативну сумісність вбудованих каналів, офлайн-фікстури плагінів і Telegram
package QA щодо того самого розв'язаного tarball. Це GitHub-нативна
заміна більшої частини покриття package/update, яке раніше вимагало
Parallels. Cross-OS release checks усе ще важливі для OS-специфічного onboarding,
інсталятора та поведінки платформи, але продуктова валідація package/update має
віддавати перевагу Package Acceptance.
`telegram_mode=mock-openai`. Release-path Docker chunks покривають
перекривні lanes install, update і plugin-update; Package Acceptance зберігає
artifact-native bundled-channel compat, offline plugin fixtures і Telegram
package QA щодо того самого resolved tarball. Це GitHub-native
заміна більшості покриття package/update, яке раніше вимагало
Parallels. Cross-OS release checks усе ще важливі для OS-specific onboarding,
installer і platform behavior, але продуктова валідація package/update має
надавати перевагу Package Acceptance.
Пом'якшення legacy package-acceptance навмисно обмежене в часі. Пакети до
`2026.4.25` включно можуть використовувати шлях сумісності для прогалин метаданих, уже опублікованих
у npm: приватні QA-записи інвентарю, відсутні в tarball, відсутній
`gateway install --wrapper`, відсутні patch-файли у git-фікстурі, отриманій із tarball,
відсутній збережений `update.channel`, legacy-розташування install-record плагінів,
відсутня сталість marketplace install-record і міграція метаданих config
під час `plugins update`. Опублікований пакет `2026.4.26` може попереджати
про локальні файли штампу метаданих збірки, які вже були відвантажені. Пізніші пакети
мають відповідати сучасним контрактам пакета; ті самі прогалини провалюють релізну
валідацію.
Legacy package-acceptance leniency навмисно обмежена в часі. Пакети до
`2026.4.25` включно можуть використовувати compatibility path для прогалин metadata, уже опублікованих
до npm: private QA inventory entries, відсутні в tarball, відсутній
`gateway install --wrapper`, відсутні patch files у tarball-derived git
fixture, відсутній збережений `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; ті самі прогалини провалюють release
validation.
Використовуйте ширші профілі Package Acceptance, коли релізне питання стосується
фактичного інстальованого пакета:
@ -357,86 +457,83 @@ gh workflow run package-acceptance.yml \
-f suite_profile=product
```
Поширені профілі пакета:
Поширені профілі package:
- `smoke`: швидкі ланки встановлення пакета/каналу/агента, gateway-мережі та
перезавантаження config
- `package`: контракти install/update/plugin package без live ClawHub; це типовий варіант release-check
- `product`: `package` плюс MCP-канали, cron/очищення subagent, OpenAI web
- `smoke`: швидкі lanes package install/channel/agent, gateway network і config
reload
- `package`: контракти install/update/plugin package без live ClawHub; це стандарт release-check
- `product`: `package` плюс MCP channels, cron/subagent cleanup, OpenAI web
search і OpenWebUI
- `full`: Docker-фрагменти релізного шляху з OpenWebUI
- `full`: Docker release-path chunks з OpenWebUI
- `custom`: точний список `docker_lanes` для сфокусованих повторних запусків
Для package-candidate Telegram-підтвердження увімкніть `telegram_mode=mock-openai` або
`telegram_mode=live-frontier` у Package Acceptance. Робочий процес передає
розв'язаний tarball `package-under-test` у Telegram-ланку; окремий
Telegram-робочий процес і далі приймає опубліковану npm-специфікацію для post-publish-перевірок.
Для package-candidate Telegram proof увімкніть `telegram_mode=mock-openai` або
`telegram_mode=live-frontier` у Package Acceptance. Workflow передає
resolved tarball `package-under-test` до Telegram lane; автономний
Telegram workflow усе ще приймає опублікований npm spec для post-publish checks.
## Вхідні дані робочого процесу NPM
## NPM workflow inputs
`OpenClaw NPM Release` приймає такі керовані оператором вхідні дані:
`OpenClaw NPM Release` приймає ці operator-controlled inputs:
- `tag`: обов'язковий релізний тег, як-от `v2026.4.2`, `v2026.4.2-1` або
`v2026.4.2-beta.1`; коли `preflight_only=true`, це також може бути поточний
повний 40-символьний commit SHA гілки робочого процесу для preflight лише з валідацією
- `preflight_only`: `true` лише для validation/build/package, `false` для
справжнього шляху публікації
- `preflight_run_id`: обов'язковий на справжньому шляху публікації, щоб робочий процес повторно використовував
підготовлений tarball з успішного preflight-запуску
- `npm_dist_tag`: цільовий npm-тег для шляху публікації; типово `beta`
- `tag`: обов’язковий release tag, наприклад `v2026.4.2`, `v2026.4.2-1` або
`v2026.4.2-beta.1`; коли `preflight_only=true`, він також може бути поточним
повним 40-символьним commit SHA workflow branch для validation-only preflight
- `preflight_only`: `true` для validation/build/package only, `false` для
справжнього publish path
- `preflight_run_id`: обов’язковий у справжньому publish path, щоб workflow повторно використовував
підготовлений tarball з успішного preflight run
- `npm_dist_tag`: цільовий npm tag для publish path; за замовчуванням `beta`
`OpenClaw Release Checks` приймає такі керовані оператором вхідні дані:
`OpenClaw Release Checks` приймає ці operator-controlled inputs:
- `ref`: гілка, тег або повний commit SHA для валідації. Перевірки із секретами
вимагають, щоб розв'язаний коміт був досяжним із гілки OpenClaw або
релізного тегу.
- `ref`: branch, tag або повний commit SHA для валідації. Secret-bearing checks
вимагають, щоб resolved commit був reachable з OpenClaw branch або
release tag.
Правила:
- Стабільні та корекційні теги можуть публікуватися або в `beta`, або в `latest`
- Beta prerelease-теги можуть публікуватися лише в `beta`
- Для `OpenClaw NPM Release` вхідний повний commit SHA дозволений лише коли
- Stable і correction tags можуть публікуватися або до `beta`, або до `latest`
- Beta prerelease tags можуть публікуватися лише до `beta`
- Для `OpenClaw NPM Release` input повного commit SHA дозволено лише коли
`preflight_only=true`
- `OpenClaw Release Checks` і `Full Release Validation` завжди
лише валідаційні
- Справжній шлях публікації має використовувати той самий `npm_dist_tag`, що використовувався під час preflight;
робочий процес перевіряє ці метадані перед продовженням публікації
validation-only
- Справжній publish path має використовувати той самий `npm_dist_tag`, що використовувався під час preflight;
workflow перевіряє, що metadata перед publish продовжує відповідати
## Послідовність стабільного npm-релізу
Під час випуску стабільного npm-релізу:
1. Запустіть `OpenClaw NPM Release` із `preflight_only=true`
- До створення тегу можна використати поточний повний commit SHA гілки робочого процесу
для валідаційного dry run preflight-робочого процесу
2. Виберіть `npm_dist_tag=beta` для звичайного beta-first-потоку або `latest` лише
тоді, коли ви навмисно хочете прямої стабільної публікації
3. Запустіть `Full Release Validation` на релізній гілці, релізному тегу або повному
commit SHA, коли потрібне звичайне CI-покриття плюс live prompt cache, Docker, QA Lab,
Matrix і Telegram з одного ручного робочого процесу
4. Якщо вам навмисно потрібен лише детермінований звичайний тестовий граф, запустіть
ручний робочий процес `CI` на релізному ref
1. Запустіть `OpenClaw NPM Release` з `preflight_only=true`
- До створення tag можна використовувати поточний повний workflow-branch commit
SHA для validation-only dry run preflight workflow
2. Виберіть `npm_dist_tag=beta` для звичайного beta-first flow або `latest` лише
коли ви навмисно хочете direct stable publish
3. Запустіть `Full Release Validation` на release branch, release tag або повному
commit SHA, коли потрібні звичайний CI плюс live prompt cache, Docker, QA Lab,
Matrix і Telegram coverage з одного ручного workflow
4. Якщо вам навмисно потрібен лише детермінований звичайний граф тестів, запустіть
ручний workflow `CI` на release ref натомість
5. Збережіть успішний `preflight_run_id`
6. Запустіть `OpenClaw NPM Release` знову з `preflight_only=false`, тим самим
`tag`, тим самим `npm_dist_tag` і збереженим `preflight_run_id`
7. Якщо реліз потрапив у `beta`, використовуйте приватний
робочий процес `openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml`,
7. Якщо реліз потрапив до `beta`, використайте приватний
workflow `openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.yml`,
щоб просунути цю стабільну версію з `beta` до `latest`
8. Якщо реліз навмисно опубліковано прямо в `latest` і `beta`
має негайно вказувати на ту саму стабільну збірку, використовуйте той самий приватний
робочий процес, щоб спрямувати обидва dist-tags на стабільну версію, або дозвольте його запланованій
self-healing-синхронізації перемістити `beta` пізніше
8. Якщо реліз навмисно опубліковано напряму до `latest`, а `beta`
має негайно вказувати на той самий stable build, використайте той самий приватний
workflow, щоб спрямувати обидва dist-tags на stable version, або дозвольте його scheduled
self-healing sync перемістити `beta` пізніше
Мутація dist-tag живе у приватному репозиторії з міркувань безпеки, бо вона все ще
потребує `NPM_TOKEN`, тоді як публічний репозиторій зберігає публікацію лише через OIDC.
Мутація dist-tag живе в приватному repo з міркувань безпеки, бо вона все ще
потребує `NPM_TOKEN`, тоді як public repo зберігає OIDC-only publish.
Це зберігає і шлях прямої публікації, і шлях beta-first-просування
Це зберігає і direct publish path, і beta-first promotion path
задокументованими та видимими для оператора.
Якщо мейнтейнер мусить повернутися до локальної npm-автентифікації, запускайте будь-які команди 1Password
CLI (`op`) лише всередині виділеної tmux-сесії. Не викликайте `op`
напряму з основної оболонки агента; утримання цього всередині tmux робить prompts,
alerts і обробку OTP спостережуваними та запобігає повторним host alerts.
Якщо супровіднику доводиться повертатися до локальної автентифікації npm, виконуйте будь-які команди CLI 1Password (`op`) лише всередині окремого сеансу tmux. Не викликайте `op` безпосередньо з основної оболонки агента; утримання цього всередині tmux робить запити, сповіщення й обробку OTP спостережуваними та запобігає повторним сповіщенням хоста.
## Публічні посилання
@ -450,10 +547,10 @@ alerts і обробку OTP спостережуваними та запобі
- [`scripts/package-mac-dist.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/package-mac-dist.sh)
- [`scripts/make_appcast.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/make_appcast.sh)
Супровідники використовують приватну документацію до релізів у
Супровідники використовують приватну документацію щодо випусків у
[`openclaw/maintainers/release/README.md`](https://github.com/openclaw/maintainers/blob/main/release/README.md)
як фактичний регламент виконання.
як фактичний покроковий регламент.
## Пов’язане
- [Канали релізів](/uk/install/development-channels)
- [Канали випусків](/uk/install/development-channels)