Política de Release
O OpenClaw tem três trilhas públicas de release:- stable: releases com tag que publicam no npm
betapor padrão, ou no npmlatestquando solicitado explicitamente - beta: tags de prerelease que publicam no npm
beta - dev: a ponta móvel de
main
Nomenclatura de versões
- Versão de release stable:
YYYY.M.D- Tag Git:
vYYYY.M.D
- Tag Git:
- Versão de release de correção stable:
YYYY.M.D-N- Tag Git:
vYYYY.M.D-N
- Tag Git:
- Versão de prerelease beta:
YYYY.M.D-beta.N- Tag Git:
vYYYY.M.D-beta.N
- Tag Git:
- Não use zero à esquerda no mês ou no dia
latestsignifica o release npm stable promovido atualbetasignifica o destino de instalação beta atual- Releases stable e de correção stable publicam no npm
betapor padrão; operadores de release podem direcionar paralatestexplicitamente, ou promover depois um build beta validado - Todo release do OpenClaw envia juntos o pacote npm e o app macOS
Cadência de release
- Releases seguem primeiro para beta
- Stable vem depois, somente após o beta mais recente ser validado
- O procedimento detalhado de release, aprovações, credenciais e notas de recuperação são apenas para maintainers
Preflight de release
- Execute
pnpm build && pnpm ui:buildantes depnpm release:checkpara que os artefatos de release esperados emdist/*e o bundle da Control UI existam para a etapa de validação do pack - Execute
pnpm release:checkantes de todo release com tag - O preflight npm da branch main também executa
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheantes de empacotar o tarball, usando os secrets de workflowOPENAI_API_KEYeANTHROPIC_API_KEY - Execute
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(ou a tag beta/correção correspondente) antes da aprovação - Após publicar no npm, execute
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(ou a versão beta/correção correspondente) para verificar o caminho de instalação publicado no registry em um prefixo temporário novo - A automação de release dos maintainers agora usa preflight-then-promote:
- a publicação npm real deve passar por um
preflight_run_idnpm bem-sucedido - releases npm stable usam
betapor padrão - a publicação npm stable pode direcionar para
latestexplicitamente via input do workflow - a promoção npm stable de
betaparalatestcontinua disponível como um modo manual explícito no workflow confiávelOpenClaw NPM Release - esse modo de promoção ainda precisa de um
NPM_TOKENválido no ambientenpm-releaseporque o gerenciamento dedist-tagdo npm é separado da publicação confiável - o
macOS Releasepúblico é apenas de validação - a publicação privada real do mac deve passar por
preflight_run_idevalidate_run_idprivados bem-sucedidos - os caminhos de publicação reais promovem artefatos preparados em vez de reconstruí-los novamente
- a publicação npm real deve passar por um
- Para releases de correção stable como
YYYY.M.D-N, o verificador pós-publicação também verifica o mesmo caminho de upgrade em prefixo temporário deYYYY.M.DparaYYYY.M.D-Npara que correções de release não possam silenciosamente deixar instalações globais mais antigas no payload stable base - O preflight de release npm falha de forma fechada, a menos que o tarball inclua ambos
dist/control-ui/index.htmle um payload não vazio emdist/control-ui/assets/para que não enviemos novamente um dashboard de navegador vazio - Se o trabalho de release tocou o planejamento de CI, manifests de timing de extensões ou matrizes rápidas
de teste, regenere e revise as saídas da matriz do workflow
checks-fast-extensionsde propriedade do planner a partir de.github/workflows/ci.ymlantes da aprovação para que as notas de release não descrevam um layout de CI desatualizado - A prontidão do release stable do macOS também inclui as superfícies do atualizador:
- o GitHub release deve terminar com os arquivos empacotados
.zip,.dmge.dSYM.zip appcast.xmlemmaindeve apontar para o novo zip stable após a publicação- o app empacotado deve manter um bundle id não debug, uma URL de feed do Sparkle não vazia
e um
CFBundleVersionigual ou superior ao piso canônico de build do Sparkle para essa versão de release
- o GitHub release deve terminar com os arquivos empacotados
Inputs do workflow npm
OpenClaw NPM Release aceita estes inputs controlados pelo operador:
tag: tag de release obrigatória, comov2026.4.2,v2026.4.2-1ouv2026.4.2-beta.1preflight_only:truepara apenas validação/build/package,falsepara o caminho de publicação realpreflight_run_id: obrigatório no caminho de publicação real para que o workflow reutilize o tarball preparado a partir do preflight bem-sucedidonpm_dist_tag: tag de destino do npm para o caminho de publicação; padrãobetapromote_beta_to_latest:truepara pular a publicação e mover um build stable já publicado embetaparalatest
- Tags stable e de correção podem publicar em
betaoulatest - Tags beta de prerelease podem publicar apenas em
beta - O caminho de publicação real deve usar o mesmo
npm_dist_tagusado durante o preflight; o workflow verifica esses metadados antes de a publicação continuar - O modo de promoção deve usar uma tag stable ou de correção,
preflight_only=false,preflight_run_idvazio enpm_dist_tag=beta - O modo de promoção também exige um
NPM_TOKENválido no ambientenpm-releaseporquenpm dist-tag addainda precisa de autenticação npm comum
Sequência de release npm stable
Ao cortar um release npm stable:- Execute
OpenClaw NPM Releasecompreflight_only=true - Escolha
npm_dist_tag=betapara o fluxo normal beta-first, oulatestapenas quando você quiser intencionalmente uma publicação stable direta - Salve o
preflight_run_idbem-sucedido - Execute
OpenClaw NPM Releasenovamente compreflight_only=false, a mesmatag, o mesmonpm_dist_tage opreflight_run_idsalvo - Se o release caiu em
beta, executeOpenClaw NPM Releasemais tarde com a mesmatagstable,promote_beta_to_latest=true,preflight_only=false,preflight_run_idvazio enpm_dist_tag=betaquando quiser mover esse build publicado paralatest
npm-release e um
NPM_TOKEN válido nesse ambiente.
Isso mantém tanto o caminho de publicação direta quanto o caminho beta-first com promoção
documentados e visíveis para o operador.
Referências públicas
.github/workflows/openclaw-npm-release.ymlscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
openclaw/maintainers/release/README.md
para o runbook real.