Release and CI
Política de lanzamientos
OpenClaw expone actualmente tres canales de actualización orientados al usuario:
- stable: el canal de versión promovida existente, que todavía se resuelve mediante
npm
latesthasta que llegue el hito separado de CLI/canal - beta: etiquetas de prelanzamiento que publican en npm
beta - dev: la cabecera móvil de
main
Por separado, los operadores de lanzamiento pueden publicar el paquete principal
del mes completado anterior en npm extended-stable, comenzando en el parche 33.
La línea final regular del mes actual continúa en npm latest; esta división de
publicación del lado del operador no cambia por sí sola la resolución del canal
de actualización de la CLI.
Nombres de versiones
- Versión mensual de lanzamiento extended-stable en npm:
YYYY.M.PATCH, conPATCH >= 33- Etiqueta de Git:
vYYYY.M.PATCH
- Etiqueta de Git:
- Versión diaria/regular final:
YYYY.M.PATCH, conPATCH < 33- Etiqueta de Git:
vYYYY.M.PATCH
- Etiqueta de Git:
- Versión regular de corrección de fallback:
YYYY.M.PATCH-N- Etiqueta de Git:
vYYYY.M.PATCH-N
- Etiqueta de Git:
- Versión beta de prelanzamiento:
YYYY.M.PATCH-beta.N- Etiqueta de Git:
vYYYY.M.PATCH-beta.N
- Etiqueta de Git:
- No rellenes con ceros el mes ni el parche
- A partir de la actualización del proceso de lanzamiento de junio de 2026, el tercer componente es un número secuencial mensual del tren de lanzamiento, no un día calendario. Las versiones stable y beta determinan el tren actual; las etiquetas solo alpha no consumen ni avanzan el número de parche beta/stable. Las etiquetas y versiones de npm anteriores a la actualización conservan sus nombres existentes y siguen siendo válidas; la automatización de lanzamiento continúa comparándolas por año, mes, parche, canal y número de prelanzamiento o corrección.
- Las compilaciones alpha/nightly usan el siguiente tren de parche no publicado
e incrementan solo
alpha.Npara compilaciones repetidas. Una vez que ese parche tiene una beta, las nuevas compilaciones alpha pasan al parche siguiente. Ignora las etiquetas heredadas solo alpha con números de parche más altos al seleccionar un tren beta o stable. - Las versiones de npm son inmutables. Si una etiqueta beta ya se publicó, no la
elimines, vuelvas a publicar ni reutilices; corta el siguiente número beta o
el siguiente parche mensual. Como
2026.6.5-beta.1ya se publicó durante la transición, los trenes de lanzamiento de junio de 2026 deben usar el parche5o superior. No publiques nuevos trenes stable o beta de junio de 2026 como2026.6.2,2026.6.3ni2026.6.4. - Después de la final regular
2026.6.5, el siguiente nuevo tren beta es2026.6.6-beta.1, incluso si ya existen etiquetas automatizadas solo alpha con números de parche más altos. latestcontinúa siguiendo la línea actual regular/diaria de npmbetasignifica el destino de instalación beta actualextended-stablesignifica el paquete de npm compatible del mes anterior, comenzando en el parche33; el parche34y posteriores son versiones de mantenimiento en esa línea mensual- La ruta mensual dedicada extended-stable publica solo el paquete principal de npm. No publica plugins, artefactos de macOS o Windows, una GitHub Release, dist-tags de repositorio privado, imágenes de Docker, artefactos móviles ni descargas del sitio web.
Cadencia de lanzamientos
- Los lanzamientos avanzan primero por beta
- Stable sigue solo después de validar la beta más reciente
- Los mantenedores normalmente cortan lanzamientos desde una rama
release/YYYY.M.PATCHcreada a partir delmainactual, de modo que la validación y las correcciones de lanzamiento no bloqueen el nuevo desarrollo enmain - Si una etiqueta beta se ha enviado o publicado y necesita una corrección, los
mantenedores cortan la siguiente etiqueta
-beta.Nen lugar de eliminar o recrear la etiqueta beta anterior - El procedimiento detallado de lanzamiento, aprobaciones, credenciales y notas de recuperación son solo para mantenedores
Publicación mensual extended-stable solo en npm
Esta es una excepción dedicada al procedimiento regular de lanzamiento que aparece
abajo. Para un mes completado YYYY.M, crea extended-stable/YYYY.M.33; publica
vYYYY.M.33 y los parches de mantenimiento posteriores desde esa misma rama. La
etiqueta de lanzamiento, la punta de la rama, el checkout, la versión del paquete,
la preflight de npm y la ejecución de Full Release Validation deben identificar
todos el mismo commit. El main protegido ya debe contener una versión final de
un mes calendario estrictamente posterior por debajo del parche 33; los parches
de mantenimiento siguen siendo elegibles después de que main avance más de un
mes.
Ejecuta la preflight de npm y Full Release Validation desde la rama exacta extended-stable, y luego guarda ambos ID de ejecución:
gh workflow run openclaw-npm-release.yml \ --ref extended-stable/YYYY.M.33 \ -f tag=vYYYY.M.P \ -f preflight_only=true \ -f npm_dist_tag=extended-stable gh workflow run full-release-validation.yml \ --ref extended-stable/YYYY.M.33 \ -f ref=extended-stable/YYYY.M.33 \ -f release_profile=stablerelease_profile=stable es el perfil existente de profundidad de validación; es
independiente del dist-tag de npm extended-stable y se mantiene intencionalmente
sin cambios.
Después de que ambas ejecuciones tengan éxito y el entorno de lanzamiento de npm
esté listo, promueve el tarball exacto de la preflight. El parche P debe ser
33 o superior:
gh workflow run openclaw-npm-release.yml \ --ref extended-stable/YYYY.M.33 \ -f tag=vYYYY.M.P \ -f preflight_only=false \ -f npm_dist_tag=extended-stable \ -f preflight_run_id=<npm-preflight-run-id> \ -f full_release_validation_run_id=<full-validation-run-id>Para un fork o ensayo no productivo que intencionalmente no pueda satisfacer la
política mensual .33 o de mes de main protegido, agrega
-f bypass_extended_stable_guard=true tanto a los dispatches de preflight como
de publicación de npm. El valor predeterminado es false. La omisión se acepta
solo con npm_dist_tag=extended-stable y se registra en el resumen del workflow.
No omite la ref de workflow canónica extended-stable/YYYY.M.33, la igualdad
entre punta de rama/etiqueta/checkout, la sintaxis de etiqueta final, la igualdad
entre versión de paquete/etiqueta, la identidad del manifiesto y de las ejecuciones
referenciadas, la procedencia del tarball, la aprobación de entorno, la lectura
de vuelta del registro ni la evidencia de reparación del selector.
El workflow de publicación verifica las identidades de las ejecuciones referenciadas, el digest del tarball preparado y ambos selectores del registro npm. Confirma de forma independiente el resultado después de que el workflow tenga éxito:
npm view openclaw@YYYY.M.P version --userconfig "$(mktemp)"npm view openclaw@extended-stable version --userconfig "$(mktemp)"Ambos comandos deben devolver YYYY.M.P. Si la publicación tiene éxito pero la
lectura de vuelta del selector falla, no vuelvas a publicar la versión inmutable
del paquete. Usa el único comando de reparación
npm dist-tag add openclaw@YYYY.M.P extended-stable impreso en el resumen
always-run del workflow fallido, y luego repite ambas lecturas de vuelta
independientes. Revertir al selector anterior es una decisión separada del
operador, no la ruta de reparación de lectura de vuelta.
La lista de verificación regular de abajo sigue siendo dueña de beta, latest,
GitHub Release, plugins, macOS, Windows y otras publicaciones de plataforma. No
ejecutes esos pasos para esta ruta extended-stable solo en npm.
Lista de verificación regular para operadores de lanzamiento
Esta lista de verificación es la forma pública del flujo de lanzamiento. Las credenciales privadas, la firma, la notarización, la recuperación de dist-tags y los detalles de rollback de emergencia permanecen en el runbook de lanzamiento solo para mantenedores.
- Empieza desde el
mainactual: trae los últimos cambios, confirma que el commit objetivo se haya enviado, y confirma que el CI actual demainesté lo bastante verde como para crear una rama desde él. - Genera la sección superior de
CHANGELOG.mda partir de los PR fusionados y todos los commits directos desde la última etiqueta de lanzamiento alcanzable. Mantén las entradas orientadas al usuario, elimina duplicados entre entradas de PR y commits directos que se solapen, confirma la reescritura, envíala, y haz rebase/pull una vez más antes de crear la rama. - Revisa los registros de compatibilidad de lanzamiento en
src/plugins/compat/registry.tsysrc/commands/doctor/shared/deprecation-compat.ts. Elimina la compatibilidad expirada solo cuando la ruta de actualización siga cubierta, o registra por qué se conserva intencionalmente. - Crea
release/YYYY.M.PATCHdesde elmainactual; no hagas el trabajo normal de lanzamiento directamente enmain. - Incrementa cada ubicación de versión requerida para la etiqueta prevista y luego ejecuta
pnpm release:prep. Esto actualiza las versiones de plugins, el inventario de plugins, el esquema de configuración, los metadatos de configuración de canales incluidos, la línea base de documentación de configuración, las exportaciones del SDK de plugins y la línea base de la API del SDK de plugins en el orden correcto. Confirma cualquier deriva generada antes de etiquetar. Luego ejecuta la verificación previa determinista local:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:build, ypnpm release:check. - Ejecuta
OpenClaw NPM Releaseconpreflight_only=true. Antes de que exista una etiqueta, se permite un SHA completo de 40 caracteres de la rama de lanzamiento para una verificación previa solo de validación. La verificación previa genera evidencia de lanzamiento de dependencias para el grafo de dependencias exacto extraído y la almacena en el artefacto de verificación previa de npm. Guarda elpreflight_run_idexitoso. - Inicia todas las pruebas previas al lanzamiento con
Full Release Validationpara la rama de lanzamiento, etiqueta o SHA completo del commit. Este es el único punto de entrada manual para las cuatro cajas grandes de pruebas de lanzamiento: Vitest, Docker, QA Lab y Package. - Si la validación falla, corrige en la rama de lanzamiento y vuelve a ejecutar el archivo, lane, job de workflow, perfil de paquete, proveedor o lista de permitidos de modelos fallidos más pequeño que demuestre la corrección. Vuelve a ejecutar el contenedor completo solo cuando la superficie modificada deje obsoleta la evidencia previa.
- Para un candidato beta etiquetado, ejecuta
pnpm release:candidate -- --tag vYYYY.M.PATCH-beta.Ndesde la ramarelease/YYYY.M.PATCHcorrespondiente. Para estable, pasa también el lanzamiento fuente de Windows requerido:pnpm release:candidate -- --tag vYYYY.M.PATCH --windows-node-tag vX.Y.Z. El ayudante ejecuta las comprobaciones locales de lanzamiento generado, despacha o verifica la validación completa de lanzamiento y la evidencia de verificación previa de npm, ejecuta la prueba fresh/update de Parallels contra el tarball preparado exacto más la prueba del paquete de Telegram, registra los planes de npm de plugins y ClawHub, e imprime el comando exactoOpenClaw Release Publishsolo después de que el paquete de evidencia esté verde.OpenClaw Release Publishdespacha los paquetes de plugins seleccionados o todos los publicables a npm y el mismo conjunto a ClawHub en paralelo, y luego promociona el artefacto preparado de verificación previa de npm de OpenClaw con el dist-tag correspondiente tan pronto como la publicación de plugins en npm tenga éxito. Después de que el proceso hijo de publicación de OpenClaw en npm tenga éxito, crea o actualiza la página de lanzamiento/prelanzamiento de GitHub correspondiente a partir de la sección completa coincidente deCHANGELOG.md. Los lanzamientos estables publicados en npmlatestse convierten en el último lanzamiento de GitHub; los lanzamientos estables de mantenimiento mantenidos en npmbetase crean con GitHublatest=false. El workflow también sube la evidencia de dependencias de la verificación previa, el manifiesto de validación completa y la evidencia de verificación de registro posterior a la publicación al lanzamiento de GitHub para la respuesta a incidentes posteriores al lanzamiento. El workflow de publicación imprime los ID de ejecuciones hijas inmediatamente, aprueba automáticamente las puertas de entorno de lanzamiento que el token del workflow tiene permiso para aprobar, resume los jobs hijos fallidos con colas de logs, cierra el lanzamiento de GitHub y la evidencia de dependencias tan pronto como la publicación de OpenClaw en npm tiene éxito, espera a ClawHub siempre que se esté publicando OpenClaw en npm, luego ejecutapnpm release:verify-betay sube evidencia posterior a la publicación para el lanzamiento de GitHub, el paquete npm, los paquetes npm de plugins seleccionados, los paquetes de ClawHub seleccionados, los ID de ejecuciones de workflows hijos y el ID opcional de ejecución de NPM Telegram. La ruta de ClawHub reintenta fallos transitorios de instalación de dependencias de la CLI, publica plugins que pasan la vista previa incluso cuando una celda de vista previa falla de forma intermitente, y termina con verificación de registro para cada versión de plugin esperada, de modo que las publicaciones parciales sigan siendo visibles y reintentables. Luego ejecuta la aceptación de paquete posterior a la publicación contra el paquete publicadoopenclaw@YYYY.M.PATCH-beta.Noopenclaw@beta. Si un prelanzamiento enviado o publicado necesita una corrección, crea el siguiente número de prelanzamiento correspondiente; no elimines ni reescribas el prelanzamiento anterior. - Para estable, continúa solo después de que la beta o el candidato de lanzamiento evaluado tenga la
evidencia de validación requerida. La publicación estable de npm también pasa por
OpenClaw Release Publish, reutilizando el artefacto exitoso de verificación previa mediantepreflight_run_id; la preparación del lanzamiento estable de macOS también requiere el.zip,.dmg,.dSYM.zipempaquetados y elappcast.xmlactualizado enmain. El workflow de publicación de macOS publica el appcast firmado en elmainpúblico automáticamente después de verificar los activos de lanzamiento; si la protección de rama bloquea el push directo, abre o actualiza un PR de appcast. La preparación de Windows Hub estable requiere los activos firmadosOpenClawCompanion-Setup-x64.exe,OpenClawCompanion-Setup-arm64.exeyOpenClawCompanion-SHA256SUMS.txten el lanzamiento de GitHub de OpenClaw. Pasa la etiqueta exacta del lanzamiento firmadoopenclaw/openclaw-windows-nodecomowindows_node_tagy su mapa de resúmenes de instaladores aprobado por el candidato comowindows_node_installer_digests;OpenClaw Release Publishmantiene el borrador de lanzamiento, despachaWindows Node Releasey verifica los tres activos antes de la publicación. - Después de publicar, ejecuta el verificador de npm posterior a la publicación, el E2E independiente opcional de Telegram con npm publicado cuando necesites prueba de canal posterior a la publicación, la promoción de dist-tag cuando sea necesario, verifica la página generada de lanzamiento de GitHub, ejecuta los pasos del anuncio de lanzamiento, y luego completa Cierre estable de main antes de dar por terminado un lanzamiento estable.
Cierre estable de main
La publicación estable no está completa hasta que main contiene el estado de lanzamiento
realmente distribuido.
- Empieza desde el último
mainrecién actualizado. Auditarelease/YYYY.M.PATCHcontra él y reenvía amainlas correcciones reales que falten. No fusiones a ciegas en elmainmás nuevo adaptadores de compatibilidad, pruebas o validación exclusivos del lanzamiento. - Ajusta
maina la versión estable distribuida, no a un tren siguiente especulativo. Ejecutapnpm release:prepdespués del cambio de versión raíz y luegopnpm deps:shrinkwrap:generate. - Haz que la sección
## YYYY.M.PATCHdeCHANGELOG.mdenmaincoincida exactamente con la rama de lanzamiento etiquetada. Incluye la actualización estable deappcast.xmlcuando el lanzamiento de mac la haya publicado. - No agregues
YYYY.M.PATCH+1, una versión beta ni una sección vacía de changelog futuro amainhasta que el operador inicie explícitamente ese tren de lanzamiento. - Ejecuta
pnpm release:generated:check,pnpm deps:shrinkwrap:checkyOPENCLAW_TESTBOX=1 pnpm check:changed. Envía los cambios y luego verifica queorigin/maincontenga la versión distribuida y el changelog antes de dar por terminado el lanzamiento estable. - Mantén actualizadas las variables de repositorio
RELEASE_ROLLBACK_DRILL_IDyRELEASE_ROLLBACK_DRILL_DATEdespués de cada simulacro privado de reversión.OpenClaw Stable Main Closeoutempieza desde el push demainque contiene la versión distribuida, el changelog y el appcast después de la publicación estable. Lee evidencia inmutable posterior a la publicación para vincular la etiqueta distribuida con sus ejecuciones de Full Release Validation y Publish, luego verifica el estado estable de main, el lanzamiento, el periodo de observación estable obligatorio y la evidencia de rendimiento bloqueante. Adjunta un manifiesto inmutable de cierre y una suma de comprobación al lanzamiento de GitHub. El disparador automático por push omite lanzamientos heredados que preceden la evidencia inmutable posterior a la publicación; nunca trata esa omisión como un cierre completado. Un cierre completo requiere tanto los activos como una suma de comprobación coincidente. Un manifiesto parcial reproduce su SHA demainregistrado y el simulacro de reversión para regenerar bytes idénticos, y luego adjunta la suma de comprobación faltante; un par inválido, o una suma de comprobación sin manifiesto, sigue bloqueando. Una ejecución disparada por push sin variables de repositorio del simulacro de reversión se omite sin completar el cierre; un registro de simulacro faltante o con más de 90 días de antigüedad sigue bloqueando el cierre manual respaldado por evidencia. Los comandos privados de recuperación permanecen en el runbook exclusivo de mantenedores. Usa el despacho manual solo para reparar o reproducir un cierre estable respaldado por evidencia. Una etiqueta heredada de corrección alternativa puede reutilizar evidencia del paquete base solo cuando la etiqueta de corrección resuelve al mismo commit fuente que la etiqueta estable base. Una corrección con una fuente diferente debe publicar y verificar su propia evidencia de paquete.
Verificación previa de lanzamiento
- Ejecuta
pnpm check:test-typesantes de la comprobación previa del lanzamiento para que el TypeScript de las pruebas siga cubierto fuera de la puerta local más rápida depnpm check - Ejecuta
pnpm check:architectureantes de la comprobación previa del lanzamiento para que las comprobaciones más amplias de ciclos de importación y límites de arquitectura estén en verde fuera de la puerta local más rápida - Ejecuta
pnpm build && pnpm ui:buildantes depnpm release:checkpara que existan los artefactos de lanzamientodist/*esperados y el paquete de Control UI para el paso de validación del empaquetado - Ejecuta
pnpm release:prepdespués del incremento de versión raíz y antes de etiquetar. Ejecuta todos los generadores deterministas de lanzamiento que suelen desviarse después de un cambio de versión/configuración/API: versiones de plugins, inventario de plugins, esquema de configuración base, metadatos de configuración de canales empaquetados, línea base de documentación de configuración, exportaciones del SDK de plugins y línea base de API del SDK de plugins.pnpm release:checkvuelve a ejecutar esos resguardos en modo de comprobación e informa en una sola pasada de todos los fallos de desviación generada que encuentra antes de ejecutar las comprobaciones de lanzamiento de paquetes. - La sincronización de versiones de plugins actualiza las versiones de paquetes de plugins oficiales y los pisos
openclaw.compat.pluginApiexistentes a la versión de lanzamiento de OpenClaw de forma predeterminada. Trata ese campo como el piso de API del SDK/runtime de plugins, no solo como una copia de la versión del paquete: para lanzamientos solo de plugins que permanecen intencionalmente compatibles con hosts OpenClaw anteriores, mantén el piso en la API de host más antigua compatible y documenta esa elección en la prueba de lanzamiento del plugin. - Ejecuta el workflow manual
Full Release Validationantes de aprobar el lanzamiento para iniciar todas las cajas de prueba previas al lanzamiento desde un único punto de entrada. Acepta una rama, etiqueta o SHA completo de commit, despachaCImanual y despachaOpenClaw Release Checkspara smoke de instalación, aceptación de paquetes, comprobaciones de paquetes entre sistemas operativos, paridad de QA Lab, Matrix y carriles de Telegram. Las ejecuciones estables y completas siempre incluyen live/E2E exhaustivo y soak de ruta de lanzamiento Docker;run_release_soak=truese conserva para un soak beta explícito. Package Acceptance proporciona el E2E canónico de Telegram del paquete durante la validación del candidato, evitando un segundo sondeador live concurrente. Proporcionarelease_package_specdespués de publicar una beta para reutilizar el paquete npm enviado en las comprobaciones de lanzamiento, Package Acceptance y el E2E de Telegram del paquete sin reconstruir el tarball de lanzamiento. Proporcionanpm_telegram_package_specsolo cuando Telegram deba usar un paquete publicado distinto del resto de la validación de lanzamiento. Proporcionapackage_acceptance_package_speccuando Package Acceptance deba usar un paquete publicado distinto de la especificación del paquete de lanzamiento. Proporcionaevidence_package_speccuando el informe de evidencia de lanzamiento deba demostrar que la validación coincide con un paquete npm publicado sin forzar el E2E de Telegram. Ejemplo:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.PATCH - Ejecuta el workflow manual
Package Acceptancecuando quieras prueba de canal lateral para un candidato de paquete mientras continúa el trabajo de lanzamiento. Usasource=npmparaopenclaw@beta,openclaw@latesto una versión de lanzamiento exacta;source=refpara empaquetar una rama/etiqueta/SHApackage_refconfiable con el arnésworkflow_refactual;source=urlpara un tarball HTTPS público con un SHA-256 requerido y una política estricta de URL pública;source=trusted-urlpara una política de fuente confiable con nombre usandotrusted_source_idy SHA-256 requeridos; osource=artifactpara un tarball subido por otra ejecución de GitHub Actions. El workflow resuelve el candidato apackage-under-test, reutiliza el programador de lanzamiento Docker E2E contra ese tarball y puede ejecutar QA de Telegram contra el mismo tarball contelegram_mode=mock-openaiotelegram_mode=live-frontier. Cuando los carriles Docker seleccionados incluyenpublished-upgrade-survivor, el artefacto del paquete es el candidato ypublished_upgrade_survivor_baselineselecciona la línea base publicada.update-restart-authusa el paquete candidato como CLI instalada y como package-under-test para ejercitar la ruta de reinicio gestionado del comando de actualización del candidato. Ejemplo:gh workflow run package-acceptance.yml --ref main -f workflow_ref=main -f source=npm -f package_spec=openclaw@beta -f suite_profile=product -f published_upgrade_survivor_baseline=openclaw@2026.4.26 -f telegram_mode=mock-openaiPerfiles comunes:smoke: carriles de instalación/canal/agente, red de Gateway y recarga de configuraciónpackage: carriles nativos de artefacto para paquete/actualización/reinicio/plugin sin OpenWebUI ni ClawHub liveproduct: perfil de paquete más canales MCP, limpieza de cron/subagente, búsqueda web de OpenAI y OpenWebUIfull: fragmentos de ruta de lanzamiento Docker con OpenWebUIcustom: selección exacta dedocker_lanespara una repetición enfocada
- Ejecuta el workflow manual
CIdirectamente cuando solo necesites cobertura de CI normal determinista para el candidato de lanzamiento. Los despachos manuales de CI omiten el alcance por cambios y fuerzan los shards de Linux Node, shards de plugins empaquetados, shards de contratos de plugins y canales, compatibilidad con Node 22,check-*,check-additional-*, comprobaciones smoke de artefactos construidos, comprobaciones de documentación, Skills de Python, Windows, macOS y carriles de i18n de Control UI. Las ejecuciones manuales independientes de CI ejecutan Android solo cuando se despachan coninclude_android=true;Full Release Validationpasa esa entrada a su hijo de CI. Ejemplo con Android:gh workflow run ci.yml --ref release/YYYY.M.PATCH -f include_android=true - Ejecuta
pnpm qa:otel:smokeal validar la telemetría de lanzamiento. Ejercita QA-lab mediante un receptor OTLP/HTTP local y verifica la exportación de trazas, métricas y logs, además de atributos de traza acotados y redacción de contenido/identificadores sin requerir Opik, Langfuse u otro recopilador externo. - Ejecuta
pnpm qa:otel:collector-smokeal validar la compatibilidad con recopiladores. Enruta la misma exportación OTLP de QA-lab a través de un contenedor Docker real de OpenTelemetry Collector antes de las aserciones del receptor local. - Ejecuta
pnpm qa:prometheus:smokeal validar el scraping protegido de Prometheus. Ejercita QA-lab, rechaza scrapes no autenticados y verifica que las familias de métricas críticas para el lanzamiento permanezcan libres de contenido de prompts, identificadores sin procesar, tokens de autenticación y rutas locales. - Ejecuta
pnpm qa:observability:smokecuando quieras los carriles smoke de OpenTelemetry y Prometheus del checkout fuente de forma consecutiva. - Ejecuta
pnpm release:checkantes de cada lanzamiento etiquetado - La comprobación previa de
OpenClaw NPM Releasegenera evidencia de lanzamiento de dependencias antes de empaquetar el tarball de npm. La puerta de vulnerabilidades de avisos de npm es bloqueante para el lanzamiento. Los informes de riesgo del manifiesto transitivo, superficie de propiedad/instalación de dependencias y cambios de dependencias son solo evidencia de lanzamiento. El informe de cambios de dependencias compara el candidato de lanzamiento con la etiqueta de lanzamiento alcanzable anterior. - La comprobación previa sube la evidencia de dependencias como
openclaw-release-dependency-evidence-<tag>y también la incrusta bajodependency-evidence/dentro del artefacto de comprobación previa de npm preparado. La ruta real de publicación reutiliza ese artefacto de comprobación previa y luego adjunta la misma evidencia al lanzamiento de GitHub comoopenclaw-<version>-dependency-evidence.zip. - Ejecuta
OpenClaw Release Publishpara la secuencia de publicación mutante después de que exista la etiqueta. Despáchalo desderelease/YYYY.M.PATCH(omainal publicar una etiqueta alcanzable desde main), pasa la etiqueta de lanzamiento, elpreflight_run_idde npm de OpenClaw correcto y elfull_release_validation_run_idcorrecto, y conserva el alcance predeterminado de publicación de pluginsall-publishablesalvo que estés ejecutando deliberadamente una reparación enfocada. El workflow serializa la publicación npm de plugins, la publicación ClawHub de plugins y la publicación npm de OpenClaw para que el paquete central no se publique antes que sus plugins externalizados. OpenClaw Release Publishestable requiere unwindows_node_tagexacto después de que exista el lanzamiento no preliminar correspondiente deopenclaw/openclaw-windows-node. También requiere el mapawindows_node_installer_digestsaprobado para el candidato. Antes de despachar cualquier hijo de publicación, verifica que el lanzamiento fuente esté publicado, no sea preliminar, contenga los instaladores x64/ARM64 requeridos y aún coincida con ese mapa aprobado. Luego despachaWindows Node Releasemientras el lanzamiento de OpenClaw todavía es un borrador, llevando sin cambios el mapa fijado de resúmenes de instaladores. El workflow hijo descarga los instaladores firmados de Windows Hub desde esa etiqueta exacta, los compara con los resúmenes fijados, verifica que sus firmas Authenticode usen el firmante esperado de OpenClaw Foundation en un runner de Windows, escribe un manifiesto SHA-256 y sube los instaladores más el manifiesto al lanzamiento canónico de GitHub de OpenClaw; luego vuelve a descargar los recursos promocionados y verifica la pertenencia al manifiesto y los hashes. El padre verifica el contrato actual de recursos x64, ARM64 y checksum antes de la publicación. La recuperación directa rechaza nombres de recursosOpenClawCompanion-*inesperados antes de reemplazar los recursos de contrato esperados con los bytes fuente fijados. Despacha manualmenteWindows Node Releasesolo para recuperación, y pasa siempre una etiqueta exacta, nuncalatest, además del mapa JSON explícitoexpected_installer_digestsdel lanzamiento fuente aprobado. Los enlaces de descarga del sitio web deben apuntar a URL exactas de recursos del lanzamiento de OpenClaw para el lanzamiento estable actual, o areleases/latest/download/...solo después de verificar que la redirección latest de GitHub apunte a ese mismo lanzamiento; no enlaces solo a la página de lanzamiento del repositorio complementario.- Las comprobaciones de lanzamiento ahora se ejecutan en un workflow manual separado:
OpenClaw Release Checks OpenClaw Release Checkstambién ejecuta el carril de paridad mock de QA Lab más el perfil live rápido de Matrix y el carril de QA de Telegram antes de la aprobación del lanzamiento. Los carriles live usan el entornoqa-live-shared; Telegram también usa arrendamientos de credenciales de Convex CI. Ejecuta el workflow manualQA-Lab - All Lanesconmatrix_profile=allymatrix_shards=truecuando quieras el inventario completo de transporte, medios y E2EE de Matrix en paralelo.- La validación de runtime de instalación y actualización entre sistemas operativos forma parte de
OpenClaw Release ChecksyFull Release Validationpúblicos, que llaman directamente al workflow reutilizable.github/workflows/openclaw-cross-os-release-checks-reusable.yml - Esta división es intencional: mantiene la ruta real de lanzamiento npm corta, determinista y centrada en artefactos, mientras las comprobaciones live más lentas permanecen en su propio carril para que no detengan ni bloqueen la publicación
- Las comprobaciones de lanzamiento con secretos deben despacharse mediante
Full Release Validationo desde la ref del workflowmain/release para que la lógica del workflow y los secretos permanezcan controlados OpenClaw Release Checksacepta una rama, etiqueta o SHA completo de commit siempre que el commit resuelto sea alcanzable desde una rama de OpenClaw o una etiqueta de lanzamiento- La comprobación previa solo de validación de
OpenClaw NPM Releasetambién acepta el SHA de commit completo de 40 caracteres de la rama de workflow actual sin requerir una etiqueta publicada - Esa ruta SHA es solo de validación y no puede promocionarse a una publicación real
- En modo SHA, el workflow sintetiza
v<package.json version>solo para la comprobación de metadatos del paquete; la publicación real todavía requiere una etiqueta de lanzamiento real - Ambos workflows 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 más grandes de Blacksmith
- Ese workflow ejecuta
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheusando los secretos de workflowOPENAI_API_KEYyANTHROPIC_API_KEY - La comprobación previa de lanzamiento npm ya no espera al carril separado de comprobaciones de lanzamiento
- Antes de etiquetar localmente un candidato de lanzamiento, ejecuta
RELEASE_TAG=vYYYY.M.PATCH-beta.N pnpm release:fast-pretag-check. El helper ejecuta los resguardos rápidos de lanzamiento, comprobaciones de lanzamiento npm/ClawHub de plugins, build, build de UI yrelease:openclaw:npm:checken el orden que detecta errores comunes que bloquean la aprobación antes de que comience el workflow de publicación de GitHub. - Ejecuta
RELEASE_TAG=vYYYY.M.PATCH 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.PATCH(o la versión beta/corrección correspondiente) para verificar la ruta de instalación del registro publicado en un prefijo temporal nuevo - Después de publicar una beta, ejecuta
OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC=openclaw@YYYY.M.PATCH-beta.N OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci pnpm test:docker:npm-telegram-livepara verificar la incorporación del paquete instalado, la configuración de Telegram y el E2E real de Telegram contra el paquete npm publicado usando el conjunto compartido de credenciales de Telegram alquiladas. Las ejecuciones locales puntuales de mantenedores pueden omitir las variables de Convex y pasar directamente las tres credenciales de entornoOPENCLAW_QA_TELEGRAM_*. - Para ejecutar el smoke beta completo posterior a la publicación desde una máquina de mantenedor, usa
pnpm release:beta-smoke -- --beta betaN. El helper ejecuta la validación de actualización npm/fresh-target en Parallels, despachaNPM Telegram Beta E2E, sondea la ejecución exacta del flujo de trabajo, descarga el artefacto e imprime el informe de Telegram. - Los mantenedores pueden ejecutar la misma comprobación posterior a la publicación desde GitHub Actions mediante el
flujo de trabajo manual
NPM Telegram Beta E2E. Es intencionadamente solo manual y no se ejecuta en cada fusión. - La automatización de releases para mantenedores ahora usa preflight-then-promote:
- la publicación npm real debe tener un
preflight_run_idde npm correcto - la publicación npm real debe despacharse desde la misma rama
mainorelease/YYYY.M.PATCHque la ejecución de preflight correcta - las releases npm estables usan
betapor defecto - la publicación npm estable puede apuntar explícitamente a
latestmediante una entrada del flujo de trabajo - la mutación de dist-tag de npm basada en token ahora vive en
openclaw/releases/.github/workflows/openclaw-npm-dist-tags.ymlporquenpm dist-tag addtodavía necesitaNPM_TOKEN, mientras que el repositorio fuente mantiene la publicación solo con OIDC macOS Releasepúblico es solo de validación; cuando una etiqueta vive solo en una rama de release pero el flujo de trabajo se despacha desdemain, definepublic_release_branch=release/YYYY.M.PATCH- la publicación macOS real debe tener un
preflight_run_idde macOS y unvalidate_run_idcorrectos - las rutas de publicación real promocionan artefactos preparados en lugar de volver a reconstruirlos
- la publicación npm real debe tener un
- Para releases estables de corrección como
YYYY.M.PATCH-N, el verificador posterior a la publicación también comprueba la misma ruta de actualización con prefijo temporal desdeYYYY.M.PATCHaYYYY.M.PATCH-Npara que las correcciones de release no puedan dejar silenciosamente instalaciones globales antiguas en la carga base estable - El preflight de release npm falla de forma cerrada salvo que el tarball incluya tanto
dist/control-ui/index.htmlcomo una carga no vacía dedist/control-ui/assets/, para que no volvamos a publicar un panel de navegador vacío - La verificación posterior a la publicación también comprueba que los puntos de entrada de Plugin publicados y
los metadatos del paquete estén presentes en la disposición del registro instalada. Una release que
publica cargas de runtime de Plugin faltantes falla el verificador postpublish y
no puede promocionarse a
latest. pnpm test:install:smoketambién aplica el presupuesto deunpackedSizedel empaquetado npm en el tarball de actualización candidato, de modo que el e2e del instalador detecte aumentos accidentales del tamaño del paquete antes de la ruta de publicación de release- Si el trabajo de release tocó la planificación de CI, manifiestos de tiempos de extensiones o
matrices de pruebas de extensiones, regenera y revisa las salidas de matriz
plugin-prerelease-extension-shard, propiedad del planificador, desde.github/workflows/plugin-prerelease.ymlantes de la aprobación, para que las notas de release no describan una disposición de CI obsoleta - La preparación para la release estable de macOS también incluye las superficies del actualizador:
- la release de GitHub debe terminar con los
.zip,.dmgy.dSYM.zipempaquetados appcast.xmlenmaindebe apuntar al nuevo zip estable después de la publicación; el flujo de trabajo de publicación macOS lo confirma automáticamente, o abre un PR de appcast cuando el push directo está bloqueado- la app empaquetada debe mantener un bundle id no debug, una URL de feed de Sparkle no vacía
y un
CFBundleVersionigual o superior al piso canónico de build de Sparkle para esa versión de release
- la release de GitHub debe terminar con los
Entornos de prueba de lanzamiento
Full Release Validation es la forma en que los operadores inician todas las pruebas previas al lanzamiento desde
un único punto de entrada. Para una prueba de commit fijado en una rama que avanza rápidamente, usa el
asistente para que cada flujo de trabajo hijo se ejecute desde una rama temporal fijada al SHA
objetivo:
pnpm ci:full-release --sha <full-sha>El asistente sube release-ci/<sha>-..., despacha Full Release Validation
desde esa rama con ref=<sha>, verifica que cada headSha de flujo de trabajo hijo
coincida con el objetivo y luego elimina la rama temporal. Esto evita validar por accidente una ejecución hija
más reciente de main.
Para validar una rama o etiqueta de lanzamiento, ejecútalo desde la referencia de flujo de trabajo
confiable main y pasa la rama o etiqueta de lanzamiento como ref:
gh workflow run full-release-validation.yml \ --ref main \ -f ref=release/YYYY.M.PATCH \ -f provider=openai \ -f mode=both \ -f release_profile=stable \ -f evidence_package_spec=openclaw@YYYY.M.PATCH-beta.NEl flujo de trabajo resuelve la referencia objetivo, despacha el CI manual con
target_ref=<release-ref> y luego despacha OpenClaw Release Checks.
OpenClaw Release Checks distribuye pruebas smoke de instalación, comprobaciones de lanzamiento
entre sistemas operativos, cobertura live/E2E de la ruta de lanzamiento en Docker cuando soak está habilitado,
Package Acceptance con el E2E canónico del paquete Telegram, paridad de QA Lab, Matrix live y
Telegram live. Una ejecución completa/all solo es aceptable cuando el resumen de Full Release Validation
muestra normal_ci, plugin_prerelease y release_checks como
correctos, salvo que una repetición enfocada haya omitido intencionadamente el hijo separado Plugin Prerelease. Usa el hijo independiente npm-telegram solo para una repetición enfocada de
paquete publicado con release_package_spec o
npm_telegram_package_spec. El resumen final del
verificador incluye tablas de los trabajos más lentos para cada ejecución hija, de modo que el responsable de lanzamiento
pueda ver la ruta crítica actual sin descargar registros.
Consulta Validación completa de lanzamiento para ver la
matriz de etapas completa, los nombres exactos de trabajos del flujo de trabajo, las diferencias entre los perfiles estable y completo,
artefactos y controles de repetición enfocada.
Los flujos de trabajo hijos se despachan desde la referencia confiable que ejecuta Full Release Validation, normalmente --ref main, incluso cuando la ref objetivo apunta a una
rama o etiqueta de lanzamiento anterior. No hay una entrada separada de referencia de flujo de trabajo de Full Release Validation;
elige el arnés confiable eligiendo la referencia de ejecución del flujo de trabajo.
No uses --ref main -f ref=<sha> para una prueba exacta de commit en main móvil;
los SHA de commit sin procesar no pueden ser referencias de despacho de flujo de trabajo, así que usa
pnpm ci:full-release --sha <sha> para crear la rama temporal fijada.
Usa release_profile para seleccionar la amplitud live/proveedor:
minimum: ruta OpenAI/core live y Docker más rápida y crítica para el lanzamientostable: minimum más cobertura estable de proveedores/backends para la aprobación del lanzamientofull: stable más cobertura amplia consultiva de proveedores/medios
La validación estable y completa siempre ejecuta el barrido exhaustivo live/E2E, de
ruta de lanzamiento en Docker y acotado de supervivencia de actualización publicada antes de la promoción.
Usa run_release_soak=true para solicitar ese mismo barrido para una beta. Ese barrido cubre
los últimos cuatro paquetes estables más las líneas base fijadas 2026.4.23 y 2026.5.2
más cobertura anterior de 2026.4.15, con líneas base duplicadas eliminadas y
cada línea base fragmentada en su propio trabajo ejecutor de Docker.
OpenClaw Release Checks usa la referencia confiable del flujo de trabajo para resolver la referencia objetivo
una vez como release-package-under-test y reutiliza ese artefacto en comprobaciones entre sistemas operativos,
Package Acceptance y comprobaciones Docker de ruta de lanzamiento cuando se ejecuta soak. Esto mantiene
todos los entornos orientados al paquete sobre los mismos bytes y evita compilaciones repetidas del paquete.
Después de que una beta ya esté en npm, establece release_package_spec=openclaw@YYYY.M.PATCH-beta.N
para que las comprobaciones de lanzamiento descarguen una vez el paquete publicado, extraigan su SHA de origen de compilación
de dist/build-info.json y reutilicen ese artefacto para rutas entre sistemas operativos,
Package Acceptance, Docker de ruta de lanzamiento y Telegram de paquete.
La prueba smoke de instalación OpenAI entre sistemas operativos usa OPENCLAW_CROSS_OS_OPENAI_MODEL cuando la
variable de repo/organización está definida; de lo contrario usa openai/gpt-5.4, porque este carril
valida la instalación del paquete, el onboarding, el arranque del Gateway y un turno live de agente
en lugar de medir el modelo predeterminado más lento. La matriz live de proveedores más amplia
sigue siendo el lugar para la cobertura específica por modelo.
Usa estas variantes según la etapa del lanzamiento:
# Validate an unpublished release candidate branch.gh workflow run full-release-validation.yml \ --ref main \ -f ref=release/YYYY.M.PATCH \ -f provider=openai \ -f mode=both \ -f release_profile=stable # Validate an exact pushed commit.gh workflow run full-release-validation.yml \ --ref main \ -f ref=<40-char-sha> \ -f provider=openai \ -f mode=both # After publishing a beta, add published-package Telegram E2E.gh workflow run full-release-validation.yml \ --ref main \ -f ref=release/YYYY.M.PATCH \ -f provider=openai \ -f mode=both \ -f release_profile=full \ -f release_package_spec=openclaw@YYYY.M.PATCH-beta.N \ -f evidence_package_spec=openclaw@YYYY.M.PATCH-beta.N \ -f npm_telegram_provider_mode=mock-openaiNo uses el paraguas completo como primera repetición después de una corrección enfocada. Si falla un entorno,
usa el flujo de trabajo hijo, trabajo, carril Docker, perfil de paquete, proveedor de modelo
o carril QA que falló para la siguiente prueba. Ejecuta el paraguas completo otra vez solo cuando
la corrección haya cambiado la orquestación compartida de lanzamiento o haya vuelto obsoleta la evidencia anterior de todos los entornos.
El verificador final del paraguas vuelve a comprobar los id de ejecución de flujos de trabajo hijos registrados,
así que después de repetir correctamente un flujo de trabajo hijo, repite solo el trabajo padre fallido
Verify full validation.
Para recuperación acotada, pasa rerun_group al paraguas. all es la ejecución real
de candidato de lanzamiento, ci ejecuta solo el hijo de CI normal, plugin-prerelease
ejecuta solo el hijo de Plugin exclusivo de lanzamiento, release-checks ejecuta todos los entornos de lanzamiento,
y los grupos de lanzamiento más estrechos son install-smoke, cross-os,
live-e2e, package, qa, qa-parity, qa-live y npm-telegram.
Las repeticiones enfocadas de npm-telegram requieren release_package_spec o
npm_telegram_package_spec; las ejecuciones completas/all usan el E2E canónico del paquete Telegram
dentro de Package Acceptance. Las repeticiones enfocadas
entre sistemas operativos pueden añadir cross_os_suite_filter=windows/packaged-upgrade u
otro filtro de sistema operativo/suite. Los fallos de QA release-check bloquean la validación normal
del lanzamiento, incluida la deriva requerida de herramientas dinámicas de OpenClaw en el nivel estándar.
Las ejecuciones alpha de Tideclaw todavía pueden tratar los carriles release-check que no sean de seguridad de paquete como
consultivos. Cuando live_suite_filter solicita explícitamente un carril QA live con compuerta como
Discord, WhatsApp o Slack, la variable de repo
OPENCLAW_RELEASE_QA_*_LIVE_CI_ENABLED correspondiente debe estar habilitada; de lo contrario
la captura de entrada falla en lugar de omitir el carril silenciosamente.
Vitest
El entorno Vitest es el flujo de trabajo hijo manual CI. El CI manual omite
intencionadamente el acotamiento por cambios y fuerza el grafo de pruebas normal para el candidato de
lanzamiento: fragmentos Linux Node, fragmentos de plugins incluidos, fragmentos de contratos de Plugin y canal,
compatibilidad con Node 22, check-*, check-additional-*,
comprobaciones smoke de artefactos compilados, comprobaciones de documentación, Skills de Python, Windows, macOS
e i18n de Control UI. Android se incluye cuando Full Release Validation ejecuta el
entorno porque el paraguas pasa include_android=true; el CI manual independiente
requiere include_android=true para cobertura de Android.
Usa este entorno para responder "¿pasó el árbol de código fuente la suite normal completa de pruebas?" No es lo mismo que la validación de producto por ruta de lanzamiento. Evidencia que conservar:
- resumen de
Full Release Validationque muestre la URL de ejecución deCIdespachada - ejecución de
CIen verde sobre el SHA objetivo exacto - nombres de fragmentos fallidos o lentos de los trabajos de CI al investigar regresiones
- artefactos de tiempos de Vitest, como
.artifacts/vitest-shard-timings.json, cuando una ejecución necesita análisis de rendimiento
Ejecuta CI manual directamente solo cuando el lanzamiento necesite CI normal determinista pero
no los entornos Docker, QA Lab, live, entre sistemas operativos o de paquete. Usa el primer comando
para CI directo sin Android. Añade include_android=true cuando el CI directo de
candidato de lanzamiento deba cubrir Android:
gh workflow run ci.yml --ref main -f target_ref=release/YYYY.M.PATCHgh workflow run ci.yml --ref main -f target_ref=release/YYYY.M.PATCH -f include_android=trueDocker
El entorno Docker vive en OpenClaw Release Checks mediante
openclaw-live-and-e2e-checks-reusable.yml, además del flujo de trabajo
install-smoke en modo de lanzamiento. Valida el candidato de lanzamiento mediante entornos
Docker empaquetados en lugar de solo pruebas a nivel de código fuente.
La cobertura Docker de lanzamiento incluye:
- prueba smoke de instalación completa con la prueba smoke lenta de instalación global de Bun habilitada
- preparación/reutilización de imagen smoke del Dockerfile raíz por SHA objetivo, con trabajos de QR, raíz/Gateway e instalador/Bun smoke ejecutándose como fragmentos install-smoke separados
- carriles E2E de repositorio
- fragmentos Docker de ruta de lanzamiento:
core,package-update-openai,package-update-anthropic,package-update-core,plugins-runtime-plugins,plugins-runtime-services,plugins-runtime-install-a,plugins-runtime-install-b,plugins-runtime-install-c,plugins-runtime-install-d,plugins-runtime-install-e,plugins-runtime-install-f,plugins-runtime-install-gyplugins-runtime-install-h - cobertura de OpenWebUI dentro del fragmento
plugins-runtime-servicescuando se solicita - carriles divididos de instalación/desinstalación de plugins incluidos
bundled-plugin-install-uninstall-0hastabundled-plugin-install-uninstall-23 - suites de proveedores live/E2E y cobertura Docker de modelos live cuando las comprobaciones de lanzamiento incluyen suites live
Usa los artefactos de Docker antes de repetir. El planificador de ruta de lanzamiento sube
.artifacts/docker-tests/ con registros de carriles, summary.json, failures.json,
tiempos de fases, JSON del plan del planificador y comandos de repetición. Para recuperación enfocada,
usa docker_lanes=<lane[,lane]> en el flujo de trabajo reusable live/E2E en lugar de
repetir todos los fragmentos de lanzamiento. Los comandos de repetición generados incluyen
package_artifact_run_id previo y entradas de imagen Docker preparada cuando estén disponibles, para que un
carril fallido pueda reutilizar el mismo tarball y las imágenes GHCR.
QA Lab
El entorno QA Lab también forma parte de OpenClaw Release Checks. Es la compuerta de lanzamiento
de comportamiento agentivo y nivel de canal, separada de Vitest y de la mecánica de paquetes Docker.
La cobertura de QA Lab de lanzamiento incluye:
- carril de paridad mock que compara el carril candidato OpenAI con la línea base Opus 4.6 usando el paquete de paridad agentiva
- perfil QA de Matrix live rápido usando el entorno
qa-live-shared - carril QA live de Telegram usando concesiones de credenciales Convex CI
pnpm qa:otel:smoke,pnpm qa:otel:collector-smoke,pnpm qa:prometheus:smokeopnpm qa:observability:smokecuando la telemetría de lanzamiento necesita prueba local explícita
Usa este entorno para responder "¿se comporta correctamente el lanzamiento en escenarios QA y flujos de canales live?" Conserva las URL de artefactos para los carriles de paridad, Matrix y Telegram al aprobar el lanzamiento. La cobertura completa de Matrix sigue disponible como una ejecución manual fragmentada de QA-Lab en lugar del carril crítico predeterminado del lanzamiento.
Paquete
El entorno Package es la compuerta de producto instalable. Está respaldado por
Package Acceptance y el resolvedor
scripts/resolve-openclaw-package-candidate.mjs. El resolvedor normaliza un
candidato en el tarball package-under-test consumido por Docker E2E, valida
el inventario del paquete, registra la versión del paquete y SHA-256, y mantiene la
referencia del arnés de flujo de trabajo separada de la referencia de origen del paquete.
Fuentes de candidato admitidas:
source=npm:openclaw@beta,openclaw@latesto una versión exacta de lanzamiento de OpenClawsource=ref: empaqueta una rama, etiqueta o SHA de commit completopackage_refde confianza con el arnésworkflow_refseleccionadosource=url: descarga un.tgzHTTPS público conpackage_sha256requerido; se rechazan credenciales de URL, puertos HTTPS no predeterminados, nombres de host o direcciones resueltas privadas/internas/de uso especial, y redirecciones insegurassource=trusted-url: descarga un.tgzHTTPS conpackage_sha256ytrusted_source_idrequeridos desde una política nombrada en.github/package-trusted-sources.json; usa esto para espejos empresariales propiedad de mantenedores o repositorios de paquetes privados en lugar de agregar asource=urluna omisión de red privada a nivel de entradasource=artifact: reutiliza un.tgzcargado por otra ejecución de GitHub Actions
OpenClaw Release Checks ejecuta Package Acceptance con source=artifact, el
artefacto de paquete de lanzamiento preparado, suite_profile=custom,
docker_lanes=doctor-switch update-channel-switch skill-install update-corrupt-plugin upgrade-survivor published-upgrade-survivor update-restart-auth plugins-offline plugin-update,
telegram_mode=mock-openai. Package Acceptance mantiene la QA de migración,
actualización, reinicio de actualización con autenticación configurada,
instalación en vivo de Skills de ClawHub, limpieza de dependencias obsoletas de
plugins, fixtures de plugins sin conexión, actualización de plugins y paquete de
Telegram contra el mismo tarball resuelto. Las comprobaciones de lanzamiento
bloqueantes usan la línea base predeterminada del paquete publicado más reciente;
el perfil beta con run_release_soak=true, release_profile=stable o
release_profile=full se expande a cada línea base estable publicada en npm
desde 2026.4.23 hasta latest, más fixtures de incidencias reportadas. Usa
Package Acceptance con source=npm para un candidato ya publicado,
source=ref para un tarball local de npm respaldado por SHA antes de publicar,
source=trusted-url para un espejo empresarial/privado propiedad de
mantenedores, o source=artifact para un tarball preparado cargado por otra
ejecución de GitHub Actions. Es el reemplazo nativo de GitHub para la mayor
parte de la cobertura de paquete/actualización que antes requería Parallels. Las
comprobaciones de lanzamiento entre sistemas operativos siguen siendo
importantes para el onboarding, el instalador y el comportamiento de plataforma
específicos del sistema operativo, pero la validación de producto de
paquete/actualización debe preferir Package Acceptance.
La lista de comprobación canónica para validación de actualizaciones y plugins
es Probar actualizaciones y plugins. Úsala al
decidir qué carril local, Docker, Package Acceptance o de comprobación de
lanzamiento prueba un cambio de instalación/actualización de plugin, limpieza de
doctor o migración de paquete publicado. La migración exhaustiva de actualización
publicada desde cada paquete estable 2026.4.23+ es un flujo de trabajo manual
Update Migration separado, no parte de Full Release CI.
La tolerancia heredada de package-acceptance está limitada intencionalmente en el
tiempo. Los paquetes hasta 2026.4.25 pueden usar la ruta de compatibilidad para
brechas de metadatos ya publicadas en npm: entradas privadas de inventario de QA
faltantes en el tarball, falta de gateway install --wrapper, archivos de
parche faltantes en el fixture de git derivado del tarball, falta de
update.channel persistido, ubicaciones heredadas de registros de instalación
de plugins, falta de persistencia de registros de instalación del marketplace y
migración de metadatos de configuración durante plugins update. El paquete
publicado 2026.4.26 puede advertir por archivos de sello de metadatos de
compilación local que ya se publicaron. Los paquetes posteriores deben cumplir
los contratos de paquete modernos; esas mismas brechas fallan la validación de
lanzamiento.
Usa perfiles más amplios de Package Acceptance cuando la pregunta de lanzamiento trate sobre un paquete instalable real:
gh workflow run package-acceptance.yml \ --ref main \ -f workflow_ref=main \ -f source=npm \ -f package_spec=openclaw@beta \ -f suite_profile=product \ -f published_upgrade_survivor_baseline=openclaw@2026.4.26Perfiles comunes de paquetes:
smoke: carriles rápidos de instalación de paquete/canal/agente, red de Gateway y recarga de configuraciónpackage: contratos de instalación/actualización/reinicio/paquete de plugin más prueba de instalación en vivo de Skills de ClawHub; este es el valor predeterminado de comprobación de lanzamientoproduct:packagemás canales MCP, limpieza de cron/subagente, búsqueda web de OpenAI y OpenWebUIfull: fragmentos de ruta de lanzamiento de Docker con OpenWebUIcustom: lista exacta dedocker_lanespara repeticiones enfocadas
Para prueba de Telegram de candidato de paquete, habilita
telegram_mode=mock-openai o telegram_mode=live-frontier en Package
Acceptance. El flujo de trabajo pasa el tarball resuelto package-under-test al
carril de Telegram; el flujo de trabajo independiente de Telegram aún acepta una
especificación de npm publicada para comprobaciones posteriores a la publicación.
Automatización regular de publicación de lanzamientos
Para publicación beta, latest, de plugins, GitHub Release y plataformas,
OpenClaw Release Publish es el punto de entrada mutante normal. La ruta mensual
.33+ de extended-stable solo para npm no usa este orquestador. El flujo de
trabajo regular orquesta los flujos de trabajo de publicador de confianza en el
orden que el lanzamiento necesita:
- Extraer la etiqueta de lanzamiento y resolver su SHA de commit.
- Verificar que la etiqueta sea alcanzable desde
mainorelease/*. - Ejecutar
pnpm plugins:sync:check. - Despachar
Plugin NPM Releaseconpublish_scope=all-publishableyref=<release-sha>. - Despachar
Plugin ClawHub Releasecon el mismo alcance y SHA. - Despachar
OpenClaw NPM Releasecon la etiqueta de lanzamiento, dist-tag de npm ypreflight_run_idguardado después de verificar elfull_release_validation_run_idguardado. - Para lanzamientos estables, crear o actualizar el lanzamiento de GitHub como
borrador, despachar
Windows Node Releasecon elwindows_node_tagexplícito y loswindows_node_installer_digestsaprobados por el candidato, y verificar los artefactos canónicos de instalador/suma de comprobación antes de publicar el borrador.
Ejemplo de publicación beta:
gh workflow run openclaw-release-publish.yml \ --ref release/YYYY.M.PATCH \ -f tag=vYYYY.M.PATCH-beta.N \ -f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \ -f full_release_validation_run_id=<successful-full-release-validation-run-id> \ -f npm_dist_tag=betaPublicación estable al dist-tag beta predeterminado:
gh workflow run openclaw-release-publish.yml \ --ref release/YYYY.M.PATCH \ -f tag=vYYYY.M.PATCH \ -f windows_node_tag=vX.Y.Z \ -f windows_node_installer_digests='{"OpenClawCompanion-Setup-x64.exe":"sha256:<approved-x64-sha256>","OpenClawCompanion-Setup-arm64.exe":"sha256:<approved-arm64-sha256>"}' \ -f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \ -f full_release_validation_run_id=<successful-full-release-validation-run-id> \ -f npm_dist_tag=betaLa promoción estable directamente a latest es explícita:
gh workflow run openclaw-release-publish.yml \ --ref release/YYYY.M.PATCH \ -f tag=vYYYY.M.PATCH \ -f windows_node_tag=vX.Y.Z \ -f windows_node_installer_digests='{"OpenClawCompanion-Setup-x64.exe":"sha256:<approved-x64-sha256>","OpenClawCompanion-Setup-arm64.exe":"sha256:<approved-arm64-sha256>"}' \ -f preflight_run_id=<successful-openclaw-npm-preflight-run-id> \ -f full_release_validation_run_id=<successful-full-release-validation-run-id> \ -f npm_dist_tag=latestUsa los flujos de trabajo de nivel inferior Plugin NPM Release y Plugin ClawHub Release solo para trabajo enfocado de reparación o republicación.
OpenClaw Release Publish rechaza plugin_publish_scope=selected cuando
publish_openclaw_npm=true para que el paquete central no pueda publicarse sin
cada plugin oficial publicable, incluido @openclaw/diffs-language-pack. Para
una reparación de plugin seleccionado, establece publish_openclaw_npm=false con
plugin_publish_scope=selected y plugins=@openclaw/name, o despacha
directamente el flujo de trabajo hijo.
Entradas del flujo de trabajo NPM
OpenClaw NPM Release acepta estas entradas controladas por el operador:
tag: etiqueta de lanzamiento requerida, comov2026.4.2,v2026.4.2-1ov2026.4.2-beta.1; cuandopreflight_only=true, también puede ser el SHA de commit completo actual de 40 caracteres de la rama del flujo de trabajo para preflight solo de validaciónpreflight_only:truesolo para validación/compilación/paquete,falsepara la ruta de publicación realpreflight_run_id: requerido en la ruta de publicación real para que el flujo de trabajo reutilice el tarball preparado de la ejecución de preflight exitosafull_release_validation_run_id: requerido para publicación mensual real de extended-stable y regular no beta, para que el flujo de trabajo autentique la ejecución de validación exactanpm_dist_tag: etiqueta de destino de npm para la ruta de publicación; aceptaalpha,beta,latestoextended-stabley el valor predeterminado esbeta. El parche final33y posteriores deben usarextended-stable; de forma predeterminada,extended-stablerechaza parches anteriores y siempre rechaza etiquetas no finales.bypass_extended_stable_guard: booleano solo para pruebas, predeterminadofalse; connpm_dist_tag=extended-stable, omite la elegibilidad mensual de extended-stable mientras conserva las comprobaciones de identidad de lanzamiento, artefacto, aprobación y lectura de vuelta.
OpenClaw Release Publish acepta estas entradas controladas por el operador:
tag: etiqueta de lanzamiento requerida; ya debe existirpreflight_run_id: id de ejecución de preflight exitosa deOpenClaw NPM Release; requerido cuandopublish_openclaw_npm=truefull_release_validation_run_id: id de ejecución exitosa deFull Release Validation; requerido cuandopublish_openclaw_npm=truewindows_node_tag: etiqueta de lanzamiento exacta no preliminar deopenclaw/openclaw-windows-node; requerida para publicación estable de OpenClawwindows_node_installer_digests: mapa JSON compacto aprobado por el candidato de los nombres actuales de instaladores de Windows a sus resúmenessha256:fijados; requerido para publicación estable de OpenClawnpm_dist_tag: etiqueta de destino de npm para el paquete OpenClawplugin_publish_scope: predeterminadoall-publishable; usaselectedsolo para trabajo enfocado de reparación solo de plugins conpublish_openclaw_npm=falseplugins: nombres de paquetes@openclaw/*separados por comas cuandoplugin_publish_scope=selectedpublish_openclaw_npm: predeterminadotrue; establecefalsesolo al usar el flujo de trabajo como orquestador de reparación solo de pluginswait_for_clawhub: predeterminadofalsepara que la disponibilidad de npm no quede bloqueada por el sidecar de ClawHub; establecetruesolo cuando la finalización del flujo de trabajo deba incluir la finalización de ClawHub
OpenClaw Release Checks acepta estas entradas controladas por el operador:
ref: rama, etiqueta o SHA de commit completo para validar. Las comprobaciones que contienen secretos requieren que el commit resuelto sea alcanzable desde una rama de OpenClaw o una etiqueta de lanzamiento.run_release_soak: optar por soak exhaustivo en vivo/E2E, ruta de lanzamiento de Docker y upgrade-survivor desde todos los paquetes para comprobaciones de lanzamiento beta. Se fuerza conrelease_profile=stableyrelease_profile=full.
Reglas:
- Las versiones finales regulares y de corrección por debajo del parche
33pueden publicarse enbetaolatest. Las versiones finales en el parche33o superior deben publicarse enextended-stable, y se rechazan las versiones con sufijo de corrección en ese límite. - Las etiquetas de prelanzamiento beta solo pueden publicarse en
beta - Para
OpenClaw NPM Release, la entrada de SHA de commit completo solo se permite cuandopreflight_only=true OpenClaw Release ChecksyFull Release Validationsiempre son solo de validación- La ruta de publicación real debe usar el mismo
npm_dist_tagusado durante el preflight; el flujo de trabajo verifica que los metadatos antes de publicar sigan coincidiendo
Secuencia regular de lanzamiento estable beta/latest
Esta secuencia heredada es para el lanzamiento orquestado regular que también
posee plugins, GitHub Release, Windows y otro trabajo de plataforma. No es la
ruta mensual .33+ de extended-stable solo para npm documentada al inicio de
esta página.
Al preparar un lanzamiento estable orquestado regular:
- Ejecuta
OpenClaw NPM Releaseconpreflight_only=true- Antes de que exista una etiqueta, puedes usar el SHA actual completo del commit de la rama del workflow para una ejecución de prueba de solo validación del workflow de preflight
- Elige
npm_dist_tag=betapara el flujo normal de beta primero, olatestsolo cuando quieras intencionalmente una publicación estable directa - Ejecuta
Full Release Validationen la rama de lanzamiento, la etiqueta de lanzamiento o el SHA completo del commit cuando quieras CI normal más cobertura de caché de prompts en vivo, Docker, QA Lab, Matrix y Telegram desde un único workflow manual - Si intencionalmente solo necesitas el grafo de pruebas normal determinista, ejecuta el
workflow manual
CIen la referencia de lanzamiento en su lugar - Selecciona la etiqueta exacta de lanzamiento no preliminar de
openclaw/openclaw-windows-nodecuyos instaladores x64 y ARM64 firmados deben distribuirse. Guárdala comowindows_node_tag, y guarda su mapa de resúmenes validado comowindows_node_installer_digests. El asistente de candidato de lanzamiento registra ambos y los incluye en su comando de publicación generado. - Guarda los
preflight_run_idyfull_release_validation_run_idcorrectos - Ejecuta
OpenClaw Release Publishcon el mismotag, el mismonpm_dist_tag, elwindows_node_tagseleccionado, suwindows_node_installer_digestsguardado, elpreflight_run_idguardado y elfull_release_validation_run_idguardado; publica los plugins externalizados en npm y ClawHub antes de promover el paquete npm de OpenClaw - Si el lanzamiento llegó a
beta, usa el workflowopenclaw/releases/.github/workflows/openclaw-npm-dist-tags.ymlpara promover esa versión estable debetaalatest - Si el lanzamiento se publicó intencionalmente directamente en
latestybetadebe seguir inmediatamente la misma compilación estable, usa ese mismo workflow de lanzamiento para apuntar ambos dist-tags a la versión estable, o deja que su sincronización programada de autorrecuperación muevabetamás tarde
La mutación de dist-tag vive en el repositorio del registro de lanzamientos porque todavía requiere
NPM_TOKEN, mientras que el repositorio fuente conserva una 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 con beta primero.
Si un mantenedor debe recurrir a la autenticación local de npm, ejecuta cualquier comando de la
CLI (op) de 1Password solo dentro de una sesión tmux dedicada. No llames a op
directamente desde la shell principal del agente; mantenerlo dentro de tmux hace que los prompts,
las alertas y el manejo de OTP sean observables y evita alertas repetidas del host.
Referencias públicas
.github/workflows/full-release-validation.yml.github/workflows/package-acceptance.yml.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-cross-os-release-checks-reusable.ymlscripts/resolve-openclaw-package-candidate.mjsscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
Los mantenedores usan la documentación privada de lanzamientos en
openclaw/maintainers/release/README.md
para el runbook real.