diff --git a/docs/plugins/building-extensions.md b/docs/plugins/building-extensions.md index e1cc4cf9461..768b48a14a8 100644 --- a/docs/plugins/building-extensions.md +++ b/docs/plugins/building-extensions.md @@ -131,10 +131,10 @@ export { MyChannelRuntime } from "./src/runtime.js"; export { internalHelper } from "./src/helpers.js"; ``` -**Self-import guardrail**: never import your own extension through -`openclaw/plugin-sdk/my-channel` from production files. Route internal imports -through `./api.ts` or `./runtime-api.ts` instead. The SDK subpath is the -external contract only. +**Self-import guardrail**: never import your own extension back through its +published SDK contract path from production files. Route internal imports +through `./api.ts` or `./runtime-api.ts` instead. The SDK contract is for +external consumers only. ## Step 5: Add a plugin manifest diff --git a/test/plugin-extension-import-boundary.test.ts b/test/plugin-extension-import-boundary.test.ts index ed52dbe49ae..254b3613797 100644 --- a/test/plugin-extension-import-boundary.test.ts +++ b/test/plugin-extension-import-boundary.test.ts @@ -27,12 +27,6 @@ describe("plugin extension import boundary inventory", () => { expect(inventory.some((entry) => entry.file === "src/plugins/web-search-providers.ts")).toBe( false, ); - expect(inventory).toContainEqual( - expect.objectContaining({ - file: "src/plugins/runtime/runtime-signal.ts", - resolvedPath: "extensions/signal/runtime-api.js", - }), - ); }); it("ignores plugin-sdk boundary shims by scope", async () => {