メインコンテンツへスキップ

リリースポリシー

OpenClawには3つの公開リリースレーンがあります:
  • stable: タグ付きリリース。デフォルトではnpmのbetaへ公開され、明示的に要求された場合はnpmのlatestへ公開されます
  • beta: npmのbetaへ公開されるプレリリースタグ
  • dev: mainの移動中の先端

バージョン命名

  • Stableリリースバージョン: YYYY.M.D
    • Gitタグ: vYYYY.M.D
  • Stable修正リリースバージョン: YYYY.M.D-N
    • Gitタグ: vYYYY.M.D-N
  • Betaプレリリースバージョン: YYYY.M.D-beta.N
    • Gitタグ: vYYYY.M.D-beta.N
  • 月と日はゼロ埋めしない
  • latestは現在昇格済みのstable npmリリースを意味する
  • betaは現在のbetaインストール対象を意味する
  • Stableおよびstable修正リリースはデフォルトでnpmのbetaへ公開されます。リリース運用者は明示的にlatestを指定することもでき、また後で検証済みのbetaビルドを昇格させることもできます
  • すべてのOpenClawリリースは、npmパッケージとmacOSアプリを同時に出荷します

リリース頻度

  • リリースはbeta-firstで進行します
  • Stableは最新betaが検証された後にのみ続きます
  • 詳細なリリース手順、承認、認証情報、および復旧メモは maintainer専用です

リリース事前確認

  • pnpm release:checkの前にpnpm build && pnpm ui:buildを実行して、 pack 検証ステップに必要なdist/*リリースアーティファクトとControl UIバンドルが存在するようにしてください
  • タグ付きリリースの前には毎回pnpm release:checkを実行してください
  • mainブランチのnpm事前確認では OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cache もtarballパッケージ化前に実行され、OPENAI_API_KEYANTHROPIC_API_KEYの両workflow secretを使用します
  • 承認前にRELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts (または対応するbeta/修正タグ)を実行してください
  • npm公開後は、 node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D (または対応するbeta/修正バージョン)を実行し、新しいtemp prefixで 公開済みregistryインストールパスを検証してください
  • Maintainerリリース自動化では現在、事前確認後に昇格する方式を使用しています:
    • 実際のnpm公開は、成功したnpm preflight_run_idを通過していなければならない
    • stable npmリリースのデフォルトはbeta
    • stable npm公開では、workflow入力によって明示的にlatestを指定できる
    • stable npmのbetaからlatestへの昇格は、信頼済みのOpenClaw NPM Release workflow上で、依然として明示的な手動モードとして利用可能
    • この昇格モードでも、有効なNPM_TOKENnpm-release環境に必要です。npmのdist-tag管理は信頼済み公開とは別だからです
    • 公開のmacOS Releaseは検証専用
    • 実際の非公開mac公開は、成功した非公開macの preflight_run_idvalidate_run_idを通過していなければならない
    • 実際の公開パスでは、再度ビルドするのではなく準備済みアーティファクトを昇格する
  • YYYY.M.D-Nのようなstable修正リリースでは、公開後検証でも YYYY.M.DからYYYY.M.D-Nへの同じtemp-prefixアップグレードパスを確認し、 リリース修正によって古いグローバルインストールが ベースstable payloadのまま静かに残ることがないようにします
  • npmリリース事前確認では、tarballに dist/control-ui/index.htmlと空でないdist/control-ui/assets/ペイロードの両方が含まれていなければフェイルクローズするため、 空のブラウザーダッシュボードを再び出荷することはありません
  • リリース作業がCI planning、extension timing manifest、または高速 test matrixに触れた場合は、承認前に.github/workflows/ci.ymlから planner所有のchecks-fast-extensions workflow matrix出力を再生成して確認してください。そうしないとリリースノートが古いCIレイアウトを説明してしまいます
  • Stable macOSリリースの準備には、updaterサーフェスも含まれます:
    • GitHubリリースには、パッケージ済みの.zip.dmg.dSYM.zipが最終的に含まれていなければならない
    • 公開後のmain上のappcast.xmlは、新しいstable zipを指していなければならない
    • パッケージ済みアプリは、非デバッグbundle id、空でないSparkle feed URL、およびそのリリースバージョン向けの正規Sparkleビルド下限以上の CFBundleVersionを維持していなければならない

NPM workflow入力

OpenClaw NPM Releaseは、運用者が制御する次の入力を受け付けます:
  • tag: 必須のリリースタグ。例: v2026.4.2v2026.4.2-1、または v2026.4.2-beta.1
  • preflight_only: 検証/ビルド/パッケージのみならtrue、実際の 公開パスならfalse
  • preflight_run_id: 実際の公開パスで必須。workflowが成功した事前確認実行から準備済みtarballを再利用するため
  • npm_dist_tag: 公開パス向けのnpm対象タグ。デフォルトはbeta
  • promote_beta_to_latest: すでに公開済みの stable betaビルドをlatestへ移す場合はtrue。公開はスキップする
ルール:
  • Stableおよび修正タグはbetaまたはlatestのいずれかへ公開可能
  • Betaプレリリースタグはbetaにのみ公開可能
  • 実際の公開パスでは、事前確認時と同じnpm_dist_tagを使わなければならず、 workflowは公開継続前にそのメタデータを検証する
  • 昇格モードでは、stableまたは修正タグ、preflight_only=false、 空のpreflight_run_id、およびnpm_dist_tag=betaを使用しなければならない
  • 昇格モードでも、npm dist-tag addには通常のnpm認証が必要なため、 npm-release環境に有効なNPM_TOKENが必要です

Stable npmリリース手順

stable npmリリースを切るとき:
  1. preflight_only=trueOpenClaw NPM Releaseを実行する
  2. 通常のbeta-firstフローではnpm_dist_tag=betaを選び、意図的に直接stable公開したい場合にのみlatestを選ぶ
  3. 成功したpreflight_run_idを保存する
  4. preflight_only=false、同じ tag、同じnpm_dist_tag、保存したpreflight_run_idで 再度OpenClaw NPM Releaseを実行する
  5. リリースがbetaへ出た場合、その後 同じstable tagpromote_beta_to_latest=truepreflight_only=falsepreflight_run_idを空、npm_dist_tag=betaOpenClaw NPM Releaseを実行し、 その公開済みビルドをlatestへ移したいタイミングで昇格する
この昇格モードでも、npm-release環境の承認と、その 環境内の有効なNPM_TOKENが必要です。 これにより、直接公開パスとbeta-first昇格パスの両方が文書化され、 運用者から見える状態に保たれます。

公開参照

Maintainerは、実際のランブックとして openclaw/maintainers/release/README.md 内の非公開リリースドキュメントを使用します。