Skip to content

fix(release): prevent stale beta validation evidence#103798

Merged
steipete merged 4 commits into
mainfrom
codex/release-validation-harnesses
Jul 10, 2026
Merged

fix(release): prevent stale beta validation evidence#103798
steipete merged 4 commits into
mainfrom
codex/release-validation-harnesses

Conversation

@steipete

@steipete steipete commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Related: #103144

What Problem This Solves

Resolves a problem where release maintainers validating an exact beta candidate could receive stale, incomplete, or cross-build evidence and only discover it late in publication.

Why This Change Was Made

Makes the release-note verifier preserve real squash-revert targets, recognize the conventional revert body emitted by GitHub, and ignore nested revert markers. It also documents the installer smoke contract next to the enforced doctor checks. Concurrent PR #103796 absorbed the upgrade-proxy, installer-evidence, and Codex restart-harness fixes from the original stack; this PR now contains only the remaining upstream fixes. The current main workflow separately pins validated Kova revision 24c26969e57d4d49f9d1a5071af85dd3d79daa2d at both invocation sites.

User Impact

Release maintainers get accurate contribution-ledger evidence when merged pull requests are later reverted through either supported squash-revert form. Product runtime behavior is unchanged.

Evidence

  • Reduced exact-head focused release-note suite: 80 tests passed in Testbox run 29106328518.
  • Whole-branch changed gate (typecheck, lint, import cycles, policy guards): passed in Testbox run 29105126333.
  • Fresh whole-branch structured autoreview: clean, no accepted/actionable findings.
  • Exact-candidate release-branch suite: 182 tests passed in Testbox run 29095809729.
  • Exact-candidate broad release validation: Crabbox run_c6f74d8162f9; check:changed passed.
  • Exact-head main-port broad gate: Testbox run 29100388591.
  • Full Release Validation for the final release candidate follows after this workflow pin lands on main.

@openclaw-barnacle openclaw-barnacle Bot added scripts Repository scripts docker Docker and sandbox tooling extensions: qa-lab size: S maintainer Maintainer-authored PR labels Jul 10, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bfb5ef0837

ℹ️ 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".

Comment on lines +325 to +335
const messageIsRevert = /^(?:[a-z][a-z0-9-]*(?:\([^)]+\))?!?:\s*)?revert\b/i.test(
paragraphs[0] ?? "",
);
for (const [index, paragraph] of paragraphs.entries()) {
const revertedHash = paragraph.match(/^This reverts commit ([0-9a-f]{7,40})\.$/i)?.[1];
if (!revertedHash) {
continue;
}
// GitHub squash messages can embed a reverted intermediate commit. Its
// marker follows the corresponding bullet and does not revert the squash.
if (!messageIsRevert && /^\*\s+Revert\b/i.test(paragraphs[index - 1] ?? "")) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Pass the subject into revert-marker detection

When a squash-merge revert has a subject like chore: revert ... or Revert ... (#85527) and a body whose marker follows * Revert ..., this helper now skips the marker because it only sees the body in sourceCommits/revertedCommitState (standardRevertedHash(body)). The new tests pass the full subject + body, but the production caller does not, so those revert commits are treated as active changes and their reverted PRs can remain in beta/release evidence.

Useful? React with 👍 / 👎.

@steipete steipete self-assigned this Jul 10, 2026
@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation agents Agent runtime and tooling size: XL and removed size: S labels Jul 10, 2026
@steipete
steipete requested a review from a team as a code owner July 10, 2026 16:15
@openclaw-barnacle openclaw-barnacle Bot added the commands Command implementations label Jul 10, 2026
@steipete
steipete force-pushed the codex/release-validation-harnesses branch from 5eafb26 to 859ee7d Compare July 10, 2026 16:17
@openclaw-barnacle openclaw-barnacle Bot added size: S and removed docs Improvements or additions to documentation commands Command implementations docker Docker and sandbox tooling agents Agent runtime and tooling extensions: qa-lab size: XL labels Jul 10, 2026
@steipete
steipete merged commit e43f225 into main Jul 10, 2026
97 of 101 checks passed
@steipete
steipete deleted the codex/release-validation-harnesses branch July 10, 2026 16:26
@steipete

Copy link
Copy Markdown
Contributor Author

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 11, 2026
* fix(release): ignore nested squash revert markers

* fix(release): preserve squash revert targets

* docs(release): state installer doctor contract

* fix(release): recognize conventional squash reverts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintainer Maintainer-authored PR scripts Repository scripts size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant