Skip to content

fix(release): avoid full revalidation after changelog-only cuts#105948

Merged
vincentkoc merged 1 commit into
mainfrom
fix/release-code-sha-flow
Jul 13, 2026
Merged

fix(release): avoid full revalidation after changelog-only cuts#105948
vincentkoc merged 1 commit into
mainfrom
fix/release-code-sha-flow

Conversation

@vincentkoc

Copy link
Copy Markdown
Member

Closes #105946

What Problem This Solves

Fixes an issue where release managers could repeat the full product-validation matrix after late changelog work, release-tooling recovery, or resumed publication even though product code had not changed. This made small release-branch updates, including optional backports, take many hours and left the evidence chain harder to reason about.

Why This Change Was Made

The release flow now freezes a product-complete pre-changelog Code SHA, runs full product validation there, then creates a Release SHA whose complete delta must be exactly one modified CHANGELOG.md. GitHub compare proof and the strict evidence verifier independently enforce that boundary. Product evidence can be reused for the changelog-only Release SHA, while npm preflight, package/install acceptance, release-note provenance, tagging, and publication still validate the exact Release SHA.

The release candidate helper also supplies canonical release-branch context, infers beta versus stable validation profiles from the target package version, avoids duplicate validation/preflight dispatches, and preserves the Release-SHA wrapper as the durable evidence identity.

User Impact

Release managers can validate code once, generate the changelog once after product proof is green, and resume tooling or publication failures without restarting unrelated product validation. Any code, version, dependency, generated, or workflow-owned target change still returns to a new Code SHA and full validation.

No product runtime behavior changes. Backports remain optional.

AI-assisted: yes. The implementation was reviewed and validated by the maintainer operating the release flow.

Evidence

  • Blacksmith Testbox through Crabbox: tbx_01kxcr6xmy9t6baedcyk24t0w4
  • Focused release-tooling suite: 8 files, 258 tests passed
  • Patch-owned changed gates passed: conflict markers, changelog attribution, extension export guards, duplicate coverage, dependency pins/patches, formatting, temp-dir report, tsgo:scripts, tsgo:test:root, and script lint
  • Workflow validation passed: pnpm check:workflows
  • Docs validation passed: 702-file format/lint, 718-file MDX check, 5,919 internal links with 0 broken, glossary and docs-map checks
  • git diff --check passed
  • Fresh autoreview against the rebased patch: clean, no accepted/actionable findings

pnpm check:changed is currently blocked by the pre-existing repository-wide TypeScript LOC ratchet on base a674ce5e0d1ab0774546086fa7b2730516eca176. Running the ratchet directly on that base reports the same unrelated source/UI baseline failures; this PR touches none of those files. All remaining commands from the changed-gate plan passed independently.

@vincentkoc vincentkoc self-assigned this Jul 13, 2026
@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation scripts Repository scripts size: L maintainer Maintainer-authored PR labels Jul 13, 2026
@vincentkoc
vincentkoc marked this pull request as ready for review July 13, 2026 03:36
@vincentkoc
vincentkoc requested a review from a team as a code owner July 13, 2026 03:36
@vincentkoc vincentkoc closed this Jul 13, 2026
@vincentkoc vincentkoc reopened this Jul 13, 2026
@vincentkoc

Copy link
Copy Markdown
Member Author

Landing verification:

The PR changes none of extensions/qa-lab/src/suite.test.ts or ui/src/components/app-sidebar-nav-menus.ts, where the deterministic type/dead-export failures occur. The repository's mandatory scripts/pr prepare-run gate rejects any newer terminal-red merge-ref run, even when an earlier exact-head CI run passed, so I am not bypassing it. Landing is blocked until main is healed and exact-head CI is rerun successfully.

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P1 High-priority user-facing bug, regression, or broken workflow. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. labels Jul 13, 2026
@clawsweeper

clawsweeper Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Codex review: found issues before merge. Reviewed July 13, 2026, 12:31 AM ET / 04:31 UTC.

Summary
Separates product-complete Code SHA validation from the changelog-only Release SHA, adds guarded cross-SHA evidence reuse, infers release profiles, and updates the associated workflows, scripts, tests, skills, and docs.

PR surface: Tests +204, Docs +67, Config +14, Other +118. Total +403 across 24 files.

Reproducibility: yes. at source level: current release validation binds reusable product evidence to the exact target SHA, so a later changelog commit causes the full matrix to run again; no live failing release was reproduced during this read-only review.

Review metrics: 2 noteworthy metrics.

  • Release-profile contract: 1 added, 1 removed. The patch introduces beta while rejecting the documented minimum input, creating a compatibility decision before merge.
  • Evidence-reuse policies: 1 new cross-SHA policy. The new changelog-only-release-v1 policy authorizes reuse of high-consequence product validation across distinct commits.

Stored data model
Persistent data-model change detected: migration/backfill/repair: .agents/skills/release-openclaw-maintainer/SKILL.md, serialized state: scripts/full-release-validation-at-sha.mjs, serialized state: test/scripts/find-reusable-release-validation.test.ts, serialized state: test/scripts/full-release-validation-at-sha.test.ts, vector/embedding metadata: .agents/skills/release-openclaw-maintainer/SKILL.md. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #105946
Summary: This PR is the direct implementation candidate for the linked release-validation issue.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦞 diamond lobster
Patch quality: 🦐 gold shrimp
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Preserve and test minimum as an alias for beta across helper and workflow dispatch.
  • [P2] Rerun the focused release-tooling suite and exact-head workflow checks after the compatibility repair.

Risk before merge

  • [P1] Existing release automation or saved operator commands that pass release_profile=minimum will fail validation or dispatch after merge, requiring unannounced operator changes during a release.

