$ the-wire · showcase
ocm upgrade simulations survive cleanup failures, legacy config migration unblocked
By RepoJournal · Filed · About OpenClaw
This week's ocm fixes ensure that upgrade simulations and migrations report true candidate outcomes even when cleanup or legacy config repair fails.
Two fixes in the ocm CLI change how `ocm upgrade simulate` reports failures. Previously, a user could see a successful candidate validation reported as failed when only removal of the disposable simulation environment or runtime failed [1]. The result is now preserved when cleanup fails; cleanup failures still produce a failed check and a non-zero process exit, so automation isn't silently misled. A separate fix [2] addresses local checkout simulations failing during cleanup: when validating an exact local OpenClaw checkout, generated ignored build outputs used to prevent worktree cleanup, causing a functionally successful candidate to be reported as failed. Cleanup now verifies the worktree is the canonical path before removal.
The `ocm upgrade` command no longer rejects migratable legacy OpenClaw config before the target release can run its supported repair [3]. Target config repair now runs inside the snapshot-backed upgrade transaction before managed Codex candidate validation, and a genuine candidate failure still restores the snapshot, so failed repairs don't leave a half-migrated config behind.
In the main OpenClaw repo, a plugin-loading fix [4] preserves the original missing-export diagnostic across retries. Node retains a failed ESM job, so a later require could report `ERR_INTERNAL_ASSERTION` on Node 22.23.2 or `ERR_REQUIRE_ESM`, making the outcome depend on earlier load attempts in the same process. The fix prevents an invalid plugin from being accepted as loaded and keeps the diagnostic intact across retries. Also, Slack events intentionally rejected during message preparation now record the reason and routing identifiers [5], so operators see why an inbound event was rejected instead of watching it vanish.
The docs repo moves to retire selected translated locale pages without model calls [6], removing 712 counterparts across 20 locales in a single planned run, using a source revision that predates the recent guide retirements. The Control UI locale refresh is a chore with no direct user-facing change [7].
Action items
- → Update ocm to include the simulation cleanup fixes before relying on `ocm upgrade simulate` exit codes in automation openclaw/ocm [immediate]
- → Verify plugin retry behavior in long-lived processes, especially on Node 22.23.2 openclaw/openclaw [plan]
References
- [1] fix: preserve simulation result when cleanup fails ↗ openclaw/ocm
- [2] fix: local checkout simulations fail during cleanup ↗ openclaw/ocm
- [3] fix: upgrades no longer reject migratable legacy config ↗ openclaw/ocm
- [4] fix(plugins): preserve plugin load errors across retries ↗ openclaw/openclaw
- [5] fix(slack): surface pre-dispatch message rejections ↗ openclaw/openclaw
- [6] feat(i18n): retire selected locale pages without model calls ↗ openclaw/docs
- [7] chore(ui): refresh control ui locales ↗ openclaw/openclaw