Skip to content

fix(release): promotion fails when the alpha lacks newer crash diagnostics - #2062

Closed
RomneyDa wants to merge 1 commit into
openclaw:mainfrom
RomneyDa:fix/promotion-pipeline-crash-helper
Closed

RomneyDa wants to merge 1 commit into
openclaw:mainfrom
RomneyDa:fix/promotion-pipeline-crash-helper

Conversation

@RomneyDa

@RomneyDa RomneyDa commented Nov 7, 2026

Copy link
Copy Markdown
Member

What Problem This Solves

Fixes promotion of an older alpha failing after successful UI tests because the current workflow calls a diagnostics script absent from that alpha.

Observed in promotion run 42324398881: Capture-CiTestHostCrashMetadata.ps1 was not found. The Tray UI test step itself succeeded (637 passed, 7 skipped).

User Impact

The existing v2026.11.1-alpha.8 at 04f413d26531d3ea19cb108291334bb3cc5fd6e6 remains the promotion candidate. No new alpha, tag movement, or product-code change is needed. This PR fixes helper resolution; live promotion/publication remains unverified.

Why This Change Was Made

The workflow owns diagnostic collection, while the product checkout deliberately owns the historical alpha. Extract only the helper from immutable GITHUB_SHA into RUNNER_TEMP and invoke it with the existing bounded start time. Do not overwrite the product checkout, load moving main, skip diagnostics, or weaken the CI gate.

The helper itself and its event-field filtering remain unchanged. Extraction failure throws before a stale temporary helper can execute.

Evidence

A disposable-Git regression executes the actual YAML run block. It reproduces the old missing-script failure, then verifies absent and older candidate helpers, main advancing past the pipeline, unchanged checkout/HEAD, timestamp forwarding, and fail-closed extraction. Three cases pass. All 34 promotion cases and actionlint pass.

Shared autoreview (Codex gpt-6.1-sol, high, branch mode against 2812fe5187f64105e297de21377f4a8daae5703d, P0-P3, with unchanged helper source context) completed scoped-clean: no findings, correct verdict, exit 0. Independent implementation/proof-plan assessment; it did not independently run tests or prove Windows runtime behavior. The native reviewer follow-up was unavailable, so the supported shared helper was used.

Change Type

  • Bug fix
  • Feature
  • Refactor
  • Docs or instructions
  • Tests or validation
  • Security hardening
  • Chore or infrastructure

Scope

  • Tray or WinUI UX
  • Windows node capability
  • Local MCP or winnode
  • Gateway, connection, or pairing
  • Setup or onboarding
  • Permissions, privacy, or security
  • Tests, CI, or docs

Required proof pools

  • none: pipeline helper source resolution only; no changed Windows product/UI contract. Required Windows CI and the real promotion remain outstanding.

Validation

  • pwsh -NoProfile -File scripts/test-ci-crash-metadata-source.ps1: 3 cases passed; old workflow failed with the same missing-script error.
  • pwsh -NoProfile -File scripts/test-alpha-promotion.ps1: 34 cases plus workflow contracts passed.
  • actionlint -shellcheck= -pyflakes= .github/workflows/ci.yml: passed.
  • git diff --check: passed.
  • pwsh -NoProfile -File scripts/test-ci-workflow-contract.ps1: updated source checks pass up to the existing Windows-only path filtering assertion; full script not green on macOS.
  • pwsh -NoProfile -File build.ps1 and pwsh -NoProfile -File scripts/setup-dev.ps1 -CheckOnly: blocked, require Windows.
  • dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore: macOS Windows path/API and profile-assumption failures; task-owned run stopped after 45 seconds, not a completed-suite pass.
  • dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore: executed tests hit existing Windows path/API failures on macOS; not a completed-suite pass.

Tests use temporary isolated tray settings. No shared Windows runtime or alpha changed.

Real Behavior Proof

  • Environment tested: macOS, PowerShell, git, actionlint. No Windows event log query.
  • PR head or commit tested: 684c0cf4d8be2549f9b7b49958aec1682d45330e; focused tests ran on byte-identical source before commit.
  • Exact steps or command run: pwsh -NoProfile -File scripts/test-ci-crash-metadata-source.ps1.
  • Evidence after fix: Passed 3 pipeline crash-helper cases: absent/older candidate helper, pinned revision, and failed extraction.
  • Observed result: pipeline helper executes despite missing or different alpha helper; product checkout stays unchanged; missing pinned helper fails before invocation.
  • Screenshot or artifact links verified? N/A, no UI change.
  • Not verified or blocked: full Windows validation, live promotion and GitHub token-only publication.

Security Impact

  • New permissions or capabilities? No.
  • Secrets or tokens handling changed? No.
  • New or changed network calls? No. The UI checkout already fetches full Git history.
  • Command or tool execution surface changed? Yes: diagnostics helper is read from the immutable workflow commit and executed from runner temp.
  • Data access scope changed? No.
  • If any answer is Yes, explain the risk and mitigation: no dynamic helper path or moving branch, no candidate helper execution; existing event ID/time/process whitelist and no-memory-dump behavior stay intact. Git extraction fails closed.

Compatibility and Migration

  • Backward compatible? Yes, supports historical candidates missing the newer helper.
  • Config or environment changes? No.
  • Migration needed? No.
  • If yes, list the exact upgrade steps: after landing, start a fresh promotion selecting the same existing alpha. An unchanged rerun uses the broken workflow.