Maintainer options:

  1. Retain backward-compatible profile dispatch (recommended)
    Add minimum as a deprecated accepted input and normalize it to beta before child workflow dispatch while retaining all new policy behavior.
  2. Land the breaking profile rename
    Merge as written only if the release owner confirms every active caller can be updated before the next release operation.

Next step before merge

  • [P2] The release owner should decide the documented input-compatibility policy, after which the narrow alias repair and exact-head validation are straightforward.

Maintainer decision needed

  • Question: Should the release-profile rename preserve minimum as a compatibility alias for beta, or intentionally break existing release dispatches now?
  • Rationale: The patch changes a documented release-automation input, and only the release owner can confirm whether an immediate breaking rename is acceptable during active release operations.
  • Likely owner: steipete — This decision concerns the established full-release-validation and packaging contract that this person has repeatedly maintained.
  • Options:
    • Preserve the alias (recommended): Accept minimum at existing entry points, normalize it to beta, and document the new preferred name without breaking saved commands.
    • Accept the breaking rename: Remove minimum immediately and require release operators and external automation to update before the next release run.

Security
Cleared: The diff adds no dependency or permission expansion, and the cross-SHA evidence path remains fail-closed behind explicit ancestry, changed-path, manifest, and strict-verifier checks.

Review findings

  • [P1] Preserve the supported minimum release profile — scripts/full-release-validation-at-sha.mjs:139-142
Review details

Best possible solution:

Keep the Code SHA/Release SHA evidence model and strict changelog-only comparison, but preserve minimum as a deprecated alias mapped to beta across the helper and workflow dispatch boundary, with tests for both names.

Do we have a high-confidence way to reproduce the issue?

Yes at source level: current release validation binds reusable product evidence to the exact target SHA, so a later changelog commit causes the full matrix to run again; no live failing release was reproduced during this read-only review.

Is this the best way to solve the issue?

No, not as written: the Code SHA/Release SHA design is the right narrow architecture, but rejecting the existing minimum profile makes the implementation unnecessarily disruptive.

Full review comments:

  • [P1] Preserve the supported minimum release profile — scripts/full-release-validation-at-sha.mjs:139-142
    This validation now rejects release_profile=minimum, even though current main and the public release documentation support that value. Existing saved commands and release automation will stop before dispatch after this merges. Keep minimum as a deprecated alias that normalizes to beta, and cover both names through the workflow boundary.
    Confidence: 0.96

Overall correctness: patch is incorrect
Overall confidence: 0.94

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 6ef3e87583ed.

Label changes

Label changes:

  • add P1: A broken or incompatible release dispatch can block time-sensitive release-manager workflows for hours.
  • add merge-risk: 🚨 compatibility: The PR removes the documented release_profile=minimum input without an alias or deprecation window.
  • add merge-risk: 🚨 automation: The patch changes release workflow dispatch, evidence selection, and strict proof-verification behavior relied on by release automation.
  • add rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • add status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Not applicable: The external-contributor proof gate does not apply because this is a repository-member PR; the supplied exact-head CI and Testbox results remain strong supplemental evidence.

Label justifications:

  • P1: A broken or incompatible release dispatch can block time-sensitive release-manager workflows for hours.
  • merge-risk: 🚨 compatibility: The PR removes the documented release_profile=minimum input without an alias or deprecation window.
  • merge-risk: 🚨 automation: The patch changes release workflow dispatch, evidence selection, and strict proof-verification behavior relied on by release automation.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Not applicable: The external-contributor proof gate does not apply because this is a repository-member PR; the supplied exact-head CI and Testbox results remain strong supplemental evidence.
Evidence reviewed

PR surface:

Tests +204, Docs +67, Config +14, Other +118. Total +403 across 24 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 8 215 11 +204
Docs 7 302 235 +67
Config 1 25 11 +14
Generated 0 0 0 0
Other 8 149 31 +118
Total 24 691 288 +403

What I checked:

Likely related people:

  • steipete: Repeated current-main work covers full release validation, release packaging, post-publish verification, and the root Docker release gate, making this the strongest routing candidate for the compatibility decision. (github.com) (role: release and packaging feature owner; confidence: high; commits: c0f16460d7, 325df3efefe9, 522f3296a71c; files: .github/workflows/full-release-validation.yml, scripts/openclaw-npm-postpublish-verify.ts, scripts/release-check.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@vincentkoc
vincentkoc force-pushed the fix/release-code-sha-flow branch from bc502d8 to 2b14c96 Compare July 13, 2026 05:26
@vincentkoc

Copy link
Copy Markdown
Member Author

Land-ready proof: exact-head CI run 29226335174 passed. Blacksmith Testbox tbx_01kxcr6xmy9t6baedcyk24t0w4 passed 258 focused release-tooling tests across 8 files; workflow validation, docs validation, patch-owned changed gates, and git diff checks passed. Review artifacts validate with no accepted findings. One autoreview claim that beta was not a declared workflow choice was rejected after direct source proof: current main, this PR, the helper validator, and the downstream matrix all accept beta.

@vincentkoc
vincentkoc merged commit 6a0eecd into main Jul 13, 2026
97 checks passed
@vincentkoc
vincentkoc deleted the fix/release-code-sha-flow branch July 13, 2026 05:38
@vincentkoc

Copy link
Copy Markdown
Member Author

Merged via squash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Improvements or additions to documentation maintainer Maintainer-authored PR merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P1 High-priority user-facing bug, regression, or broken workflow. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. scripts Repository scripts size: L status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release validation should separate product code from final changelog cuts

1 participant