|
| 1 | +--- |
| 2 | +name: verify-release |
| 3 | +description: "Verify an OpenClaw release is fully published across GitHub, npm, plugins, ClawHub, package smoke, and live Gateway agent turns." |
| 4 | +--- |
| 5 | + |
| 6 | +# Verify Release |
| 7 | + |
| 8 | +Use this when asked whether an OpenClaw release is fully released, published, |
| 9 | +promoted, smoke-tested, or live-verified. This is a verification skill, not a |
| 10 | +publish skill; use `$release-openclaw-maintainer` before changing release state. |
| 11 | + |
| 12 | +## Rules |
| 13 | + |
| 14 | +- Resolve short suffixes like `.27` to the concrete CalVer version from the |
| 15 | + current date/context, then say the resolved version. |
| 16 | +- Verify live state. Do not trust local checkout state, release notes, or old |
| 17 | + memory as current truth. |
| 18 | +- If the checkout is dirty or divergent, use it only for scripts/reference. |
| 19 | + For version metadata, fetch from GitHub release/tag or unpack the tag tarball |
| 20 | + under `/tmp`. |
| 21 | +- Never print secrets. Use inherited live keys only for scoped smoke commands. |
| 22 | +- Keep the final terse: `yes/no`, evidence bullets, caveats, cleanup. |
| 23 | + |
| 24 | +## Core Checks |
| 25 | + |
| 26 | +1. GitHub release: |
| 27 | + - `gh release view v<VERSION> --repo openclaw/openclaw --json tagName,name,publishedAt,isDraft,isPrerelease,targetCommitish,url,body,assets` |
| 28 | + - Confirm stable releases are not draft/prerelease. |
| 29 | + - Confirm release body has npm, CI, plugin npm, ClawHub, mac/appcast evidence |
| 30 | + links when expected. |
| 31 | + - Confirm assets expected for stable mac releases are uploaded: zip, dmg, |
| 32 | + dSYM, dependency evidence when present. |
| 33 | +2. Root npm: |
| 34 | + - `npm view openclaw@<VERSION> version dist-tags.latest dist.tarball dist.integrity time.<VERSION> --json` |
| 35 | + - `latest` must equal `<VERSION>` for stable. |
| 36 | + - Record tarball, integrity, publish time. |
| 37 | +3. Plugin publish set: |
| 38 | + - Get exact tag metadata from GitHub, not the local checkout when dirty: |
| 39 | + download `https://api.github.com/repos/openclaw/openclaw/tarball/v<VERSION>` |
| 40 | + into `/tmp/openclaw-v<VERSION>-src`. |
| 41 | + - Count `extensions/*/package.json` with |
| 42 | + `openclaw.release.publishToNpm === true` and |
| 43 | + `openclaw.release.publishToClawHub === true`. |
| 44 | + - Compare expected counts to workflow job counts: |
| 45 | + `gh api repos/openclaw/openclaw/actions/runs/<RUN>/jobs --paginate`. |
| 46 | + - Each expected npm plugin must have version `<VERSION>` and |
| 47 | + `dist-tags.latest === <VERSION>`. |
| 48 | +4. ClawHub: |
| 49 | + - Check the Plugin ClawHub Release workflow conclusion and publish job count. |
| 50 | + - Use OpenClaw itself for live registry proof: |
| 51 | + `openclaw plugins search <known-plugin> --json`. |
| 52 | + - Install one official plugin from ClawHub in an isolated HOME: |
| 53 | + `openclaw plugins install clawhub:@openclaw/matrix --pin`. |
| 54 | + Prefer `matrix` unless that plugin is not in the expected set. |
| 55 | +5. Release workflows: |
| 56 | + - Verify conclusions for release notes evidence links: |
| 57 | + Full Release Validation, OpenClaw Release Checks, OpenClaw NPM Release, |
| 58 | + Plugin NPM Release, Plugin ClawHub Release, mac preflight/validation/publish |
| 59 | + when stable mac assets are expected. |
| 60 | + - Summarize only relevant successful/failed jobs; ignore routine skipped |
| 61 | + optional lanes unless the release body promised them. |
| 62 | +6. Published package smoke: |
| 63 | + - In `/tmp`, isolated HOME: |
| 64 | + `npm exec --yes --package openclaw@<VERSION> -- openclaw --version`. |
| 65 | + - Run at least one harmless command that touches the published CLI surface, |
| 66 | + for example `plugins --help` or `gateway --help`. |
| 67 | +7. Dev Gateway live model smoke: |
| 68 | + - Use temp HOME/workspace, not the user's normal state: |
| 69 | + `HOME=/tmp/openclaw-release-smoke/home OPENCLAW_WORKSPACE=/tmp/openclaw-release-smoke/work pnpm openclaw --dev gateway run --auth none --force --verbose`. |
| 70 | + - Health check via CLI: `openclaw --dev gateway health --json`. |
| 71 | + - Run one Gateway-backed agent turn with inherited `OPENAI_API_KEY`, short |
| 72 | + prompt, explicit session key, JSON output, and a known-available model. |
| 73 | + - If the configured default model fails as unavailable, record that caveat |
| 74 | + and retry with the newest known-good OpenAI model instead of declaring the |
| 75 | + release failed. |
| 76 | + - Stop the gateway and verify the port is not listening. |
| 77 | + |
| 78 | +## Caveats To Report |
| 79 | + |
| 80 | +- Dist-tag caveat: stable `latest` is release truth; if optional `beta` mirrors |
| 81 | + still point at a beta version, report it as a caveat, not a stable-release |
| 82 | + blocker, unless the user asked to verify beta promotion. |
| 83 | +- Divergent checkout caveat: say when local source SHA differs from release tag |
| 84 | + or origin and which live sources were used instead. |
| 85 | +- Smoke caveat: distinguish Gateway-backed agent success from local embedded |
| 86 | + fallback. A valid Gateway smoke has health OK plus gateway log/run id for the |
| 87 | + agent call. |
0 commit comments