Skip to content

fix(ci): publish locale refreshes through exact merge#103625

Merged
steipete merged 1 commit into
mainfrom
codex/fix-locale-refresh-prs
Jul 10, 2026
Merged

fix(ci): publish locale refreshes through exact merge#103625
steipete merged 1 commit into
mainfrom
codex/fix-locale-refresh-prs

Conversation

@steipete

Copy link
Copy Markdown
Contributor

Closes #103570

What Problem This Solves

Fixes an issue where Control UI and Native App locale refreshes would pass generation and validation, then fail when their finalizers pushed generated commits directly to protected main. The exact-merge ruleset rejected every attempt, discarded the generated updates with the runner, and left release CI red.

Why This Change Was Made

Both finalizers now call one shared generated-PR action. Each workflow resolves the current default-branch SHA once, pins every locale worker and finalizer to it, and refreshes its complete canonical locale inventory. The action mints the existing primary or fallback OpenClaw GitHub App token with only contents and pull-request write permission, conservatively replays generated blobs onto the latest main without overwriting concurrent changes, publishes through an exact force lease, and verifies the same-repository PR reaches that exact head.

Generated merges trigger one full reconciliation run; a no-change result produces no new commit. Remote operations are noninteractive and bounded. Ruleset failures, unexpected branch movement, divergent ancestry, and unresolved PR state fail closed. Stale no-diff PRs are made unmergeable with a leased branch update rather than an unsafe close mutation. The default workflow token and every checkout remain read-only.

The workflow does not bypass repository rules or auto-merge generated changes.

User Impact

Maintainers can review and land generated locale updates through the normal exact-merge path. Locale refresh workflows no longer spend minutes retrying an impossible direct push, and translation updates are not lost with the runner.

Evidence

  • Before: Control UI Locale Refresh 29077835412 passed all 19 locale jobs, then failed only its direct-main finalizer.
  • Before: Native App Locale Refresh 29077245271 passed all 21 locale jobs, then failed only its direct-main finalizer.
  • pnpm test test/scripts/ci-workflow-guards.test.ts test/scripts/test-projects.test.ts: 227/227 passed, including conservative replay, overlap deferral, and stale PR-head convergence fixtures (AWS Crabbox run_0b406ff1686f).
  • pnpm check:workflows: actionlint, zizmor, and composite interpolation checks passed (AWS Crabbox run_082ec4b28b3a).
  • pnpm check:changed -- <changed files>: passed on the final rebased tree (AWS Crabbox run_7b43088bb505).
  • Fresh autoreview and independent manual review: no actionable findings.
  • git diff --check: passed.

AI-assisted: yes, implemented with Codex and reviewed against the repository's workflow and landing contracts. No agent transcript is included.

@openclaw-barnacle openclaw-barnacle Bot added scripts Repository scripts size: XL maintainer Maintainer-authored PR labels Jul 10, 2026

Copy link
Copy Markdown
Contributor Author

Land-ready proof for exact head 8326745c7953d9c8d32d79a75fce79d8a1763ade:

  • CI run 29085802782: all 54 jobs completed successfully or were intentionally skipped.
  • Blacksmith Testbox 29085802799, ARM Testbox 29085802775, Build Artifacts Testbox 29085802761, Workflow Sanity, CodeQL, and OpenGrep: green.
  • AWS Crabbox run_0b406ff1686f: 227/227 focused tests passed, including conservative replay, overlap deferral, and stale PR-head convergence fixtures.
  • AWS Crabbox run_082ec4b28b3a: pnpm check:workflows passed.
  • AWS Crabbox run_7b43088bb505: final exact-tree pnpm check:changed -- <six changed files> passed.
  • Fresh autoreview and independent manual review: no actionable findings.
  • Repo-native review artifacts validated; OPENCLAW_TESTBOX=1 scripts/pr prepare-run 103625 passed with exact hosted-gate evidence.

Known proof gaps: none.

@steipete
steipete merged commit bcf2798 into main Jul 10, 2026
106 of 108 checks passed
@steipete
steipete deleted the codex/fix-locale-refresh-prs branch July 10, 2026 10:25
@steipete

Copy link
Copy Markdown
Contributor Author

Merged via squash.

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: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Locale refresh workflows cannot publish generated updates through exact merge

1 participant