Política de lanzamientos
OpenClaw tiene tres canales de lanzamiento públicos:- stable: lanzamientos etiquetados que publican en npm
betade forma predeterminada, o en npmlatestcuando se solicita explícitamente - beta: etiquetas de prelanzamiento que publican en npm
beta - dev: la cabecera móvil de
main
Nomenclatura de versiones
- Versión de lanzamiento stable:
YYYY.M.D- Etiqueta de Git:
vYYYY.M.D
- Etiqueta de Git:
- Versión de lanzamiento de corrección stable:
YYYY.M.D-N- Etiqueta de Git:
vYYYY.M.D-N
- Etiqueta de Git:
- Versión de prelanzamiento beta:
YYYY.M.D-beta.N- Etiqueta de Git:
vYYYY.M.D-beta.N
- Etiqueta de Git:
- No agregues ceros a la izquierda al mes ni al día
latestsignifica la versión estable actual promovida en npmbetasignifica el destino de instalación beta actual- Los lanzamientos stable y las correcciones stable publican en npm
betade forma predeterminada; los operadores de lanzamiento pueden apuntar alatestexplícitamente, o promover más tarde una compilación beta validada - Cada lanzamiento de OpenClaw distribuye el paquete npm y la app de macOS al mismo tiempo
Cadencia de lanzamientos
- Los lanzamientos avanzan primero por beta
- Stable sigue solo después de que se valida la beta más reciente
- El procedimiento detallado de lanzamiento, las aprobaciones, las credenciales y las notas de recuperación son solo para maintainers
Verificación previa del lanzamiento
- Ejecuta
pnpm build && pnpm ui:buildantes depnpm release:checkpara que existan los artefactos de lanzamientodist/*esperados y el paquete de la Control UI para el paso de validación del paquete - Ejecuta
pnpm release:checkantes de cada lanzamiento etiquetado - Las verificaciones de lanzamiento ahora se ejecutan en un flujo de trabajo manual separado:
OpenClaw Release Checks - La validación de instalación y actualización en tiempo de ejecución entre sistemas operativos se despacha desde el
flujo de trabajo invocador privado
openclaw/releases-private/.github/workflows/openclaw-cross-os-release-checks.yml, que invoca el flujo de trabajo público reutilizable.github/workflows/openclaw-cross-os-release-checks-reusable.yml - Esta división es intencional: mantiene la ruta real de lanzamiento en npm corta, determinista y centrada en artefactos, mientras que las verificaciones en vivo más lentas permanecen en su propio canal para que no ralenticen ni bloqueen la publicación
- Las verificaciones de lanzamiento deben despacharse desde la referencia del flujo de trabajo
mainpara que la lógica del flujo de trabajo y los secretos permanezcan canónicos - Ese flujo de trabajo acepta una etiqueta de lanzamiento existente o el SHA actual completo de 40 caracteres del commit de
main - En el modo de SHA de commit, solo acepta el HEAD actual de
origin/main; usa una etiqueta de lanzamiento para commits de lanzamiento más antiguos - La verificación previa solo de validación de
OpenClaw NPM Releasetambién acepta el SHA actual completo de 40 caracteres del commit demainsin requerir una etiqueta enviada - Esa ruta de SHA es solo de validación y no puede promoverse a una publicación real
- En modo SHA, el flujo de trabajo sintetiza
v<package.json version>solo para la verificación de metadatos del paquete; la publicación real sigue requiriendo una etiqueta de lanzamiento real - Ambos flujos de trabajo mantienen la ruta real de publicación y promoción en runners alojados por GitHub, mientras que la ruta de validación no mutante puede usar los runners Linux Blacksmith más grandes
- Ese flujo de trabajo ejecuta
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheusando tanto los secretos del flujo de trabajoOPENAI_API_KEYcomoANTHROPIC_API_KEY - La verificación previa del lanzamiento en npm ya no espera al canal separado de verificaciones de lanzamiento
- Ejecuta
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(o la etiqueta beta/corrección correspondiente) antes de la aprobación - Después de publicar en npm, ejecuta
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(o la versión beta/corrección correspondiente) para verificar la ruta de instalación publicada del registro en un prefijo temporal nuevo - La automatización de lanzamiento de maintainer ahora usa verificación previa y después promoción:
- la publicación real en npm debe pasar un
preflight_run_idexitoso de npm - los lanzamientos stable en npm usan
betade forma predeterminada - la publicación stable en npm puede apuntar a
latestexplícitamente mediante la entrada del flujo de trabajo - la mutación de dist-tag de npm basada en token ahora vive en
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlpor seguridad, porquenpm dist-tag addtodavía necesitaNPM_TOKENmientras que el repositorio público mantiene publicación solo con OIDC - la
macOS Releasepública es solo de validación - la publicación real privada de mac debe pasar los
preflight_run_idyvalidate_run_idprivados de mac exitosos - las rutas de publicación reales promueven artefactos preparados en lugar de volver a compilarlos
- la publicación real en npm debe pasar un
- Para lanzamientos de corrección stable como
YYYY.M.D-N, el verificador posterior a la publicación también comprueba la misma ruta de actualización de prefijo temporal deYYYY.M.DaYYYY.M.D-Npara que las correcciones de lanzamiento no puedan dejar silenciosamente instalaciones globales antiguas con la carga útil stable base - La verificación previa del lanzamiento en npm falla de forma segura a menos que el tarball incluya tanto
dist/control-ui/index.htmlcomo una carga útil no vacía endist/control-ui/assets/para que no volvamos a distribuir un panel del navegador vacío pnpm test:install:smoketambién aplica el presupuesto deunpackedSizede npm pack sobre el tarball candidato de actualización, para que el e2e del instalador detecte un aumento accidental del tamaño del paquete antes de la ruta de publicación del lanzamiento- Si el trabajo de lanzamiento modificó la planificación de CI, los manifiestos de temporización de extensiones o
las matrices de pruebas de extensiones, regenera y revisa las salidas de la matriz del flujo de trabajo
checks-node-extensionsgestionadas por el planificador desde.github/workflows/ci.ymlantes de la aprobación, para que las notas del lanzamiento no describan una disposición obsoleta de CI - La preparación de lanzamientos stable de macOS también incluye las superficies del actualizador:
- el lanzamiento de GitHub debe terminar con los paquetes
.zip,.dmgy.dSYM.zip appcast.xmlenmaindebe apuntar al nuevo zip stable después de la publicación- la app empaquetada debe conservar un bundle id no de depuración, una URL de feed de Sparkle
no vacía y un
CFBundleVersionigual o superior al mínimo canónico de compilación de Sparkle para esa versión de lanzamiento
- el lanzamiento de GitHub debe terminar con los paquetes
Entradas del flujo de trabajo de npm
OpenClaw NPM Release acepta estas entradas controladas por el operador:
tag: etiqueta de lanzamiento requerida comov2026.4.2,v2026.4.2-1, ov2026.4.2-beta.1; cuandopreflight_only=true, también puede ser el SHA actual completo de 40 caracteres del commit demainpara una verificación previa solo de validaciónpreflight_only:truepara solo validación/compilación/paquete,falsepara la ruta de publicación realpreflight_run_id: obligatorio en la ruta de publicación real para que el flujo de trabajo reutilice el tarball preparado de la ejecución de verificación previa exitosanpm_dist_tag: etiqueta de destino de npm para la ruta de publicación; el valor predeterminado esbeta
OpenClaw Release Checks acepta estas entradas controladas por el operador:
ref: etiqueta de lanzamiento existente o el SHA actual completo de 40 caracteres del commit demainpara validar
- Las etiquetas stable y de corrección pueden publicar en
betaolatest - Las etiquetas beta de prelanzamiento pueden publicar solo en
beta - La entrada del SHA completo del commit solo se permite cuando
preflight_only=true - El modo de SHA de commit de las verificaciones de lanzamiento también requiere el HEAD actual de
origin/main - La ruta de publicación real debe usar el mismo
npm_dist_tagusado durante la verificación previa; el flujo de trabajo verifica esos metadatos antes de continuar con la publicación
Secuencia de lanzamiento stable en npm
Al hacer un lanzamiento stable en npm:- Ejecuta
OpenClaw NPM Releaseconpreflight_only=true- Antes de que exista una etiqueta, puedes usar el SHA actual completo de
mainpara una ejecución de prueba solo de validación del flujo de trabajo de verificación previa
- Antes de que exista una etiqueta, puedes usar el SHA actual completo de
- Elige
npm_dist_tag=betapara el flujo normal primero por beta, olatestsolo cuando quieras intencionalmente una publicación stable directa - Ejecuta
OpenClaw Release Checkspor separado con la misma etiqueta o el SHA actual completo demaincuando quieras cobertura en vivo de caché de prompts- Esto es independiente a propósito para que la cobertura en vivo siga disponible sin volver a acoplar verificaciones largas o inestables al flujo de trabajo de publicación
- Guarda el
preflight_run_idexitoso - Ejecuta
OpenClaw NPM Releasenuevamente conpreflight_only=false, la mismatag, el mismonpm_dist_tagy elpreflight_run_idguardado - Si el lanzamiento quedó en
beta, usa el flujo de trabajo privadoopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlpara promover esa versión stable debetaalatest - Si el lanzamiento se publicó intencionalmente directamente en
latestybetadebe seguir inmediatamente con la misma compilación stable, usa ese mismo flujo de trabajo privado para hacer que ambas dist-tags apunten a la versión stable, o deja que su sincronización automática programada muevabetamás tarde
NPM_TOKEN, mientras que el repositorio público mantiene publicación solo con OIDC.
Eso mantiene documentadas y visibles para el operador tanto la ruta de publicación directa como la ruta de promoción primero por beta.
Referencias públicas
.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-cross-os-release-checks-reusable.ymlscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
openclaw/maintainers/release/README.md
para el runbook real.