이는 업데이트 및 Plugin 검증을 위한 전용 체크리스트입니다. 목표는 간단합니다. 설치 가능한 패키지가 실제 사용자 상태를 업데이트하고,Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
doctor를 통해 오래된
레거시 상태를 복구하며, 지원되는 소스에서 Plugin을 계속 설치, 로드, 업데이트, 제거할 수
있음을 입증하는 것입니다.
더 넓은 테스트 실행기 맵은 테스트를 참조하세요. 라이브 제공자
키와 네트워크를 사용하는 스위트는 라이브 테스트를 참조하세요.
보호하는 항목
업데이트 및 Plugin 테스트는 다음 계약을 보호합니다.- 패키지 tarball이 완전하고, 유효한
dist/postinstall-inventory.json을 가지며, 압축 해제된 저장소 파일에 의존하지 않습니다. - 사용자가 구성, 에이전트, 세션, 워크스페이스, Plugin 허용 목록, 채널 구성을 잃지 않고 이전에 게시된 패키지에서 후보 패키지로 이동할 수 있습니다.
openclaw doctor --fix --non-interactive가 레거시 정리 및 복구 경로를 소유합니다. 시작 과정에서 오래된 Plugin 상태를 위한 숨은 호환성 마이그레이션이 늘어나서는 안 됩니다.- Plugin 설치는 로컬 디렉터리, git 저장소, npm 패키지, ClawHub 레지스트리 경로에서 작동합니다.
- Plugin npm 의존성은 관리되는 npm 루트에 설치되고, 신뢰 전에 스캔되며, 제거 시 npm을 통해 제거되어 호이스팅된 의존성이 남지 않습니다.
- 변경 사항이 없을 때 Plugin 업데이트는 안정적입니다. 설치 기록, 해석된 소스, 설치된 의존성 레이아웃, 활성화 상태가 그대로 유지됩니다.
개발 중 로컬 증명
좁은 범위에서 시작하세요.release:check는 구성/문서/API 드리프트 검사를 실행하고, 패키지 dist
인벤터리를 작성하며, npm pack --dry-run을 실행하고, 금지된 패키징 파일을 거부하고,
tarball을 임시 prefix에 설치하며, postinstall을 실행하고, 번들 채널 엔트리포인트를
스모크 테스트합니다.
Docker 레인
Docker 레인은 제품 수준의 증명입니다. Linux 컨테이너 내부에서 실제 패키지를 설치하거나 업데이트하고, CLI 명령, Gateway 시작, HTTP 프로브, RPC 상태, 파일시스템 상태를 통해 동작을 검증합니다. 반복 작업 중에는 집중 레인을 사용하세요.test:docker:plugins는 Plugin 설치 스모크, 로컬 폴더 설치, 로컬 폴더 업데이트 건너뛰기 동작, 사전 설치된 의존성이 있는 로컬 폴더,file:패키지 설치, CLI 실행을 포함한 git 설치, git 이동 ref 업데이트, 호이스팅된 전이 의존성을 포함한 npm 레지스트리 설치, npm 업데이트 무작동, 로컬 ClawHub fixture 설치 및 업데이트 무작동, 마켓플레이스 업데이트 동작, Claude 번들 활성화/검사를 검증합니다. ClawHub 블록을 밀폐/오프라인으로 유지하려면OPENCLAW_PLUGINS_E2E_CLAWHUB=0을 설정하세요.test:docker:plugin-update는 변경되지 않은 설치된 Plugin이openclaw plugins update중 재설치되거나 설치 메타데이터를 잃지 않는지 검증합니다.test:docker:upgrade-survivor는 더러운 이전 사용자 fixture 위에 후보 tarball을 설치하고, 패키지 업데이트와 비대화형 doctor를 실행한 다음, local loopback Gateway를 시작하고 상태 보존을 확인합니다.test:docker:published-upgrade-survivor는 먼저 게시된 기준 버전을 설치하고, 내장된openclaw config set레시피를 통해 구성한 뒤, 후보 tarball로 업데이트하고, doctor를 실행하고, 레거시 정리를 확인하고, Gateway를 시작하며,/healthz,/readyz, RPC 상태를 프로브합니다.test:docker:update-migration은 정리 작업이 많은 게시 업데이트 레인입니다. 구성된 Discord/Telegram 스타일 사용자 상태에서 시작하고, 구성된 Plugin 의존성이 생성될 기회를 갖도록 기준 버전 doctor를 실행하며, 구성된 패키징 Plugin에 대한 레거시 Plugin 의존성 잔해를 시드하고, 후보 tarball로 업데이트한 뒤, 업데이트 후 doctor가 레거시 의존성 루트를 제거하도록 요구합니다.
base, feishu-channel, bootstrap-persona,
plugin-deps-cleanup, configured-plugin-installs, tilde-log-path,
versioned-runtime-deps입니다. 집계 실행에서
OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues는 구성된 Plugin 설치
마이그레이션을 포함해 보고된 이슈 형태의 모든 시나리오로 확장됩니다.
전체 업데이트 마이그레이션은 의도적으로 Full Release CI와 분리되어 있습니다. 릴리스
질문이 “2026.4.23 이후 게시된 모든 안정 릴리스가 이 후보로 업데이트되고 Plugin 의존성
잔해를 정리할 수 있는가?”일 때는 수동 Update Migration 워크플로를 사용하세요.
Package Acceptance
Package Acceptance는 GitHub 네이티브 패키지 게이트입니다. 하나의 후보 패키지를package-under-test tarball로 해석하고, 버전과 SHA-256을 기록한 다음, 해당 정확한
tarball을 대상으로 재사용 가능한 Docker E2E 레인을 실행합니다. 워크플로 하네스 ref는
패키지 소스 ref와 분리되어 있으므로 현재 테스트 로직이 오래된 신뢰 릴리스를 검증할 수
있습니다.
후보 소스:
source=npm:openclaw@beta,openclaw@latest또는 정확한 게시 버전을 검증합니다.source=ref: 선택한 현재 하네스로 신뢰할 수 있는 브랜치, 태그 또는 커밋을 패키징합니다.source=url: 필수package_sha256이 있는 HTTPS tarball을 검증합니다.source=artifact: 다른 Actions 실행에서 업로드한 tarball을 재사용합니다.
source=artifact를 사용하며, 해석된 릴리스 SHA에서
빌드됩니다. 게시 후 증명의 경우 package_acceptance_package_spec=openclaw@YYYY.M.D를
전달해 동일한 업그레이드 매트릭스가 배포된 npm 패키지를 대상으로 하게 하세요.
릴리스 검사는 패키지/업데이트/Plugin 세트로 Package Acceptance를 호출합니다.
all-since-2026.4.23은 Full Release CI 업그레이드 샘플입니다. 2026.4.23부터
latest까지 npm에 게시된 모든 안정 릴리스입니다. 게시 업데이트 마이그레이션을
철저히 다루려면 Full Release CI 대신 별도의 Update Migration 워크플로에서
all-since-2026.4.23을 사용하세요. 레거시 이전 날짜 기준점도 함께 원하는 수동 확장
샘플링에는 release-history를 계속 사용할 수 있습니다.
릴리스 전 후보를 검증할 때는 패키지 프로필을 수동으로 실행하세요.
suite_profile=product를 사용하세요. 전체 Docker 릴리스 경로 커버리지가
필요할 때만 suite_profile=full을 사용하세요.
릴리스 기본값
릴리스 후보의 기본 증명 스택은 다음과 같습니다.- 소스 수준 회귀를 위한
pnpm check:changed와pnpm test:changed. - 패키지 아티팩트 무결성을 위한
pnpm release:check. - 설치/업데이트/Plugin 계약을 위한 Package Acceptance
package프로필 또는 release-check 사용자 지정 패키지 레인. - OS별 설치 프로그램, 온보딩, 플랫폼 동작을 위한 Cross-OS 릴리스 검사.
- 변경된 표면이 제공자 또는 호스팅 서비스 동작을 건드릴 때만 라이브 스위트.
레거시 호환성
호환성 관용은 좁고 시간 제한이 있습니다.2026.4.25-beta.*를 포함한2026.4.25까지의 패키지는 Package Acceptance에서 이미 배포된 패키지 메타데이터 공백을 허용할 수 있습니다.- 게시된
2026.4.26패키지는 이미 배포된 로컬 빌드 메타데이터 스탬프 파일에 대해 경고할 수 있습니다. - 이후 패키지는 현대 계약을 충족해야 합니다. 동일한 공백은 경고나 건너뛰기 대신 실패합니다.
upgrade-survivor 또는 published-upgrade-survivor로
증명하세요.
커버리지 추가
업데이트 또는 Plugin 동작을 변경할 때는 올바른 이유로 실패할 수 있는 가장 낮은 계층에 커버리지를 추가하세요.- 순수 경로 또는 메타데이터 로직: 소스 옆 단위 테스트.
- 패키지 인벤터리 또는 패키징 파일 동작:
package-dist-inventory또는 tarball 검사기 테스트. - CLI 설치/업데이트 동작: Docker 레인 assertion 또는 fixture.
- 게시 릴리스 마이그레이션 동작:
published-upgrade-survivor시나리오. - 레지스트리/패키지 소스 동작:
test:docker:pluginsfixture 또는 ClawHub fixture 서버. - 의존성 레이아웃 또는 정리 동작: 런타임 실행과 파일시스템 경계를 모두 assert합니다.
npm 의존성은 관리되는 npm 루트 아래에 호이스팅될 수 있으므로, 테스트는
패키지 로컬
node_modules트리를 가정하는 대신 루트가 스캔/정리됨을 증명해야 합니다.
실패 분류
아티팩트 정체성부터 시작하세요.- Package Acceptance
resolve_package요약: 소스, 버전, SHA-256, 아티팩트 이름. - Docker 아티팩트:
.artifacts/docker-tests/**/summary.json,failures.json, 레인 로그, 재실행 명령. - 업그레이드 생존자 요약:
.artifacts/upgrade-survivor/summary.json, 기준 버전, 후보 버전, 시나리오, 단계별 타이밍, 레시피 단계를 포함합니다.