Politique de publication
OpenClaw a trois canaux de publication publics :- stable : des publications balisées qui publient vers npm
betapar défaut, ou vers npmlatestlorsqu’elles sont demandées explicitement - beta : des balises de prépublication qui publient vers npm
beta - dev : la tête mobile de
main
Nommage des versions
- Version de publication stable :
YYYY.M.D- Balise Git :
vYYYY.M.D
- Balise Git :
- Version de publication de correction stable :
YYYY.M.D-N- Balise Git :
vYYYY.M.D-N
- Balise Git :
- Version de prépublication bêta :
YYYY.M.D-beta.N- Balise Git :
vYYYY.M.D-beta.N
- Balise Git :
- Ne mettez pas de zéro non significatif pour le mois ou le jour
latestsignifie la publication npm stable promue actuellebetasignifie la cible d’installation bêta actuelle- Les publications stables et les publications de correction stable publient vers npm
betapar défaut ; les opérateurs de publication peuvent ciblerlatestexplicitement, ou promouvoir plus tard une build bêta validée - Chaque publication OpenClaw livre le package npm et l’app macOS ensemble
Cadence de publication
- Les publications passent d’abord par beta
- stable ne suit qu’après validation de la dernière bêta
- La procédure de publication détaillée, les approbations, les identifiants et les notes de reprise sont réservés aux mainteneurs
Vérifications préalables à la publication
- Exécutez
pnpm build && pnpm ui:buildavantpnpm release:checkafin que les artefacts de publication attendusdist/*et le bundle de l’interface Control UI existent pour l’étape de validation du pack - Exécutez
pnpm release:checkavant chaque publication balisée - Les vérifications de publication s’exécutent désormais dans un workflow manuel distinct :
OpenClaw Release Checks - La validation d’exécution d’installation et de mise à niveau multi-OS est déclenchée depuis le workflow appelant privé
openclaw/releases-private/.github/workflows/openclaw-cross-os-release-checks.yml, qui invoque le workflow public réutilisable.github/workflows/openclaw-cross-os-release-checks-reusable.yml - Cette séparation est intentionnelle : elle permet de garder le chemin réel de publication npm court, déterministe et centré sur les artefacts, tandis que les vérifications live plus lentes restent dans leur propre canal afin de ne pas ralentir ni bloquer la publication
- Les vérifications de publication doivent être déclenchées depuis la référence de workflow
mainafin que la logique du workflow et les secrets restent canoniques - Ce workflow accepte soit une balise de publication existante, soit le SHA de commit complet actuel de
mainsur 40 caractères - En mode SHA de commit, il n’accepte que la HEAD actuelle de
origin/main; utilisez une balise de publication pour les anciens commits de publication - Le contrôle préalable en validation seule de
OpenClaw NPM Releaseaccepte également le SHA de commit complet actuel demainsur 40 caractères sans exiger de balise déjà poussée - Ce chemin SHA est uniquement destiné à la validation et ne peut pas être promu en publication réelle
- En mode SHA, le workflow synthétise
v<package.json version>uniquement pour la vérification des métadonnées du package ; la publication réelle exige toujours une véritable balise de publication - Les deux workflows conservent le vrai chemin de publication et de promotion sur des runners hébergés par GitHub, tandis que le chemin de validation non mutatif peut utiliser les runners Linux Blacksmith plus grands
- Ce workflow exécute
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheen utilisant les secrets de workflowOPENAI_API_KEYetANTHROPIC_API_KEY - Le contrôle préalable de publication npm n’attend plus le canal distinct des vérifications de publication
- Exécutez
RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts(ou la balise bêta/correction correspondante) avant l’approbation - Après la publication npm, exécutez
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D(ou la version bêta/correction correspondante) pour vérifier le chemin d’installation publié depuis le registre dans un préfixe temporaire propre - L’automatisation de publication des mainteneurs utilise désormais le flux contrôle préalable puis promotion :
- la vraie publication npm doit réussir avec un
preflight_run_idnpm valide - les publications npm stables ciblent
betapar défaut - la publication npm stable peut cibler
latestexplicitement via une entrée de workflow - la mutation par jeton des dist-tags npm se trouve désormais dans
openclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlpour des raisons de sécurité, carnpm dist-tag addexige toujoursNPM_TOKENalors que le dépôt public conserve une publication OIDC uniquement - la
macOS Releasepublique est uniquement destinée à la validation - la véritable publication privée mac doit réussir avec des
preflight_run_idetvalidate_run_idprivés valides - les vrais chemins de publication promeuvent des artefacts préparés au lieu de les reconstruire une nouvelle fois
- la vraie publication npm doit réussir avec un
- Pour les publications de correction stable comme
YYYY.M.D-N, le vérificateur post-publication contrôle également le même chemin de mise à niveau en préfixe temporaire deYYYY.M.DversYYYY.M.D-Nafin que les corrections de publication ne puissent pas laisser silencieusement d’anciennes installations globales sur la charge utile stable de base - Le contrôle préalable de publication npm échoue par défaut sauf si le tarball inclut à la fois
dist/control-ui/index.htmlet une charge utile non videdist/control-ui/assets/afin d’éviter d’expédier à nouveau un tableau de bord navigateur vide pnpm test:install:smokeapplique aussi le budgetunpackedSizedu pack npm au tarball de mise à jour candidat, afin que l’E2E de l’installateur détecte toute augmentation accidentelle de taille du pack avant le chemin de publication- Si le travail de publication a touché à la planification CI, aux manifestes de timing des extensions ou aux matrices de test des extensions, régénérez et examinez les sorties de matrice de workflow
checks-node-extensionsgérées par le planificateur à partir de.github/workflows/ci.ymlavant l’approbation afin que les notes de publication ne décrivent pas une disposition CI obsolète - L’état de préparation d’une publication macOS stable inclut aussi les surfaces de mise à jour :
- la publication GitHub doit finir avec les fichiers empaquetés
.zip,.dmget.dSYM.zip appcast.xmlsurmaindoit pointer vers le nouveau zip stable après la publication- l’app empaquetée doit conserver un identifiant de bundle non debug, une URL de flux Sparkle non vide et un
CFBundleVersionsupérieur ou égal au plancher canonique de build Sparkle pour cette version de publication
- la publication GitHub doit finir avec les fichiers empaquetés
Entrées du workflow NPM
OpenClaw NPM Release accepte ces entrées contrôlées par l’opérateur :
tag: balise de publication requise telle quev2026.4.2,v2026.4.2-1, ouv2026.4.2-beta.1; lorsquepreflight_only=true, cela peut aussi être le SHA de commit complet actuel demainsur 40 caractères pour un contrôle préalable de validation seulepreflight_only:truepour validation/build/package uniquement,falsepour le vrai chemin de publicationpreflight_run_id: requis pour le vrai chemin de publication afin que le workflow réutilise le tarball préparé depuis l’exécution de contrôle préalable réussienpm_dist_tag: dist-tag npm cible pour le chemin de publication ; la valeur par défaut estbeta
OpenClaw Release Checks accepte ces entrées contrôlées par l’opérateur :
ref: balise de publication existante ou SHA de commit complet actuel demainsur 40 caractères à valider
- Les balises stables et de correction peuvent publier vers
betaoulatest - Les balises de prépublication bêta ne peuvent publier que vers
beta - L’entrée SHA de commit complet n’est autorisée que lorsque
preflight_only=true - Le mode SHA de commit des vérifications de publication exige également la HEAD actuelle de
origin/main - Le vrai chemin de publication doit utiliser le même
npm_dist_tagque celui utilisé pendant le contrôle préalable ; le workflow vérifie ces métadonnées avant de poursuivre la publication
Séquence de publication npm stable
Lors de la création d’une publication npm stable :- Exécutez
OpenClaw NPM Releaseavecpreflight_only=true- Avant qu’une balise n’existe, vous pouvez utiliser le SHA de commit complet actuel de
mainpour une exécution à blanc de validation seule du workflow de contrôle préalable
- Avant qu’une balise n’existe, vous pouvez utiliser le SHA de commit complet actuel de
- Choisissez
npm_dist_tag=betapour le flux normal beta-first, oulatestuniquement lorsque vous souhaitez intentionnellement une publication stable directe - Exécutez
OpenClaw Release Checksséparément avec la même balise ou le SHA complet actuel demainlorsque vous voulez une couverture live du cache de prompt- Cette séparation est intentionnelle afin que la couverture live reste disponible sans recoupler des vérifications longues ou instables au workflow de publication
- Enregistrez le
preflight_run_idréussi - Exécutez à nouveau
OpenClaw NPM Releaseavecpreflight_only=false, le mêmetag, le mêmenpm_dist_taget lepreflight_run_idenregistré - Si la publication a atterri sur
beta, utilisez le workflow privéopenclaw/releases-private/.github/workflows/openclaw-npm-dist-tags.ymlpour promouvoir cette version stable debetaverslatest - Si la publication a été intentionnellement publiée directement vers
latestet quebetadoit suivre immédiatement avec la même build stable, utilisez ce même workflow privé pour faire pointer les deux dist-tags vers la version stable, ou laissez sa synchronisation d’autoréparation planifiée déplacerbetaplus tard
NPM_TOKEN, tandis que le dépôt public conserve une publication OIDC uniquement.
Cela permet de documenter et de rendre visible aux opérateurs à la fois le chemin de publication directe et le chemin de promotion beta-first.
Références publiques
.github/workflows/openclaw-npm-release.yml.github/workflows/openclaw-release-checks.yml.github/workflows/openclaw-cross-os-release-checks-reusable.ymlscripts/openclaw-npm-release-check.tsscripts/package-mac-dist.shscripts/make_appcast.sh
openclaw/maintainers/release/README.md
comme véritable runbook.