OpenClaw ha tre canali di rilascio pubblici:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- stabile: rilasci con tag pubblicati su npm
betaper impostazione predefinita, oppure su npmlatestquando richiesto esplicitamente - beta: tag prerelease pubblicati su npm
beta - sviluppo: l’head mobile di
main
Denominazione delle versioni
- Versione di rilascio stabile:
YYYY.M.D- Tag Git:
vYYYY.M.D
- Tag Git:
- Versione di rilascio correttivo stabile:
YYYY.M.D-N- Tag Git:
vYYYY.M.D-N
- Tag Git:
- Versione prerelease beta:
YYYY.M.D-beta.N- Tag Git:
vYYYY.M.D-beta.N
- Tag Git:
- Non aggiungere zeri iniziali al mese o al giorno
latestindica l’attuale rilascio stabile npm promossobetaindica l’attuale destinazione di installazione beta- I rilasci stabili e correttivi stabili vengono pubblicati su npm
betaper impostazione predefinita; gli operatori di rilascio possono puntare esplicitamente alatest, oppure promuovere in seguito una build beta verificata - Ogni rilascio stabile di OpenClaw distribuisce insieme il pacchetto npm e l’app macOS; i rilasci beta normalmente convalidano e pubblicano prima il percorso npm/pacchetto, con build/firma/notarizzazione dell’app mac riservati allo stabile salvo richiesta esplicita
Cadenza dei rilasci
- I rilasci procedono prima in beta
- Lo stabile segue solo dopo che l’ultima beta è stata convalidata
- I manutentori normalmente preparano i rilasci da un branch
release/YYYY.M.Dcreato dall’attualemain, così la convalida del rilascio e le correzioni non bloccano il nuovo sviluppo sumain - Se un tag beta è stato inviato o pubblicato e necessita di una correzione, i manutentori creano
il tag
-beta.Nsuccessivo invece di eliminare o ricreare il vecchio tag beta - La procedura di rilascio dettagliata, le approvazioni, le credenziali e le note di ripristino sono riservate ai manutentori
Checklist dell’operatore di rilascio
Questa checklist è la forma pubblica del flusso di rilascio. Credenziali private, firma, notarizzazione, ripristino dei dist-tag e dettagli di rollback di emergenza restano nel runbook di rilascio riservato ai manutentori.- Parti dall’attuale
main: esegui il pull dell’ultima versione, conferma che il commit di destinazione sia stato inviato e conferma che la CI dell’attualemainsia abbastanza verde da poter creare il branch da lì. - Riscrivi la sezione superiore di
CHANGELOG.mddalla cronologia reale dei commit con/changelog, mantieni le voci orientate agli utenti, esegui il commit, invialo e fai rebase/pull ancora una volta prima di creare il branch. - Rivedi i record di compatibilità dei rilasci in
src/plugins/compat/registry.tsesrc/commands/doctor/shared/deprecation-compat.ts. Rimuovi la compatibilità scaduta solo quando il percorso di aggiornamento resta coperto, oppure registra perché viene intenzionalmente mantenuta. - Crea
release/YYYY.M.Ddall’attualemain; non svolgere il normale lavoro di rilascio direttamente sumain. - Incrementa ogni posizione di versione richiesta per il tag previsto, quindi esegui
pnpm release:prep. Aggiorna versioni dei Plugin, inventario dei Plugin, schema di configurazione, metadati della configurazione dei canali inclusi, baseline della documentazione di configurazione, export dell’SDK dei Plugin e baseline API dell’SDK dei Plugin nell’ordine corretto. Esegui il commit di qualunque deriva generata prima del tagging. Poi esegui il preflight locale deterministico:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:buildepnpm release:check. - Esegui
OpenClaw NPM Releaseconpreflight_only=true. Prima che esista un tag, uno SHA completo a 40 caratteri del branch di rilascio è consentito per il preflight solo di convalida. Salva ilpreflight_run_idriuscito. - Avvia tutti i test pre-release con
Full Release Validationper il branch di rilascio, il tag o lo SHA completo del commit. Questo è l’unico punto di ingresso manuale per le quattro grandi test box di rilascio: Vitest, Docker, QA Lab e Package. - Se la convalida fallisce, correggi sul branch di rilascio ed esegui di nuovo il file, canale, job del workflow, profilo del pacchetto, provider o allowlist di modelli fallito più piccolo che dimostri la correzione. Riesegui l’ombrello completo solo quando la superficie modificata rende obsolete le prove precedenti.
- Per la beta, crea il tag
vYYYY.M.D-beta.N, quindi eseguiOpenClaw Release Publishdal branchrelease/YYYY.M.Dcorrispondente. Verificapnpm plugins:sync:check, invia tutti i pacchetti Plugin pubblicabili su npm e lo stesso insieme a ClawHub in parallelo, quindi promuove l’artefatto di preflight npm di OpenClaw preparato con il dist-tag corrispondente non appena la pubblicazione npm dei Plugin riesce. Dopo che il child di pubblicazione npm di OpenClaw riesce, crea o aggiorna la pagina di rilascio/prerelease GitHub corrispondente dalla sezione completa corrispondente diCHANGELOG.md. I rilasci stabili pubblicati su npmlatestdiventano il rilascio latest di GitHub; i rilasci di manutenzione stabili mantenuti su npmbetasono creati con GitHublatest=false. La pubblicazione su ClawHub potrebbe essere ancora in esecuzione mentre OpenClaw npm pubblica, ma il workflow di pubblicazione del rilascio stampa immediatamente gli ID delle esecuzioni child. Per impostazione predefinita non attende ClawHub dopo averlo inviato, quindi la disponibilità npm di OpenClaw non è bloccata da approvazioni ClawHub o lavori di registro più lenti; impostawait_for_clawhub=truequando ClawHub deve bloccare il completamento del workflow. Il percorso ClawHub ritenta i fallimenti transitori di installazione delle dipendenze CLI, pubblica i Plugin che superano la preview anche quando una cella di preview presenta un flake, e termina con la verifica del registro per ogni versione attesa dei Plugin, così le pubblicazioni parziali restano visibili e ripetibili. Dopo la pubblicazione, eseguipnpm release:verify-beta -- YYYY.M.D-beta.N --openclaw-npm-run <run-id> --plugin-npm-run <run-id> --plugin-clawhub-run <run-id>per verificare con un solo comando la prerelease GitHub, i dist-tag npmbeta, l’integrità npm, il percorso di installazione pubblicato, le versioni esatte su ClawHub, gli artefatti ClawHub e le conclusioni dei workflow child. Aggiungi--rerun-failed-clawhubquando il sidecar ClawHub è fallito solo in job ritentabili e deve essere rieseguito sul posto. Quindi esegui l’accettazione del pacchetto post-pubblicazione contro il pacchetto pubblicatoopenclaw@YYYY.M.D-beta.Noppureopenclaw@beta. Se una prerelease inviata o pubblicata necessita di una correzione, crea il numero di prerelease corrispondente successivo; non eliminare né riscrivere la vecchia prerelease. - Per lo stabile, continua solo dopo che la beta verificata o il candidato di rilascio dispone delle
prove di convalida richieste. Anche la pubblicazione npm stabile passa attraverso
OpenClaw Release Publish, riutilizzando l’artefatto di preflight riuscito tramitepreflight_run_id; la prontezza del rilascio macOS stabile richiede anche i pacchetti.zip,.dmg,.dSYM.zipeappcast.xmlaggiornato sumain. Il workflow privato di pubblicazione macOS pubblica automaticamente l’appcast firmato sumainpubblico dopo la verifica degli asset di rilascio; se la protezione del branch blocca il push diretto, apre o aggiorna una PR appcast. - Dopo la pubblicazione, esegui il verificatore npm post-pubblicazione, l’E2E Telegram npm pubblicato autonomo facoltativo quando hai bisogno di prova del canale post-pubblicazione, la promozione del dist-tag quando necessaria, verifica la pagina di rilascio GitHub generata ed esegui i passaggi di annuncio del rilascio.
Preflight del rilascio
- Esegui
pnpm check:test-typesprima della preflight di release in modo che il TypeScript dei test resti coperto al di fuori del gate locale più velocepnpm check - Esegui
pnpm check:architectureprima della preflight di release in modo che i controlli più ampi sui cicli di importazione e sui confini architetturali siano verdi al di fuori del gate locale più veloce - Esegui
pnpm build && pnpm ui:buildprima dipnpm release:checkin modo che gli artefatti di releasedist/*attesi e il bundle Control UI esistano per il passaggio di validazione del pacchetto - Esegui
pnpm release:prepdopo l’incremento della versione root e prima del tagging. Esegue ogni generatore di release deterministico che tende a divergere dopo una modifica di versione/configurazione/API: versioni dei plugin, inventario dei plugin, schema della configurazione base, metadati della configurazione dei canali inclusi, baseline della documentazione di configurazione, export dell’SDK dei plugin e baseline API dell’SDK dei plugin.pnpm release:checkriesegue quei guard in modalità controllo e segnala in un solo passaggio ogni errore di deriva generata che trova prima di eseguire i controlli di release del pacchetto. - Esegui il workflow manuale
Full Release Validationprima dell’approvazione della release per avviare tutte le test box pre-release da un unico punto di ingresso. Accetta un branch, tag o SHA completo di commit, avvia manualmenteCIe avviaOpenClaw Release Checksper install smoke, accettazione pacchetto, controlli pacchetto cross-OS, parità QA Lab, Matrix e lane Telegram. Le esecuzioni stable/predefinite mantengono live/E2E esaustivi e soak Docker del percorso di release dietrorun_release_soak=true;release_profile=fullforza il soak. Conrelease_profile=fullererun_group=all, esegue anche il pacchetto Telegram E2E contro l’artefattorelease-package-under-testdei controlli di release. Forniscirelease_package_specdopo aver pubblicato una beta per riusare il pacchetto npm rilasciato nei controlli di release, Package Acceptance e pacchetto Telegram E2E senza ricostruire il tarball di release. Forniscinpm_telegram_package_specsolo quando Telegram deve usare un pacchetto pubblicato diverso dal resto della validazione di release. Forniscipackage_acceptance_package_specquando Package Acceptance deve usare un pacchetto pubblicato diverso dalla specifica del pacchetto di release. Forniscievidence_package_specquando il report privato delle prove deve dimostrare che la validazione corrisponde a un pacchetto npm pubblicato senza forzare Telegram E2E. Esempio:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.D - Esegui il workflow manuale
Package Acceptancequando vuoi una prova side-channel per un candidato pacchetto mentre il lavoro di release continua. Usasource=npmperopenclaw@beta,openclaw@latesto una versione di release esatta;source=refper impacchettare un branch/tag/SHApackage_refaffidabile con l’harnessworkflow_refcorrente;source=urlper un tarball HTTPS con SHA-256 obbligatorio; oppuresource=artifactper un tarball caricato da un’altra esecuzione di GitHub Actions. Il workflow risolve il candidato inpackage-under-test, riusa lo scheduler di release Docker E2E contro quel tarball e può eseguire la QA Telegram contro lo stesso tarball contelegram_mode=mock-openaiotelegram_mode=live-frontier. Quando le lane Docker selezionate includonopublished-upgrade-survivor, l’artefatto del pacchetto è il candidato epublished_upgrade_survivor_baselineseleziona la baseline pubblicata.update-restart-authusa il pacchetto candidato sia come CLI installata sia come package-under-test, quindi esercita il percorso di restart gestito del comando di aggiornamento candidato. Esempio: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-openaiProfili comuni:smoke: lane install/channel/agent, rete Gateway e reload configurazionepackage: lane native dell’artefatto per pacchetto/aggiornamento/restart/plugin senza OpenWebUI o ClawHub liveproduct: profilo package più canali MCP, pulizia cron/subagent, ricerca web OpenAI e OpenWebUIfull: chunk Docker del percorso di release con OpenWebUIcustom: selezione esattadocker_lanesper una riesecuzione mirata
- Esegui direttamente il workflow manuale
CIquando ti serve solo la copertura CI normale completa per il candidato release. Gli avvii manuali di CI bypassano lo scoping delle modifiche e forzano gli shard Linux Node, gli shard dei plugin inclusi, i contratti dei canali, compatibilità Node 22,check,check-additional, build smoke, controlli docs, Skills Python, Windows, macOS, Android e lane i18n Control UI. Esempio:gh workflow run ci.yml --ref release/YYYY.M.D - Esegui
pnpm qa:otel:smokequando validi la telemetria di release. Esercita QA-lab tramite un ricevitore OTLP/HTTP locale e verifica i nomi degli span di trace esportati, gli attributi limitati e la redazione di contenuti/identificatori senza richiedere Opik, Langfuse o un altro collector esterno. - Esegui
pnpm release:checkprima di ogni release taggata - Esegui
OpenClaw Release Publishper la sequenza di pubblicazione mutante dopo che il tag esiste. Avvialo darelease/YYYY.M.D(o damainquando pubblichi un tag raggiungibile da main), passa il tag di release e ilpreflight_run_idnpm OpenClaw riuscito, e mantieni lo scope predefinito di pubblicazione pluginall-publishablea meno che tu stia deliberatamente eseguendo una riparazione mirata. Il workflow serializza la pubblicazione npm dei plugin, la pubblicazione ClawHub dei plugin e la pubblicazione npm di OpenClaw, così il pacchetto core non viene pubblicato prima dei suoi plugin esternalizzati. - I controlli di release ora vengono eseguiti in un workflow manuale separato:
OpenClaw Release Checks OpenClaw Release Checksesegue anche la lane di parità mock QA Lab più il profilo Matrix live veloce e la lane QA Telegram prima dell’approvazione della release. Le lane live usano l’ambienteqa-live-shared; Telegram usa anche i lease delle credenziali CI Convex. Esegui il workflow manualeQA-Lab - All Lanesconmatrix_profile=allematrix_shards=truequando vuoi l’inventario completo Matrix di trasporto, media ed E2EE in parallelo.- La validazione runtime cross-OS di installazione e aggiornamento fa parte dei workflow pubblici
OpenClaw Release CheckseFull Release Validation, che chiamano direttamente il workflow riusabile.github/workflows/openclaw-cross-os-release-checks-reusable.yml - Questa divisione è intenzionale: mantenere il percorso reale di release npm breve, deterministico e centrato sugli artefatti, mentre i controlli live più lenti restano nella propria lane così non rallentano né bloccano la pubblicazione
- I controlli di release con segreti devono essere avviati tramite
Full Release Validationo dal workflow refmain/release, così logica del workflow e segreti restano controllati OpenClaw Release Checksaccetta un branch, tag o SHA completo di commit purché il commit risolto sia raggiungibile da un branch OpenClaw o da un tag di release- Anche la preflight solo di validazione
OpenClaw NPM Releaseaccetta lo SHA completo di 40 caratteri del commit del branch del workflow corrente senza richiedere un tag inviato - Quel percorso SHA è solo per validazione e non può essere promosso a una pubblicazione reale
- In modalità SHA il workflow sintetizza
v<package.json version>solo per il controllo dei metadati del pacchetto; la pubblicazione reale richiede comunque un tag di release reale - Entrambi i workflow mantengono il percorso reale di pubblicazione e promozione su runner GitHub-hosted, mentre il percorso di validazione non mutante può usare i runner Linux Blacksmith più grandi
- Quel workflow esegue
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheusando entrambi i segreti del workflowOPENAI_API_KEYeANTHROPIC_API_KEY - La preflight di release npm non attende più la lane separata dei controlli di release
- Prima di taggare localmente un candidato release, esegui
RELEASE_TAG=vYYYY.M.D-beta.N pnpm release:fast-pretag-check. L’helper esegue i guardrail veloci di release, i controlli di release npm/ClawHub dei plugin, build, build UI erelease:openclaw:npm:checknell’ordine che intercetta gli errori comuni bloccanti per l’approvazione prima che inizi il workflow di pubblicazione GitHub. - Esegui
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(o il tag beta/correzione corrispondente) prima dell’approvazione - Dopo la pubblicazione npm, esegui
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(o la versione beta/correzione corrispondente) per verificare il percorso di installazione dal registry pubblicato in un prefisso temporaneo pulito - Dopo una pubblicazione beta, esegui
OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC=openclaw@YYYY.M.D-beta.N OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=ci pnpm test:docker:npm-telegram-liveper verificare onboarding del pacchetto installato, configurazione Telegram ed E2E Telegram reale contro il pacchetto npm pubblicato usando il pool condiviso di credenziali Telegram in lease. Le esecuzioni locali una tantum dei maintainer possono omettere le variabili Convex e passare direttamente le tre credenziali envOPENCLAW_QA_TELEGRAM_*. - Per eseguire lo smoke beta post-pubblicazione completo da una macchina maintainer, usa
pnpm release:beta-smoke -- --beta betaN. L’helper esegue la validazione Parallels npm update/fresh-target, avviaNPM Telegram Beta E2E, interroga l’esecuzione esatta del workflow, scarica l’artefatto e stampa il report Telegram. - I maintainer possono eseguire lo stesso controllo post-pubblicazione da GitHub Actions tramite il
workflow manuale
NPM Telegram Beta E2E. È intenzionalmente solo manuale e non viene eseguito a ogni merge. - L’automazione di release dei maintainer ora usa preflight-then-promote:
- la pubblicazione npm reale deve superare un
preflight_run_idnpm riuscito - la pubblicazione npm reale deve essere avviata dallo stesso branch
mainorelease/YYYY.M.Ddell’esecuzione preflight riuscita - le release npm stable usano
betacome predefinito - la pubblicazione npm stable può puntare esplicitamente a
latesttramite input del workflow - la mutazione dei dist-tag npm basata su token ora vive in
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlper sicurezza, perchénpm dist-tag addrichiede ancoraNPM_TOKENmentre il repository pubblico mantiene la pubblicazione solo OIDC macOS Releasepubblico è solo di validazione; quando un tag vive solo su un branch di release ma il workflow è avviato damain, impostapublic_release_branch=release/YYYY.M.D- la pubblicazione mac privata reale deve superare
preflight_run_idevalidate_run_idmac privati riusciti - i percorsi di pubblicazione reali promuovono artefatti preparati invece di ricostruirli di nuovo
- la pubblicazione npm reale deve superare un
- Per release correttive stable come
YYYY.M.D-N, il verificatore post-pubblicazione controlla anche lo stesso percorso di upgrade con prefisso temporaneo daYYYY.M.DaYYYY.M.D-N, così le correzioni di release non possono lasciare silenziosamente installazioni globali più vecchie sul payload stable base - La preflight di release npm fallisce in modo chiuso a meno che il tarball includa sia
dist/control-ui/index.htmlsia un payload non vuotodist/control-ui/assets/, così non spediamo di nuovo una dashboard browser vuota - La verifica post-pubblicazione controlla anche che entrypoint dei plugin pubblicati e
metadati del pacchetto siano presenti nel layout installato dal registry. Una release che
spedisce payload runtime dei plugin mancanti fallisce il verificatore postpublish e
non può essere promossa a
latest. pnpm test:install:smokeapplica anche il budget npm packunpackedSizesul tarball di aggiornamento candidato, così l’e2e dell’installer intercetta aumenti accidentali del pacchetto prima del percorso di pubblicazione release- Se il lavoro di release ha toccato la pianificazione CI, i manifest di timing delle estensioni o
le matrici di test delle estensioni, rigenera e rivedi gli output della matrice
plugin-prerelease-extension-sharddi proprietà del planner da.github/workflows/plugin-prerelease.ymlprima dell’approvazione, così le note di release non descrivono un layout CI obsoleto - La prontezza della release macOS stable include anche le superfici dell’updater:
- la release GitHub deve finire con i pacchetti
.zip,.dmge.dSYM.zip appcast.xmlsumaindeve puntare al nuovo zip stable dopo la pubblicazione; il workflow privato di pubblicazione macOS lo committa automaticamente, oppure apre una PR appcast quando il push diretto è bloccato- l’app pacchettizzata deve mantenere un bundle id non di debug, un URL del feed Sparkle
non vuoto e un
CFBundleVersionpari o superiore al floor canonico di build Sparkle per quella versione di release
- la release GitHub deve finire con i pacchetti
Macchine di test per il rilascio
Full Release Validation è il modo in cui gli operatori avviano tutti i test pre-rilascio da
un unico punto di ingresso. Per una prova di commit fissato su un ramo in rapido movimento, usa
l’helper in modo che ogni workflow figlio venga eseguito da un ramo temporaneo fissato allo
SHA di destinazione:
release-ci/<sha>-..., avvia Full Release Validation
da quel ramo con ref=<sha>, verifica che ogni headSha del workflow figlio
corrisponda alla destinazione, quindi elimina il ramo temporaneo. Questo evita di provare per errore
un’esecuzione figlia di main più recente.
Per la validazione di un ramo o tag di rilascio, eseguila dal ref del workflow main
attendibile e passa il ramo o tag di rilascio come ref:
CI con
target_ref=<release-ref>, avvia OpenClaw Release Checks, prepara un artefatto
padre release-package-under-test per i controlli rivolti ai pacchetti e
avvia l’E2E Telegram del pacchetto standalone quando release_profile=full con
rerun_group=all o quando è impostato release_package_spec oppure
npm_telegram_package_spec. OpenClaw Release Checks quindi distribuisce install smoke, controlli di rilascio cross-OS, copertura live/E2E Docker
del percorso di rilascio quando il soak è abilitato, Package Acceptance con QA del pacchetto
Telegram, parità QA Lab, Matrix live e Telegram live. Un’esecuzione completa è accettabile solo quando il
riepilogo di Full Release Validation
mostra normal_ci e release_checks come riusciti. In modalità full/all,
anche il figlio npm_telegram deve riuscire; fuori da full/all viene saltato
a meno che non sia stato fornito un release_package_spec o
npm_telegram_package_spec pubblicato. Il riepilogo finale del verificatore
include tabelle dei job più lenti per ogni esecuzione figlia, così il release
manager può vedere il percorso critico corrente senza scaricare i log.
Vedi Validazione completa del rilascio per la
matrice completa delle fasi, i nomi esatti dei job del workflow, le differenze
tra profilo stabile e completo, gli artefatti e gli handle per rerun mirati.
I workflow figli vengono avviati dal ref attendibile che esegue Full Release Validation, normalmente --ref main, anche quando il ref di destinazione punta a un
ramo o tag di rilascio più vecchio. Non esiste un input separato per il ref del workflow
Full Release Validation; scegli l’harness attendibile scegliendo il ref dell’esecuzione del workflow.
Non usare --ref main -f ref=<sha> per una prova esatta del commit su main in movimento;
gli SHA di commit grezzi non possono essere ref di dispatch del workflow, quindi usa
pnpm ci:full-release --sha <sha> per creare il ramo temporaneo fissato.
Usa release_profile per selezionare l’ampiezza live/provider:
minimum: il percorso live e Docker OpenAI/core critico per il rilascio più velocestable: minimum più copertura stabile di provider/backend per l’approvazione del rilasciofull: stable più ampia copertura advisory di provider/media
run_release_soak=true con stable quando le lane bloccanti per il rilascio sono
verdi e vuoi l’esecuzione esaustiva live/E2E, il percorso di rilascio Docker e
lo sweep limitato di sopravvivenza all’upgrade pubblicato prima della promozione. Questo sweep copre
gli ultimi quattro pacchetti stabili più le baseline fissate 2026.4.23 e 2026.5.2
più la copertura precedente 2026.4.15, con baseline duplicate rimosse e
ogni baseline suddivisa nel proprio job runner Docker. full implica
run_release_soak=true.
OpenClaw Release Checks usa il ref del workflow attendibile per risolvere il ref di destinazione
una volta come release-package-under-test e riutilizza quell’artefatto nei controlli cross-OS,
Package Acceptance e Docker del percorso di rilascio quando il soak viene eseguito. Questo mantiene
tutte le macchine rivolte ai pacchetti sugli stessi byte ed evita build ripetute del pacchetto.
Dopo che una beta è già su npm, imposta release_package_spec=openclaw@YYYY.M.D-beta.N
in modo che i controlli di rilascio scarichino una volta il pacchetto rilasciato, estraggano il suo SHA
sorgente di build da dist/build-info.json e riutilizzino quell’artefatto per le lane cross-OS,
Package Acceptance, Docker del percorso di rilascio e Telegram del pacchetto.
L’install smoke OpenAI cross-OS usa OPENCLAW_CROSS_OS_OPENAI_MODEL quando è impostata la
variabile di repo/org, altrimenti openai/gpt-5.4, perché questa lane sta
provando installazione del pacchetto, onboarding, avvio del Gateway e un turno live dell’agente
anziché misurare il modello predefinito più lento. La matrice più ampia dei provider live
rimane il posto per la copertura specifica per modello.
Usa queste varianti in base alla fase del rilascio:
Verify full validation.
Per un recupero limitato, passa rerun_group all’ombrello. all è la vera
esecuzione del candidato al rilascio, ci esegue solo il figlio CI normale, plugin-prerelease
esegue solo il figlio Plugin solo per rilascio, release-checks esegue ogni macchina di rilascio,
e i gruppi di rilascio più ristretti sono install-smoke, cross-os,
live-e2e, package, qa, qa-parity, qa-live e npm-telegram.
I rerun mirati npm-telegram richiedono release_package_spec o
npm_telegram_package_spec; le esecuzioni full/all con release_profile=full usano
l’artefatto del pacchetto dei release-checks. I rerun cross-OS mirati possono aggiungere
cross_os_suite_filter=windows/packaged-upgrade o un altro filtro OS/suite.
I fallimenti QA dei release-checks sono advisory; un fallimento solo QA non
blocca la validazione del rilascio.
Vitest
La macchina Vitest è il workflow figlio manualeCI. La CI manuale bypassa intenzionalmente
lo scoping delle modifiche e forza il grafo di test normale per il candidato al rilascio:
shard Linux Node, shard dei Plugin bundled, contratti dei canali, compatibilità Node 22,
check, check-additional, build smoke, controlli docs, Skills Python, Windows, macOS,
Android e i18n della Control UI.
Usa questa macchina per rispondere a “l’albero sorgente ha superato l’intera suite di test normale?”
Non è la stessa cosa della validazione del prodotto sul percorso di rilascio. Prove da conservare:
- riepilogo di
Full Release Validationche mostra l’URL dell’esecuzioneCIavviata - esecuzione
CIverde sull’esatto SHA di destinazione - nomi degli shard falliti o lenti dai job CI quando si indagano regressioni
- artefatti dei tempi Vitest come
.artifacts/vitest-shard-timings.jsonquando un’esecuzione richiede analisi delle prestazioni
Docker
La macchina Docker vive inOpenClaw Release Checks tramite
openclaw-live-and-e2e-checks-reusable.yml, più il workflow install-smoke
in modalità rilascio. Valida il candidato al rilascio tramite ambienti Docker
pacchettizzati invece che solo con test a livello sorgente.
La copertura Docker del rilascio include:
- install smoke completo con lo smoke di installazione globale Bun lento abilitato
- preparazione/riutilizzo dell’immagine smoke Dockerfile root per SHA di destinazione, con job QR, root/Gateway e installer/Bun smoke eseguiti come shard install-smoke separati
- lane E2E del repository
- chunk Docker del percorso di rilascio:
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-geplugins-runtime-install-h - copertura OpenWebUI dentro il chunk
plugins-runtime-servicesquando richiesta - lane split di installazione/disinstallazione dei Plugin bundled
da
bundled-plugin-install-uninstall-0abundled-plugin-install-uninstall-23 - suite provider live/E2E e copertura del modello live Docker quando i controlli di rilascio includono suite live
.artifacts/docker-tests/ con log di lane, summary.json, failures.json,
tempi di fase, JSON del piano dello scheduler e comandi di rerun. Per un recupero mirato,
usa docker_lanes=<lane[,lane]> sul workflow riutilizzabile live/E2E invece di
rieseguire tutti i chunk di rilascio. I comandi di rerun generati includono i precedenti
package_artifact_run_id e gli input delle immagini Docker preparate quando disponibili, così una
lane non riuscita può riutilizzare lo stesso tarball e le stesse immagini GHCR.
QA Lab
La macchina QA Lab fa anch’essa parte diOpenClaw Release Checks. È il gate di rilascio
per il comportamento agentico e a livello di canale, separato da Vitest e dai meccanismi
dei pacchetti Docker.
La copertura QA Lab del rilascio include:
- lane di parità mock che confronta la lane candidata OpenAI con la baseline Opus 4.6 usando il pack di parità agentica
- profilo QA Matrix live veloce usando l’ambiente
qa-live-shared - lane QA Telegram live usando lease di credenziali CI Convex
pnpm qa:otel:smokequando la telemetria di rilascio richiede prova locale esplicita
Pacchetto
La macchina Package è il gate del prodotto installabile. È supportata daPackage Acceptance e dal resolver
scripts/resolve-openclaw-package-candidate.mjs. Il resolver normalizza un
candidato nel tarball package-under-test consumato da Docker E2E, valida
l’inventario del pacchetto, registra la versione del pacchetto e SHA-256, e mantiene il
ref dell’harness del workflow separato dal ref sorgente del pacchetto.
Sorgenti candidate supportate:
source=npm:openclaw@beta,openclaw@latesto una versione esatta di rilascio OpenClawsource=ref: pacchettizza un ramopackage_ref, tag o SHA di commit completo attendibile con l’harnessworkflow_refselezionatosource=url: scarica un.tgzHTTPS conpackage_sha256richiestosource=artifact: riutilizza un.tgzcaricato da un’altra esecuzione GitHub Actions
OpenClaw Release Checks esegue Package Acceptance con source=artifact, l’artefatto del
pacchetto di rilascio preparato, 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 migrazione, aggiornamento,
riavvio dell’aggiornamento con autenticazione configurata, installazione live di Skill ClawHub, pulizia delle dipendenze obsolete dei Plugin, fixture dei Plugin offline, aggiornamento dei Plugin e QA del pacchetto Telegram rispetto allo stesso
tarball risolto. I controlli di rilascio bloccanti usano la baseline predefinita dell’ultimo pacchetto pubblicato;
run_release_soak=true o
release_profile=full si espande a ogni baseline stabile pubblicata su npm da
2026.4.23 fino a latest più le fixture dei problemi segnalati. Usa
Package Acceptance con source=npm per un candidato già distribuito, oppure
source=ref/source=artifact per un tarball npm locale basato su SHA prima della
pubblicazione. È il sostituto nativo di GitHub
per la maggior parte della copertura di pacchetto/aggiornamento che in precedenza richiedeva
Parallels. I controlli di rilascio cross-OS restano importanti per onboarding,
installer e comportamento di piattaforma specifici del sistema operativo, ma la convalida prodotto di pacchetto/aggiornamento dovrebbe
preferire Package Acceptance.
La checklist canonica per la convalida di aggiornamenti e Plugin è
Test degli aggiornamenti e dei Plugin. Usala quando
decidi quale lane locale, Docker, Package Acceptance o di controllo rilascio dimostra una
modifica di installazione/aggiornamento di Plugin, pulizia doctor o migrazione di pacchetto pubblicato.
La migrazione esaustiva degli aggiornamenti pubblicati da ogni pacchetto stabile 2026.4.23+ è
un workflow manuale Update Migration separato, non parte della Full Release CI.
La tolleranza legacy di package-acceptance è intenzionalmente limitata nel tempo. I pacchetti fino a
2026.4.25 possono usare il percorso di compatibilità per lacune nei metadati già pubblicate
su npm: voci dell’inventario QA privato assenti dal tarball, gateway install --wrapper mancante, file di patch mancanti nella fixture git derivata dal tarball, update.channel persistito mancante, posizioni legacy dei record di installazione dei Plugin, persistenza mancante dei record di installazione del marketplace e migrazione dei metadati di configurazione durante plugins update. Il pacchetto 2026.4.26 pubblicato può avvisare
per file di timbro dei metadati di build locali già distribuiti. I pacchetti successivi
devono soddisfare i contratti moderni dei pacchetti; quelle stesse lacune fanno fallire la
convalida del rilascio.
Usa profili Package Acceptance più ampi quando la domanda sul rilascio riguarda un
pacchetto effettivamente installabile:
smoke: lane rapide di installazione pacchetto/canale/agente, rete Gateway e ricaricamento della configurazionepackage: contratti di pacchetto per installazione/aggiornamento/riavvio/Plugin più prova live di installazione Skill ClawHub; è il valore predefinito dei controlli di rilascioproduct:packagepiù canali MCP, pulizia cron/subagent, ricerca web OpenAI e OpenWebUIfull: chunk Docker del percorso di rilascio con OpenWebUIcustom: elenco esattodocker_lanesper riesecuzioni mirate
telegram_mode=mock-openai o
telegram_mode=live-frontier in Package Acceptance. Il workflow passa il
tarball package-under-test risolto nella lane Telegram; il workflow Telegram autonomo
accetta ancora una specifica npm pubblicata per controlli post-pubblicazione.
Automazione della pubblicazione del rilascio
OpenClaw Release Publish è il normale punto di ingresso mutante per la pubblicazione. Orchestri
i workflow trusted-publisher nell’ordine richiesto dal rilascio:
- Esegue il checkout del tag di rilascio e ne risolve lo SHA del commit.
- Verifica che il tag sia raggiungibile da
mainorelease/*. - Esegue
pnpm plugins:sync:check. - Esegue il dispatch di
Plugin NPM Releaseconpublish_scope=all-publishableeref=<release-sha>. - Esegue il dispatch di
Plugin ClawHub Releasecon lo stesso ambito e SHA. - Esegue il dispatch di
OpenClaw NPM Releasecon il tag di rilascio, il dist-tag npm e ilpreflight_run_idsalvato.
latest è esplicita:
Plugin NPM Release e Plugin ClawHub Release
solo per lavori mirati di riparazione o ripubblicazione. Per una riparazione di Plugin selezionata, passa
plugin_publish_scope=selected e plugins=@openclaw/name a
OpenClaw Release Publish, oppure esegui direttamente il dispatch del workflow figlio quando il
pacchetto OpenClaw non deve essere pubblicato.
Input del workflow NPM
OpenClaw NPM Release accetta questi input controllati dall’operatore:
tag: tag di rilascio obbligatorio comev2026.4.2,v2026.4.2-1ov2026.4.2-beta.1; quandopreflight_only=true, può essere anche lo SHA di commit completo a 40 caratteri del branch del workflow corrente per un preflight di sola convalidapreflight_only:truesolo per convalida/build/pacchetto,falseper il percorso di pubblicazione realepreflight_run_id: obbligatorio nel percorso di pubblicazione reale affinché il workflow riutilizzi il tarball preparato dalla run di preflight riuscitanpm_dist_tag: tag npm di destinazione per il percorso di pubblicazione; il valore predefinito èbeta
OpenClaw Release Publish accetta questi input controllati dall’operatore:
tag: tag di rilascio obbligatorio; deve già esisterepreflight_run_id: id della run di preflightOpenClaw NPM Releaseriuscita; obbligatorio quandopublish_openclaw_npm=truenpm_dist_tag: tag npm di destinazione per il pacchetto OpenClawplugin_publish_scope: valore predefinitoall-publishable; usaselectedsolo per lavori di riparazione miratiplugins: nomi di pacchetti@openclaw/*separati da virgole quandoplugin_publish_scope=selectedpublish_openclaw_npm: valore predefinitotrue; impostafalsesolo quando usi il workflow come orchestratore di riparazione solo Pluginwait_for_clawhub: valore predefinitofalse, così la disponibilità npm non è bloccata dal sidecar ClawHub; impostatruesolo quando il completamento del workflow deve includere il completamento di ClawHub
OpenClaw Release Checks accetta questi input controllati dall’operatore:
ref: branch, tag o SHA di commit completo da convalidare. I controlli che richiedono segreti richiedono che il commit risolto sia raggiungibile da un branch OpenClaw o da un tag di rilascio.run_release_soak: abilita soak esaustivo live/E2E, percorso di rilascio Docker e upgrade-survivor da tutte le versioni sui controlli di rilascio stabili/predefiniti. Viene forzato darelease_profile=full.
- I tag stabili e di correzione possono essere pubblicati su
betaolatest - I tag di prerelease beta possono essere pubblicati solo su
beta - Per
OpenClaw NPM Release, l’input SHA di commit completo è consentito solo quandopreflight_only=true OpenClaw Release CheckseFull Release Validationsono sempre solo di convalida- Il percorso di pubblicazione reale deve usare lo stesso
npm_dist_tagusato durante il preflight; il workflow verifica quei metadati prima che la pubblicazione continui
Sequenza di rilascio npm stabile
Quando prepari un rilascio npm stabile:- Esegui
OpenClaw NPM Releaseconpreflight_only=true- Prima che esista un tag, puoi usare lo SHA di commit completo del branch del workflow corrente per una prova generale di sola convalida del workflow di preflight
- Scegli
npm_dist_tag=betaper il normale flusso beta-first, oppurelatestsolo quando vuoi intenzionalmente una pubblicazione stabile diretta - Esegui
Full Release Validationsul branch di rilascio, sul tag di rilascio o sullo SHA di commit completo quando vuoi CI normale più copertura live di prompt cache, Docker, QA Lab, Matrix e Telegram da un unico workflow manuale - Se hai intenzionalmente bisogno solo del grafo di test normale deterministico, esegui invece il
workflow manuale
CIsul ref di rilascio - Salva il
preflight_run_idriuscito - Esegui
OpenClaw Release Publishcon lo stessotag, lo stessonpm_dist_tage ilpreflight_run_idsalvato; pubblica i Plugin esternalizzati su npm e ClawHub prima di promuovere il pacchetto npm OpenClaw - Se il rilascio è arrivato su
beta, usa il workflow privatoopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlper promuovere quella versione stabile dabetaalatest - Se il rilascio è stato intenzionalmente pubblicato direttamente su
latestebetadovrebbe seguire immediatamente la stessa build stabile, usa lo stesso workflow privato per puntare entrambi i dist-tag alla versione stabile, oppure lascia che la sua sincronizzazione self-healing pianificata spostibetapiù tardi
NPM_TOKEN, mentre il repository pubblico mantiene la pubblicazione solo OIDC.
Questo mantiene sia il percorso di pubblicazione diretta sia il percorso di promozione beta-first
documentati e visibili all’operatore.
Se un maintainer deve ripiegare sull’autenticazione npm locale, esegui qualsiasi comando
1Password CLI (op) solo dentro una sessione tmux dedicata. Non chiamare op
direttamente dalla shell dell’agente principale; tenerlo dentro tmux rende prompt,
avvisi e gestione OTP osservabili e previene avvisi host ripetuti.
Riferimenti pubblici
.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
openclaw/maintainers/release/README.md
per il runbook effettivo.