chore(release): prepare v0.41.0 - #1214
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed July 31, 2026, 7:19 PM ET / 23:19 UTC. ClawSweeper reviewWhat this changesThe PR dates the v0.41.0 changelog, updates the Worker package and lockfile versions, and adds a blocked record to authorize the later signed tag source. Merge readiness⛔ Blocked until real behavior proof is added - 6 items remain Keep this PR open: its release-preparation shape matches the repository’s signed-tag and blocked-record flow, but it still leaves two entries under untagged Priority: P2 Review scores
Verification
How this fits togetherCrabbox release preparation turns the changelog section for a signed version into release notes, updates Worker package metadata, and then binds the signed tag to a protected source record. That record is consumed by the credential-free candidate producer only after tag identities are verified and publication is explicitly authorized. flowchart LR
A[Changes since latest signed release] --> B[v0.41.0 changelog section]
B --> C[Signed annotated tag]
C --> D[Captured tag and source identities]
D --> E[Protected source authorization record]
G[Worker package version] --> F[Credential-free candidate producer]
E --> F
Decision needed
Why: The latest release is v0.40.0, so maintaining a separate dated 0.40.1 section has release-note consequences that cannot be inferred safely from the PR alone. Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Move the untagged 0.40.1 entries into the v0.41.0 section, then attach redacted coordinator-backed smoke evidence for the prepared commit before signing the exact release tag and authorizing its immutable source record. Do we have a high-confidence way to reproduce the issue? Yes. Comparing the latest tag set with the PR changelog shows that v0.40.1 has no release tag while its two entries remain outside the new v0.41.0 section, which the release process uses for draft notes. Is this the best way to solve the issue? No. The release-record and version-bump approach is correct, but the changelog must either fold all post-v0.40.0 work into v0.41.0 or complete a separate v0.40.1 release first. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against f793138a161e. LabelsLabel justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (1 earlier review cycle)
|
Summary
Release scope includes work tracked in #1208. The late merge #1203 is included and credited to @morluto.
Verification
Fresh local
npm ci --prefix workerwas attempted repeatedly but registry tarball requests timed out. The local Worker proof used a lockfile-identical dependency tree from the adjacent exact-origin-main validation checkout, verified withnpm ls --prefix worker --all. Hosted CI run https://github.com/openclaw/crabbox/actions/runs/30671525807 passed all eight jobs on exact head132b02ee27db382bd3d08c2489191dbbb6b72b86, including its fresh Worker install, Go race/all-modules/coverage gate, scripts, docs, Apple VM, Windows cancellation, connector lifecycles, and GoReleaser snapshot. Dependency freshness was inspected withgo list -m -u -json allandnpm outdated --prefix worker --json; a broad dependency refresh already landed in #1194, and newer post-refresh upstream patch/minor releases were not mixed into this frozen release-preparation diff.The coordinator-backed live smoke was not run because it requires coordinator credentials, which this preparation lane is explicitly forbidden to touch. No tag, producer, signing, draft, publication, npm publish, or Homebrew action was run.
Maintainer handoff
The release contract says:
After this PR merges, run these gates in order from a clean
maincheckout.1. Sign and push the immutable tag
Required credential: the repository-approved SSH signing key must be available through the maintainer's configured Git signing agent. No GitHub Release, Homebrew, Actions, codesign, or notary environment variable is required for tag creation; repository push authentication is required only for the final push.
The annotation subject is deliberately the bare
v0.41.0; never replace it with descriptive text.2. Authorize the exact signed source in a protected PR
Required credential: normal GitHub branch/PR authentication only. No release, Homebrew, Actions, codesign, or notary credential is required. Recompute the IDs from the immutable tag, replace both pending sentinels, set the record to
ready, and remove the blocker:Stop until that record-only PR has required review, green CI, and is merged. Then return to clean
main.3. Run only the credential-free producer
Required platform/tools: Apple Silicon macOS and the exact repository-pinned Go, GoReleaser, Swift, Xcode, macOS, and architecture requirements checked by the producer. Every variable below must be absent, not merely empty:
GH_TOKEN,GITHUB_TOKEN,HOMEBREW_TAP_GITHUB_TOKEN,HOMEBREW_GITHUB_API_TOKEN,ACTIONS_RUNTIME_TOKEN,ACTIONS_ID_TOKEN_REQUEST_TOKEN,CODESIGN_IDENTITY,MAC_RELEASE_CODESIGN_IDENTITY, andNOTARYTOOL_KEYCHAIN_PROFILE.Stop there. Signing/packaging, draft creation, native verification, publication, and Homebrew each require their own later authorization under
docs/RELEASING.md.