Review Conversations

  • I replied to or resolved every bot review conversation addressed by this PR.
  • I left unresolved only conversations that still need maintainer judgment.

@clawsweeper

clawsweeper Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@clawsweeper clawsweeper Bot added clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. P2 Normal priority bug or improvement with limited blast radius. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed clawsweeper:intake:bug Preliminary submission classification; full source review pending. clawsweeper:intake:needs-repro Preliminary submission classification; full source review pending. labels Nov 7, 2026
@clawsweeper

clawsweeper Bot commented Nov 7, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge.

What this changes

This PR loads crash diagnostics from the pinned workflow revision while preserving the historical alpha checkout.

Example: Promote v2026.11.1-alpha.8 at 04f413d using a newer workflow.

  • Before: UI tests succeed, but diagnostics fails because the alpha lacks Capture-CiTestHostCrashMetadata.ps1.
  • After: The workflow extracts its own helper into runner temporary storage and executes it without changing the alpha checkout.

Review scores

Measure Result What it means
Overall readiness 🦐 gold shrimp (3/6) A focused, source-verified repair with meaningful regression coverage and no identified defect; operational evidence remains limited to the supplied harness.
Proof confidence 🦐 gold shrimp (3/6) This maintainer-authored PR is outside the ordinary contributor proof gate; supplied macOS output exercises the actual YAML block with real Git and a fixture helper, while hosted Windows diagnostics and live promotion remain unverified.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Product

Kind: Bug fix · Worth it: Yes · Fix scope: Complete
User problem: Release managers cannot prepare an older alpha when current CI expects a diagnostics helper added after that alpha.
Reason: The failure violates the established candidate/pipeline ownership contract, and maintainer-authored direction authorizes the narrow repair.

Regression provenance

Regression provenance — verified: source commit 1d8e42687247 by Karen; canonical PR #1980 (blame-to-merge-commit).

Merge readiness

✅ Ready for maintainer review

Keep open: this maintainer-authored PR repairs a confirmed promotion failure still present on main, with no actionable code findings.

Priority: P2
Reviewed head: 684c0cf4d8be2549f9b7b49958aec1682d45330e

Before merge

None.

Findings

None.

Tests

  • Missing end-to-end proof: Current-head hosted promotion has not demonstrated helper execution against v2026.11.1-alpha.8; the supplied base-fail/head-pass evidence covers the disposable Git harness.
Agent review details

How this fits together

Alpha promotion supplies separate product and pipeline revisions to reusable CI; candidate source supplies the app and tests, while the pipeline orchestrates validation and diagnostics.

flowchart TD
 A[Promotion dispatch] --> B[Pinned pipeline revision]
 A --> C[Historical alpha checkout]
 C --> D[UI tests]
 B --> E[Extract diagnostics helper]
 D --> F[Bounded crash metadata collection]
 E --> F
 F --> G[CI Gate]
Loading

Technical review

Best possible solution:

Keep diagnostics in the existing workflow owner and extract its pinned helper without modifying candidate product source.

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

Main invokes a helper absent from the selected alpha, and the linked hosted job confirms diagnostics failure immediately after successful UI tests; no target code was executed during this review.

Is this the best way to solve the issue?

This is a focused repair using existing workflow and Git ownership, with no additional checkout, moving-branch dependency, product-source replacement, or diagnostics bypass.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against 2812fe5187f6.

Provenance checked

  • Bounded Tray UI crash diagnostics keeps the original intent (1d8e426: Collect selected non-memory crash metadata around Tray UI tests, as verified in the merged change and retained helper.)
  • Candidate and pipeline revision separation keeps the original intent (94006b3: Promote exact published alpha product source while the selected main pipeline owns validation and publication orchestration.)
  • Always-running workflow validation keeps the original intent (5d19239: Keep lightweight workflow contracts and fail-closed CI admission active while allowing narrowly classified documentation changes to skip heavy lanes.)

Testing

Proof path: in-process harness.

Security

None.

Evidence

What I checked:

Likely related people:

  • Karen: Raw commit 94006b3 adds .github/workflows/ci.yml:593 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: 94006b3672a0; files: .github/workflows/ci.yml)
  • Dallin Romney: Raw commit 8ca63eb adds .github/workflows/ci.yml:2023 relative to its recorded parents. This identifies author metadata, not feature responsibility or a PR merger. (role: source-line author; confidence: high; commits: 8ca63eb746bf; files: .github/workflows/ci.yml)

Preflight source

Source unknown. Source comparison at the observed PR snapshot only. Completion is self-reported; body, policy, tests, execution, and report bytes are not verified.

Review metrics

Metric Value Why it matters
Change scope Workflow +10/-2 lines; tests +81/-1 lines The small execution change is supported by a focused Git-history regression and existing workflow ownership guards.

Labels

Label changes:

  • add P2: The failure blocks preparation of historical alpha candidates but does not affect installed Companion runtime behavior.
  • add rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR.

Label justifications:

  • P2: The failure blocks preparation of historical alpha candidates but does not affect installed Companion runtime behavior.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR.

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Link current-head hosted promotion output showing the pinned helper executing while the product checkout remains at the selected alpha SHA.

Rating scale

6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior.

Workflow

ClawSweeper edits this one comment on every review. Comment @clawsweeper re-review for a fresh review only. Repair and merge execution lanes are retired.

Reviewed November 6, 2026, 11:16 PM ET / November 7, 2026, 04:16 UTC.

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

Labels

P2 Normal priority bug or improvement with limited blast radius. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant