Це спеціальний контрольний список для валідації оновлень і Plugin. Мета проста: довести, що інстальований пакет може оновлювати реальний стан користувача, відновлювати застарілий спадковий стан черезDocumentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
doctor і все ще встановлювати,
завантажувати, оновлювати та видаляти plugins із підтримуваних джерел.
Ширшу карту засобу запуску тестів див. у Тестування. Про ключі
live-провайдерів і набори тестів, що торкаються мережі, див. Live-тестування.
Що ми захищаємо
Тести оновлення і Plugin захищають такі контракти:- Tarball пакета повний, має чинний
dist/postinstall-inventory.jsonі не залежить від розпакованих файлів репозиторію. - Користувач може перейти зі старішого опублікованого пакета на кандидатний пакет без втрати конфігурації, agents, sessions, workspaces, списків дозволених plugins або конфігурації каналів.
openclaw doctor --fix --non-interactiveволодіє шляхами очищення і відновлення спадкового стану. Запуск не має нарощувати приховані міграції сумісності для застарілого стану plugins.- Встановлення Plugin працює з локальних директорій, git-репозиторіїв, npm-пакетів і шляху реєстру ClawHub.
- npm-залежності Plugin встановлюються в керований npm root, скануються перед довірою і видаляються через npm під час деінсталяції, щоб hoisted-залежності не залишалися.
- Оновлення Plugin стабільне, коли нічого не змінилося: записи встановлення, resolved source, розкладка встановлених залежностей і ввімкнений стан залишаються незмінними.
Локальне підтвердження під час розробки
Починайте вузько:release:check запускає перевірки дрейфу config/docs/API, записує package dist
inventory, запускає npm pack --dry-run, відхиляє заборонені запаковані файли, встановлює
tarball у тимчасовий prefix, запускає postinstall і smoke-перевіряє entrypoints
вбудованих каналів.
Docker lanes
Docker lanes є доказом на рівні продукту. Вони встановлюють або оновлюють реальний пакет усередині Linux-контейнерів і перевіряють поведінку через CLI-команди, запуск Gateway, HTTP-проби, RPC-статус і стан файлової системи. Під час ітерацій використовуйте сфокусовані lanes:test:docker:pluginsвалідує smoke встановлення Plugin, встановлення з локальної папки, поведінку пропуску оновлення локальної папки, локальні папки з попередньо встановленими залежностями, встановленняfile:пакетів, git-встановлення з виконанням CLI, оновлення рухомого git ref, встановлення з npm registry із hoisted transitive залежностями, npm update no-ops, встановлення з локального fixture ClawHub і update no-ops, поведінку marketplace update та Claude-bundle enable/inspect. ВстановітьOPENCLAW_PLUGINS_E2E_CLAWHUB=0, щоб блок ClawHub залишався герметичним/offline.test:docker:plugin-lifecycle-matrixвстановлює кандидатний пакет у bare контейнері, проводить npm Plugin через install, inspect, disable, enable, explicit upgrade, explicit downgrade і uninstall після видалення коду Plugin. Він логує метрики RSS і CPU для кожної фази.test:docker:plugin-updateперевіряє, що незмінений установлений Plugin не перевстановлюється і не втрачає метадані встановлення під часopenclaw plugins update.test:docker:upgrade-survivorвстановлює кандидатний tarball поверх брудного old-user fixture, запускає оновлення пакета разом із non-interactive doctor, потім запускає loopback Gateway і перевіряє збереження стану.test:docker:published-upgrade-survivorспочатку встановлює опублікований baseline, конфігурує його через вбудований рецептopenclaw config set, оновлює його до кандидатного tarball, запускає doctor, перевіряє legacy cleanup, запускає Gateway і пробує/healthz,/readyzта RPC status.test:docker:update-restart-authвстановлює кандидатний пакет, запускає керований token-auth Gateway, скидає caller gateway auth env дляopenclaw update --yes --jsonі вимагає, щоб кандидатна команда оновлення перезапустила Gateway перед звичайними пробами.test:docker:update-migrationє cleanup-heavy published-update lane. Він стартує з налаштованого Discord/Telegram-style стану користувача, запускає baseline doctor, щоб залежності налаштованих plugins мали шанс матеріалізуватися, засіває legacy plugin dependency debris для налаштованого packaged plugin, оновлює до кандидатного tarball і вимагає, щоб post-update doctor видалив legacy dependency roots.
base, feishu-channel, bootstrap-persona,
plugin-deps-cleanup, configured-plugin-installs,
stale-source-plugin-shadow, tilde-log-path і versioned-runtime-deps. В aggregate runs
OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues розгортається в усі reported
issue-shaped сценарії, включно з міграцією configured-plugin install.
Повна міграція оновлення навмисно відокремлена від Full Release CI. Використовуйте
ручний workflow Update Migration, коли питання релізу звучить так: “чи може кожен
опублікований stable release від 2026.4.23 і далі оновитися до цього кандидата та
очистити plugin dependency debris?”:
Package Acceptance
Package Acceptance є GitHub-native package gate. Він resolve один кандидатний пакет у tarballpackage-under-test, записує версію і SHA-256, а потім
запускає reusable Docker E2E lanes проти саме цього tarball. Workflow harness
ref відокремлений від package source ref, тож поточна тестова логіка може валідувати
старіші trusted releases.
Джерела кандидатів:
source=npm: валідуватиopenclaw@beta,openclaw@latestабо точну опубліковану версію.source=ref: запакувати trusted branch, tag або commit із вибраним поточним harness.source=url: валідувати HTTPS tarball з обов’язковимpackage_sha256.source=artifact: повторно використати tarball, завантажений іншим Actions run.
source=artifact, створений із
resolved release SHA. Для post-publish proof передайте
package_acceptance_package_spec=openclaw@YYYY.M.D, щоб та сама upgrade matrix
цілилася в поставлений npm-пакет натомість.
Release checks викликають Package Acceptance із набором package/update/restart/plugin:
last-stable-4 resolve до чотирьох найновіших stable npm-published OpenClaw
releases. Release package acceptance pin-ить 2026.4.23 як першу межу сумісності
plugin-update, 2026.5.2 як межу churn plugin-architecture, і
2026.4.15 як старіший published-update baseline 2026.4.1x; resolver
dedupe-ить pins, які вже входять до найновіших чотирьох. Для вичерпного покриття
published update migration використовуйте all-since-2026.4.23 в окремому workflow
Update Migration замість Full Release CI. release-history залишається
доступним для ручного ширшого sampling, коли вам також потрібен legacy pre-date
anchor.
Коли вибрано кілька published-upgrade survivor baselines, reusable
Docker workflow розбиває кожен baseline в окреме targeted runner job. Кожен
baseline shard усе ще запускає вибраний набір сценаріїв, але логи й артефакти залишаються
per-baseline, а wall time обмежується найповільнішим shard замість одного великого
serial job.
Запустіть package profile вручну під час валідації кандидата перед релізом:
suite_profile=product, коли питання релізу включає MCP channels,
cron/subagent cleanup, OpenAI web search або OpenWebUI. Використовуйте suite_profile=full
лише тоді, коли потрібне повне покриття Docker release-path.
Стандарт релізу
Для release candidates стандартний proof stack такий:pnpm check:changedіpnpm test:changedдля source-level regressions.pnpm release:checkдля цілісності package artifact.- Package Acceptance
packageprofile або release-check custom package lanes для контрактів install/update/restart/plugin. - Cross-OS release checks для OS-specific installer, onboarding і platform behavior.
- Live suites лише коли змінена поверхня торкається provider або hosted-service behavior.
Legacy compatibility
Послаблення сумісності вузьке і time boxed:- Пакети до
2026.4.25включно, зокрема2026.4.25-beta.*, можуть tolerate already-shipped прогалини package metadata у Package Acceptance. - Опублікований пакет
2026.4.26може warn щодо local build metadata stamp files, які вже були поставлені. - Пізніші пакети мають задовольняти сучасні контракти. Ті самі прогалини fail замість warning або skipping.
upgrade-survivor, published-upgrade-survivor або
update-restart-auth, коли команда update володіє restart.
Додавання покриття
Коли змінюєте поведінку update або plugin, додавайте покриття на найнижчому рівні, який може fail з правильної причини:- Pure path або metadata logic: unit test поруч із source.
- Package inventory або packed-file behavior:
package-dist-inventoryабо tarball checker test. - CLI install/update behavior: Docker lane assertion або fixture.
- Published-release migration behavior: сценарій
published-upgrade-survivor. - Update-owned restart behavior:
update-restart-auth. - Registry/package source behavior: fixture
test:docker:pluginsабо fixture server ClawHub. - Dependency layout або cleanup behavior: assert і runtime execution, і
filesystem boundary. npm dependencies можуть бути hoisted під managed npm
root, тож тести мають доводити, що root сканується/очищається, замість припускати
package-local дерево
node_modules.
Тріаж збоїв
Почніть з identity артефакту:- Зведення приймання пакета
resolve_package: джерело, версія, SHA-256 і назва артефакта. - Артефакти Docker:
.artifacts/docker-tests/**/summary.json,failures.json, журнали lane і команди повторного запуску. - Зведення вцілілих після оновлення:
.artifacts/upgrade-survivor/summary.json, включно з базовою версією, версією кандидата, сценарієм, тривалістю фаз і кроками рецепта.