Esta é a lista de verificação dedicada para validação de atualizações e plugins. O objetivo é simples: provar que o pacote instalável consegue atualizar o estado real do usuário, reparar estado legado obsoleto por meio deDocumentation 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 e ainda instalar, carregar, atualizar e desinstalar plugins a partir das origens compatíveis.
Para o mapa mais amplo do executor de testes, consulte Testes. Para chaves de provedores ao vivo e suítes que tocam a rede, consulte Testes ao vivo.
O que protegemos
Os testes de atualização e plugin protegem estes contratos:- Um tarball de pacote está completo, tem um
dist/postinstall-inventory.jsonválido e não depende de arquivos do repositório descompactados. - Um usuário pode migrar de um pacote publicado mais antigo para o pacote candidato sem perder configuração, agentes, sessões, workspaces, listas de permissões de plugins ou configuração de canal.
openclaw doctor --fix --non-interactiveé responsável por caminhos de limpeza e reparo legados. A inicialização não deve ganhar migrações de compatibilidade ocultas para estado obsoleto de plugin.- Instalações de plugins funcionam a partir de diretórios locais, repositórios git, pacotes npm e o caminho do registro ClawHub.
- Dependências npm de plugins são instaladas na raiz npm gerenciada, verificadas antes da confiança e removidas por meio do npm durante a desinstalação para que dependências içadas não permaneçam.
- A atualização de plugin é estável quando nada mudou: registros de instalação, origem resolvida, layout de dependências instaladas e estado habilitado permanecem intactos.
Prova local durante o desenvolvimento
Comece de forma restrita:release:check executa verificações de desvio de configuração/docs/API, grava o inventário de distribuição do pacote, executa npm pack --dry-run, rejeita arquivos empacotados proibidos, instala o tarball em um prefixo temporário, executa postinstall e faz smoke test dos pontos de entrada dos canais empacotados.
Faixas Docker
As faixas Docker são a prova em nível de produto. Elas instalam ou atualizam um pacote real dentro de contêineres Linux e validam o comportamento por meio de comandos da CLI, inicialização do Gateway, sondagens HTTP, status RPC e estado do sistema de arquivos. Use faixas focadas durante a iteração:test:docker:pluginsvalida smoke test de instalação de plugin, instalações de pasta local, comportamento de pular atualização de pasta local, pastas locais com dependências pré-instaladas, instalações de pacotefile:, instalações git com execução da CLI, atualizações git com referência móvel, instalações de registro npm com dependências transitivas içadas, no-ops de atualização npm, instalações de fixture local ClawHub e no-ops de atualização, comportamento de atualização de marketplace e habilitação/inspeção do pacote Claude. DefinaOPENCLAW_PLUGINS_E2E_CLAWHUB=0para manter o bloco ClawHub hermético/offline.test:docker:plugin-lifecycle-matrixinstala o pacote candidato em um contêiner limpo, executa um plugin npm por instalação, inspeção, desabilitação, habilitação, upgrade explícito, downgrade explícito e desinstalação depois de excluir o código do plugin. Ela registra métricas de RSS e CPU para cada fase.test:docker:plugin-updatevalida que um plugin instalado sem alterações não é reinstalado nem perde metadados de instalação duranteopenclaw plugins update.test:docker:upgrade-survivorinstala o tarball candidato sobre uma fixture suja de usuário antigo, executa atualização de pacote mais doctor não interativo, depois inicia um Gateway de loopback e verifica a preservação de estado.test:docker:published-upgrade-survivorprimeiro instala uma baseline publicada, configura-a por meio de uma receitaopenclaw config setembutida, atualiza-a para o tarball candidato, executa doctor, verifica limpeza legada, inicia o Gateway e sonda/healthz,/readyze status RPC.test:docker:update-restart-authinstala o pacote candidato, inicia um Gateway gerenciado com autenticação por token, remove do ambiente do chamador a autenticação do gateway paraopenclaw update --yes --jsone exige que o comando de atualização candidato reinicie o Gateway antes das sondagens normais.test:docker:update-migrationé a faixa de atualização publicada com limpeza pesada. Ela começa de um estado de usuário configurado no estilo Discord/Telegram, executa doctor da baseline para que dependências de plugin configuradas tenham chance de se materializar, semeia resíduos de dependência de plugin legado para um plugin empacotado configurado, atualiza para o tarball candidato e exige que o doctor pós-atualização remova as raízes de dependência legadas.
base, feishu-channel, bootstrap-persona, plugin-deps-cleanup, configured-plugin-installs, stale-source-plugin-shadow, tilde-log-path e versioned-runtime-deps. Em execuções agregadas, OPENCLAW_UPGRADE_SURVIVOR_SCENARIOS=reported-issues expande para todos os cenários com formato de problema relatado, incluindo a migração de instalação de plugin configurado.
A migração completa de atualização é intencionalmente separada do Full Release CI. Use o workflow manual Update Migration quando a pergunta de release for “todas as releases estáveis publicadas de 2026.4.23 em diante conseguem atualizar para este candidato e limpar resíduos de dependências de plugin?”:
Package Acceptance
Package Acceptance é o gate de pacote nativo do GitHub. Ele resolve um pacote candidato em um tarballpackage-under-test, registra versão e SHA-256, depois executa faixas Docker E2E reutilizáveis contra exatamente esse tarball. A ref do harness do workflow é separada da ref da origem do pacote, então a lógica de teste atual pode validar releases confiáveis mais antigas.
Origens candidatas:
source=npm: validaopenclaw@beta,openclaw@latestou uma versão publicada exata.source=ref: empacota uma branch, tag ou commit confiável com o harness atual selecionado.source=url: valida um tarball HTTPS compackage_sha256obrigatório.source=artifact: reutiliza um tarball enviado por outra execução do Actions.
source=artifact por padrão, criado a partir do SHA de release resolvido. Para prova pós-publicação, passe package_acceptance_package_spec=openclaw@YYYY.M.D para que a mesma matriz de upgrade mire o pacote npm entregue.
As verificações de release chamam Package Acceptance com o conjunto de pacote/atualização/reinicialização/plugin:
last-stable-4 resolve para as quatro releases OpenClaw estáveis mais recentes publicadas no npm. A aceitação de pacote de release fixa 2026.4.23 como a primeira fronteira de compatibilidade de atualização de plugin, 2026.5.2 como uma fronteira de churn de arquitetura de plugin e 2026.4.15 como uma baseline mais antiga de atualização publicada de 2026.4.1x; o resolvedor remove duplicatas de pins que já estão entre as quatro mais recentes. Para cobertura exaustiva de migração de atualização publicada, use all-since-2026.4.23 no workflow Update Migration separado em vez do Full Release CI. release-history continua disponível para amostragem manual mais ampla quando você também quiser a âncora legada anterior à data.
Quando várias baselines de sobrevivente de upgrade publicado são selecionadas, o workflow Docker reutilizável divide cada baseline em seu próprio job de executor direcionado. Cada shard de baseline ainda executa o conjunto de cenários selecionado, mas logs e artefatos ficam por baseline e o tempo de execução fica limitado ao shard mais lento em vez de um grande job serial.
Execute manualmente um perfil de pacote ao validar um candidato antes da release:
suite_profile=product quando a pergunta de release incluir canais MCP, limpeza de cron/subagente, pesquisa web OpenAI ou OpenWebUI. Use suite_profile=full somente quando precisar de cobertura Docker completa do caminho de release.
Padrão de release
Para candidatos de release, a pilha de prova padrão é:pnpm check:changedepnpm test:changedpara regressões em nível de código-fonte.pnpm release:checkpara integridade do artefato de pacote.- Perfil
packagedo Package Acceptance ou as faixas de pacote personalizadas de release-check para contratos de instalação/atualização/reinicialização/plugin. - Verificações de release entre sistemas operacionais para instalador, onboarding e comportamento de plataforma específicos de SO.
- Suítes ao vivo somente quando a superfície alterada toca comportamento de provedor ou serviço hospedado.
Compatibilidade legada
A tolerância de compatibilidade é estreita e com prazo definido:- Pacotes até
2026.4.25, incluindo2026.4.25-beta.*, podem tolerar lacunas de metadados de pacote já entregues no Package Acceptance. - O pacote
2026.4.26publicado pode avisar sobre arquivos de carimbo de metadados de build local já entregues. - Pacotes posteriores devem satisfazer os contratos modernos. As mesmas lacunas falham em vez de avisar ou pular.
upgrade-survivor, published-upgrade-survivor ou update-restart-auth quando o comando de atualização for responsável pela reinicialização.
Adicionando cobertura
Ao alterar comportamento de atualização ou plugin, adicione cobertura na camada mais baixa que possa falhar pelo motivo correto:- Lógica pura de caminho ou metadados: teste unitário ao lado da origem.
- Comportamento de inventário de pacote ou arquivo empacotado: teste
package-dist-inventoryou verificador de tarball. - Comportamento de instalação/atualização da CLI: asserção ou fixture de faixa Docker.
- Comportamento de migração de release publicada: cenário
published-upgrade-survivor. - Comportamento de reinicialização pertencente à atualização:
update-restart-auth. - Comportamento de registro/origem de pacote: fixture
test:docker:pluginsou servidor de fixture ClawHub. - Comportamento de layout ou limpeza de dependências: valide tanto a execução em runtime quanto a fronteira do sistema de arquivos. Dependências npm podem ser içadas sob a raiz npm gerenciada, então os testes devem provar que a raiz é verificada/limpa em vez de assumir uma árvore
node_moduleslocal ao pacote.
Triagem de falhas
Comece pela identidade do artefato:- Resumo de Aceitação de Pacote
resolve_package: origem, versão, SHA-256 e nome do artefato. - Artefatos do Docker:
.artifacts/docker-tests/**/summary.json,failures.json, logs da lane e comandos de nova execução. - Resumo do sobrevivente de upgrade:
.artifacts/upgrade-survivor/summary.json, incluindo versão de baseline, versão candidata, cenário, tempos das fases e etapas da receita.