Release and CI
रिलीज़ नीति
OpenClaw वर्तमान में तीन उपयोगकर्ता-सामने update channels उपलब्ध कराता है:
- stable: मौजूदा promoted release channel, जो अलग CLI/channel milestone आने तक अभी भी
npm
latestके माध्यम से resolve होता है - beta: prerelease tags जो npm
betaपर publish होते हैं - dev:
mainका moving head
अलग से, release operators पिछले पूर्ण महीने का core package npm
extended-stable पर publish कर सकते हैं, patch 33 से शुरू करते हुए। current-month regular
final line npm latest पर जारी रहती है; यह operator-side publication split
अपने-आप CLI update-channel resolution नहीं बदलता।
संस्करण नामकरण
- मासिक npm extended-stable release version:
YYYY.M.PATCH, जहाँPATCH >= 33- Git tag:
vYYYY.M.PATCH
- Git tag:
- दैनिक/regular final release version:
YYYY.M.PATCH, जहाँPATCH < 33- Git tag:
vYYYY.M.PATCH
- Git tag:
- Regular fallback correction release version:
YYYY.M.PATCH-N- Git tag:
vYYYY.M.PATCH-N
- Git tag:
- Beta prerelease version:
YYYY.M.PATCH-beta.N- Git tag:
vYYYY.M.PATCH-beta.N
- Git tag:
- month या patch को zero-pad न करें
- June 2026 release process update से शुरू करके, तीसरा component sequential monthly release-train number है, calendar day नहीं। Stable और beta releases current train तय करते हैं; alpha-only tags beta/stable patch number को consume या advance नहीं करते। Pre-update tags और npm versions अपने मौजूदा नाम बनाए रखते हैं और valid रहते हैं; release automation उन्हें year, month, patch, channel, और prerelease या correction number के आधार पर compare करना जारी रखता है।
- Alpha/nightly builds next unreleased patch train का उपयोग करते हैं और repeated builds के लिए केवल
alpha.Nincrement करते हैं। जब उस patch का beta आ जाता है, तो new alpha builds अगले patch पर चले जाते हैं। beta या stable train चुनते समय higher patch numbers वाले legacy alpha-only tags को ignore करें। - npm versions immutable होते हैं। यदि कोई beta tag पहले ही publish हो चुका है, तो उसे
delete, republish, या reuse न करें; अगला beta number या अगला monthly
patch cut करें। क्योंकि transition के दौरान
2026.6.5-beta.1पहले ही publish हो चुका था, June 2026 release trains को patch5या उससे ऊपर का उपयोग करना होगा। नए June 2026 stable या beta trains को2026.6.2,2026.6.3, या2026.6.4के रूप में publish न करें। - regular final
2026.6.5के बाद, अगला नया beta train2026.6.6-beta.1है, भले ही higher patch numbers वाले automated alpha-only tags पहले से मौजूद हों। latestcurrent regular/daily npm line को follow करना जारी रखता हैbetaका अर्थ current beta install target हैextended-stableका अर्थ supported trailing-month npm package है, patch33से शुरू; patch34और उसके बाद वाले उस monthly line पर maintenance releases हैं- dedicated monthly extended-stable path केवल core npm package publish करता है। यह plugins, macOS या Windows artifacts, GitHub Release, private-repository dist-tags, Docker images, mobile artifacts, या website downloads publish नहीं करता।
Release cadence
- Releases beta-first आगे बढ़ते हैं
- Stable केवल latest beta validate होने के बाद follow करता है
- Maintainers सामान्यतः current
mainसे बनाई गईrelease/YYYY.M.PATCHbranch से releases cut करते हैं, ताकि release validation और fixesmainपर नए development को block न करें - यदि कोई beta tag push या publish हो चुका है और उसमें fix चाहिए, तो maintainers
पुराने beta tag को delete या recreate करने के बजाय अगला
-beta.Ntag cut करते हैं - विस्तृत release procedure, approvals, credentials, और recovery notes केवल maintainers के लिए हैं
मासिक npm-only extended-stable publication
यह नीचे दी गई regular release procedure का dedicated exception है। पूर्ण
month YYYY.M के लिए, extended-stable/YYYY.M.33 बनाएं; vYYYY.M.33 और
बाद के maintenance patches उसी branch से publish करें। release tag, branch tip,
checkout, package version, npm preflight, और Full Release Validation run सभी को
एक ही commit identify करना होगा। Protected main में पहले से patch 33 से नीचे वाला
strictly later calendar month's final version होना चाहिए; maintenance patches
main के एक month से अधिक advance होने के बाद भी eligible रहते हैं।
ठीक extended-stable branch से npm preflight और Full Release Validation run करें, फिर दोनों run IDs save करें:
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 मौजूदा validation-depth profile है; यह
npm extended-stable dist-tag से अलग है और जानबूझकर unchanged है।
दोनों runs सफल होने और npm release environment ready होने के बाद,
ठीक preflight tarball को promote करें। Patch P 33 या उससे greater होना चाहिए:
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>ऐसे fork या non-production rehearsal के लिए जो जानबूझकर monthly .33 या protected-main
month policy satisfy नहीं कर सकता, npm preflight और publish dispatches दोनों में
-f bypass_extended_stable_guard=true जोड़ें। default false है। bypass केवल
npm_dist_tag=extended-stable के साथ accept होता है और workflow summary में
record किया जाता है। यह canonical extended-stable/YYYY.M.33 workflow ref,
branch-tip/tag/checkout equality, final-tag syntax, package/tag version equality,
referenced run और manifest identity, tarball provenance, environment approval,
registry readback, या selector repair evidence को bypass नहीं करता।
publish workflow referenced run identities, prepared tarball digest, और दोनों npm registry selectors verify करता है। workflow सफल होने के बाद result को स्वतंत्र रूप से confirm करें:
npm view openclaw@YYYY.M.P version --userconfig "$(mktemp)"npm view openclaw@extended-stable version --userconfig "$(mktemp)"दोनों commands को YYYY.M.P return करना होगा। यदि publish सफल होता है लेकिन selector
readback fail होता है, तो immutable package version को republish न करें। failed workflow की
always-run summary में print किए गए single
npm dist-tag add openclaw@YYYY.M.P extended-stable repair command का उपयोग करें,
फिर दोनों independent readbacks repeat करें। prior selector पर rollback एक अलग
operator decision है, readback repair path नहीं।
नीचे दी गई regular checklist beta, latest, GitHub Release,
plugins, macOS, Windows, और अन्य platform publication को own करना जारी रखती है। इस npm-only
extended-stable path के लिए वे steps run न करें।
Regular release operator checklist
यह checklist release flow का public shape है। Private credentials, signing, notarization, dist-tag recovery, और emergency rollback details maintainer-only release runbook में रहते हैं।
- वर्तमान
mainसे शुरू करें: नवीनतम खींचें, पुष्टि करें कि लक्ष्य commit push हो चुका है, और पुष्टि करें कि वर्तमानmainCI इतना हरा है कि उससे branch बनाई जा सके। - अंतिम reachable release tag के बाद से merged PRs और सभी direct
commits से शीर्ष
CHANGELOG.mdsection जनरेट करें। Entries को user-facing रखें, overlapping PR/direct-commit entries को dedupe करें, rewrite commit करें, उसे push करें, और branching से पहले एक बार फिर rebase/pull करें। - Release compatibility records की समीक्षा
src/plugins/compat/registry.tsऔरsrc/commands/doctor/shared/deprecation-compat.tsमें करें। Expired compatibility केवल तब हटाएं जब upgrade path covered रहे, या दर्ज करें कि इसे जानबूझकर क्यों रखा जा रहा है। - वर्तमान
mainसेrelease/YYYY.M.PATCHबनाएं; सामान्य release work सीधेmainपर न करें। - Intended tag के लिए हर required version location bump करें, फिर
pnpm release:prepचलाएं। यह plugin versions, plugin inventory, config schema, bundled channel config metadata, config docs baseline, plugin SDK exports, और plugin SDK API baseline को सही क्रम में refresh करता है। Tagging से पहले कोई भी generated drift commit करें। फिर local deterministic preflight चलाएं:pnpm check:test-types,pnpm check:architecture,pnpm build && pnpm ui:build, औरpnpm release:check। OpenClaw NPM Releaseकोpreflight_only=trueके साथ चलाएं। Tag मौजूद होने से पहले, validation-only preflight के लिए पूरा 40-character release-branch SHA allowed है। Preflight exact checked-out dependency graph के लिए dependency release evidence जनरेट करता है और उसे npm preflight artifact में store करता है। सफलpreflight_run_idsave करें।- Release branch, tag, या full commit SHA के लिए
Full Release Validationके साथ सभी pre-release tests kick off करें। यह चार बड़े release test boxes के लिए एक manual entrypoint है: Vitest, Docker, QA Lab, और Package। - अगर validation fail होता है, release branch पर fix करें और सबसे छोटी failed file, lane, workflow job, package profile, provider, या model allowlist rerun करें जो fix को prove करे। Full umbrella केवल तब rerun करें जब changed surface prior evidence को stale बना दे।
- Tagged beta candidate के लिए, matching
release/YYYY.M.PATCHbranch सेpnpm release:candidate -- --tag vYYYY.M.PATCH-beta.Nचलाएं। Stable के लिए, required Windows source release भी pass करें:pnpm release:candidate -- --tag vYYYY.M.PATCH --windows-node-tag vX.Y.Z। Helper local generated-release checks चलाता है, full release validation और npm preflight evidence dispatch या verify करता है, exact prepared tarball के विरुद्ध Parallels fresh/update proof plus Telegram package proof चलाता है, plugin npm और ClawHub plans record करता है, और evidence bundle green होने के बाद ही exactOpenClaw Release Publishcommand print करता है।OpenClaw Release Publishselected या सभी publishable plugin packages को npm और उसी set को ClawHub पर parallel में dispatch करता है, और फिर plugin npm publish सफल होते ही matching dist-tag के साथ prepared OpenClaw npm preflight artifact promote करता है। OpenClaw npm publish child सफल होने के बाद, यह complete matchingCHANGELOG.mdsection से matching GitHub release/prerelease page create या update करता है। npmlatestपर प्रकाशित stable releases GitHub latest release बनते हैं; npmbetaपर रखे गए stable maintenance releases GitHublatest=falseके साथ create होते हैं। Workflow preflight dependency evidence, full-validation manifest, और postpublish registry verification evidence को post-release incident response के लिए GitHub release पर upload भी करता है। Publish workflow तुरंत child run IDs print करता है, workflow token द्वारा approve किए जा सकने वाले release environment gates auto-approve करता है, failed child jobs को log tails के साथ summarize करता है, OpenClaw npm publish सफल होते ही GitHub release और dependency evidence close out करता है, OpenClaw npm publish हो रहा हो तो ClawHub का wait करता है, फिरpnpm release:verify-betaचलाता है और GitHub release, npm package, selected plugin npm packages, selected ClawHub packages, child workflow run IDs, और optional NPM Telegram run ID के लिए postpublish evidence upload करता है। ClawHub path transient CLI dependency install failures retry करता है, एक preview cell flake होने पर भी preview-passing plugins publish करता है, और हर expected plugin version के लिए registry verification के साथ समाप्त होता है ताकि partial publishes visible और retryable रहें। फिर publishedopenclaw@YYYY.M.PATCH-beta.Nयाopenclaw@betapackage के विरुद्ध post-publish package acceptance चलाएं। अगर pushed या published prerelease को fix चाहिए, अगला matching prerelease number काटें; पुराने prerelease को delete या rewrite न करें। - Stable के लिए, केवल तब continue करें जब vetted beta या release candidate के पास
required validation evidence हो। Stable npm publish भी
OpenClaw Release Publishसे होकर जाता है, successful preflight artifact कोpreflight_run_idके जरिए reuse करते हुए; stable macOS release readiness के लिए packaged.zip,.dmg,.dSYM.zip, और updatedappcast.xmlभीmainपर required हैं। macOS publish workflow release assets verify होने के बाद signed appcast को publicmainपर automatically publish करता है; अगर branch protection direct push block करता है, तो यह appcast PR खोलता या update करता है। Stable Windows Hub readiness के लिए OpenClaw GitHub release पर signedOpenClawCompanion-Setup-x64.exe,OpenClawCompanion-Setup-arm64.exe, औरOpenClawCompanion-SHA256SUMS.txtassets required हैं। Exact signedopenclaw/openclaw-windows-noderelease tag कोwindows_node_tagके रूप में और उसके candidate-approved installer digest map कोwindows_node_installer_digestsके रूप में pass करें;OpenClaw Release Publishrelease draft रखता है,Windows Node Releasedispatch करता है, और publication से पहले सभी तीन assets verify करता है। - Publish के बाद, npm post-publish verifier, optional standalone published-npm Telegram E2E जब post-publish channel proof चाहिए, dist-tag promotion जब जरूरत हो, generated GitHub release page verify करें, release announcement steps चलाएं, फिर stable release finished कहने से पहले Stable main closeout complete करें।
Stable main closeout
Stable publication तब तक complete नहीं है जब तक main में actual shipped
release state न हो।
- Fresh latest
mainसे शुरू करें। इसके विरुद्धrelease/YYYY.M.PATCHaudit करें औरmainसे absent real fixes forward-port करें। Release-only compatibility, test, या validation adapters को newermainमें blindly merge न करें। mainको shipped stable version पर set करें, speculative next train पर नहीं। Root version change के बादpnpm release:prepचलाएं, फिरpnpm deps:shrinkwrap:generate।mainपरCHANGELOG.mdका## YYYY.M.PATCHsection tagged release branch से exactly match कराएं। जब mac release ने stableappcast.xmlupdate publish किया हो तो उसे include करें।- Operator द्वारा explicitly उस release train को start किए जाने तक
mainमेंYYYY.M.PATCH+1, beta version, या empty future changelog section add न करें। pnpm release:generated:check,pnpm deps:shrinkwrap:check, औरOPENCLAW_TESTBOX=1 pnpm check:changedचलाएं। Push करें, फिर stable release done कहने से पहले verify करें किorigin/mainमें shipped version और changelog हैं।- हर private rollback drill के बाद repository variables
RELEASE_ROLLBACK_DRILL_IDऔरRELEASE_ROLLBACK_DRILL_DATEcurrent रखें।OpenClaw Stable Main Closeoutstable publication के बाद shipped version, changelog, और appcast ले जाने वालेmainpush से start करता है। यह shipped tag को उसके Full Release Validation और Publish runs से bind करने के लिए immutable postpublish evidence पढ़ता है, फिर stable main state, release, mandatory stable soak, और blocking performance evidence verify करता है। यह GitHub release में immutable closeout manifest और checksum attach करता है। Automatic push trigger उन legacy releases को skip करता है जो immutable postpublish evidence से पहले के हैं; यह उस skip को कभी completed closeout नहीं मानता। Complete closeout के लिए दोनों assets और matching checksum required हैं। Partial manifest identical bytes regenerate करने के लिए अपना recordedmainSHA और rollback drill replay करता है, फिर missing checksum attach करता है; invalid pair, या manifest के बिना checksum, blocking रहता है। Rollback drill repository variables के बिना push-triggered run closeout complete किए बिना skip करता है; missing या 90-day से अधिक पुराना drill record अभी भी manual evidence-backed closeout को block करता है। Private recovery commands maintainer-only runbook में रहती हैं। Evidence-backed stable closeout को repair या replay करने के लिए ही manual dispatch use करें। Legacy fallback correction tag base-package evidence केवल तब reuse कर सकता है जब correction tag उसी source commit पर resolve हो जिस पर base stable tag है। Different source वाली correction को अपना package evidence publish और verify करना होगा।
Release preflight
- रिलीज़ प्रीफ्लाइट से पहले
pnpm check:test-typesचलाएँ ताकि टेस्ट TypeScript तेज़ स्थानीयpnpm checkगेट के बाहर भी कवर रहे - रिलीज़ प्रीफ्लाइट से पहले
pnpm check:architectureचलाएँ ताकि व्यापक import cycle और architecture boundary जाँचें तेज़ स्थानीय गेट के बाहर हरी रहें pnpm release:checkसे पहलेpnpm build && pnpm ui:buildचलाएँ ताकि अपेक्षितdist/*रिलीज़ artifacts और Control UI bundle pack validation step के लिए मौजूद हों- root version bump के बाद और tagging से पहले
pnpm release:prepचलाएँ। यह हर deterministic release generator चलाता है जो आम तौर पर version/config/API बदलाव के बाद drift करता है: plugin versions, plugin inventory, base config schema, bundled channel config metadata, config docs baseline, plugin SDK exports, और plugin SDK API baseline.pnpm release:checkउन guards को check mode में फिर से चलाता है और package release checks चलाने से पहले एक pass में मिले हर generated drift failure की रिपोर्ट करता है। - Plugin version sync official plugin package versions और मौजूदा
openclaw.compat.pluginApifloors को default रूप से OpenClaw release version पर अपडेट करता है। उस field को plugin SDK/runtime API floor मानें, सिर्फ package version की copy नहीं: plugin-only releases के लिए जो जानबूझकर पुराने OpenClaw hosts के साथ compatible रहते हैं, floor को सबसे पुराने supported host API पर रखें और उस choice को plugin release proof में document करें। - release approval से पहले manual
Full Release Validationworkflow चलाएँ ताकि सभी pre-release test boxes एक entrypoint से शुरू हों। यह branch, tag, या full commit SHA स्वीकार करता है, manualCIdispatch करता है, और install smoke, package acceptance, cross-OS package checks, QA Lab parity, Matrix, और Telegram lanes के लिएOpenClaw Release Checksdispatch करता है। Stable और full runs में हमेशा exhaustive live/E2E और Docker release-path soak शामिल होते हैं;run_release_soak=trueexplicit beta soak के लिए रखा गया है। Package Acceptance candidate validation के दौरान canonical package Telegram E2E देता है, जिससे दूसरा concurrent live poller बचता है। beta publish करने के बादrelease_package_specदें ताकि shipped npm package को release checks, Package Acceptance, और package Telegram E2E में release tarball rebuild किए बिना reuse किया जा सके।npm_telegram_package_specकेवल तब दें जब Telegram को बाकी release validation से अलग published package इस्तेमाल करना हो।package_acceptance_package_specतब दें जब Package Acceptance को release package spec से अलग published package इस्तेमाल करना हो।evidence_package_specतब दें जब release evidence report को यह साबित करना हो कि validation published npm package से मेल खाता है, बिना Telegram E2E को force किए। उदाहरण:gh workflow run full-release-validation.yml --ref main -f ref=release/YYYY.M.PATCH - manual
Package Acceptanceworkflow तब चलाएँ जब release work जारी रहते हुए package candidate के लिए side-channel proof चाहिए।source=npmका उपयोगopenclaw@beta,openclaw@latest, या exact release version के लिए करें;source=refका उपयोग currentworkflow_refharness के साथ trustedpackage_refbranch/tag/SHA pack करने के लिए करें;source=urlका उपयोग public HTTPS tarball के लिए करें जिसमें required SHA-256 और strict public URL policy हो;source=trusted-urlका उपयोग requiredtrusted_source_idऔर SHA-256 वाली named trusted-source policy के लिए करें; याsource=artifactका उपयोग किसी अन्य GitHub Actions run द्वारा uploaded tarball के लिए करें। यह workflow candidate कोpackage-under-testमें resolve करता है, उस tarball के विरुद्ध Docker E2E release scheduler reuse करता है, और उसी tarball के विरुद्धtelegram_mode=mock-openaiयाtelegram_mode=live-frontierके साथ Telegram QA चला सकता है। जब selected Docker lanes मेंpublished-upgrade-survivorशामिल हो, package artifact candidate होता है औरpublished_upgrade_survivor_baselinepublished baseline चुनता है।update-restart-authcandidate package को installed CLI और package-under-test दोनों के रूप में इस्तेमाल करता है ताकि यह candidate update command के managed restart path को exercise करे। उदाहरण: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-openaiसामान्य profiles:smoke: install/channel/agent, gateway network, और config reload lanespackage: OpenWebUI या live ClawHub के बिना artifact-native package/update/restart/plugin lanesproduct: package profile के साथ MCP channels, cron/subagent cleanup, OpenAI web search, और OpenWebUIfull: OpenWebUI के साथ Docker release-path chunkscustom: focused rerun के लिए exactdocker_lanesselection
- manual
CIworkflow सीधे तब चलाएँ जब आपको release candidate के लिए केवल deterministic normal CI coverage चाहिए। Manual CI dispatches changed scoping को bypass करते हैं और Linux Node shards, bundled-plugin shards, plugin और channel contract shards, Node 22 compatibility,check-*,check-additional-*, built-artifact smoke checks, docs checks, Python skills, Windows, macOS, और Control UI i18n lanes को force करते हैं। Standalone manual CI Android केवल तब चलाता है जबinclude_android=trueके साथ dispatch किया गया हो;Full Release Validationअपने CI child के लिए वह input pass करता है। Android के साथ उदाहरण:gh workflow run ci.yml --ref release/YYYY.M.PATCH -f include_android=true - release telemetry validate करते समय
pnpm qa:otel:smokeचलाएँ। यह QA-lab को local OTLP/HTTP receiver के माध्यम से exercise करता है और trace, metric, और log export के साथ bounded trace attributes और content/identifier redaction verify करता है, बिना Opik, Langfuse, या किसी अन्य external collector की आवश्यकता के। - collector compatibility validate करते समय
pnpm qa:otel:collector-smokeचलाएँ। यह local receiver assertions से पहले उसी QA-lab OTLP export को real OpenTelemetry Collector Docker container के माध्यम से route करता है। - protected Prometheus scraping validate करते समय
pnpm qa:prometheus:smokeचलाएँ। यह QA-lab को exercise करता है, unauthenticated scrapes को reject करता है, और verify करता है कि release-critical metric families prompt content, raw identifiers, auth tokens, और local paths से मुक्त रहें। - जब आप source-checkout OpenTelemetry और Prometheus smoke lanes को back to back चलाना चाहते हों,
pnpm qa:observability:smokeचलाएँ। - हर tagged release से पहले
pnpm release:checkचलाएँ OpenClaw NPM Releasepreflight npm tarball pack करने से पहले dependency release evidence generate करता है। npm advisory vulnerability gate release-blocking है। transitive manifest risk, dependency ownership/install surface, और dependency change reports केवल release evidence हैं। dependency change report release candidate की तुलना पिछले reachable release tag से करती है।- preflight dependency evidence को
openclaw-release-dependency-evidence-<tag>के रूप में upload करता है और prepared npm preflight artifact के अंदरdependency-evidence/के तहत embed भी करता है। real publish path उस preflight artifact को reuse करता है, फिर वही evidence GitHub release मेंopenclaw-<version>-dependency-evidence.zipके रूप में attach करता है। - tag मौजूद होने के बाद mutating publish sequence के लिए
OpenClaw Release Publishचलाएँ। इसेrelease/YYYY.M.PATCHसे dispatch करें (या main-reachable tag publish करते समयmainसे), release tag, successful OpenClaw npmpreflight_run_id, और successfulfull_release_validation_run_idpass करें, और default plugin publish scopeall-publishableरखें जब तक आप जानबूझकर focused repair न चला रहे हों। workflow plugin npm publish, plugin ClawHub publish, और OpenClaw npm publish को serialize करता है ताकि core package अपने externalized plugins से पहले publish न हो। - Stable
OpenClaw Release Publishको matching non-prereleaseopenclaw/openclaw-windows-noderelease मौजूद होने के बाद exactwindows_node_tagचाहिए। इसे candidate-approvedwindows_node_installer_digestsmap भी चाहिए। किसी भी publish child को dispatch करने से पहले, यह verify करता है कि source release published है, non-prerelease है, required x64/ARM64 installers रखता है, और अब भी उस approved map से match करता है। फिर यह OpenClaw release के अभी draft रहतेWindows Node Releasedispatch करता है, pinned installer digest map को unchanged carry करते हुए। child workflow उस exact tag से signed Windows Hub installers download करता है, उन्हें pinned digests से match करता है, verify करता है कि उनके Authenticode signatures Windows runner पर expected OpenClaw Foundation signer का उपयोग करते हैं, SHA-256 manifest लिखता है, और installers plus manifest को canonical OpenClaw GitHub release पर upload करता है, फिर promoted assets को re-download करता है और manifest membership और hashes verify करता है। parent publication से पहले current x64, ARM64, और checksum asset contract verify करता है। Direct recovery unexpectedOpenClawCompanion-*asset names को reject करता है, उसके बाद expected contract assets को pinned source bytes से replace करता है।Windows Node Releaseको केवल recovery के लिए manually dispatch करें, और हमेशा exact tag pass करें, कभीlatestनहीं, साथ में approved source release से explicitexpected_installer_digestsJSON map। Website download links को current stable release के exact OpenClaw release asset URLs पर target करना चाहिए, याreleases/latest/download/...पर केवल GitHub का latest redirect verify करने के बाद कि वह उसी release की ओर point करता है; केवल companion repo release page से link न करें। - Release checks अब separate manual workflow में चलते हैं:
OpenClaw Release Checks OpenClaw Release Checksrelease approval से पहले QA Lab mock parity lane के साथ fast live Matrix profile और Telegram QA lane भी चलाता है। live lanesqa-live-sharedenvironment का उपयोग करते हैं; Telegram Convex CI credential leases भी उपयोग करता है। जब आपको full Matrix transport, media, और E2EE inventory parallel में चाहिए, manualQA-Lab - All Lanesworkflowmatrix_profile=allऔरmatrix_shards=trueके साथ चलाएँ।- Cross-OS install और upgrade runtime validation public
OpenClaw Release ChecksऔरFull Release Validationका हिस्सा है, जो reusable workflow.github/workflows/openclaw-cross-os-release-checks-reusable.ymlको directly call करते हैं - यह split intentional है: real npm release path को short, deterministic, और artifact-focused रखें, जबकि slower live checks अपनी lane में रहें ताकि वे publish को stall या block न करें
- secret-bearing release checks को
Full Release Validationके माध्यम से याmain/release workflow ref से dispatch करना चाहिए ताकि workflow logic और secrets controlled रहें OpenClaw Release Checksbranch, tag, या full commit SHA स्वीकार करता है, जब तक resolved commit किसी OpenClaw branch या release tag से reachable होOpenClaw NPM Releasevalidation-only preflight भी current full 40-character workflow-branch commit SHA स्वीकार करता है, pushed tag की आवश्यकता के बिना- वह SHA path validation-only है और उसे real publish में promote नहीं किया जा सकता
- SHA mode में workflow केवल package metadata check के लिए
v<package.json version>synthesize करता है; real publish के लिए अब भी real release tag चाहिए - दोनों workflows real publish और promotion path को GitHub-hosted runners पर रखते हैं, जबकि non-mutating validation path बड़े Blacksmith Linux runners का उपयोग कर सकता है
- वह workflow
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cacheकोOPENAI_API_KEYऔरANTHROPIC_API_KEYworkflow secrets दोनों का उपयोग करके चलाता है - npm release preflight अब separate release checks lane का इंतज़ार नहीं करता
- release candidate को locally tag करने से पहले,
RELEASE_TAG=vYYYY.M.PATCH-beta.N pnpm release:fast-pretag-checkचलाएँ। helper fast release guardrails, plugin npm/ClawHub release checks, build, UI build, औरrelease:openclaw:npm:checkको उस order में चलाता है जो GitHub publish workflow शुरू होने से पहले common approval-blocking mistakes पकड़ता है। - approval से पहले
RELEASE_TAG=vYYYY.M.PATCH node --import tsx scripts/openclaw-npm-release-check.ts(या matching beta/correction tag) चलाएँ - npm publish के बाद, चलाएँ
node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.PATCH(या मेल खाने वाला बीटा/सुधार संस्करण) ताकि प्रकाशित रजिस्ट्री इंस्टॉल पथ को एक नए अस्थायी प्रीफ़िक्स में सत्यापित किया जा सके - बीटा प्रकाशित होने के बाद,
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-liveचलाएँ ताकि साझा लीज़ किए गए Telegram क्रेडेंशियल पूल का उपयोग करके प्रकाशित npm पैकेज के विरुद्ध इंस्टॉल किए गए पैकेज की ऑनबोर्डिंग, Telegram सेटअप, और वास्तविक Telegram E2E सत्यापित किए जा सकें। स्थानीय मेंटेनर के एकबारगी रन Convex vars छोड़ सकते हैं और तीनोंOPENCLAW_QA_TELEGRAM_*env क्रेडेंशियल सीधे पास कर सकते हैं। - मेंटेनर मशीन से पूरा पोस्ट-पब्लिश बीटा स्मोक चलाने के लिए,
pnpm release:beta-smoke -- --beta betaNउपयोग करें। सहायक Parallels npm अपडेट/फ्रेश-टारगेट सत्यापन चलाता है,NPM Telegram Beta E2Eडिस्पैच करता है, सटीक workflow run को पोल करता है, artifact डाउनलोड करता है, और Telegram रिपोर्ट प्रिंट करता है। - मेंटेनर GitHub Actions से भी वही पोस्ट-पब्लिश जाँच
मैनुअल
NPM Telegram Beta E2Eworkflow के ज़रिए चला सकते हैं। यह जानबूझकर केवल मैनुअल है और हर merge पर नहीं चलता। - मेंटेनर रिलीज़ ऑटोमेशन अब preflight-then-promote उपयोग करता है:
- वास्तविक npm publish के लिए सफल npm
preflight_run_idपास होना आवश्यक है - वास्तविक npm publish उसी
mainयाrelease/YYYY.M.PATCHbranch से डिस्पैच होना चाहिए जिससे सफल preflight run हुआ था - स्थिर npm releases का डिफ़ॉल्ट
betaहोता है - स्थिर npm publish workflow input के ज़रिए स्पष्ट रूप से
latestको target कर सकता है - token-आधारित npm dist-tag mutation अब
openclaw/releases/.github/workflows/openclaw-npm-dist-tags.ymlमें रहती है क्योंकिnpm dist-tag addको अभी भीNPM_TOKENचाहिए, जबकि source repo OIDC-only publish रखता है - सार्वजनिक
macOS Releaseकेवल validation-only है; जब कोई tag केवल release branch पर हो लेकिन workflowmainसे dispatch किया गया हो, तोpublic_release_branch=release/YYYY.M.PATCHसेट करें - वास्तविक macOS publish के लिए सफल macOS
preflight_run_idऔरvalidate_run_idपास होना आवश्यक है - वास्तविक publish paths artifacts को फिर से rebuild करने के बजाय तैयार artifacts को promote करते हैं
- वास्तविक npm publish के लिए सफल npm
YYYY.M.PATCH-Nजैसे स्थिर correction releases के लिए, post-publish verifierYYYY.M.PATCHसेYYYY.M.PATCH-Nतक उसी temp-prefix upgrade path की भी जाँच करता है ताकि release corrections चुपचाप पुराने global installs को base stable payload पर न छोड़ सकें- npm release preflight तब तक fail closed होता है जब तक tarball में
dist/control-ui/index.htmlऔर non-emptydist/control-ui/assets/payload दोनों शामिल न हों ताकि हम फिर से खाली browser dashboard ship न करें - Post-publish verification यह भी जाँचता है कि प्रकाशित Plugin entrypoints और
package metadata installed registry layout में मौजूद हैं। ऐसी release जो
Plugin runtime payloads के बिना ship होती है, postpublish verifier में fail होती है और
latestपर promote नहीं की जा सकती। pnpm test:install:smokecandidate update tarball पर npm packunpackedSizebudget भी enforce करता है, ताकि installer e2e release publish path से पहले accidental pack bloat पकड़ सके- अगर release work ने CI planning, extension timing manifests, या
extension test matrices को छुआ है, तो approval से पहले
.github/workflows/plugin-prerelease.ymlसे planner-ownedplugin-prerelease-extension-shardmatrix outputs फिर से generate और review करें ताकि release notes stale CI layout का वर्णन न करें - स्थिर macOS release readiness में updater surfaces भी शामिल हैं:
- GitHub release में अंततः packaged
.zip,.dmg, और.dSYM.zipहोने चाहिए - publish के बाद
mainपरappcast.xmlनए stable zip की ओर point करना चाहिए; macOS publish workflow इसे automatically commit करता है, या direct push blocked होने पर appcast PR खोलता है - packaged app को non-debug bundle id, non-empty Sparkle feed
URL, और उस release version के canonical Sparkle build floor पर या उससे ऊपर का
CFBundleVersionबनाए रखना चाहिए
- GitHub release में अंततः packaged
रिलीज़ परीक्षण बॉक्स
Full Release Validation वह तरीका है जिससे ऑपरेटर सभी प्री-रिलीज़ परीक्षणों को
एक ही प्रवेश बिंदु से शुरू करते हैं। तेज़ी से बदलती शाखा पर पिन किए गए कमिट प्रमाण के लिए,
हेल्पर का उपयोग करें ताकि हर चाइल्ड कार्यप्रवाह लक्ष्य
SHA पर तय अस्थायी शाखा से चले:
pnpm ci:full-release --sha <full-sha>हेल्पर release-ci/<sha>-... पुश करता है, उस शाखा से Full Release Validation
को ref=<sha> के साथ डिस्पैच करता है, सत्यापित करता है कि हर चाइल्ड कार्यप्रवाह headSha
लक्ष्य से मेल खाता है, फिर अस्थायी शाखा हटा देता है। इससे गलती से किसी
नए main चाइल्ड रन को प्रमाणित करने से बचाव होता है।
रिलीज़ शाखा या टैग सत्यापन के लिए, इसे भरोसेमंद main कार्यप्रवाह
रेफ से चलाएँ और रिलीज़ शाखा या टैग को 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.Nकार्यप्रवाह लक्ष्य रेफ का समाधान करता है, मैनुअल CI को
target_ref=<release-ref> के साथ डिस्पैच करता है, फिर OpenClaw Release Checks डिस्पैच करता है।
OpenClaw Release Checks इंस्टॉल स्मोक, क्रॉस-ओएस रिलीज़ जाँच,
सोक सक्षम होने पर लाइव/E2E Docker रिलीज़-पाथ कवरेज, कैनोनिकल Telegram पैकेज E2E के साथ Package Acceptance,
QA Lab समानता, लाइव Matrix, और लाइव
Telegram को फैलाकर चलाता है। फुल/ऑल रन केवल तब स्वीकार्य है जब Full Release Validation
सारांश में normal_ci, plugin_prerelease, और release_checks
सफल दिखें, जब तक कि किसी केंद्रित री-रन ने अलग Plugin Prerelease चाइल्ड को जानबूझकर न छोड़ा हो। स्टैंडअलोन npm-telegram चाइल्ड का उपयोग केवल
release_package_spec या npm_telegram_package_spec के साथ केंद्रित
प्रकाशित-पैकेज री-रन के लिए करें। अंतिम सत्यापक सारांश में हर चाइल्ड रन के लिए
सबसे धीमी जॉब तालिकाएँ शामिल होती हैं, ताकि रिलीज़ प्रबंधक लॉग डाउनलोड किए बिना
मौजूदा महत्वपूर्ण पथ देख सके।
पूर्ण चरण मैट्रिक्स, सटीक कार्यप्रवाह जॉब नाम, स्थिर बनाम पूर्ण प्रोफ़ाइल
अंतर, आर्टिफैक्ट, और केंद्रित री-रन हैंडल के लिए पूर्ण रिलीज़ सत्यापन देखें।
चाइल्ड कार्यप्रवाह उस भरोसेमंद रेफ से डिस्पैच होते हैं जो Full Release Validation चलाता है, सामान्यतः --ref main, भले ही लक्ष्य ref किसी
पुरानी रिलीज़ शाखा या टैग की ओर इशारा करता हो। अलग Full Release Validation
कार्यप्रवाह-रेफ इनपुट नहीं है; कार्यप्रवाह रन रेफ चुनकर भरोसेमंद हार्नेस चुनें।
चलते हुए main पर सटीक कमिट प्रमाण के लिए --ref main -f ref=<sha> का उपयोग न करें;
कच्चे कमिट SHA कार्यप्रवाह डिस्पैच रेफ नहीं हो सकते, इसलिए
पिन की गई अस्थायी शाखा बनाने के लिए pnpm ci:full-release --sha <sha> का उपयोग करें।
लाइव/प्रदाता विस्तार चुनने के लिए release_profile का उपयोग करें:
minimum: सबसे तेज़ रिलीज़-महत्वपूर्ण OpenAI/core लाइव और Docker पाथstable: रिलीज़ स्वीकृति के लिए न्यूनतम के साथ स्थिर प्रदाता/बैकएंड कवरेजfull: स्थिर के साथ व्यापक सलाहकारी प्रदाता/मीडिया कवरेज
स्थिर और पूर्ण सत्यापन हमेशा प्रमोशन से पहले विस्तृत लाइव/E2E, Docker
रिलीज़-पाथ, और सीमित प्रकाशित अपग्रेड-सर्वाइवर स्वीप चलाते हैं।
बीटा के लिए वही स्वीप माँगने के लिए run_release_soak=true का उपयोग करें। वह स्वीप
नवीनतम चार स्थिर पैकेजों के साथ पिन किए गए 2026.4.23 और 2026.5.2
बेसलाइन तथा पुराने 2026.4.15 कवरेज को कवर करता है, डुप्लिकेट बेसलाइन हटाता है और
हर बेसलाइन को उसके अपने Docker रनर जॉब में शार्ड करता है।
OpenClaw Release Checks लक्ष्य रेफ को एक बार release-package-under-test के रूप में
समाधान करने के लिए भरोसेमंद कार्यप्रवाह रेफ का उपयोग करता है और सोक चलने पर उस आर्टिफैक्ट को
क्रॉस-ओएस, Package Acceptance, और रिलीज़-पाथ Docker जाँचों में फिर से उपयोग करता है। इससे
सभी पैकेज-फेसिंग बॉक्स समान बाइट्स पर रहते हैं और बार-बार पैकेज बिल्ड से बचते हैं।
बीटा npm पर पहले से मौजूद होने के बाद, release_package_spec=openclaw@YYYY.M.PATCH-beta.N सेट करें
ताकि रिलीज़ जाँचें शिप किए गए पैकेज को एक बार डाउनलोड करें, dist/build-info.json से उसका बिल्ड स्रोत
SHA निकालें, और उस आर्टिफैक्ट को क्रॉस-ओएस,
Package Acceptance, रिलीज़-पाथ Docker, और पैकेज Telegram लेनों के लिए फिर से उपयोग करें।
क्रॉस-ओएस OpenAI इंस्टॉल स्मोक OPENCLAW_CROSS_OS_OPENAI_MODEL का उपयोग करता है जब
रेपो/संगठन वेरिएबल सेट हो, अन्यथा openai/gpt-5.4, क्योंकि यह लेन
सबसे धीमे डिफ़ॉल्ट मॉडल की बेंचमार्किंग के बजाय पैकेज इंस्टॉल, ऑनबोर्डिंग,
Gateway स्टार्टअप, और एक लाइव एजेंट टर्न प्रमाणित कर रही है। व्यापक लाइव प्रदाता
मैट्रिक्स मॉडल-विशिष्ट कवरेज के लिए स्थान बना रहता है।
रिलीज़ चरण के आधार पर ये वेरिएंट उपयोग करें:
# 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-openaiकेंद्रित फ़िक्स के बाद पहले री-रन के रूप में पूर्ण अम्ब्रेला का उपयोग न करें। यदि एक बॉक्स
विफल होता है, तो अगले प्रमाण के लिए विफल चाइल्ड कार्यप्रवाह, जॉब, Docker लेन,
पैकेज प्रोफ़ाइल, मॉडल प्रदाता, या QA लेन का उपयोग करें। पूर्ण अम्ब्रेला फिर से केवल तब चलाएँ
जब फ़िक्स ने साझा रिलीज़ ऑर्केस्ट्रेशन बदला हो या पहले के ऑल-बॉक्स प्रमाण को
बासी बना दिया हो। अम्ब्रेला का अंतिम सत्यापक दर्ज चाइल्ड कार्यप्रवाह रन
आईडी को फिर से जाँचता है, इसलिए किसी चाइल्ड कार्यप्रवाह के सफलतापूर्वक फिर से चलने के बाद, केवल विफल
Verify full validation पैरेंट जॉब को फिर से चलाएँ।
सीमित रिकवरी के लिए, अम्ब्रेला को rerun_group पास करें। all वास्तविक
रिलीज़-कैंडिडेट रन है, ci केवल सामान्य CI चाइल्ड चलाता है, plugin-prerelease
केवल रिलीज़-ओनली Plugin चाइल्ड चलाता है, release-checks हर रिलीज़
बॉक्स चलाता है, और संकरे रिलीज़ समूह install-smoke, cross-os,
live-e2e, package, qa, qa-parity, qa-live, और npm-telegram हैं।
केंद्रित npm-telegram री-रन के लिए release_package_spec या
npm_telegram_package_spec आवश्यक है; पूर्ण/ऑल रन Package Acceptance के अंदर कैनोनिकल पैकेज Telegram
E2E का उपयोग करते हैं। केंद्रित
क्रॉस-ओएस री-रन cross_os_suite_filter=windows/packaged-upgrade या
दूसरा ओएस/सुइट फ़िल्टर जोड़ सकते हैं। QA रिलीज़-जाँच विफलताएँ सामान्य रिलीज़
सत्यापन को रोकती हैं, जिसमें मानक टियर में आवश्यक OpenClaw डायनेमिक टूल ड्रिफ्ट शामिल है।
Tideclaw अल्फा रन अब भी गैर-पैकेज-सुरक्षा रिलीज़-जाँच लेनों को
सलाहकारी मान सकते हैं। जब live_suite_filter स्पष्ट रूप से Discord, WhatsApp, या Slack जैसी
गेटेड QA लाइव लेन माँगता है, तो मेल खाने वाला
OPENCLAW_RELEASE_QA_*_LIVE_CI_ENABLED रेपो वेरिएबल सक्षम होना चाहिए; अन्यथा
इनपुट कैप्चर लेन को चुपचाप छोड़ने के बजाय विफल हो जाता है।
Vitest
Vitest बॉक्स मैनुअल CI चाइल्ड कार्यप्रवाह है। मैनुअल CI जानबूझकर
बदले हुए स्कोपिंग को बायपास करता है और रिलीज़
कैंडिडेट के लिए सामान्य परीक्षण ग्राफ को मजबूर करता है: Linux Node शार्ड, बंडल्ड-Plugin शार्ड,
Plugin और चैनल कॉन्ट्रैक्ट शार्ड, Node 22 संगतता, check-*, check-additional-*,
बिल्ट-आर्टिफैक्ट स्मोक जाँचें, डॉक्स जाँचें, Python Skills, Windows, macOS,
और Control UI i18n। Android शामिल होता है जब Full Release Validation बॉक्स चलाता है
क्योंकि अम्ब्रेला include_android=true पास करता है; स्टैंडअलोन मैनुअल CI को
Android कवरेज के लिए include_android=true चाहिए।
इस बॉक्स का उपयोग इस प्रश्न का उत्तर देने के लिए करें: "क्या स्रोत ट्री ने पूरा सामान्य परीक्षण सुइट पास किया?" यह रिलीज़-पाथ उत्पाद सत्यापन जैसा नहीं है। रखने योग्य प्रमाण:
Full Release Validationसारांश जिसमें डिस्पैच किए गएCIरन URL दिखे- सटीक लक्ष्य SHA पर हरा
CIरन - रिग्रेशन की जाँच करते समय CI जॉब से विफल या धीमे शार्ड नाम
- जब किसी रन को प्रदर्शन विश्लेषण चाहिए, तब
.artifacts/vitest-shard-timings.jsonजैसे Vitest टाइमिंग आर्टिफैक्ट
मैनुअल CI सीधे केवल तब चलाएँ जब रिलीज़ को निर्धार्य सामान्य CI चाहिए लेकिन
Docker, QA Lab, लाइव, क्रॉस-ओएस, या पैकेज बॉक्स नहीं चाहिए। गैर-Android प्रत्यक्ष CI के लिए
पहला कमांड उपयोग करें। जब प्रत्यक्ष
रिलीज़-कैंडिडेट CI को Android कवर करना हो, तो include_android=true जोड़ें:
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
Docker बॉक्स OpenClaw Release Checks में
openclaw-live-and-e2e-checks-reusable.yml के माध्यम से रहता है, साथ ही रिलीज़-मोड
install-smoke कार्यप्रवाह भी। यह रिलीज़ कैंडिडेट को केवल स्रोत-स्तर परीक्षणों के बजाय
पैकेज्ड Docker वातावरणों के माध्यम से सत्यापित करता है।
रिलीज़ Docker कवरेज में शामिल है:
- धीमे Bun ग्लोबल इंस्टॉल स्मोक के साथ पूर्ण इंस्टॉल स्मोक
- लक्ष्य SHA द्वारा रूट Dockerfile स्मोक इमेज तैयारी/रीयूज़, जहाँ QR, root/gateway, और installer/Bun स्मोक जॉब अलग install-smoke शार्ड के रूप में चलती हैं
- रिपॉज़िटरी E2E लेन
- रिलीज़-पाथ Docker चंक:
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-g, औरplugins-runtime-install-h - माँगे जाने पर
plugins-runtime-servicesचंक के अंदर OpenWebUI कवरेज - विभाजित बंडल्ड Plugin इंस्टॉल/अनइंस्टॉल लेन
bundled-plugin-install-uninstall-0सेbundled-plugin-install-uninstall-23तक - जब रिलीज़ जाँचों में लाइव सुइट शामिल हों, तब लाइव/E2E प्रदाता सुइट और Docker लाइव मॉडल कवरेज
री-रन से पहले Docker आर्टिफैक्ट का उपयोग करें। रिलीज़-पाथ शेड्यूलर
.artifacts/docker-tests/ अपलोड करता है जिसमें लेन लॉग, summary.json, failures.json,
फेज़ टाइमिंग, शेड्यूलर प्लान JSON, और री-रन कमांड शामिल होते हैं। केंद्रित रिकवरी के लिए,
सभी रिलीज़ चंक फिर से चलाने के बजाय रीयूज़ेबल लाइव/E2E कार्यप्रवाह पर
docker_lanes=<lane[,lane]> का उपयोग करें। जनरेट किए गए री-रन कमांड उपलब्ध होने पर पहले के
package_artifact_run_id और तैयार Docker इमेज इनपुट शामिल करते हैं, ताकि
विफल लेन वही टारबॉल और GHCR इमेज फिर से उपयोग कर सके।
QA Lab
QA Lab बॉक्स भी OpenClaw Release Checks का हिस्सा है। यह एजेंटिक
व्यवहार और चैनल-स्तरीय रिलीज़ गेट है, Vitest और Docker
पैकेज मैकेनिक्स से अलग।
रिलीज़ QA Lab कवरेज में शामिल है:
- एजेंटिक समानता पैक का उपयोग करके OpenAI कैंडिडेट लेन की Opus 4.6 बेसलाइन से तुलना करने वाली मॉक समानता लेन
qa-live-sharedवातावरण का उपयोग करने वाली तेज़ लाइव Matrix QA प्रोफ़ाइल- Convex CI क्रेडेंशियल लीज़ का उपयोग करने वाली लाइव Telegram QA लेन
- जब रिलीज़ टेलीमेट्री को स्पष्ट स्थानीय प्रमाण चाहिए, तब
pnpm qa:otel:smoke,pnpm qa:otel:collector-smoke,pnpm qa:prometheus:smoke, याpnpm qa:observability:smoke
इस बॉक्स का उपयोग इस प्रश्न का उत्तर देने के लिए करें: "क्या रिलीज़ QA परिदृश्यों और लाइव चैनल फ्लो में सही व्यवहार करती है?" रिलीज़ स्वीकृत करते समय समानता, Matrix, और Telegram लेनों के आर्टिफैक्ट URL रखें। पूर्ण Matrix कवरेज डिफ़ॉल्ट रिलीज़-महत्वपूर्ण लेन के बजाय मैनुअल शार्डेड QA-Lab रन के रूप में उपलब्ध रहता है।
पैकेज
पैकेज बॉक्स इंस्टॉल करने योग्य-उत्पाद गेट है। यह
Package Acceptance और रिज़ॉल्वर
scripts/resolve-openclaw-package-candidate.mjs पर आधारित है। रिज़ॉल्वर किसी
कैंडिडेट को Docker E2E द्वारा खाए जाने वाले package-under-test टारबॉल में सामान्यीकृत करता है, पैकेज इन्वेंटरी सत्यापित करता है,
पैकेज संस्करण और SHA-256 दर्ज करता है, और
कार्यप्रवाह हार्नेस रेफ को पैकेज स्रोत रेफ से अलग रखता है।
समर्थित कैंडिडेट स्रोत:
source=npm:openclaw@beta,openclaw@latest, या ठीक-ठीक OpenClaw रिलीज़ संस्करणsource=ref: चयनितworkflow_refहार्नेस के साथ कोई विश्वसनीयpackage_refशाखा, टैग, या पूर्ण कमिट SHA पैक करेंsource=url: आवश्यकpackage_sha256के साथ सार्वजनिक HTTPS.tgzडाउनलोड करें; URL क्रेडेंशियल, गैर-डिफ़ॉल्ट HTTPS पोर्ट, निजी/आंतरिक/विशेष-उपयोग होस्टनाम या रिज़ॉल्व किए गए पते, और असुरक्षित रीडायरेक्ट अस्वीकार किए जाते हैंsource=trusted-url:.github/package-trusted-sources.jsonमें नामित नीति से आवश्यकpackage_sha256औरtrusted_source_idके साथ HTTPS.tgzडाउनलोड करें;source=urlमें इनपुट-स्तर निजी-नेटवर्क बाइपास जोड़ने के बजाय मेंटेनर-स्वामित्व वाले एंटरप्राइज़ मिरर या निजी पैकेज रिपॉज़िटरी के लिए इसका उपयोग करेंsource=artifact: किसी अन्य GitHub Actions रन द्वारा अपलोड किए गए.tgzका फिर से उपयोग करें
OpenClaw Release Checks source=artifact, तैयार रिलीज़ पैकेज आर्टिफ़ैक्ट,
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 के साथ पैकेज स्वीकृति चलाता है। पैकेज स्वीकृति उसी रिज़ॉल्व किए गए
टारबॉल के विरुद्ध माइग्रेशन, अपडेट, कॉन्फ़िगर किए गए-ऑथ अपडेट रीस्टार्ट, लाइव ClawHub skill इंस्टॉल,
पुरानी Plugin निर्भरता क्लीनअप, ऑफ़लाइन Plugin फ़िक्स्चर, Plugin अपडेट, और Telegram पैकेज QA बनाए रखती है।
ब्लॉकिंग रिलीज़ जाँचें डिफ़ॉल्ट नवीनतम प्रकाशित पैकेज बेसलाइन का उपयोग करती हैं; run_release_soak=true,
release_profile=stable, या release_profile=full वाला बीटा प्रोफ़ाइल 2026.4.23 से latest
तक हर स्थिर npm-प्रकाशित बेसलाइन और रिपोर्ट किए गए-इश्यू फ़िक्स्चर तक विस्तृत हो जाता है।
पहले से शिप किए गए उम्मीदवार के लिए source=npm के साथ, प्रकाशित करने से पहले SHA-समर्थित स्थानीय npm
टारबॉल के लिए source=ref के साथ, मेंटेनर-स्वामित्व वाले एंटरप्राइज़/निजी मिरर के लिए
source=trusted-url के साथ, या किसी अन्य GitHub Actions रन द्वारा अपलोड किए गए तैयार टारबॉल के लिए
source=artifact के साथ पैकेज स्वीकृति का उपयोग करें। यह अधिकांश पैकेज/अपडेट कवरेज का GitHub-नेटिव
प्रतिस्थापन है, जिसके लिए पहले Parallels की आवश्यकता होती थी। OS-विशिष्ट ऑनबोर्डिंग, इंस्टॉलर, और
प्लेटफ़ॉर्म व्यवहार के लिए क्रॉस-OS रिलीज़ जाँचें अब भी मायने रखती हैं, लेकिन पैकेज/अपडेट उत्पाद
मान्यता में पैकेज स्वीकृति को प्राथमिकता देनी चाहिए।
अपडेट और Plugin मान्यता के लिए कैनोनिकल चेकलिस्ट
अपडेट और Plugin का परीक्षण है। जब यह तय करना हो कि कौन-सी
स्थानीय, Docker, पैकेज स्वीकृति, या रिलीज़-जाँच लेन किसी Plugin इंस्टॉल/अपडेट, डॉक्टर क्लीनअप,
या प्रकाशित-पैकेज माइग्रेशन बदलाव को साबित करती है, तो इसका उपयोग करें। हर स्थिर 2026.4.23+
पैकेज से विस्तृत प्रकाशित अपडेट माइग्रेशन एक अलग मैनुअल Update Migration वर्कफ़्लो है, Full Release CI
का हिस्सा नहीं।
लेगेसी पैकेज-स्वीकृति ढील जानबूझकर समय-सीमित है। 2026.4.25 तक के पैकेज npm पर पहले से प्रकाशित
मेटाडेटा गैप के लिए संगतता पथ का उपयोग कर सकते हैं: टारबॉल से गायब निजी QA इन्वेंट्री प्रविष्टियाँ,
गायब gateway install --wrapper, टारबॉल-व्युत्पन्न git फ़िक्स्चर में गायब पैच फ़ाइलें, गायब persisted
update.channel, लेगेसी Plugin इंस्टॉल-रिकॉर्ड स्थान, गायब मार्केटप्लेस इंस्टॉल-रिकॉर्ड persistence,
और plugins update के दौरान कॉन्फ़िग मेटाडेटा माइग्रेशन। प्रकाशित 2026.4.26 पैकेज स्थानीय बिल्ड
मेटाडेटा स्टैम्प फ़ाइलों के लिए चेतावनी दे सकता है जो पहले ही शिप की जा चुकी थीं। बाद के पैकेजों को
आधुनिक पैकेज अनुबंधों को पूरा करना होगा; वही गैप रिलीज़ मान्यता को विफल करते हैं।
जब रिलीज़ प्रश्न वास्तविक इंस्टॉल किए जा सकने वाले पैकेज के बारे में हो, तो व्यापक पैकेज स्वीकृति प्रोफ़ाइल का उपयोग करें:
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सामान्य पैकेज प्रोफ़ाइल:
smoke: त्वरित पैकेज इंस्टॉल/चैनल/एजेंट, Gateway नेटवर्क, और कॉन्फ़िग रीलोड लेनpackage: इंस्टॉल/अपडेट/रीस्टार्ट/Plugin पैकेज अनुबंध और लाइव ClawHub skill इंस्टॉल प्रमाण; यह रिलीज़-जाँच डिफ़ॉल्ट हैproduct:packageके साथ MCP चैनल, cron/सबएजेंट क्लीनअप, OpenAI वेब खोज, और OpenWebUIfull: OpenWebUI के साथ Docker रिलीज़-पथ चंकcustom: केंद्रित दोबारा रन के लिए ठीक-ठीकdocker_lanesसूची
पैकेज-उम्मीदवार Telegram प्रमाण के लिए, पैकेज स्वीकृति पर telegram_mode=mock-openai या
telegram_mode=live-frontier सक्षम करें। वर्कफ़्लो रिज़ॉल्व किए गए package-under-test टारबॉल को
Telegram लेन में पास करता है; स्टैंडअलोन Telegram वर्कफ़्लो पोस्ट-पब्लिश जाँचों के लिए अब भी प्रकाशित
npm स्पेक स्वीकार करता है।
नियमित रिलीज़ प्रकाशन ऑटोमेशन
बीटा, latest, Plugin, GitHub Release, और प्लेटफ़ॉर्म प्रकाशन के लिए,
OpenClaw Release Publish सामान्य म्यूटेटिंग एंट्रीपॉइंट है। मासिक
.33+ npm-केवल विस्तारित-स्थिर पथ इस orchestrator का उपयोग नहीं करता। नियमित वर्कफ़्लो
रिलीज़ की आवश्यकता के क्रम में विश्वसनीय-प्रकाशक वर्कफ़्लो orchestrate करता है:
- रिलीज़ टैग चेक आउट करें और उसका कमिट SHA रिज़ॉल्व करें।
- सत्यापित करें कि टैग
mainयाrelease/*से reachable है। pnpm plugins:sync:checkचलाएँ।publish_scope=all-publishableऔरref=<release-sha>के साथPlugin NPM Releasedispatch करें।- समान scope और SHA के साथ
Plugin ClawHub Releasedispatch करें। - सहेजे गए
full_release_validation_run_idको सत्यापित करने के बाद रिलीज़ टैग, npm dist-tag, और सहेजे गएpreflight_run_idके साथOpenClaw NPM Releasedispatch करें। - स्थिर रिलीज़ के लिए, GitHub रिलीज़ को ड्राफ़्ट के रूप में बनाएँ या अपडेट करें, स्पष्ट
windows_node_tagऔर उम्मीदवार-स्वीकृतwindows_node_installer_digestsके साथWindows Node Releasedispatch करें, और ड्राफ़्ट प्रकाशित करने से पहले कैनोनिकल इंस्टॉलर/चेकसम assets सत्यापित करें।
बीटा प्रकाशन उदाहरण:
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=betaडिफ़ॉल्ट बीटा dist-tag पर स्थिर प्रकाशन:
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=betaसीधे latest पर स्थिर promotion स्पष्ट है:
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=latestकेवल केंद्रित मरम्मत या दोबारा प्रकाशन कार्य के लिए निचले-स्तर के Plugin NPM Release और
Plugin ClawHub Release वर्कफ़्लो का उपयोग करें। OpenClaw Release Publish
publish_openclaw_npm=true होने पर plugin_publish_scope=selected को अस्वीकार करता है, ताकि
core पैकेज हर publishable आधिकारिक Plugin, जिसमें @openclaw/diffs-language-pack शामिल है, के बिना
शिप न हो सके। चयनित Plugin मरम्मत के लिए, plugin_publish_scope=selected और plugins=@openclaw/name
के साथ publish_openclaw_npm=false सेट करें, या child वर्कफ़्लो को सीधे dispatch करें।
NPM वर्कफ़्लो इनपुट
OpenClaw NPM Release ये operator-नियंत्रित इनपुट स्वीकार करता है:
tag: आवश्यक रिलीज़ टैग, जैसेv2026.4.2,v2026.4.2-1, याv2026.4.2-beta.1; जबpreflight_only=trueहो, तो यह validation-only preflight के लिए वर्तमान पूर्ण 40-वर्ण workflow-branch commit SHA भी हो सकता हैpreflight_only: validation/build/package-only के लिएtrue, वास्तविक publish path के लिएfalsepreflight_run_id: वास्तविक publish path पर आवश्यक, ताकि वर्कफ़्लो सफल preflight run से तैयार tarball का फिर से उपयोग करेfull_release_validation_run_id: वास्तविक मासिक extended-stable और नियमित non-beta प्रकाशन के लिए आवश्यक, ताकि वर्कफ़्लो ठीक-ठीक validation run को authenticate करेnpm_dist_tag: publish path के लिए npm target tag;alpha,beta,latest, याextended-stableस्वीकार करता है और डिफ़ॉल्टbetaहै। अंतिम patch33और बाद वाले कोextended-stableका उपयोग करना होगा; डिफ़ॉल्ट रूप से,extended-stableपहले के patch को अस्वीकार करता है, और यह हमेशा non-final tags को अस्वीकार करता है।bypass_extended_stable_guard: केवल-परीक्षण boolean, डिफ़ॉल्टfalse;npm_dist_tag=extended-stableके साथ, release identity, artifact, approval, और readback जाँचों को बनाए रखते हुए मासिक extended-stable eligibility को bypass करता है।
OpenClaw Release Publish ये operator-नियंत्रित इनपुट स्वीकार करता है:
tag: आवश्यक रिलीज़ टैग; पहले से मौजूद होना चाहिएpreflight_run_id: सफलOpenClaw NPM Releasepreflight run id;publish_openclaw_npm=trueहोने पर आवश्यकfull_release_validation_run_id: सफलFull Release Validationrun id;publish_openclaw_npm=trueहोने पर आवश्यकwindows_node_tag: ठीक-ठीक non-prereleaseopenclaw/openclaw-windows-nodeरिलीज़ टैग; स्थिर OpenClaw publish के लिए आवश्यकwindows_node_installer_digests: वर्तमान Windows installer नामों से उनके pinnedsha256:digests तक का उम्मीदवार-स्वीकृत compact JSON map; स्थिर OpenClaw publish के लिए आवश्यकnpm_dist_tag: OpenClaw पैकेज के लिए npm target tagplugin_publish_scope: डिफ़ॉल्टall-publishable;publish_openclaw_npm=falseके साथ केवल केंद्रित plugin-only repair work के लिएselectedका उपयोग करेंplugins: जबplugin_publish_scope=selectedहो, तो comma-separated@openclaw/*package namespublish_openclaw_npm: डिफ़ॉल्टtrue; केवल workflow को plugin-only repair orchestrator के रूप में उपयोग करते समयfalseसेट करेंwait_for_clawhub: डिफ़ॉल्टfalse, ताकि npm availability ClawHub sidecar से blocked न हो;trueकेवल तब सेट करें जब workflow completion में ClawHub completion शामिल होना ज़रूरी हो
OpenClaw Release Checks ये operator-नियंत्रित इनपुट स्वीकार करता है:
ref: validate करने के लिए branch, tag, या full commit SHA। secret-bearing checks के लिए resolved commit का OpenClaw branch या release tag से reachable होना आवश्यक है।run_release_soak: beta release checks के लिए exhaustive live/E2E, Docker release-path, और all-since upgrade-survivor soak में opt in करें। यहrelease_profile=stableऔरrelease_profile=fullद्वारा forced on होता है।
नियम:
- patch
33से नीचे की regular final और correction versions या तोbetaयाlatestपर publish हो सकती हैं। patch33या उससे ऊपर की final versions कोextended-stableपर publish करना होगा, और उस boundary पर correction-suffix versions अस्वीकार की जाती हैं। - Beta prerelease tags केवल
betaपर publish हो सकते हैं OpenClaw NPM Releaseके लिए, full commit SHA input केवलpreflight_only=trueहोने पर allowed हैOpenClaw Release ChecksऔरFull Release Validationहमेशा validation-only हैं- वास्तविक publish path को वही
npm_dist_tagउपयोग करना होगा जो preflight के दौरान उपयोग हुआ था; workflow verify करता है कि publish से पहले metadata जारी रहे
नियमित beta/latest स्थिर रिलीज़ क्रम
यह legacy sequence उस नियमित orchestrated release के लिए है जो plugins, GitHub Release, Windows, और अन्य
platform work का भी स्वामी है। यह इस पेज के शीर्ष पर दस्तावेज़ित मासिक .33+ npm-only extended-stable
path नहीं है।
जब नियमित orchestrated stable release काट रहे हों:
preflight_only=trueके साथOpenClaw NPM Releaseचलाएँ- टैग मौजूद होने से पहले, आप प्रीफ्लाइट वर्कफ़्लो के केवल-सत्यापन ड्राई रन के लिए मौजूदा पूर्ण वर्कफ़्लो-शाखा कमिट SHA का उपयोग कर सकते हैं
- सामान्य beta-first प्रवाह के लिए
npm_dist_tag=betaचुनें, याlatestकेवल तब जब आप जानबूझकर सीधा स्थिर प्रकाशन चाहते हों - जब आप एक मैनुअल वर्कफ़्लो से सामान्य CI के साथ live prompt cache, Docker, QA Lab,
Matrix, और Telegram कवरेज चाहते हों, तो रिलीज़ शाखा, रिलीज़ टैग, या पूर्ण
कमिट SHA पर
Full Release Validationचलाएँ - यदि आपको जानबूझकर केवल नियतात्मक सामान्य टेस्ट ग्राफ़ चाहिए, तो इसके बजाय रिलीज़ ref पर
मैनुअल
CIवर्कफ़्लो चलाएँ - सटीक non-prerelease
openclaw/openclaw-windows-nodeरिलीज़ टैग चुनें जिसके signed x64 और ARM64 इंस्टॉलर शिप होने चाहिए। उसेwindows_node_tagके रूप में सहेजें, और उनके validated digest map कोwindows_node_installer_digestsके रूप में सहेजें। release-candidate helper दोनों को रिकॉर्ड करता है और उन्हें अपनी जनरेट की गई publish command में शामिल करता है। - सफल
preflight_run_idऔरfull_release_validation_run_idसहेजें - उसी
tag, उसीnpm_dist_tag, चुने गएwindows_node_tag, उसके सहेजे गएwindows_node_installer_digests, सहेजे गएpreflight_run_id, और सहेजे गएfull_release_validation_run_idके साथOpenClaw Release Publishचलाएँ; यह OpenClaw npm पैकेज को promote करने से पहले externalized plugins को npm और ClawHub पर प्रकाशित करता है - यदि रिलीज़
betaपर लैंड हुई है, तो उस स्थिर संस्करण कोbetaसेlatestपर promote करने के लिएopenclaw/releases/.github/workflows/openclaw-npm-dist-tags.ymlवर्कफ़्लो का उपयोग करें - यदि रिलीज़ जानबूझकर सीधे
latestपर प्रकाशित की गई है औरbetaको तुरंत उसी स्थिर build का अनुसरण करना चाहिए, तो दोनों dist-tags को स्थिर संस्करण पर इंगित करने के लिए वही रिलीज़ वर्कफ़्लो उपयोग करें, या उसके scheduled self-healing sync को बाद मेंbetaस्थानांतरित करने दें
dist-tag mutation रिलीज़ ledger repo में रहता है क्योंकि उसे अभी भी
NPM_TOKEN की आवश्यकता होती है, जबकि source repo OIDC-only publish रखता है।
यह direct publish path और beta-first promotion path दोनों को दस्तावेजीकृत और operator-visible बनाए रखता है।
यदि किसी maintainer को local npm authentication पर fallback करना पड़े, तो कोई भी 1Password
CLI (op) command केवल dedicated tmux session के अंदर चलाएँ। मुख्य agent shell से सीधे op
कॉल न करें; इसे tmux के अंदर रखने से prompts,
alerts, और OTP handling observable रहते हैं और repeated host alerts से बचाव होता है।
सार्वजनिक संदर्भ
.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
Maintainers वास्तविक runbook के लिए निजी रिलीज़ docs
openclaw/maintainers/release/README.md
का उपयोग करते हैं।