diff --git a/config/env-var-count-budget.txt b/config/env-var-count-budget.txt index 5e27e882739b..97b4db0749b0 100644 --- a/config/env-var-count-budget.txt +++ b/config/env-var-count-budget.txt @@ -1,3 +1,3 @@ # Distinct OPENCLAW_* names in production source under src, packages, and extensions. # Ratchet: lower this number when cleanup removes names; never raise it. -530 +529 diff --git a/src/plugins/compat/registry.ts b/src/plugins/compat/registry.ts index 865c4dab8e81..29de355b2e63 100644 --- a/src/plugins/compat/registry.ts +++ b/src/plugins/compat/registry.ts @@ -660,22 +660,6 @@ const PLUGIN_COMPAT_RECORDS = [ releaseNote: "The process-global API-provider publication facade was removed; provider plugins now publish through their lifecycle-owned registration, and host runtimes register directly on their prepared ApiRegistry.", }, - { - code: "legacy-before-agent-start", - status: "removed", - owner: "sdk", - introduced: "2026-04-24", - deprecated: "2026-04-24", - warningStarts: "2026-04-24", - removeAfter: "2026-07-24", - replacement: "`before_model_resolve` and `before_prompt_build` hooks", - docsPath: "/plugins/sdk-migration", - surfaces: ["plugin hooks", "plugins inspect", "status diagnostics"], - diagnostics: ["plugin compatibility notice"], - tests: ["src/plugins/compat/registry.test.ts"], - releaseNote: - "Legacy `before_agent_start` hook compatibility was removed; plugins must use `before_model_resolve` and `before_prompt_build`.", - }, { code: "legacy-deactivate-hook-alias", status: "deprecated", @@ -796,22 +780,6 @@ const PLUGIN_COMPAT_RECORDS = [ releaseNote: "Session/transcript file APIs were removed with the SQLite session storage flip; plugins now use session identity and Gateway/runtime session helpers.", }, - { - code: "legacy-root-sdk-import", - status: "removed", - owner: "sdk", - introduced: "2026-04-24", - deprecated: "2026-04-24", - warningStarts: "2026-04-24", - removeAfter: "2026-07-24", - replacement: "focused `openclaw/plugin-sdk/` imports", - docsPath: "/plugins/sdk-migration", - surfaces: ["openclaw/plugin-sdk", "openclaw/plugin-sdk/compat"], - diagnostics: ["OPENCLAW_PLUGIN_SDK_COMPAT_DEPRECATED"], - tests: ["src/plugins/compat/registry.test.ts"], - releaseNote: - "The deprecated compatibility surfaces tracked by legacy-root-sdk-import were removed in the July 2026 sweep.", - }, { code: "hook.before_tool_call.terminal-block-approval", status: "active", @@ -1049,38 +1017,6 @@ const PLUGIN_COMPAT_RECORDS = [ diagnostics: ["test-only compatibility path"], tests: ["src/plugins/config-state.test.ts"], }, - { - code: "provider-auth-env-vars", - status: "removed", - owner: "setup", - introduced: "2026-04-24", - deprecated: "2026-04-24", - warningStarts: "2026-04-24", - removeAfter: "2026-07-24", - replacement: "`setup.providers[].envVars` and `providerAuthChoices`", - docsPath: "/plugins/manifest", - surfaces: ["openclaw.plugin.json providerAuthEnvVars", "provider setup"], - diagnostics: ["manifest compatibility diagnostic"], - tests: ["src/plugins/compat/registry.test.ts"], - releaseNote: - "The deprecated compatibility surfaces tracked by provider-auth-env-vars were removed in the July 2026 sweep.", - }, - { - code: "channel-env-vars", - status: "removed", - owner: "channel", - introduced: "2026-04-24", - deprecated: "2026-04-24", - warningStarts: "2026-04-24", - removeAfter: "2026-07-24", - replacement: "`channelConfigs..schema` and setup descriptors", - docsPath: "/plugins/manifest", - surfaces: ["openclaw.plugin.json channelEnvVars", "channel setup"], - diagnostics: ["manifest compatibility diagnostic"], - tests: ["src/plugins/compat/registry.test.ts"], - releaseNote: - "The deprecated compatibility surfaces tracked by channel-env-vars were removed in the July 2026 sweep.", - }, { code: "activation-agent-harness-hint", status: "active", diff --git a/src/plugins/status.test.ts b/src/plugins/status.test.ts index 4478c98f442d..3d25b008276a 100644 --- a/src/plugins/status.test.ts +++ b/src/plugins/status.test.ts @@ -43,7 +43,6 @@ const withBundledPluginEnablementCompatMock = vi.fn(); const listImportedBundledPluginFacadeIdsMock = vi.fn(); const listImportedRuntimePluginIdsMock = vi.fn(); let buildPluginSnapshotReport: typeof import("./status.js").buildPluginSnapshotReport; -let buildPluginRegistrySnapshotReport: typeof import("./status.js").buildPluginRegistrySnapshotReport; let buildPluginDiagnosticsReport: typeof import("./status.js").buildPluginDiagnosticsReport; let buildPluginInspectReport: typeof import("./status.js").buildPluginInspectReport; let buildAllPluginInspectReports: typeof import("./status.js").buildAllPluginInspectReports; @@ -388,7 +387,6 @@ describe("plugin status reports", () => { buildPluginDiagnosticsReport, buildPluginCompatibilityWarnings, buildPluginInspectReport, - buildPluginRegistrySnapshotReport, buildPluginSnapshotReport, formatPluginCompatibilityNotice, summarizePluginCompatibility, @@ -476,39 +474,6 @@ describe("plugin status reports", () => { }); }); - it("carries installed-index compatibility metadata into registry snapshot reports", () => { - loadPluginRegistrySnapshotWithMetadataMock.mockReturnValue({ - snapshot: createInstalledPluginIndexSnapshot([ - { - pluginId: "provider-env-plugin", - manifestPath: "/tmp/provider-env-plugin/openclaw.plugin.json", - manifestHash: "manifest-hash", - rootDir: "/tmp/provider-env-plugin", - origin: "workspace", - enabled: true, - startup: { - sidecar: false, - memory: false, - deferConfiguredChannelFullLoadUntilAfterListen: false, - agentHarnesses: [], - }, - compat: ["provider-auth-env-vars"], - }, - ]), - source: "derived", - diagnostics: [], - }); - loadPluginManifestRegistryForInstalledIndexMock.mockReturnValue({ - plugins: [{ id: "provider-env-plugin", name: "Provider Env Plugin" }], - diagnostics: [], - }); - - const report = buildPluginRegistrySnapshotReport({ config: {} }); - - expect(report.plugins[0]?.id).toBe("provider-env-plugin"); - expect(report.plugins[0]?.compat).toEqual(["provider-auth-env-vars"]); - }); - it("uses a metadata snapshot load for snapshot reports", () => { buildPluginSnapshotReport({ config: {}, workspaceDir: "/workspace" });