NVIDIA / NVIDIA/NemoClaw

openclaw-weixin extension missing after sandbox rebuild in messaging-providers E2E

Open
#10,646 0 comments 0 reactions 0 assignees View on GitHub
area: e2e area: messaging integration: openclaw integration: wechat
Dominant language
TypeScript
Stars
22.5k
Forks
3.1k
Avg merge
1d 1h
Merged PRs (30d)
715

Description

## Outcome

`test/e2e/live/messaging-providers.test.ts` fails at phase 6/8 ("exercise installed Slack, Telegram, and WeChat runtimes") with:

```
Error: installed openclaw-weixin extension is missing
at invariant (file:///tmp/nemoclaw-installed-wechat-runtime-proof.mjs:8:25)
at runInstalledWechatRuntimeProof test/e2e/live/messaging-providers-wechat-runtime-proof.ts:183:3
at test/e2e/live/messaging-providers.test.ts:1101:34
```

By the time the test checks `/sandbox/.openclaw/extensions/openclaw-weixin` for the installed `@tencent-weixin/openclaw-weixin` plugin, it's gone.

## How this was found

While validating PR #10592 (fix for a Slack network-policy conflict on sandbox rebuild), the fix unblocked `messaging-providers` far enough to reach this previously-unreachable phase for the first time. Every prior CI run of this target on record failed earlier (at the Slack policy conflict step), so this WeChat extension-loss bug has likely existed for a while without being observable.

- First observed: run https://github.com/NVIDIA/NemoClaw/actions/runs/33369858248 (job `messaging-providers`), dispatched against PR #10592 head `a392bb067c7b389707a9585b042f8fbfba63362c`.
- Confirmed unrelated to PR #10592's diff: the extension-tracking source (`src/lib/state/openclaw-managed-extensions.ts`) and WeChat channel sources (`src/lib/messaging/channels/wechat/**`) have no changes in the PR and no recent commits (last touched over a month prior).

## Related prior work

This matches the pattern of two previously closed issues about WeChat plugin loss across sandbox rebuild:

- #3852 "fix(nightly): preserve WeChat plugin across rebuild restore"
- #6739 "fix(messaging): lock WeChat runtime graph"

Worth checking whether a regression reintroduced the gap those fixes closed, or whether this is a new code path (e.g. a rebuild triggered earlier in `messaging-providers.test.ts`) that those fixes didn't cover.

## Next steps

- Reproduce with a manual PR/main E2E dispatch of `messaging-providers` (or a narrower repro) and inspect the sandbox extension state immediately before and after each rebuild phase in the test.
- Check whether the managed image cohort used for the failing run actually bakes in `@tencent-weixin/openclaw-weixin`, and whether rebuild handoff logic (`src/lib/onboard/sandbox-create/rebuild-policy-handoff.ts` and related extension registry code) drops the extension directory.

Contributor guide

Open the contributing guide

Research direction

Start with test/e2e/live/messaging-providers.test.ts and messaging-providers-wechat-runtime-proof.ts, reproducing the messaging-providers E2E around phase 6/8. Inspect extension state before and after each rebuild, then read src/lib/state/openclaw-managed-extensions.ts and src/lib/onboard/sandbox-create/rebuild-policy-handoff.ts. Done means @tencent-weixin/openclaw-weixin remains installed at /sandbox/.openclaw/extensions/openclaw-weixin and the WeChat runtime proof passes.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
infrastructure, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.