feat(release): add monthly npm extended-stable publication#99352
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9dc0b836df
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Codex review: needs maintainer review before merge. Reviewed July 4, 2026, 10:04 AM ET / 14:04 UTC. Summary PR surface: Tests +793, Docs +108, Config +93, Other +494. Total +1488 across 13 files. Reproducibility: not applicable. this is a release-automation feature rather than a reported runtime bug. Current main and the public npm registry do not yet expose the requested Review metrics: 2 noteworthy metrics.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Merge only after release owners explicitly accept or waive the production npm proof gap, the default-off bypass boundary, and the expanded trusted-ref model, while keeping Do we have a high-confidence way to reproduce the issue? Not applicable; this is a release-automation feature rather than a reported runtime bug. Current main and the public npm registry do not yet expose the requested Is this the best way to solve the issue? Yes, the narrow npm-only path is a maintainable alternative to the broader release-policy PR and keeps existing AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 4287d2629fb3. Label changesLabel justifications:
Evidence reviewedPR surface: Tests +793, Docs +108, Config +93, Other +494. Total +1488 across 13 files. View PR surface stats
Security concerns:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (4 earlier review cycles)
|
c3be4f0 to
daa23a8
Compare
|
Fixed the actionable review findings in
Exact-head CI is green: all required checks passed in run 28707921579. The PR body now also records the fork-only Verdaccio publish, promotion, readback, and separate-process install proof. The remaining official npm/OIDC/ @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Follow-up review finding fixed in Current-head CI completed. Every latest check passed or was skipped/neutral except The remaining official npm trusted-publish/environment approval is a release-owner acceptance or waiver gate. @clawsweeper re-review |
…99352) * feat(release): add npm stable publication * fix(release): allow stable full validation * feat(release): add stable guard test bypass * fix(release): allow stable maintenance after month rollover * docs: refresh release documentation map * refactor(release): rename monthly channel to extended-stable * fix(release): repair extended-stable selector forward * docs(release): fix extended-stable link
* fix(release): restore frozen validation startup Adapt the no-write validation portion of b597a8d (#103834) for the 6.x extended-stable workflow set. Remove validation-owned image publisher jobs instead of granting write permissions; Docker publication remains out of scope. * fix(release): allow canonical extended-stable checks Restore the openclaw-release-checks.yml portion of c7810fc (#99352) that authorizes the canonical extended-stable/YYYY.M.33 workflow branch.
What Problem This Solves
OpenClaw cannot currently publish a trailing-month core package to the npm
extended-stabledist-tag without treating it like the existing promotedlatestchannel or adopting the much larger superseded release-policyframework. The existing Full Release Validation graph also rejects the required
extended-stable/YYYY.M.33workflow ref, making a guarded monthly rununreachable.
The user-facing
stableupdate channel already resolves through npmlatest.This PR intentionally uses the separate
extended-stablename so the newtrailing-month contract does not redefine that existing channel.
Why This Change Was Made
This adds one npm-only
extended-stablemode to the existing release workflow.Final
YYYY.M.PATCHversions at patch33or later must publish from the exactextended-stable/YYYY.M.33branch, with the release tag, checkout, branch tip,package version, preflight run, Full Release Validation run, manifest, and
promoted tarball all bound to the same commit.
The implementation reuses the existing preflight manifest v1 and tested
tarball, captures the prior npm selector before mutation, performs bounded
exact-version and selector readback, and prints a forward repair command that
points
extended-stableat the newly published version. Rollback to the priorselector is a separate operator decision. Full Release Validation narrowly
trusts the canonical extended-stable branch shape and verifies every required
child run used the target SHA.
Plugin publication, native platforms, GitHub Releases, private dist-tags,
Docker, mobile, and website publication remain out of scope. Protected
mainmust be on any strictly later calendar month with a daily patch below
33, sosupported maintenance patches remain publishable after development advances
more than one month.
Fork and non-production rehearsals can explicitly set
bypass_extended_stable_guard=trueto relax the.33threshold and protectedmainmonth policy. The bypass is extended-stable-only and default-off; itstill requires the canonical branch, branch-tip/tag/checkout SHA equality,
final tag/package identity, authenticated validation evidence, verified
tarball, environment approval, and registry proof.
User Impact
Release operators can publish the completed month's core
openclawpackage tonpm
extended-stable, beginning at.33, without movinglatestor invokingother publication surfaces. Maintainers can exercise the guarded path with a
historical test version by enabling the audited bypass. Existing user-facing
stable | beta | devCLI channel behavior is unchanged.Evidence
4c0a6e5fef.npm dist-tag add [email protected] extended-stable, targeting the newpublished version rather than restoring/removing the prior selector;
package.jsoninstead of hard-coding2026.6.11;docs/ci.mdrelease link now uses the required root-relative Mintlifyroute without a
.mdsuffix.node --check scripts/openclaw-npm-extended-stable-release.mjs;bash -n scripts/openclaw-npm-publish.sh;v2026.6.33;git diff --check.66a3300450148206e063c20d2de78a508f4fd691:@kevins8/[email protected]and2000.4.34to a persistentloopback-only Verdaccio registry;
extended-stable: absent ->2000.4.33->2000.4.34;@kevins8/openclaw@extended-stablefrom a separatehost process and observed
OpenClaw 2000.4.34;82375e4931bb865283b9ca62e45d09a25999a5d44feddb22683697ec3c1a0d23(
.33) and6b7eb3c48a8ed6f44cce010b78aabca04c9f2d66eb7b20d06fed9f4e7493c287(
.34).770800b43apassed all exact-head checks inrun 28707921579.
On the current docs-only head
4c0a6e5fef, all latest checks passed or wereskipped/neutral except
checks-node-compact-large-whole-1inrun 28708169657.
Its sole failure is the pre-existing ClawHub plugin documentation fixture
mismatch at
src/docs/clawhub-plugin-docs.test.ts:74; this PR changes neitherthat test nor
docs/plugins/building-plugins.md. Local Vitest was not runbecause the worktree lockfile differs from the shared
node_modules;Blacksmith Testbox was unavailable because installed Crabbox
0.16.0isbelow the repository-required
0.22.0.The canary proves package build/publish/readback/install and selector promotion
against a real local npm registry. It does not claim official
openclawnpmpublication, GitHub OIDC trusted publishing, production
npm-releaseenvironment approval, or public provenance. Those remain an explicit
release-owner proof/override gate before merge.