核实发布
当被询问某个 OpenClaw 发布是否已完全发布、公布、推广、进行过烟雾测试或实时验证时使用此技能。这是一个 核实技能,而非发布技能;在更改发布状态前,请使用 $release-openclaw-maintainer。
规则
- 将类似
.27的简短后缀根据当前日期/上下文解析为具体的 CalVer 版本,然后说出已解析的版本。 - 首先确定发布轨道。两条轨道均使用共享的 GitHub Release 证据账本。常规测试版/稳定版还使用平台图谱;扩展稳定版则使用其规范分支、npm 选择器和网关表面。不要要求一条轨道提供另一条的原生或 ClawHub 制品。
- 验证实时状态。不要相信本地检出状态、发布说明或旧有记忆作为当前真相。
- 如果检出目录不干净或存在差异,仅将其用作脚本/参考。对于版本元数据,请从 GitHub release/tag 获取,或在
/tmp下解压标签 tarball。 - 切勿打印密钥。仅将继承的实时密钥用于限定的烟雾命令。
- 保持最终输出简洁:
是/否、证据要点、注意事项、清理。
常规测试版/稳定版检查
以下检查仅适用于常规编排发布轨道。
- GitHub Release:
gh release view v<VERSION> --repo openclaw/openclaw --json tagName,name,publishedAt,isDraft,isPrerelease,targetCommitish,url,body,assets- 确认稳定版发布不是草稿或预发布。
- 确认发布主体中在预期位置包含 npm、CI、插件 npm、ClawHub、mac/appcast 的证据链接。
- 确认稳定版 Mac 发布所预期的资产已上传:zip、dmg、dSYM、依赖证据、不可变全量验证清单、发布后证据以及稳定版主线关闭清单。
- 下载每个不可变证据资产及其
.sha256配套文件,然后在信任发布记录之前验证校验和。
- 根 npm:
npm view openclaw@<VERSION> version dist-tags.latest dist.tarball dist.integrity time.<VERSION> --json- 对于稳定版,
latest必须等于<VERSION>。 - 记录 tarball、完整性签名、发布时间。
- 确认发布后证据记录中包含
npmRegistrySignaturesVerified: true和npmProvenanceAttestationMatched: true。
- 插件发布集:
- 从 GitHub 获取确切的标签元数据,而不是从脏的本地检出中获取:将
https://api.github.com/repos/openclaw/openclaw/tarball/v<VERSION>下载到/tmp/openclaw-v<VERSION>-src。 - 使用记录的发布 Tooling SHA 中的规范发布规划器/收集器,结合确切标签的包元数据,推导出该发布轨道所期望的完整 npm 和 ClawHub 包集合。不要计数原始发布标志:即使设置了发布标志,
openclaw.build.bundledDist === true也会明确延迟外部发布。单独记录延迟的包名及原因。 - 使用不可变的发布计划、注册表回读和工作流作业,协调预期的包标识、版本和数量,包括原始发布、先前发布的版本以及选定的恢复运行。选定的恢复子集不得缩小完整的预期发布集:
gh api repos/openclaw/openclaw/actions/runs/<RUN>/jobs --paginate。 - 每个预期的 npm 插件必须具有版本
<VERSION>并且dist-tags.latest === <VERSION>。
- 从 GitHub 获取确切的标签元数据,而不是从脏的本地检出中获取:将
- ClawHub:
- 检查插件 ClawHub Release 工作流的结论和发布作业数量。
- 使用 OpenClaw 本身进行实时注册表证明:
openclaw plugins search <known-plugin> --json。 - 在隔离的 HOME 环境中,从 ClawHub 安装一个恰好为所需发布版本的官方插件:
openclaw plugins install clawhub:@openclaw/matrix@<VERSION>。首选matrix,除非该插件不在预期集合中。ClawHub 版本属于规范;--pin仅受 npm 安装支持。
- 发布工作流:
- 验证发布说明证据链接的结论:完整发布验证、OpenClaw 发布检查、OpenClaw NPM 发布、插件 NPM 发布、插件 ClawHub 发布,以及当预期有稳定版 Mac 资产时的 mac 预检/验证/发布。
- 对于稳定版,验证
OpenClaw Stable Main Closeout是否成功,并且其清单记录匹配的发布标签、当前回滚演练、稳定版浸泡和阻塞性性能证据。 - 仅总结相关成功/失败的作业;忽略常规跳过的可选通道,除非发布主体承诺了它们。
扩展稳定版检查
扩展稳定版拥有一个带有共享发布证据的 GitHub Release,但没有原生或 ClawHub 制品。将其与实时标签、工作流、注册表、来源和镜像状态一起验证。
- 身份: 要求最终版本为
v<VERSION>,补丁版本33+,无后缀,包含在extended-stable/YYYY.M.33中。只有活跃的候选版本必须等于最新提交。根包和每个可发布的官方插件必须声明<VERSION>。要求 Git 标签和一个公开的、非预发布的 GitHub Release,其标题和规范主体必须与标签匹配。要求isLatest=false,以及依赖证据、不可变的完整发布验证清单、发布后证据及其校验和。要求没有原生或 ClawHub 资产。 - 工作流链: 找到成功的父级发布运行及其预检、完整验证、插件 npm 和核心发布子运行。要求一个受保护的
release-publish/*父级运行和一个规范的release-ci/*验证生产者,并带有已验证的工作流 SHA 来源。验证必须使用rerun_group=all、release_profile=stable、阻塞性浸泡/性能以及保存的重试尝试。核心发布必须引用所有三个运行 ID,并将其清单、工作流引用和 tarball 摘要绑定到发布 SHA。 - 注册表: 要求确切版本和
extended-stable选择器对于根包、每个预检corePackageTarballs条目以及从标签派生的每个publishToNpm === true的官方插件都返回<VERSION>。比较插件计划、作业和完整回读;绝不从差异推断清单。 - 来源: 从受信任的当前工具运行
node --import tsx scripts/openclaw-npm-postpublish-verify.ts <VERSION>。要求签名、规范分支来源以及发布/预检摘要绑定到发布 SHA。保留输出和工作流 URL。 - Docker: 验证两个注册表中的确切默认、精简、浏览器和架构镜像及证明。仅允许三个
extended-stable*别名解析到这些摘要。要求成功的OpenClaw Release Publish父级运行及其完成的 Docker 验证。正常路由在此之后完成;显式请求的快速路径可能先激活 GitHub。通过当前主线的Docker Channel Promotion为确切的标签修复别名,无需重建。 - 恢复: 绝不重新发布。对于根选择器(未加后缀的最终补丁
33+),在openclaw/releasesdist-tag 工作流中使用promote_extended_stable,并使用经过批准的、凭据隔离的工具处理其他选择器,然后重复完整回读。不要要求 ClawHub、原生/移动应用、网站、私有 dist-tag 或常规latest。要求共享发布证据,但不要要求常规的原生或 ClawHub 资产。
共享实时烟雾测试
在完成特定轨道的发布检查后:
- 已发布包烟雾测试:
- 在
/tmp隔离 HOME 中:npm exec --yes --package openclaw@<VERSION> -- openclaw --version。 - 运行至少一个无害命令,触及已发布的 CLI 表面,例如
plugins --help或gateway --help。
- 在
- Dev 网关实时模型烟雾测试:
- 使用临时 HOME/工作区,而非用户的正常状态:
HOME=/tmp/openclaw-release-smoke/home OPENCLAW_WORKSPACE=/tmp/openclaw-release-smoke/work pnpm openclaw --dev gateway run --auth none --force --verbose。 - 从启动输出或日志中解析已启动网关的绑定端口。
- 对于
--auth none,要求未认证的GET http://127.0.0.1:<PORT>/healthz返回 HTTP 200 以及确切的 JSON 对象{"ok":true,"status":"live"}。 - 保留
gateway health --json用于有意使用凭据或设备配对的烟雾测试,传递该网关所需的明确凭据。 - 使用继承的
OPENAI_API_KEY、简短提示、显式会话密钥、JSON 输出和已知可用的模型,进行一次网关支持的代理调用。 - 如果配置的默认模型因不可用而失败,则记录该注意事项,并重试使用最新的已知良好的 OpenAI 模型,而非声明发布失败。
- 停止网关并验证端口不再监听。
- 使用临时 HOME/工作区,而非用户的正常状态:
需报告的注意事项
- dist-tag 注意事项:稳定版的
latest是发布真相;如果可选的beta镜像仍然指向某个测试版,报告为注意事项,而非稳定版发布阻塞项,除非用户要求验证测试版推广。 - 轨道注意事项:命名轨道并指出有意图缺失的表面。不要将缺失常规发布制品报告为扩展稳定版失败。
- 出差异的检出注意事项:当本地源代码 SHA 与发布标签或远程仓库不同时,说明差异点并说明使用了哪些实时源代码。
- 烟雾测试注意事项:区分网关支持的代理成功与本地嵌入式回退。有效的 auth-none 实时烟雾测试包含确切的
/healthz结果、一次成功的网关支持代理调用以及该调用的网关日志/运行 ID。