Skip to content

fix: cloned environments load plugins from their source - #215

Merged
shakkernerd merged 2 commits into
openclaw:mainfrom
Marvinthebored:fix/clone-plugin-registry
Sep 13, 2026
Merged

shakkernerd merged 2 commits into
openclaw:mainfrom
Marvinthebored:fix/clone-plugin-registry

Conversation

@Marvinthebored

@Marvinthebored Marvinthebored commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Related: #98

What Problem This Solves

Resolves a problem where cloned environments load registered plugins from the source environment instead of their own copy. Cloning must also preserve normally copied local plugins and environments with a missing managed plugin payload.

Why This Change Was Made

The shared regular and simulation clone path relocates plugin registrations before publishing the clone. It validates the executable installation path against the copied environment and retains original project or archive paths as provenance for managed installations. Both the legacy registry and modern config_machine_state representation preserve their other fields and existing wrapper/revision.

User Impact

Clones use their own plugin files, including linked files owned by the copied environment. Missing managed payloads retain registrations pointing into the clone for diagnosis or repair. Source plugin files and databases stay unchanged, and active paths or writable databases that escape the copied environment are rejected.

This addresses the plugin registry isolation portion of #98.

Evidence

  • All 25 clone tests, 380 library tests, 40 migration tests, and five environment-root isolation tests pass on Crabbox. Coverage includes both registry layouts, directory/archive/npm-pack provenance, missing payloads, owned links and aliases, escaping paths, database links, and simulation clones.
  • cargo fmt --check, cargo check --workspace --all-targets --locked, and git diff --check pass.
  • Real OpenClaw 2026.9.4 directory and archive installs cloned successfully. plugins inspect --runtime --json imported each clone's module and selected its clone-only manifest change. A missing payload remained cloneable, and repair in the target loaded target-owned code. Source database bytes, plugin files, original projects, and archive bytes remained unchanged.
  • Hosted CI also exercises the platform and packaging paths. Its two macOS npm fixture jobs reject an empty MACOS_TEAM_ID configuration variable in fork CI before invoking signing tools. The unchanged validator on exact main 1e9b731e3cd70eef565e13771bfcb743f4a707b9 reproduces that argument error. Those jobs test the fixed published v0.2.39 binary; the workflow, fixture, and validator are unchanged by this PR. The separate CI repair is tracked in fix: verify macOS npm fixtures on fork pull requests #216.

All task-owned Rust builds, tests, and live consumer checks ran on Crabbox. No local Rust checks were run.

@clawsweeper

clawsweeper Bot commented Sep 11, 2026

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

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

ClawSweeper review blocked

Automated review did not run, so no review verdict was produced.

Reason: The input-safety check rejected material in this revision. No detected value, path, or scanner output is reproduced here.

ClawSweeper will not retry this unchanged revision.

Next step: If this is a genuine credential, remove and rotate it. If it is an intentional test fixture, a maintainer must review and qualify it.

View the workflow run.

@shakkernerd
shakkernerd force-pushed the fix/clone-plugin-registry branch from d674aa3 to cc3e397 Compare September 13, 2026 21:58
@shakkernerd shakkernerd self-assigned this Sep 13, 2026
@shakkernerd
shakkernerd merged commit 3f50e7c into openclaw:main Sep 13, 2026
8 of 10 checks passed
@shakkernerd

Copy link
Copy Markdown
Member

Fixed: environment clones use their own plugin files while preserving copied local installations, missing managed plugin records, and source data.

With thanks to @Marvinthebored.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants