diff --git a/.gitmodules b/.gitmodules index a556c1c..aee85ad 100644 --- a/.gitmodules +++ b/.gitmodules @@ -110,3 +110,7 @@ path = plugins/clawrouter url = https://github.com/BlockRunAI/ClawRouter.git shallow = true +[submodule "plugins/nemoclaw"] + path = plugins/nemoclaw + url = https://github.com/NVIDIA/NemoClaw.git + shallow = true diff --git a/README.md b/README.md index 60092fa..0f80291 100644 --- a/README.md +++ b/README.md @@ -24,27 +24,27 @@ | Metric | Result | | ---------------------- | ------------------------------------------------------------------------------------------------------------------- | -| Fixtures | 32 | +| Fixtures | 33 | | Hard breakages | 0 | | Warnings | 68 | | Suggestions | 154 | | Issues | 222 | | P0 issues | [🔴 P0 5](reports/crabpot-issues.md#p0-live-issues) | | P1 issues | [🟠 P1 83](reports/crabpot-issues.md#triage-summary) | -| Live issues | 5 total / 5 P0 | -| Compat gaps | 49 | -| Deprecation warnings | 27 | -| Inspector gaps | 113 | -| Upstream metadata | 28 | -| Contract probes | 170 | +| Live issues | 4 total / 4 P0 | +| Compat gaps | 3 | +| Deprecation warnings | 28 | +| Inspector gaps | 117 | +| Upstream metadata | 29 | +| Contract probes | 175 | | Policy failures | 0 | | Policy warnings | 20 | | Ref diff failures | 0 | | Profile failures | 0 | | Execution probes | 12 pass / 0 fail / 18 blocked | -| Synthetic probes | 288 ready / 0 blocked / 288 total | -| Cold import | 3 ready / 36 blocked / 39 entrypoints | -| Workspace plan | 39 entrypoints / 19 installs / 10 builds | +| Synthetic probes | 292 ready / 0 blocked / 292 total | +| Cold import | 3 ready / 37 blocked / 40 entrypoints | +| Workspace plan | 40 entrypoints / 19 installs / 11 builds | | Platform risks | 14 Windows / 14 container | | Jiti loader candidates | 21 | | Import loop | p50 1534ms / p95 1576ms / plugin delta RSS 1.5MB / plugin delta CPU 61ms / OpenClaw import 100.7ms / activate 0.3ms | @@ -54,23 +54,23 @@ | Phase | p50 | p95 | | -------------------------- | ------- | ------- | -| Import (`full`) | 100.7ms | 101.5ms | -| Activate (`full:register`) | 0.3ms | 0.3ms | +| Import (`full`) | 315.9ms | 316.1ms | +| Activate (`full:register`) | 0.1ms | 0.2ms | ### Top Discovered Issues | Severity | Class | Fixture | Code | Decision | Title | | -------- | ------------- | ---------------- | ------------------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | 🔴 P0 | live-issue | clawmetry | sdk-export-missing | core-compat-adapter | [clawmetry: plugin SDK import aliases are missing from target package exports](reports/crabpot-issues.md#p0-live-issues) | -| 🔴 P0 | live-issue | codex-app-server | sdk-export-missing | core-compat-adapter | [codex-app-server: plugin SDK import aliases are missing from target package exports](reports/crabpot-issues.md#p0-live-issues) | | 🔴 P0 | live-issue | honcho | sdk-export-missing | core-compat-adapter | [honcho: plugin SDK import aliases are missing from target package exports](reports/crabpot-issues.md#p0-live-issues) | | 🔴 P0 | live-issue | hyperspell | unknown-hook-name | core-compat-adapter | [hyperspell: fixture uses a hook missing from target OpenClaw](reports/crabpot-issues.md#p0-live-issues) | | 🔴 P0 | live-issue | yuanbao | sdk-export-missing | core-compat-adapter | [yuanbao: plugin SDK import aliases are missing from target package exports](reports/crabpot-issues.md#p0-live-issues) | -| 🟠 P1 | compat-gap | a2a-gateway | missing-compat-record | core-compat-adapter | [a2a-gateway: compat-dependent behavior lacks registry coverage](reports/crabpot-issues.md#compat-gaps) | | 🟠 P1 | inspector-gap | a2a-gateway | registration-capture-gap | inspector-follow-up | [a2a-gateway: runtime registrations need capture before contract judgment](reports/crabpot-issues.md#inspector-proof-gaps) | -| 🟠 P1 | compat-gap | agentchat | missing-compat-record | core-compat-adapter | [agentchat: compat-dependent behavior lacks registry coverage](reports/crabpot-issues.md#compat-gaps) | -| 🟠 P1 | compat-gap | clawmetry | missing-compat-record | core-compat-adapter | [clawmetry: compat-dependent behavior lacks registry coverage](reports/crabpot-issues.md#compat-gaps) | | 🟠 P1 | compat-gap | clawmetry | missing-compat-record | core-compat-adapter | [clawmetry: compat-dependent behavior lacks registry coverage](reports/crabpot-issues.md#compat-gaps) | +| 🟠 P1 | inspector-gap | clawmetry | registration-capture-gap | inspector-follow-up | [clawmetry: runtime registrations need capture before contract judgment](reports/crabpot-issues.md#inspector-proof-gaps) | +| 🟠 P1 | inspector-gap | clawrouter | registration-capture-gap | inspector-follow-up | [clawrouter: runtime registrations need capture before contract judgment](reports/crabpot-issues.md#inspector-proof-gaps) | +| 🟠 P1 | inspector-gap | codex-app-server | registration-capture-gap | inspector-follow-up | [codex-app-server: runtime registrations need capture before contract judgment](reports/crabpot-issues.md#inspector-proof-gaps) | +| 🟠 P1 | inspector-gap | connectclaw | registration-capture-gap | inspector-follow-up | [connectclaw: runtime registrations need capture before contract judgment](reports/crabpot-issues.md#inspector-proof-gaps) | ## What this tests diff --git a/crabpot.config.json b/crabpot.config.json index c5d9ac9..a16762a 100644 --- a/crabpot.config.json +++ b/crabpot.config.json @@ -338,6 +338,27 @@ }, "why": "Credential-free generated fixture covering the public OpenClaw plugin API surface across hooks, registrars, provider capabilities, setup metadata, manifest contracts, and SDK import compatibility." }, + { + "id": "nemoclaw", + "name": "NemoClaw", + "repo": "https://github.com/NVIDIA/NemoClaw.git", + "path": "plugins/nemoclaw", + "subdir": "nemoclaw", + "priority": "high", + "seams": [ + "provider-capability", + "prompt-mutation", + "security-audit", + "process-spawn", + "command", + "config-schema" + ], + "expect": { + "hooks": ["before_agent_start", "before_tool_call"], + "registrations": ["registerCommand", "registerProvider"] + }, + "why": "NVIDIA OpenShell fixture covering sandbox-aware runtime context injection, managed inference provider registration, slash-command migration/status flows, OpenShell CLI probing, and secret-blocking tool-call policy." + }, { "id": "memory-tencentdb", "name": "TencentDB Agent Memory", diff --git a/plugins/README.md b/plugins/README.md index cf1bee9..fd81d85 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -59,6 +59,7 @@ directory: "/plugins/" | `honcho` | `plugins/honcho` | git | high | memory runtime, gateway lifecycle, subagents | Memory-runtime fixture covering plugin-entry aliases, memory runtime/prompt sections, gateway lifecycle, subagent capture, and external memory tools. | | `composio` | `plugins/composio` | git | high | dynamic tool, MCP, external API | NPM-installed dynamic tool fixture for Composio/MCP, prompt context injection, CLI setup, external API auth, and remote tool catalogs. | | `kitchen-sink` | `plugins/kitchen-sink` | git | high | plugin API surface, hooks, manifest contracts | Credential-free generated fixture covering hooks, registrars, provider capabilities, setup metadata, manifest contracts, and SDK import compatibility. | +| `nemoclaw` | `plugins/nemoclaw` | git | high | provider capability, runtime context, security policy | NVIDIA OpenShell fixture covering sandbox-aware runtime context injection, managed inference provider registration, slash-command migration/status flows, OpenShell CLI probing, and secret-blocking tool-call policy. | | `memory-tencentdb` | `plugins/memory-tencentdb` | npm | high | memory runtime, vector store, lifecycle | TencentDB memory fixture covering recall/capture hooks, SQLite/TCVDB storage, cleanup lifecycle, and seed/export CLI commands. | | `ddingtalk` | `plugins/ddingtalk` | git | high | channel, media, webhook | DingTalk channel fixture covering enterprise IM auth, channel setup, media handling, and webhook-style ingress. | | `dingtalk-connector` | `plugins/dingtalk-connector` | git | high | channel, streaming, gateway methods | Official DingTalk connector fixture covering Stream-mode ingress, AI Card replies, multi-account access policy, gateway RPC methods, and packaged channel skills. | diff --git a/plugins/nemoclaw b/plugins/nemoclaw new file mode 160000 index 0000000..f9d21af --- /dev/null +++ b/plugins/nemoclaw @@ -0,0 +1 @@ +Subproject commit f9d21afa193c2b67cb55e79eca03db40f0fbe836 diff --git a/reports/crabpot-capture.json b/reports/crabpot-capture.json index a782e05..7f3d955 100644 --- a/reports/crabpot-capture.json +++ b/reports/crabpot-capture.json @@ -4,17 +4,17 @@ "status": "ok", "configuredPath": "./openclaw", "capturedRegistrarCount": 26, - "sdkExportCount": 291 + "sdkExportCount": 294 }, "summary": { - "fixtureCount": 32, - "registrationCount": 202, - "hookCount": 86, + "fixtureCount": 33, + "registrationCount": 204, + "hookCount": 88, "sdkImportCount": 549, - "packageEntrypointCount": 39, - "issueProbeCount": 170, - "inspectorShimRequiredCount": 110, - "compatAliasRequiredCount": 11 + "packageEntrypointCount": 40, + "issueProbeCount": 175, + "inspectorShimRequiredCount": 111, + "compatAliasRequiredCount": 8 }, "fixtures": [ { @@ -7884,6 +7884,105 @@ } ] }, + { + "id": "nemoclaw", + "priority": "high", + "registrations": [ + { + "id": "registration.registerCommand:nemoclaw:plugins-nemoclaw-nemoclaw-src-index-ts-336", + "fixture": "nemoclaw", + "registrar": "registerCommand", + "ref": "plugins/nemoclaw/nemoclaw/src/index.ts:336", + "support": "inspector-shim-required", + "assertions": [ + "command id is stable", + "interactive command payload is captured" + ], + "syntheticArguments": [ + { + "name": "fixture-command", + "handler": "function" + } + ] + }, + { + "id": "registration.registerProvider:nemoclaw:plugins-nemoclaw-nemoclaw-src-index-ts-372", + "fixture": "nemoclaw", + "registrar": "registerProvider", + "ref": "plugins/nemoclaw/nemoclaw/src/index.ts:372", + "support": "target-captured", + "assertions": [ + "registration arguments are captured" + ], + "syntheticArguments": [ + {} + ] + } + ], + "hooks": [ + { + "id": "hook.before_agent_start:nemoclaw:plugins-nemoclaw-nemoclaw-src-runtime-context-ts-474", + "fixture": "nemoclaw", + "hook": "before_agent_start", + "ref": "plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474", + "support": "synthetic-event-required", + "assertions": [ + "legacy startup hook payload is accepted", + "migration metadata can map to prompt/model hooks" + ], + "syntheticEvent": { + "agentId": "agent-fixture", + "runId": "run-fixture", + "config": { + "source": "plugin-inspector" + } + }, + "syntheticContext": { + "runId": "run-fixture", + "agentId": "agent-fixture", + "sessionId": "session-fixture" + } + }, + { + "id": "hook.before_tool_call:nemoclaw:plugins-nemoclaw-nemoclaw-src-index-ts-384", + "fixture": "nemoclaw", + "hook": "before_tool_call", + "ref": "plugins/nemoclaw/nemoclaw/src/index.ts:384", + "support": "synthetic-event-required", + "assertions": [ + "block/allow return shapes are preserved", + "terminal and approval metadata are present" + ], + "syntheticEvent": { + "runId": "run-fixture", + "toolName": "fixture_tool", + "params": {}, + "toolCallId": "call-fixture" + }, + "syntheticContext": { + "runId": "run-fixture", + "agentId": "agent-fixture", + "sessionId": "session-fixture", + "toolName": "fixture_tool" + } + } + ], + "sdkImports": [], + "packageEntrypoints": [ + { + "id": "package.extension:nemoclaw:plugins-nemoclaw-nemoclaw-dist-index-js", + "fixture": "nemoclaw", + "kind": "extension", + "specifier": "./dist/index.js", + "ref": "plugins/nemoclaw/nemoclaw/dist/index.js", + "support": "build-required", + "assertions": [ + "entrypoint path resolves", + "entrypoint can be cold-imported after required build step" + ] + } + ] + }, { "id": "memory-tencentdb", "priority": "high", @@ -12060,7 +12159,7 @@ "fixture": "codex-app-server", "specifier": "openclaw/plugin-sdk/discord", "ref": "plugins/codex-app-server/src/controller.ts:104", - "support": "compat-alias-required", + "support": "target-exported", "assertions": [ "package export exists", "cold import resolves without plugin credentials" @@ -12071,7 +12170,7 @@ "fixture": "codex-app-server", "specifier": "openclaw/plugin-sdk/discord", "ref": "plugins/codex-app-server/src/controller.ts:106", - "support": "compat-alias-required", + "support": "target-exported", "assertions": [ "package export exists", "cold import resolves without plugin credentials" @@ -12082,7 +12181,7 @@ "fixture": "codex-app-server", "specifier": "openclaw/plugin-sdk/telegram-account", "ref": "plugins/codex-app-server/src/controller.ts:105", - "support": "compat-alias-required", + "support": "target-exported", "assertions": [ "package export exists", "cold import resolves without plugin credentials" @@ -12649,6 +12748,19 @@ "registered handler metadata is retained" ] }, + { + "id": "api.capture.runtime-registrars:nemoclaw", + "fixture": "nemoclaw", + "priority": "P1", + "target": "inspector-capture-api", + "evidence": [ + "registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336" + ], + "assertions": [ + "registration arguments are recorded", + "registered handler metadata is retained" + ] + }, { "id": "api.capture.runtime-registrars:openclaw-telemetry", "fixture": "openclaw-telemetry", @@ -12774,6 +12886,19 @@ "return semantics are preserved" ] }, + { + "id": "hook.before_tool_call.terminal-block-approval:nemoclaw", + "fixture": "nemoclaw", + "priority": "P1", + "target": "hook-runner", + "evidence": [ + "before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384" + ], + "assertions": [ + "synthetic event payload is accepted", + "return semantics are preserved" + ] + }, { "id": "hook.before_tool_call.terminal-block-approval:openclaw-telemetry", "fixture": "openclaw-telemetry", @@ -12937,21 +13062,6 @@ "migration metadata is visible when alias is missing" ] }, - { - "id": "sdk.import.package-export-cold-import:codex-app-server", - "fixture": "codex-app-server", - "priority": "P1", - "target": "sdk-alias", - "evidence": [ - "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:104", - "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:106", - "openclaw/plugin-sdk/telegram-account @ plugins/codex-app-server/src/controller.ts:105" - ], - "assertions": [ - "package export exists", - "migration metadata is visible when alias is missing" - ] - }, { "id": "sdk.import.package-export-cold-import:honcho", "fixture": "honcho", @@ -13155,6 +13265,19 @@ "return semantics are preserved" ] }, + { + "id": "hook.compat.before-agent-start-migration:nemoclaw", + "fixture": "nemoclaw", + "priority": "P2", + "target": "hook-runner", + "evidence": [ + "before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474" + ], + "assertions": [ + "synthetic event payload is accepted", + "return semantics are preserved" + ] + }, { "id": "hook.compat.before-agent-start-migration:openclaw-telemetry", "fixture": "openclaw-telemetry", @@ -13354,6 +13477,19 @@ "cold import failure mode is classified" ] }, + { + "id": "package.compat.plugin-api-range:nemoclaw", + "fixture": "nemoclaw", + "priority": "P2", + "target": "package-loader", + "evidence": [ + "plugins/nemoclaw/nemoclaw/package.json" + ], + "assertions": [ + "entrypoint metadata resolves", + "cold import failure mode is classified" + ] + }, { "id": "package.compat.plugin-api-range:openclaw-telemetry", "fixture": "openclaw-telemetry", @@ -13472,6 +13608,19 @@ "cold import failure mode is classified" ] }, + { + "id": "package.entrypoint.build-before-cold-import:nemoclaw", + "fixture": "nemoclaw", + "priority": "P2", + "target": "package-loader", + "evidence": [ + "extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js" + ], + "assertions": [ + "entrypoint metadata resolves", + "cold import failure mode is classified" + ] + }, { "id": "package.entrypoint.build-before-cold-import:opik-openclaw", "fixture": "opik-openclaw", @@ -13673,6 +13822,23 @@ "cold import failure mode is classified" ] }, + { + "id": "package.entrypoint.isolated-dependency-install:nemoclaw", + "fixture": "nemoclaw", + "priority": "P2", + "target": "package-loader", + "evidence": [ + "commander @ plugins/nemoclaw/nemoclaw/package.json", + "execa @ plugins/nemoclaw/nemoclaw/package.json", + "json5 @ plugins/nemoclaw/nemoclaw/package.json", + "tar @ plugins/nemoclaw/nemoclaw/package.json", + "yaml @ plugins/nemoclaw/nemoclaw/package.json" + ], + "assertions": [ + "entrypoint metadata resolves", + "cold import failure mode is classified" + ] + }, { "id": "package.entrypoint.isolated-dependency-install:openclaw-weixin", "fixture": "openclaw-weixin", diff --git a/reports/crabpot-capture.md b/reports/crabpot-capture.md index 4e3e3a6..f11b108 100644 --- a/reports/crabpot-capture.md +++ b/reports/crabpot-capture.md @@ -6,14 +6,14 @@ Generated: deterministic | Metric | Value | | ----------------------- | ----- | -| Fixtures | 32 | -| Registrations | 202 | -| Hooks | 86 | +| Fixtures | 33 | +| Registrations | 204 | +| Hooks | 88 | | SDK imports | 549 | -| Package entrypoints | 39 | -| Issue probes | 170 | -| Inspector shim required | 110 | -| Compat aliases required | 11 | +| Package entrypoints | 40 | +| Issue probes | 175 | +| Inspector shim required | 111 | +| Compat aliases required | 8 | ## Registration Capture @@ -146,6 +146,8 @@ Generated: deterministic | kitchen-sink | registerWebFetchProvider | target-captured | plugins/kitchen-sink/src/kitchen-runtime.js:91 | registration arguments are captured | | kitchen-sink | registerWebSearchProvider | target-captured | plugins/kitchen-sink/src/generated-registrars.js:44 | registration arguments are captured | | kitchen-sink | registerWebSearchProvider | target-captured | plugins/kitchen-sink/src/kitchen-runtime.js:88 | registration arguments are captured | +| nemoclaw | registerCommand | inspector-shim-required | plugins/nemoclaw/nemoclaw/src/index.ts:336 | command id is stable; interactive command payload is captured | +| nemoclaw | registerProvider | target-captured | plugins/nemoclaw/nemoclaw/src/index.ts:372 | registration arguments are captured | | memory-tencentdb | registerCli | target-captured | plugins/memory-tencentdb/.crabpot-package/index.ts:957 | command name is stable; argument schema is captured | | memory-tencentdb | registerTool | target-captured | plugins/memory-tencentdb/.crabpot-package/index.ts:268 | tool name is stable; input schema is captured; result shape metadata is captured | | memory-tencentdb | registerTool | target-captured | plugins/memory-tencentdb/.crabpot-package/index.ts:365 | tool name is stable; input schema is captured; result shape metadata is captured | @@ -303,6 +305,8 @@ Generated: deterministic | kitchen-sink | subagent_spawned | synthetic-event-required | plugins/kitchen-sink/src/generated-hooks.js:34 | spawn payload is preserved; parent/subagent metadata are present | | kitchen-sink | subagent_spawning | synthetic-event-required | plugins/kitchen-sink/src/generated-hooks.js:35 | hook payload and return value are captured | | kitchen-sink | tool_result_persist | synthetic-event-required | plugins/kitchen-sink/src/generated-hooks.js:36 | hook payload and return value are captured | +| nemoclaw | before_agent_start | synthetic-event-required | plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 | legacy startup hook payload is accepted; migration metadata can map to prompt/model hooks | +| nemoclaw | before_tool_call | synthetic-event-required | plugins/nemoclaw/nemoclaw/src/index.ts:384 | block/allow return shapes are preserved; terminal and approval metadata are present | | memory-tencentdb | agent_end | synthetic-event-required | plugins/memory-tencentdb/.crabpot-package/index.ts:820 | final conversation payload is redacted as expected; agent id and run metadata are present | | memory-tencentdb | before_prompt_build | synthetic-event-required | plugins/memory-tencentdb/.crabpot-package/index.ts:464 | prompt mutation result is preserved; agent and conversation metadata are present | | memory-tencentdb | gateway_stop | synthetic-event-required | plugins/memory-tencentdb/.crabpot-package/index.ts:745 | hook payload and return value are captured | @@ -854,9 +858,9 @@ Generated: deterministic | codex-app-server | openclaw/plugin-sdk | target-exported | plugins/codex-app-server/src/client.ts:6 | package export exists; cold import resolves without plugin credentials | | codex-app-server | openclaw/plugin-sdk | target-exported | plugins/codex-app-server/src/controller.ts:18 | package export exists; cold import resolves without plugin credentials | | codex-app-server | openclaw/plugin-sdk | target-exported | plugins/codex-app-server/src/types.ts:1 | package export exists; cold import resolves without plugin credentials | -| codex-app-server | openclaw/plugin-sdk/discord | compat-alias-required | plugins/codex-app-server/src/controller.ts:104 | package export exists; cold import resolves without plugin credentials | -| codex-app-server | openclaw/plugin-sdk/discord | compat-alias-required | plugins/codex-app-server/src/controller.ts:106 | package export exists; cold import resolves without plugin credentials | -| codex-app-server | openclaw/plugin-sdk/telegram-account | compat-alias-required | plugins/codex-app-server/src/controller.ts:105 | package export exists; cold import resolves without plugin credentials | +| codex-app-server | openclaw/plugin-sdk/discord | target-exported | plugins/codex-app-server/src/controller.ts:104 | package export exists; cold import resolves without plugin credentials | +| codex-app-server | openclaw/plugin-sdk/discord | target-exported | plugins/codex-app-server/src/controller.ts:106 | package export exists; cold import resolves without plugin credentials | +| codex-app-server | openclaw/plugin-sdk/telegram-account | target-exported | plugins/codex-app-server/src/controller.ts:105 | package export exists; cold import resolves without plugin credentials | | apify | openclaw/plugin-sdk | target-exported | plugins/apify/src/cli.ts:2 | package export exists; cold import resolves without plugin credentials | | apify | openclaw/plugin-sdk | target-exported | plugins/apify/src/index.ts:1 | package export exists; cold import resolves without plugin credentials | | apify | openclaw/plugin-sdk | target-exported | plugins/apify/src/tools/apify-scraper-tool.ts:4 | package export exists; cold import resolves without plugin credentials | @@ -885,6 +889,7 @@ Generated: deterministic | api.capture.runtime-registrars:mcp-adapter | P1 | mcp-adapter | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerService @ plugins/mcp-adapter/index.ts:15 | | api.capture.runtime-registrars:memos-cloud | P1 | memos-cloud | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerHook @ plugins/memos-cloud/index.js:467 | | api.capture.runtime-registrars:mocrane-wecom | P1 | mocrane-wecom | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerChannel @ plugins/mocrane-wecom/index.ts:31, registerHttpRoute @ plugins/mocrane-wecom/index.ts:34 | +| api.capture.runtime-registrars:nemoclaw | P1 | nemoclaw | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336 | | api.capture.runtime-registrars:openclaw-telemetry | P1 | openclaw-telemetry | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerService @ plugins/openclaw-telemetry/index.ts:10 | | api.capture.runtime-registrars:openclaw-weixin | P1 | openclaw-weixin | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22 | | api.capture.runtime-registrars:opik-openclaw | P1 | opik-openclaw | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerService @ plugins/opik-openclaw/index.ts:16 | @@ -894,6 +899,7 @@ Generated: deterministic | api.capture.runtime-registrars:wecom | P1 | wecom | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerChannel @ plugins/wecom/index.js:27, registerHttpRoute @ plugins/wecom/index.js:56 | | api.capture.runtime-registrars:yuanbao | P1 | yuanbao | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:13, registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:14, registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:15, registerCommand @ plugins/yuanbao/.crabpot-package/index.ts:31, registerCommand @ plugins/yuanbao/.crabpot-package/index.ts:32, registerCommand @ plugins/yuanbao/.crabpot-package/index.ts:33 | | hook.before_tool_call.terminal-block-approval:kitchen-sink | P1 | kitchen-sink | hook-runner | synthetic event payload is accepted; return semantics are preserved | before_tool_call @ plugins/kitchen-sink/src/generated-hooks.js:18 | +| hook.before_tool_call.terminal-block-approval:nemoclaw | P1 | nemoclaw | hook-runner | synthetic event payload is accepted; return semantics are preserved | before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384 | | hook.before_tool_call.terminal-block-approval:openclaw-telemetry | P1 | openclaw-telemetry | hook-runner | synthetic event payload is accepted; return semantics are preserved | before_tool_call @ plugins/openclaw-telemetry/index.ts:12 | | hook.before_tool_call.terminal-block-approval:opik-openclaw | P1 | opik-openclaw | hook-runner | synthetic event payload is accepted; return semantics are preserved | before_tool_call @ plugins/opik-openclaw/src/service/hooks/tool.ts:34 | | hook.before_tool_call.terminal-block-approval:wecom | P1 | wecom | hook-runner | synthetic event payload is accepted; return semantics are preserved | before_tool_call @ plugins/wecom/index.js:76 | @@ -906,7 +912,6 @@ Generated: deterministic | hook.llm-observer.privacy-payload:openclaw-telemetry | P1 | openclaw-telemetry | hook-runner | synthetic event payload is accepted; return semantics are preserved | agent_end @ plugins/openclaw-telemetry/index.ts:62 | | hook.llm-observer.privacy-payload:opik-openclaw | P1 | opik-openclaw | hook-runner | synthetic event payload is accepted; return semantics are preserved | agent_end @ plugins/opik-openclaw/src/service.ts:560, llm_input @ plugins/opik-openclaw/src/service/hooks/llm.ts:39, llm_output @ plugins/opik-openclaw/src/service/hooks/llm.ts:150 | | sdk.import.package-export-cold-import:clawmetry | P1 | clawmetry | sdk-alias | package export exists; migration metadata is visible when alias is missing | openclaw/plugin-sdk/diagnostics-otel @ plugins/clawmetry/clawhub-plugin/src/service.ts:2 | -| sdk.import.package-export-cold-import:codex-app-server | P1 | codex-app-server | sdk-alias | package export exists; migration metadata is visible when alias is missing | openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:104, openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:106, openclaw/plugin-sdk/telegram-account @ plugins/codex-app-server/src/controller.ts:105 | | sdk.import.package-export-cold-import:honcho | P1 | honcho | sdk-alias | package export exists; migration metadata is visible when alias is missing | openclaw/plugin-sdk/memory-core @ plugins/honcho/index.ts:11 | | sdk.import.package-export-cold-import:yuanbao | P1 | yuanbao | sdk-alias | package export exists; migration metadata is visible when alias is missing | openclaw/plugin-sdk/matrix @ plugins/yuanbao/.crabpot-package/dist/src/business/commands/log-upload/extractor.js:2, openclaw/plugin-sdk/matrix @ plugins/yuanbao/.crabpot-package/dist/src/business/commands/upgrade/env.js:2, openclaw/plugin-sdk/matrix @ plugins/yuanbao/.crabpot-package/dist/src/business/commands/upgrade/utils.js:1, openclaw/plugin-sdk/matrix @ plugins/yuanbao/.crabpot-package/src/business/commands/log-upload/extractor.ts:2, openclaw/plugin-sdk/matrix @ plugins/yuanbao/.crabpot-package/src/business/commands/upgrade/env.ts:2, openclaw/plugin-sdk/matrix @ plugins/yuanbao/.crabpot-package/src/business/commands/upgrade/utils.ts:2 | | channel.runtime.envelope-config-metadata:agentchat | P2 | agentchat | channel-runtime | message envelope is stable; sender/config metadata is preserved | defineChannelPluginEntry @ plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333 | @@ -922,6 +927,7 @@ Generated: deterministic | hook.compat.before-agent-start-migration:honcho | P2 | honcho | hook-runner | synthetic event payload is accepted; return semantics are preserved | before_agent_start @ plugins/honcho/hooks/subagent.ts:18 | | hook.compat.before-agent-start-migration:hyperspell | P2 | hyperspell | hook-runner | synthetic event payload is accepted; return semantics are preserved | before_agent_start @ plugins/hyperspell/index.ts:102, before_agent_start @ plugins/hyperspell/index.ts:111 | | hook.compat.before-agent-start-migration:kitchen-sink | P2 | kitchen-sink | hook-runner | synthetic event payload is accepted; return semantics are preserved | before_agent_start @ plugins/kitchen-sink/src/generated-hooks.js:10 | +| hook.compat.before-agent-start-migration:nemoclaw | P2 | nemoclaw | hook-runner | synthetic event payload is accepted; return semantics are preserved | before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 | | hook.compat.before-agent-start-migration:openclaw-telemetry | P2 | openclaw-telemetry | hook-runner | synthetic event payload is accepted; return semantics are preserved | before_agent_start @ plugins/openclaw-telemetry/index.ts:53 | | manifest.compat.channel-env-vars:agentchat | P2 | agentchat | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | agentchat | | manifest.compat.channel-env-vars:yuanbao | P2 | yuanbao | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | yuanbao | @@ -937,6 +943,7 @@ Generated: deterministic | package.compat.plugin-api-range:dingtalk-connector | P2 | dingtalk-connector | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/dingtalk-connector/package.json | | package.compat.plugin-api-range:mcp-adapter | P2 | mcp-adapter | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/mcp-adapter/package.json | | package.compat.plugin-api-range:mocrane-wecom | P2 | mocrane-wecom | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/mocrane-wecom/package.json | +| package.compat.plugin-api-range:nemoclaw | P2 | nemoclaw | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/nemoclaw/nemoclaw/package.json | | package.compat.plugin-api-range:openclaw-telemetry | P2 | openclaw-telemetry | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/openclaw-telemetry/package.json | | package.compat.plugin-api-range:openclaw-weixin | P2 | openclaw-weixin | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/openclaw-weixin/.crabpot-package/package.json | | package.compat.plugin-api-range:qqbot | P2 | qqbot | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/qqbot/package.json | @@ -946,6 +953,7 @@ Generated: deterministic | package.entrypoint.build-before-cold-import:dingtalk-connector | P2 | dingtalk-connector | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:./dist/index.mjs -> plugins/dingtalk-connector/dist/index.mjs | | package.entrypoint.build-before-cold-import:honcho | P2 | honcho | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:./dist/index.js -> plugins/honcho/dist/index.js | | package.entrypoint.build-before-cold-import:lossless-claw | P2 | lossless-claw | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:./dist/index.js -> plugins/lossless-claw/dist/index.js | +| package.entrypoint.build-before-cold-import:nemoclaw | P2 | nemoclaw | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js | | package.entrypoint.build-before-cold-import:opik-openclaw | P2 | opik-openclaw | package-loader | entrypoint metadata resolves; cold import failure mode is classified | runtimeExtension:./dist/index.js -> plugins/opik-openclaw/dist/index.js | | package.entrypoint.isolated-dependency-install:a2a-gateway | P2 | a2a-gateway | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @a2a-js/sdk @ plugins/a2a-gateway/package.json, @bufbuild/protobuf @ plugins/a2a-gateway/package.json, @grpc/grpc-js @ plugins/a2a-gateway/package.json, express @ plugins/a2a-gateway/package.json, multicast-dns @ plugins/a2a-gateway/package.json, uuid @ plugins/a2a-gateway/package.json, ws @ plugins/a2a-gateway/package.json | | package.entrypoint.isolated-dependency-install:agentchat | P2 | agentchat | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @agentchatme/agentchat @ plugins/agentchat/integrations/openclaw-channel/package.json, @sinclair/typebox @ plugins/agentchat/integrations/openclaw-channel/package.json, pino @ plugins/agentchat/integrations/openclaw-channel/package.json, ws @ plugins/agentchat/integrations/openclaw-channel/package.json, zod @ plugins/agentchat/integrations/openclaw-channel/package.json | @@ -959,6 +967,7 @@ Generated: deterministic | package.entrypoint.isolated-dependency-install:mcp-adapter | P2 | mcp-adapter | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @modelcontextprotocol/sdk @ plugins/mcp-adapter/package.json | | package.entrypoint.isolated-dependency-install:memory-tencentdb | P2 | memory-tencentdb | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @node-rs/jieba @ plugins/memory-tencentdb/.crabpot-package/package.json, @tencentdb-agent-memory/tcvdb-text @ plugins/memory-tencentdb/.crabpot-package/package.json, json5 @ plugins/memory-tencentdb/.crabpot-package/package.json, sqlite-vec @ plugins/memory-tencentdb/.crabpot-package/package.json, undici @ plugins/memory-tencentdb/.crabpot-package/package.json, node-llama-cpp @ plugins/memory-tencentdb/.crabpot-package/package.json | | package.entrypoint.isolated-dependency-install:mocrane-wecom | P2 | mocrane-wecom | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @wecom/aibot-node-sdk @ plugins/mocrane-wecom/package.json, fast-xml-parser @ plugins/mocrane-wecom/package.json, file-type @ plugins/mocrane-wecom/package.json, undici @ plugins/mocrane-wecom/package.json, zod @ plugins/mocrane-wecom/package.json | +| package.entrypoint.isolated-dependency-install:nemoclaw | P2 | nemoclaw | package-loader | entrypoint metadata resolves; cold import failure mode is classified | commander @ plugins/nemoclaw/nemoclaw/package.json, execa @ plugins/nemoclaw/nemoclaw/package.json, json5 @ plugins/nemoclaw/nemoclaw/package.json, tar @ plugins/nemoclaw/nemoclaw/package.json, yaml @ plugins/nemoclaw/nemoclaw/package.json | | package.entrypoint.isolated-dependency-install:openclaw-weixin | P2 | openclaw-weixin | package-loader | entrypoint metadata resolves; cold import failure mode is classified | qrcode-terminal @ plugins/openclaw-weixin/.crabpot-package/package.json, zod @ plugins/openclaw-weixin/.crabpot-package/package.json | | package.entrypoint.isolated-dependency-install:opik-openclaw | P2 | opik-openclaw | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @clack/prompts @ plugins/opik-openclaw/package.json, opik @ plugins/opik-openclaw/package.json, zod @ plugins/opik-openclaw/package.json | | package.entrypoint.isolated-dependency-install:qqbot | P2 | qqbot | package-loader | entrypoint metadata resolves; cold import failure mode is classified | mpg123-decoder @ plugins/qqbot/package.json, silk-wasm @ plugins/qqbot/package.json, ws @ plugins/qqbot/package.json | diff --git a/reports/crabpot-ci-policy.json b/reports/crabpot-ci-policy.json index 752996e..c80c372 100644 --- a/reports/crabpot-ci-policy.json +++ b/reports/crabpot-ci-policy.json @@ -28,10 +28,9 @@ { "id": "compatibility-report.live-p0-issues", "action": "warn", - "message": "5 live P0 issues tracked", + "message": "4 live P0 issues tracked", "evidence": [ "clawmetry:sdk-export-missing:untracked", - "codex-app-server:sdk-export-missing:untracked", "honcho:sdk-export-missing:untracked", "hyperspell:unknown-hook-name:none", "yuanbao:sdk-export-missing:untracked" @@ -252,7 +251,7 @@ { "id": "compatibility-report.deprecation-warnings", "action": "pass", - "message": "27 deprecated compat seams tracked", + "message": "28 deprecated compat seams tracked", "evidence": [ "a2a-gateway:legacy-root-sdk-import", "agentchat:channel-env-vars", @@ -275,6 +274,7 @@ "memos-cloud:legacy-before-agent-start", "memu-engine:legacy-root-sdk-import", "mocrane-wecom:legacy-root-sdk-import", + "nemoclaw:legacy-before-agent-start", "openclaw-telemetry:legacy-before-agent-start", "openclaw-telemetry:legacy-root-sdk-import", "opik-openclaw:legacy-root-sdk-import", @@ -286,7 +286,7 @@ { "id": "compatibility-report.inspector-gaps", "action": "pass", - "message": "113 inspector proof gaps tracked", + "message": "117 inspector proof gaps tracked", "evidence": [ "a2a-gateway:registration-capture-gap", "clawmetry:registration-capture-gap", @@ -309,6 +309,8 @@ "memos-cloud:conversation-access-hook", "memos-cloud:registration-capture-gap", "mocrane-wecom:registration-capture-gap", + "nemoclaw:before-tool-call-probe", + "nemoclaw:registration-capture-gap", "openclaw-telemetry:before-tool-call-probe", "openclaw-telemetry:conversation-access-hook", "openclaw-telemetry:registration-capture-gap", @@ -378,6 +380,8 @@ "mocrane-wecom:package-dependency-install-required", "mocrane-wecom:package-typescript-source-entrypoint", "mocrane-wecom:runtime-tool-capture", + "nemoclaw:package-build-artifact-entrypoint", + "nemoclaw:package-dependency-install-required", "openclaw-telemetry:package-typescript-source-entrypoint", "openclaw-weixin:channel-contract-probe", "openclaw-weixin:package-dependency-install-required", @@ -406,90 +410,46 @@ { "id": "compatibility-report.p1-issues", "action": "pass", - "message": "83 P1 issues tracked", + "message": "39 P1 issues tracked", "evidence": [ - "a2a-gateway:missing-compat-record", "a2a-gateway:registration-capture-gap", - "agentchat:missing-compat-record", - "clawmetry:missing-compat-record", "clawmetry:missing-compat-record", "clawmetry:registration-capture-gap", - "clawrouter:missing-compat-record", "clawrouter:registration-capture-gap", - "codex-app-server:missing-compat-record", - "codex-app-server:missing-compat-record", "codex-app-server:registration-capture-gap", - "connectclaw:missing-compat-record", "connectclaw:registration-capture-gap", - "ddingtalk:missing-compat-record", - "dingtalk-connector:missing-compat-record", - "dingtalk-connector:missing-compat-record", "dingtalk-connector:registration-capture-gap", "honcho:conversation-access-hook", "honcho:missing-compat-record", - "honcho:missing-compat-record", - "honcho:missing-compat-record", "honcho:registration-capture-gap", "hyperspell:conversation-access-hook", - "hyperspell:missing-compat-record", - "hyperspell:missing-compat-record", "hyperspell:registration-capture-gap", "kitchen-sink:before-tool-call-probe", "kitchen-sink:conversation-access-hook", - "kitchen-sink:missing-compat-record", - "kitchen-sink:missing-compat-record", - "kitchen-sink:missing-compat-record", - "kitchen-sink:missing-compat-record", "kitchen-sink:registration-capture-gap", - "lightclawbot:missing-compat-record", - "lightclawbot:missing-compat-record", "lightclawbot:registration-capture-gap", "llm-trace-phoenix:conversation-access-hook", - "llm-trace-phoenix:missing-compat-record", - "lossless-claw:missing-compat-record", "lossless-claw:registration-capture-gap", - "mcp-adapter:missing-compat-record", "mcp-adapter:registration-capture-gap", "memory-tencentdb:conversation-access-hook", - "memory-tencentdb:missing-compat-record", "memos-cloud:conversation-access-hook", - "memos-cloud:missing-compat-record", - "memos-cloud:missing-compat-record", "memos-cloud:registration-capture-gap", - "mocrane-wecom:missing-compat-record", - "mocrane-wecom:missing-compat-record", "mocrane-wecom:registration-capture-gap", + "nemoclaw:before-tool-call-probe", + "nemoclaw:registration-capture-gap", "openclaw-telemetry:before-tool-call-probe", "openclaw-telemetry:conversation-access-hook", - "openclaw-telemetry:missing-compat-record", - "openclaw-telemetry:missing-compat-record", - "openclaw-telemetry:missing-compat-record", "openclaw-telemetry:registration-capture-gap", - "openclaw-weixin:missing-compat-record", - "openclaw-weixin:missing-compat-record", "openclaw-weixin:registration-capture-gap", "opik-openclaw:before-tool-call-probe", "opik-openclaw:conversation-access-hook", - "opik-openclaw:missing-compat-record", - "opik-openclaw:missing-compat-record", - "opik-openclaw:missing-compat-record", "opik-openclaw:registration-capture-gap", - "qqbot:missing-compat-record", - "qqbot:missing-compat-record", "qqbot:registration-capture-gap", - "secureclaw:missing-compat-record", "secureclaw:registration-capture-gap", - "telnyx-sms:missing-compat-record", - "telnyx-sms:missing-compat-record", "telnyx-sms:registration-capture-gap", "wecom:before-tool-call-probe", - "wecom:missing-compat-record", - "wecom:missing-compat-record", - "wecom:missing-compat-record", "wecom:registration-capture-gap", "yuanbao:missing-compat-record", - "yuanbao:missing-compat-record", - "yuanbao:missing-compat-record", "yuanbao:registration-capture-gap" ] }, diff --git a/reports/crabpot-ci-policy.md b/reports/crabpot-ci-policy.md index b924257..c8a023c 100644 --- a/reports/crabpot-ci-policy.md +++ b/reports/crabpot-ci-policy.md @@ -18,30 +18,30 @@ Strict: false ## Checks -| Action | ID | Message | Evidence | -| ------ | ------------------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| warn | compatibility-report.live-p0-issues | 5 live P0 issues tracked | clawmetry:sdk-export-missing:untracked, codex-app-server:sdk-export-missing:untracked, honcho:sdk-export-missing:untracked, hyperspell:unknown-hook-name:none, yuanbao:sdk-export-missing:untracked | -| warn | execution-results.audit-findings | 12 package audit findings | clawrouter:12 | -| warn | execution-results.blocked.clawrouter.registerService.29 | allowed-blocked: captured registration requires includeLifecycle=true | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerService, captured registration requires includeLifecycle=true, service-lifecycle-harness | -| warn | execution-results.blocked.clawrouter.registerTool.10 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.11 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.12 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.13 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.14 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.15 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.16 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.17 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.18 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.19 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.20 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.21 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.5 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.6 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.7 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.8 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| warn | execution-results.blocked.clawrouter.registerTool.9 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | -| pass | compatibility-report.breakages | 0 hard breakages | - | -| pass | compatibility-report.deprecation-warnings | 27 deprecated compat seams tracked | a2a-gateway:legacy-root-sdk-import, agentchat:channel-env-vars, apify:legacy-root-sdk-import, codex-app-server:legacy-root-sdk-import, composio:legacy-root-sdk-import, connectclaw:legacy-before-agent-start, connectclaw:legacy-root-sdk-import, dingtalk-connector:legacy-root-sdk-import, hasdata:provider-auth-env-vars, honcho:legacy-before-agent-start, honcho:legacy-root-sdk-import, hyperspell:legacy-before-agent-start, hyperspell:legacy-root-sdk-import, inworld-tts:provider-auth-env-vars, kitchen-sink:legacy-before-agent-start, kitchen-sink:legacy-root-sdk-import, llm-trace-phoenix:legacy-root-sdk-import, lossless-claw:legacy-root-sdk-import, memos-cloud:legacy-before-agent-start, memu-engine:legacy-root-sdk-import, mocrane-wecom:legacy-root-sdk-import, openclaw-telemetry:legacy-before-agent-start, openclaw-telemetry:legacy-root-sdk-import, opik-openclaw:legacy-root-sdk-import, qqbot:legacy-root-sdk-import, telnyx-sms:channel-env-vars, yuanbao:channel-env-vars | -| pass | compatibility-report.inspector-gaps | 113 inspector proof gaps tracked | a2a-gateway:registration-capture-gap, clawmetry:registration-capture-gap, clawrouter:registration-capture-gap, codex-app-server:registration-capture-gap, connectclaw:registration-capture-gap, dingtalk-connector:registration-capture-gap, honcho:conversation-access-hook, honcho:registration-capture-gap, hyperspell:conversation-access-hook, hyperspell:registration-capture-gap, kitchen-sink:before-tool-call-probe, kitchen-sink:conversation-access-hook, kitchen-sink:registration-capture-gap, lightclawbot:registration-capture-gap, llm-trace-phoenix:conversation-access-hook, lossless-claw:registration-capture-gap, mcp-adapter:registration-capture-gap, memory-tencentdb:conversation-access-hook, memos-cloud:conversation-access-hook, memos-cloud:registration-capture-gap, mocrane-wecom:registration-capture-gap, openclaw-telemetry:before-tool-call-probe, openclaw-telemetry:conversation-access-hook, openclaw-telemetry:registration-capture-gap, openclaw-weixin:registration-capture-gap, opik-openclaw:before-tool-call-probe, opik-openclaw:conversation-access-hook, opik-openclaw:registration-capture-gap, qqbot:registration-capture-gap, secureclaw:registration-capture-gap, telnyx-sms:registration-capture-gap, wecom:before-tool-call-probe, wecom:registration-capture-gap, yuanbao:registration-capture-gap, a2a-gateway:package-dependency-install-required, a2a-gateway:package-typescript-source-entrypoint, a2a-gateway:runtime-tool-capture, agentchat:channel-contract-probe, agentchat:package-build-artifact-entrypoint, agentchat:package-dependency-install-required, apify:package-dependency-install-required, apify:package-typescript-source-entrypoint, apify:runtime-tool-capture, clawmetry:package-build-artifact-entrypoint, clawmetry:package-dependency-install-required, clawmetry:package-typescript-source-entrypoint, clawrouter:package-dependency-install-required, clawrouter:runtime-tool-capture, codex-app-server:package-dependency-install-required, codex-app-server:package-typescript-source-entrypoint, composio:package-dependency-install-required, composio:package-typescript-source-entrypoint, composio:runtime-tool-capture, connectclaw:package-typescript-source-entrypoint, connectclaw:runtime-tool-capture, ddingtalk:channel-contract-probe, ddingtalk:package-dependency-install-required, ddingtalk:package-typescript-source-entrypoint, dingtalk-connector:channel-contract-probe, dingtalk-connector:package-build-artifact-entrypoint, dingtalk-connector:package-dependency-install-required, hasdata:package-dependency-install-required, hasdata:package-typescript-source-entrypoint, honcho:package-build-artifact-entrypoint, honcho:package-dependency-install-required, honcho:runtime-tool-capture, hyperspell:package-dependency-install-required, hyperspell:package-typescript-source-entrypoint, hyperspell:runtime-tool-capture, inworld-tts:package-typescript-source-entrypoint, kitchen-sink:channel-contract-probe, lightclawbot:channel-contract-probe, lightclawbot:package-dependency-install-required, lightclawbot:runtime-tool-capture, llm-trace-phoenix:package-typescript-source-entrypoint, lossless-claw:package-build-artifact-entrypoint, lossless-claw:package-dependency-install-required, lossless-claw:runtime-tool-capture, mcp-adapter:package-dependency-install-required, mcp-adapter:package-typescript-source-entrypoint, mcp-adapter:runtime-tool-capture, memory-tencentdb:package-dependency-install-required, memory-tencentdb:package-typescript-source-entrypoint, memory-tencentdb:runtime-tool-capture, memu-engine:package-typescript-source-entrypoint, memu-engine:runtime-tool-capture, mocrane-wecom:channel-contract-probe, mocrane-wecom:package-dependency-install-required, mocrane-wecom:package-typescript-source-entrypoint, mocrane-wecom:runtime-tool-capture, openclaw-telemetry:package-typescript-source-entrypoint, openclaw-weixin:channel-contract-probe, openclaw-weixin:package-dependency-install-required, openclaw-weixin:package-typescript-source-entrypoint, opik-openclaw:package-build-artifact-entrypoint, opik-openclaw:package-dependency-install-required, opik-openclaw:package-typescript-source-entrypoint, qqbot:channel-contract-probe, qqbot:package-dependency-install-required, qqbot:runtime-tool-capture, secureclaw:package-build-artifact-entrypoint, secureclaw:package-dependency-install-required, telnyx-sms:channel-contract-probe, telnyx-sms:package-build-artifact-entrypoint, web-search-plus:package-typescript-source-entrypoint, web-search-plus:runtime-tool-capture, wecom:channel-contract-probe, wecom:package-dependency-install-required, wecom:runtime-tool-capture, yuanbao:channel-contract-probe, yuanbao:package-dependency-install-required, yuanbao:package-typescript-source-entrypoint, yuanbao:runtime-tool-capture | -| pass | compatibility-report.p1-issues | 83 P1 issues tracked | a2a-gateway:missing-compat-record, a2a-gateway:registration-capture-gap, agentchat:missing-compat-record, clawmetry:missing-compat-record, clawmetry:missing-compat-record, clawmetry:registration-capture-gap, clawrouter:missing-compat-record, clawrouter:registration-capture-gap, codex-app-server:missing-compat-record, codex-app-server:missing-compat-record, codex-app-server:registration-capture-gap, connectclaw:missing-compat-record, connectclaw:registration-capture-gap, ddingtalk:missing-compat-record, dingtalk-connector:missing-compat-record, dingtalk-connector:missing-compat-record, dingtalk-connector:registration-capture-gap, honcho:conversation-access-hook, honcho:missing-compat-record, honcho:missing-compat-record, honcho:missing-compat-record, honcho:registration-capture-gap, hyperspell:conversation-access-hook, hyperspell:missing-compat-record, hyperspell:missing-compat-record, hyperspell:registration-capture-gap, kitchen-sink:before-tool-call-probe, kitchen-sink:conversation-access-hook, kitchen-sink:missing-compat-record, kitchen-sink:missing-compat-record, kitchen-sink:missing-compat-record, kitchen-sink:missing-compat-record, kitchen-sink:registration-capture-gap, lightclawbot:missing-compat-record, lightclawbot:missing-compat-record, lightclawbot:registration-capture-gap, llm-trace-phoenix:conversation-access-hook, llm-trace-phoenix:missing-compat-record, lossless-claw:missing-compat-record, lossless-claw:registration-capture-gap, mcp-adapter:missing-compat-record, mcp-adapter:registration-capture-gap, memory-tencentdb:conversation-access-hook, memory-tencentdb:missing-compat-record, memos-cloud:conversation-access-hook, memos-cloud:missing-compat-record, memos-cloud:missing-compat-record, memos-cloud:registration-capture-gap, mocrane-wecom:missing-compat-record, mocrane-wecom:missing-compat-record, mocrane-wecom:registration-capture-gap, openclaw-telemetry:before-tool-call-probe, openclaw-telemetry:conversation-access-hook, openclaw-telemetry:missing-compat-record, openclaw-telemetry:missing-compat-record, openclaw-telemetry:missing-compat-record, openclaw-telemetry:registration-capture-gap, openclaw-weixin:missing-compat-record, openclaw-weixin:missing-compat-record, openclaw-weixin:registration-capture-gap, opik-openclaw:before-tool-call-probe, opik-openclaw:conversation-access-hook, opik-openclaw:missing-compat-record, opik-openclaw:missing-compat-record, opik-openclaw:missing-compat-record, opik-openclaw:registration-capture-gap, qqbot:missing-compat-record, qqbot:missing-compat-record, qqbot:registration-capture-gap, secureclaw:missing-compat-record, secureclaw:registration-capture-gap, telnyx-sms:missing-compat-record, telnyx-sms:missing-compat-record, telnyx-sms:registration-capture-gap, wecom:before-tool-call-probe, wecom:missing-compat-record, wecom:missing-compat-record, wecom:missing-compat-record, wecom:registration-capture-gap, yuanbao:missing-compat-record, yuanbao:missing-compat-record, yuanbao:missing-compat-record, yuanbao:registration-capture-gap | -| pass | execution-results.failures | 0 failed synthetic probes | - | +| Action | ID | Message | Evidence | +| ------ | ------------------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| warn | compatibility-report.live-p0-issues | 4 live P0 issues tracked | clawmetry:sdk-export-missing:untracked, honcho:sdk-export-missing:untracked, hyperspell:unknown-hook-name:none, yuanbao:sdk-export-missing:untracked | +| warn | execution-results.audit-findings | 12 package audit findings | clawrouter:12 | +| warn | execution-results.blocked.clawrouter.registerService.29 | allowed-blocked: captured registration requires includeLifecycle=true | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerService, captured registration requires includeLifecycle=true, service-lifecycle-harness | +| warn | execution-results.blocked.clawrouter.registerTool.10 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.11 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.12 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.13 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.14 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.15 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.16 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.17 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.18 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.19 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.20 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.21 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.5 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.6 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.7 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.8 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| warn | execution-results.blocked.clawrouter.registerTool.9 | allowed-blocked: captured tool requires live network access | .crabpot/results/clawrouter/cold-import-extension-clawrouter-plugins-clawrouter-dist-index-js.synthetic.json, registerTool, captured tool requires live network access, live-network-tool-probes | +| pass | compatibility-report.breakages | 0 hard breakages | - | +| pass | compatibility-report.deprecation-warnings | 28 deprecated compat seams tracked | a2a-gateway:legacy-root-sdk-import, agentchat:channel-env-vars, apify:legacy-root-sdk-import, codex-app-server:legacy-root-sdk-import, composio:legacy-root-sdk-import, connectclaw:legacy-before-agent-start, connectclaw:legacy-root-sdk-import, dingtalk-connector:legacy-root-sdk-import, hasdata:provider-auth-env-vars, honcho:legacy-before-agent-start, honcho:legacy-root-sdk-import, hyperspell:legacy-before-agent-start, hyperspell:legacy-root-sdk-import, inworld-tts:provider-auth-env-vars, kitchen-sink:legacy-before-agent-start, kitchen-sink:legacy-root-sdk-import, llm-trace-phoenix:legacy-root-sdk-import, lossless-claw:legacy-root-sdk-import, memos-cloud:legacy-before-agent-start, memu-engine:legacy-root-sdk-import, mocrane-wecom:legacy-root-sdk-import, nemoclaw:legacy-before-agent-start, openclaw-telemetry:legacy-before-agent-start, openclaw-telemetry:legacy-root-sdk-import, opik-openclaw:legacy-root-sdk-import, qqbot:legacy-root-sdk-import, telnyx-sms:channel-env-vars, yuanbao:channel-env-vars | +| pass | compatibility-report.inspector-gaps | 117 inspector proof gaps tracked | a2a-gateway:registration-capture-gap, clawmetry:registration-capture-gap, clawrouter:registration-capture-gap, codex-app-server:registration-capture-gap, connectclaw:registration-capture-gap, dingtalk-connector:registration-capture-gap, honcho:conversation-access-hook, honcho:registration-capture-gap, hyperspell:conversation-access-hook, hyperspell:registration-capture-gap, kitchen-sink:before-tool-call-probe, kitchen-sink:conversation-access-hook, kitchen-sink:registration-capture-gap, lightclawbot:registration-capture-gap, llm-trace-phoenix:conversation-access-hook, lossless-claw:registration-capture-gap, mcp-adapter:registration-capture-gap, memory-tencentdb:conversation-access-hook, memos-cloud:conversation-access-hook, memos-cloud:registration-capture-gap, mocrane-wecom:registration-capture-gap, nemoclaw:before-tool-call-probe, nemoclaw:registration-capture-gap, openclaw-telemetry:before-tool-call-probe, openclaw-telemetry:conversation-access-hook, openclaw-telemetry:registration-capture-gap, openclaw-weixin:registration-capture-gap, opik-openclaw:before-tool-call-probe, opik-openclaw:conversation-access-hook, opik-openclaw:registration-capture-gap, qqbot:registration-capture-gap, secureclaw:registration-capture-gap, telnyx-sms:registration-capture-gap, wecom:before-tool-call-probe, wecom:registration-capture-gap, yuanbao:registration-capture-gap, a2a-gateway:package-dependency-install-required, a2a-gateway:package-typescript-source-entrypoint, a2a-gateway:runtime-tool-capture, agentchat:channel-contract-probe, agentchat:package-build-artifact-entrypoint, agentchat:package-dependency-install-required, apify:package-dependency-install-required, apify:package-typescript-source-entrypoint, apify:runtime-tool-capture, clawmetry:package-build-artifact-entrypoint, clawmetry:package-dependency-install-required, clawmetry:package-typescript-source-entrypoint, clawrouter:package-dependency-install-required, clawrouter:runtime-tool-capture, codex-app-server:package-dependency-install-required, codex-app-server:package-typescript-source-entrypoint, composio:package-dependency-install-required, composio:package-typescript-source-entrypoint, composio:runtime-tool-capture, connectclaw:package-typescript-source-entrypoint, connectclaw:runtime-tool-capture, ddingtalk:channel-contract-probe, ddingtalk:package-dependency-install-required, ddingtalk:package-typescript-source-entrypoint, dingtalk-connector:channel-contract-probe, dingtalk-connector:package-build-artifact-entrypoint, dingtalk-connector:package-dependency-install-required, hasdata:package-dependency-install-required, hasdata:package-typescript-source-entrypoint, honcho:package-build-artifact-entrypoint, honcho:package-dependency-install-required, honcho:runtime-tool-capture, hyperspell:package-dependency-install-required, hyperspell:package-typescript-source-entrypoint, hyperspell:runtime-tool-capture, inworld-tts:package-typescript-source-entrypoint, kitchen-sink:channel-contract-probe, lightclawbot:channel-contract-probe, lightclawbot:package-dependency-install-required, lightclawbot:runtime-tool-capture, llm-trace-phoenix:package-typescript-source-entrypoint, lossless-claw:package-build-artifact-entrypoint, lossless-claw:package-dependency-install-required, lossless-claw:runtime-tool-capture, mcp-adapter:package-dependency-install-required, mcp-adapter:package-typescript-source-entrypoint, mcp-adapter:runtime-tool-capture, memory-tencentdb:package-dependency-install-required, memory-tencentdb:package-typescript-source-entrypoint, memory-tencentdb:runtime-tool-capture, memu-engine:package-typescript-source-entrypoint, memu-engine:runtime-tool-capture, mocrane-wecom:channel-contract-probe, mocrane-wecom:package-dependency-install-required, mocrane-wecom:package-typescript-source-entrypoint, mocrane-wecom:runtime-tool-capture, nemoclaw:package-build-artifact-entrypoint, nemoclaw:package-dependency-install-required, openclaw-telemetry:package-typescript-source-entrypoint, openclaw-weixin:channel-contract-probe, openclaw-weixin:package-dependency-install-required, openclaw-weixin:package-typescript-source-entrypoint, opik-openclaw:package-build-artifact-entrypoint, opik-openclaw:package-dependency-install-required, opik-openclaw:package-typescript-source-entrypoint, qqbot:channel-contract-probe, qqbot:package-dependency-install-required, qqbot:runtime-tool-capture, secureclaw:package-build-artifact-entrypoint, secureclaw:package-dependency-install-required, telnyx-sms:channel-contract-probe, telnyx-sms:package-build-artifact-entrypoint, web-search-plus:package-typescript-source-entrypoint, web-search-plus:runtime-tool-capture, wecom:channel-contract-probe, wecom:package-dependency-install-required, wecom:runtime-tool-capture, yuanbao:channel-contract-probe, yuanbao:package-dependency-install-required, yuanbao:package-typescript-source-entrypoint, yuanbao:runtime-tool-capture | +| pass | compatibility-report.p1-issues | 39 P1 issues tracked | a2a-gateway:registration-capture-gap, clawmetry:missing-compat-record, clawmetry:registration-capture-gap, clawrouter:registration-capture-gap, codex-app-server:registration-capture-gap, connectclaw:registration-capture-gap, dingtalk-connector:registration-capture-gap, honcho:conversation-access-hook, honcho:missing-compat-record, honcho:registration-capture-gap, hyperspell:conversation-access-hook, hyperspell:registration-capture-gap, kitchen-sink:before-tool-call-probe, kitchen-sink:conversation-access-hook, kitchen-sink:registration-capture-gap, lightclawbot:registration-capture-gap, llm-trace-phoenix:conversation-access-hook, lossless-claw:registration-capture-gap, mcp-adapter:registration-capture-gap, memory-tencentdb:conversation-access-hook, memos-cloud:conversation-access-hook, memos-cloud:registration-capture-gap, mocrane-wecom:registration-capture-gap, nemoclaw:before-tool-call-probe, nemoclaw:registration-capture-gap, openclaw-telemetry:before-tool-call-probe, openclaw-telemetry:conversation-access-hook, openclaw-telemetry:registration-capture-gap, openclaw-weixin:registration-capture-gap, opik-openclaw:before-tool-call-probe, opik-openclaw:conversation-access-hook, opik-openclaw:registration-capture-gap, qqbot:registration-capture-gap, secureclaw:registration-capture-gap, telnyx-sms:registration-capture-gap, wecom:before-tool-call-probe, wecom:registration-capture-gap, yuanbao:missing-compat-record, yuanbao:registration-capture-gap | +| pass | execution-results.failures | 0 failed synthetic probes | - | diff --git a/reports/crabpot-cold-import.json b/reports/crabpot-cold-import.json index 02f2445..f38d4b2 100644 --- a/reports/crabpot-cold-import.json +++ b/reports/crabpot-cold-import.json @@ -3,17 +3,17 @@ "targetOpenClaw": { "status": "ok", "configuredPath": "./openclaw", - "sdkExportCount": 291 + "sdkExportCount": 294 }, "summary": { - "fixtureCount": 32, - "entrypointCount": 39, + "fixtureCount": 33, + "entrypointCount": 40, "readyCount": 3, - "blockedCount": 36, - "tsLoaderRequiredCount": 17, - "buildRequiredCount": 8, + "blockedCount": 37, + "tsLoaderRequiredCount": 18, + "buildRequiredCount": 9, "dependencyInstallRequiredCount": 19, - "sdkAliasRequiredCount": 6 + "sdkAliasRequiredCount": 5 }, "fixtures": [ { @@ -512,6 +512,31 @@ } ] }, + { + "id": "nemoclaw", + "priority": "high", + "entrypoints": [ + { + "id": "cold-import.extension:nemoclaw:plugins-nemoclaw-nemoclaw-dist-index-js", + "fixture": "nemoclaw", + "packagePath": "plugins/nemoclaw/nemoclaw/package.json", + "kind": "extension", + "specifier": "./dist/index.js", + "path": "plugins/nemoclaw/nemoclaw/dist/index.js", + "status": "build-required", + "blockers": [ + { + "code": "build-required", + "message": "entrypoint points at build output that is absent in the fixture checkout", + "evidence": "plugins/nemoclaw/nemoclaw/dist/index.js" + } + ], + "assertions": [ + "plugin build or source alias resolution runs before cold import" + ] + } + ] + }, { "id": "memory-tencentdb", "priority": "high", @@ -1043,7 +1068,7 @@ "kind": "extension", "specifier": "./index.ts", "path": "plugins/codex-app-server/index.ts", - "status": "sdk-alias-required", + "status": "ts-loader-required", "blockers": [ { "code": "ts-loader-required", @@ -1054,29 +1079,11 @@ "code": "dependency-install-required", "message": "package declares runtime dependencies that must be installed before cold import", "evidence": "ws" - }, - { - "code": "sdk-alias-required", - "message": "fixture imports an SDK alias missing from target OpenClaw package exports", - "evidence": "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:104" - }, - { - "code": "sdk-alias-required", - "message": "fixture imports an SDK alias missing from target OpenClaw package exports", - "evidence": "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:106" - }, - { - "code": "sdk-alias-required", - "message": "fixture imports an SDK alias missing from target OpenClaw package exports", - "evidence": "openclaw/plugin-sdk/telegram-account @ plugins/codex-app-server/src/controller.ts:105" } ], "assertions": [ "TypeScript source entrypoint is compiled or loaded before cold import", - "fixture dependencies are installed in an isolated workspace before cold import", - "target OpenClaw exports the imported SDK alias or provides a migration shim", - "target OpenClaw exports the imported SDK alias or provides a migration shim", - "target OpenClaw exports the imported SDK alias or provides a migration shim" + "fixture dependencies are installed in an isolated workspace before cold import" ] } ] diff --git a/reports/crabpot-cold-import.md b/reports/crabpot-cold-import.md index 41561a8..d4777ff 100644 --- a/reports/crabpot-cold-import.md +++ b/reports/crabpot-cold-import.md @@ -6,14 +6,14 @@ Generated: deterministic | Metric | Value | | --------------------------- | ----- | -| Fixtures | 32 | -| Entrypoints | 39 | +| Fixtures | 33 | +| Entrypoints | 40 | | Ready | 3 | -| Blocked | 36 | -| TypeScript loader required | 17 | -| Build required | 8 | +| Blocked | 37 | +| TypeScript loader required | 18 | +| Build required | 9 | | Dependency install required | 19 | -| SDK alias required | 6 | +| SDK alias required | 5 | ## Entrypoints @@ -38,6 +38,7 @@ Generated: deterministic | kitchen-sink | extension | ready | plugins/kitchen-sink/src/index.js | - | entrypoint can be imported by Node without fixture credentials; registration capture shim receives plugin registrations | | kitchen-sink | runtimeExtension | ready | plugins/kitchen-sink/src/index.js | - | entrypoint can be imported by Node without fixture credentials; registration capture shim receives plugin registrations | | kitchen-sink | setupEntry | ready | plugins/kitchen-sink/src/setup.js | - | entrypoint can be imported by Node without fixture credentials; registration capture shim receives plugin registrations | +| nemoclaw | extension | build-required | plugins/nemoclaw/nemoclaw/dist/index.js | build-required | plugin build or source alias resolution runs before cold import | | memory-tencentdb | extension | ts-loader-required | plugins/memory-tencentdb/.crabpot-package/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import | | ddingtalk | extension | ts-loader-required | plugins/ddingtalk/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import | | dingtalk-connector | extension | build-required | plugins/dingtalk-connector/dist/index.mjs | build-required | plugin build or source alias resolution runs before cold import | @@ -54,7 +55,7 @@ Generated: deterministic | memos-cloud | extension | review-required | plugins/memos-cloud/index.js | top-level-side-effect-review | cold import sandbox blocks network/process side effects before register capture | | clawmetry | extension | sdk-alias-required | plugins/clawmetry/clawhub-plugin/index.ts | ts-loader-required, dependency-install-required, sdk-alias-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import; target OpenClaw exports the imported SDK alias or provides a migration shim | | clawmetry | runtimeExtension | sdk-alias-required | plugins/clawmetry/clawhub-plugin/dist/index.js | build-required, sdk-alias-required | plugin build or source alias resolution runs before cold import; target OpenClaw exports the imported SDK alias or provides a migration shim | -| codex-app-server | extension | sdk-alias-required | plugins/codex-app-server/index.ts | ts-loader-required, dependency-install-required, sdk-alias-required, sdk-alias-required, sdk-alias-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import; target OpenClaw exports the imported SDK alias or provides a migration shim; target OpenClaw exports the imported SDK alias or provides a migration shim; target OpenClaw exports the imported SDK alias or provides a migration shim | +| codex-app-server | extension | ts-loader-required | plugins/codex-app-server/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import | | web-search-plus | extension | ts-loader-required | plugins/web-search-plus/index.ts | ts-loader-required, top-level-side-effect-review | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture | | apify | extension | ts-loader-required | plugins/apify/src/index.ts | ts-loader-required, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; fixture dependencies are installed in an isolated workspace before cold import | | inworld-tts | extension | ts-loader-required | plugins/inworld-tts/index.ts | ts-loader-required | TypeScript source entrypoint is compiled or loaded before cold import | diff --git a/reports/crabpot-dashboard-data.json b/reports/crabpot-dashboard-data.json index ecb7921..b37e889 100644 --- a/reports/crabpot-dashboard-data.json +++ b/reports/crabpot-dashboard-data.json @@ -1,25 +1,25 @@ { "schemaVersion": 1, - "generatedAt": "2026-04-30T09:53:07Z", - "runUrl": "https://github.com/openclaw/crabpot/actions/runs/25158883422", + "generatedAt": "deterministic", + "runUrl": "", "mode": "check", "openclawLabel": "openclaw@latest (2026.4.27, cbc2ba093146)", "status": "pass", "metrics": { - "fixtures": 32, + "fixtures": 33, "hardBreakages": 0, "warnings": 68, "suggestions": 154, "issues": 222, "p0Issues": 5, "p1Issues": 83, - "liveIssues": 5, - "liveP0Issues": 5, - "compatGaps": 49, - "deprecationWarnings": 27, - "inspectorGaps": 113, - "upstreamIssues": 28, - "contractProbes": 170, + "liveIssues": 4, + "liveP0Issues": 4, + "compatGaps": 3, + "deprecationWarnings": 28, + "inspectorGaps": 117, + "upstreamIssues": 29, + "contractProbes": 175, "policyFailures": 0, "policyWarnings": 20, "refDiffFailures": 0, @@ -27,35 +27,35 @@ "executionPass": 12, "executionFail": 0, "executionBlocked": 18, - "syntheticReady": 288, + "syntheticReady": 292, "syntheticBlocked": 0, - "syntheticTotal": 288, + "syntheticTotal": 292, "coldReady": 3, - "coldBlocked": 36, - "coldTotal": 39, - "workspaceEntrypoints": 39, + "coldBlocked": 37, + "coldTotal": 40, + "workspaceEntrypoints": 40, "workspaceInstalls": 19, - "workspaceBuilds": 10, + "workspaceBuilds": 11, "platformWindowsRisks": 14, "platformContainerRisks": 14, "loaderJitiCandidates": 21, - "importLoopP50Ms": 1534, - "importLoopP95Ms": 1576, + "importLoopP50Ms": 2467, + "importLoopP95Ms": 2484, "importLoopOpenClawLifecycleCount": 3, - "importLoopOpenClawImportP50Ms": 100.7, - "importLoopOpenClawImportP95Ms": 101.5, - "importLoopOpenClawActivationP50Ms": 0.3, - "importLoopOpenClawActivationP95Ms": 0.3, + "importLoopOpenClawImportP50Ms": 315.9, + "importLoopOpenClawImportP95Ms": 316.1, + "importLoopOpenClawActivationP50Ms": 0.1, + "importLoopOpenClawActivationP95Ms": 0.2, "importLoopMetricBasis": "baseline-adjusted", - "importLoopMaxRssMb": 1.5, - "importLoopMaxCpuMs": 61, - "importLoopRssSampleCount": 183, - "importLoopCpuSampleCount": 183, - "runtimeP50Ms": 547, - "runtimeP95Ms": 570, - "runtimeMaxRssMb": 88.3, - "runtimeRssSampleCount": 496, - "runtimeCpuSampleCount": 496, + "importLoopMaxRssMb": 3.5, + "importLoopMaxCpuMs": 238, + "importLoopRssSampleCount": 20, + "importLoopCpuSampleCount": 20, + "runtimeP50Ms": 2072, + "runtimeP95Ms": 8684, + "runtimeMaxRssMb": 80.5, + "runtimeRssSampleCount": 181, + "runtimeCpuSampleCount": 181, "runtimeSamplesPerCommand": 3, "runtimeWallTimeBasis": "command-median-p95" }, @@ -70,15 +70,6 @@ "decision": "core-compat-adapter", "title": "clawmetry: plugin SDK import aliases are missing from target package exports" }, - { - "id": "CRABPOT-62AC9404", - "severity": "P0", - "issueClass": "live-issue", - "fixture": "codex-app-server", - "code": "sdk-export-missing", - "decision": "core-compat-adapter", - "title": "codex-app-server: plugin SDK import aliases are missing from target package exports" - }, { "id": "CRABPOT-E2CB6C9A", "severity": "P0", @@ -106,15 +97,6 @@ "decision": "core-compat-adapter", "title": "yuanbao: plugin SDK import aliases are missing from target package exports" }, - { - "id": "CRABPOT-DC39E00B", - "severity": "P1", - "issueClass": "compat-gap", - "fixture": "a2a-gateway", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "title": "a2a-gateway: compat-dependent behavior lacks registry coverage" - }, { "id": "CRABPOT-955F01E4", "severity": "P1", @@ -124,24 +106,6 @@ "decision": "inspector-follow-up", "title": "a2a-gateway: runtime registrations need capture before contract judgment" }, - { - "id": "CRABPOT-B6F9FB5F", - "severity": "P1", - "issueClass": "compat-gap", - "fixture": "agentchat", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "title": "agentchat: compat-dependent behavior lacks registry coverage" - }, - { - "id": "CRABPOT-15A7C122", - "severity": "P1", - "issueClass": "compat-gap", - "fixture": "clawmetry", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "title": "clawmetry: compat-dependent behavior lacks registry coverage" - }, { "id": "CRABPOT-08C6582D", "severity": "P1", @@ -150,6 +114,42 @@ "code": "missing-compat-record", "decision": "core-compat-adapter", "title": "clawmetry: compat-dependent behavior lacks registry coverage" + }, + { + "id": "CRABPOT-CE344535", + "severity": "P1", + "issueClass": "inspector-gap", + "fixture": "clawmetry", + "code": "registration-capture-gap", + "decision": "inspector-follow-up", + "title": "clawmetry: runtime registrations need capture before contract judgment" + }, + { + "id": "CRABPOT-F69491D6", + "severity": "P1", + "issueClass": "inspector-gap", + "fixture": "clawrouter", + "code": "registration-capture-gap", + "decision": "inspector-follow-up", + "title": "clawrouter: runtime registrations need capture before contract judgment" + }, + { + "id": "CRABPOT-5F421FDE", + "severity": "P1", + "issueClass": "inspector-gap", + "fixture": "codex-app-server", + "code": "registration-capture-gap", + "decision": "inspector-follow-up", + "title": "codex-app-server: runtime registrations need capture before contract judgment" + }, + { + "id": "CRABPOT-FF26FA1F", + "severity": "P1", + "issueClass": "inspector-gap", + "fixture": "connectclaw", + "code": "registration-capture-gap", + "decision": "inspector-follow-up", + "title": "connectclaw: runtime registrations need capture before contract judgment" } ], "artifactPaths": { diff --git a/reports/crabpot-import-loop-profile.json b/reports/crabpot-import-loop-profile.json index 9e5c768..3dcd50d 100644 --- a/reports/crabpot-import-loop-profile.json +++ b/reports/crabpot-import-loop-profile.json @@ -7,18 +7,18 @@ "runs": 3, "entrypoint": ".crabpot/import-loop/baseline-plugin.mjs", "reference": { - "wallMs": 1558, - "peakRssMb": 278.2, - "cpuMsEstimate": 2791 + "wallMs": 2209, + "peakRssMb": 348.7, + "cpuMsEstimate": 1799 }, "max": { - "wallMs": 2132, - "peakRssMb": 300.1, - "cpuMsEstimate": 3584 + "wallMs": 2442, + "peakRssMb": 351.8, + "cpuMsEstimate": 1838 }, - "statSampleCount": 202, - "rssSampleCount": 202, - "cpuSampleCount": 202, + "statSampleCount": 19, + "rssSampleCount": 19, + "cpuSampleCount": 19, "failCount": 0, "samples": [ { @@ -31,32 +31,32 @@ "pluginId": "crabpot-lifecycle-probe", "importPhase": "full", "activationPhase": "full:register", - "importMs": 97.9, - "activationMs": 0.3, - "openclawPath": "/home/runner/work/crabpot/crabpot/openclaw", + "importMs": 349.2, + "activationMs": 0.1, + "openclawPath": "/Users/vincentkoc/GIT/_Perso/openclaw", "phases": [ { "phase": "full", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 97.9, - "source": "/tmp/crabpot-openclaw-plugin-rVrYPt/index.mjs" + "elapsedMs": 349.2, + "source": "/private/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-5MQGTj/index.mjs" }, { "phase": "full:register", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 0.3, - "source": "/tmp/crabpot-openclaw-plugin-rVrYPt/index.mjs" + "elapsedMs": 0.1, + "source": "/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-5MQGTj/index.mjs" } ] }, - "wallMs": 2132, - "peakRssMb": 300.1, - "peakCpuPercent": 182, - "cpuMsEstimate": 3584, - "statSampleCount": 80, - "rssSampleCount": 80, - "cpuSampleCount": 80, - "stderrPreview": "" + "wallMs": 2442, + "peakRssMb": 351.8, + "peakCpuPercent": 116.4, + "cpuMsEstimate": 1799, + "statSampleCount": 7, + "rssSampleCount": 7, + "cpuSampleCount": 7, + "stderrPreview": "(node:76928) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { "index": 1, @@ -68,32 +68,32 @@ "pluginId": "crabpot-lifecycle-probe", "importPhase": "full", "activationPhase": "full:register", - "importMs": 101, - "activationMs": 0.2, - "openclawPath": "/home/runner/work/crabpot/crabpot/openclaw", + "importMs": 304.7, + "activationMs": 0.1, + "openclawPath": "/Users/vincentkoc/GIT/_Perso/openclaw", "phases": [ { "phase": "full", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 101, - "source": "/tmp/crabpot-openclaw-plugin-LH7bC9/index.mjs" + "elapsedMs": 304.7, + "source": "/private/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-kCSGRi/index.mjs" }, { "phase": "full:register", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 0.2, - "source": "/tmp/crabpot-openclaw-plugin-LH7bC9/index.mjs" + "elapsedMs": 0.1, + "source": "/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-kCSGRi/index.mjs" } ] }, - "wallMs": 1514, - "peakRssMb": 278.2, - "peakCpuPercent": 205, - "cpuMsEstimate": 2704, - "statSampleCount": 60, - "rssSampleCount": 60, - "cpuSampleCount": 60, - "stderrPreview": "" + "wallMs": 2209, + "peakRssMb": 330.8, + "peakCpuPercent": 137.9, + "cpuMsEstimate": 1772, + "statSampleCount": 6, + "rssSampleCount": 6, + "cpuSampleCount": 6, + "stderrPreview": "(node:77094) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { "index": 2, @@ -105,32 +105,32 @@ "pluginId": "crabpot-lifecycle-probe", "importPhase": "full", "activationPhase": "full:register", - "importMs": 93, - "activationMs": 0.2, - "openclawPath": "/home/runner/work/crabpot/crabpot/openclaw", + "importMs": 317.6, + "activationMs": 0.1, + "openclawPath": "/Users/vincentkoc/GIT/_Perso/openclaw", "phases": [ { "phase": "full", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 93, - "source": "/tmp/crabpot-openclaw-plugin-2RkFCD/index.mjs" + "elapsedMs": 317.6, + "source": "/private/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-2brs4W/index.mjs" }, { "phase": "full:register", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 0.2, - "source": "/tmp/crabpot-openclaw-plugin-2RkFCD/index.mjs" + "elapsedMs": 0.1, + "source": "/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-2brs4W/index.mjs" } ] }, - "wallMs": 1558, - "peakRssMb": 275.6, - "peakCpuPercent": 205, - "cpuMsEstimate": 2791, - "statSampleCount": 62, - "rssSampleCount": 62, - "cpuSampleCount": 62, - "stderrPreview": "" + "wallMs": 2195, + "peakRssMb": 348.7, + "peakCpuPercent": 130.7, + "cpuMsEstimate": 1838, + "statSampleCount": 6, + "rssSampleCount": 6, + "cpuSampleCount": 6, + "stderrPreview": "(node:77206) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" } ] }, @@ -138,25 +138,25 @@ "runs": 3, "baselineRuns": 3, "baselineFailCount": 0, - "p50WallMs": 1534, - "p95WallMs": 1576, - "p50PluginWallDeltaMs": 0, - "p95PluginWallDeltaMs": 18, + "p50WallMs": 2467, + "p95WallMs": 2484, + "p50PluginWallDeltaMs": 258, + "p95PluginWallDeltaMs": 275, "openClawLifecycleCount": 3, - "p50OpenClawImportMs": 100.7, - "p95OpenClawImportMs": 101.5, - "p50OpenClawActivationMs": 0.3, - "p95OpenClawActivationMs": 0.3, - "maxPeakRssMb": 279.7, - "maxCpuMsEstimate": 2852, - "maxPluginPeakRssDeltaMb": 1.5, - "maxPluginCpuDeltaMsEstimate": 61, - "baselineReferenceWallMs": 1558, - "baselineReferencePeakRssMb": 278.2, - "baselineReferenceCpuMsEstimate": 2791, - "statSampleCount": 183, - "rssSampleCount": 183, - "cpuSampleCount": 183, + "p50OpenClawImportMs": 315.9, + "p95OpenClawImportMs": 316.1, + "p50OpenClawActivationMs": 0.1, + "p95OpenClawActivationMs": 0.2, + "maxPeakRssMb": 352.2, + "maxCpuMsEstimate": 2037, + "maxPluginPeakRssDeltaMb": 3.5, + "maxPluginCpuDeltaMsEstimate": 238, + "baselineReferenceWallMs": 2209, + "baselineReferencePeakRssMb": 348.7, + "baselineReferenceCpuMsEstimate": 1799, + "statSampleCount": 20, + "rssSampleCount": 20, + "cpuSampleCount": 20, "capturedCount": 6, "failCount": 0 }, @@ -171,35 +171,35 @@ "pluginId": "crabpot-lifecycle-probe", "importPhase": "full", "activationPhase": "full:register", - "importMs": 101.5, + "importMs": 311.6, "activationMs": 0.2, - "openclawPath": "/home/runner/work/crabpot/crabpot/openclaw", + "openclawPath": "/Users/vincentkoc/GIT/_Perso/openclaw", "phases": [ { "phase": "full", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 101.5, - "source": "/tmp/crabpot-openclaw-plugin-eTELwq/index.mjs" + "elapsedMs": 311.6, + "source": "/private/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-zDINf7/index.mjs" }, { "phase": "full:register", "pluginId": "crabpot-lifecycle-probe", "elapsedMs": 0.2, - "source": "/tmp/crabpot-openclaw-plugin-eTELwq/index.mjs" + "source": "/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-zDINf7/index.mjs" } ] }, - "wallMs": 1576, - "peakRssMb": 271.5, - "peakCpuPercent": 205, - "cpuMsEstimate": 2852, - "statSampleCount": 62, - "rssSampleCount": 62, - "cpuSampleCount": 62, - "stderrPreview": "", - "pluginWallDeltaMs": 18, - "pluginPeakRssDeltaMb": 0, - "pluginCpuDeltaMsEstimate": 61 + "wallMs": 2484, + "peakRssMb": 352.2, + "peakCpuPercent": 122.5, + "cpuMsEstimate": 2037, + "statSampleCount": 7, + "rssSampleCount": 7, + "cpuSampleCount": 7, + "stderrPreview": "(node:77323) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)", + "pluginWallDeltaMs": 275, + "pluginPeakRssDeltaMb": 3.5, + "pluginCpuDeltaMsEstimate": 238 }, { "index": 1, @@ -211,35 +211,35 @@ "pluginId": "crabpot-lifecycle-probe", "importPhase": "full", "activationPhase": "full:register", - "importMs": 99, - "activationMs": 0.3, - "openclawPath": "/home/runner/work/crabpot/crabpot/openclaw", + "importMs": 316.1, + "activationMs": 0.1, + "openclawPath": "/Users/vincentkoc/GIT/_Perso/openclaw", "phases": [ { "phase": "full", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 99, - "source": "/tmp/crabpot-openclaw-plugin-2C6Jrl/index.mjs" + "elapsedMs": 316.1, + "source": "/private/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-I5f3C4/index.mjs" }, { "phase": "full:register", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 0.3, - "source": "/tmp/crabpot-openclaw-plugin-2C6Jrl/index.mjs" + "elapsedMs": 0.1, + "source": "/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-I5f3C4/index.mjs" } ] }, - "wallMs": 1530, - "peakRssMb": 279.7, - "peakCpuPercent": 206, - "cpuMsEstimate": 2733, - "statSampleCount": 60, - "rssSampleCount": 60, - "cpuSampleCount": 60, - "stderrPreview": "", - "pluginWallDeltaMs": 0, - "pluginPeakRssDeltaMb": 1.5, - "pluginCpuDeltaMsEstimate": 0 + "wallMs": 2467, + "peakRssMb": 351.1, + "peakCpuPercent": 133.9, + "cpuMsEstimate": 2023, + "statSampleCount": 7, + "rssSampleCount": 7, + "cpuSampleCount": 7, + "stderrPreview": "(node:77486) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)", + "pluginWallDeltaMs": 258, + "pluginPeakRssDeltaMb": 2.4, + "pluginCpuDeltaMsEstimate": 224 }, { "index": 2, @@ -251,34 +251,34 @@ "pluginId": "crabpot-lifecycle-probe", "importPhase": "full", "activationPhase": "full:register", - "importMs": 100.7, - "activationMs": 0.3, - "openclawPath": "/home/runner/work/crabpot/crabpot/openclaw", + "importMs": 315.9, + "activationMs": 0.1, + "openclawPath": "/Users/vincentkoc/GIT/_Perso/openclaw", "phases": [ { "phase": "full", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 100.7, - "source": "/tmp/crabpot-openclaw-plugin-cSNOy7/index.mjs" + "elapsedMs": 315.9, + "source": "/private/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-th2Hpp/index.mjs" }, { "phase": "full:register", "pluginId": "crabpot-lifecycle-probe", - "elapsedMs": 0.3, - "source": "/tmp/crabpot-openclaw-plugin-cSNOy7/index.mjs" + "elapsedMs": 0.1, + "source": "/var/folders/1x/yqgflz6n61v5v5ynq_mtvb940000gn/T/crabpot-openclaw-plugin-th2Hpp/index.mjs" } ] }, - "wallMs": 1534, - "peakRssMb": 276.4, - "peakCpuPercent": 204, - "cpuMsEstimate": 2716, - "statSampleCount": 61, - "rssSampleCount": 61, - "cpuSampleCount": 61, - "stderrPreview": "", + "wallMs": 2151, + "peakRssMb": 351.6, + "peakCpuPercent": 140.6, + "cpuMsEstimate": 1757, + "statSampleCount": 6, + "rssSampleCount": 6, + "cpuSampleCount": 6, + "stderrPreview": "(node:77581) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)", "pluginWallDeltaMs": 0, - "pluginPeakRssDeltaMb": 0, + "pluginPeakRssDeltaMb": 2.9, "pluginCpuDeltaMsEstimate": 0 } ] diff --git a/reports/crabpot-import-loop-profile.md b/reports/crabpot-import-loop-profile.md index 04731d6..aa2c4c0 100644 --- a/reports/crabpot-import-loop-profile.md +++ b/reports/crabpot-import-loop-profile.md @@ -11,25 +11,25 @@ Entrypoint: test/fixtures/lazy-import-plugin.mjs | runs | 3 | | baselineRuns | 3 | | baselineFailCount | 0 | -| p50WallMs | 1534 | -| p95WallMs | 1576 | -| p50PluginWallDeltaMs | 0 | -| p95PluginWallDeltaMs | 18 | -| maxPluginPeakRssDeltaMb | 1.5 MB | -| maxPluginCpuDeltaMsEstimate | 61 ms | +| p50WallMs | 2467 | +| p95WallMs | 2484 | +| p50PluginWallDeltaMs | 258 | +| p95PluginWallDeltaMs | 275 | +| maxPluginPeakRssDeltaMb | 3.5 MB | +| maxPluginCpuDeltaMsEstimate | 238 ms | | openClawLifecycleCount | 3 | -| p50OpenClawImportMs | 100.7 ms | -| p95OpenClawImportMs | 101.5 ms | -| p50OpenClawActivationMs | 0.3 ms | -| p95OpenClawActivationMs | 0.3 ms | -| maxPeakRssMb | 279.7 MB | -| maxCpuMsEstimate | 2852 ms | -| baselineReferenceWallMs | 1558 ms | -| baselineReferencePeakRssMb | 278.2 MB | -| baselineReferenceCpuMsEstimate | 2791 ms | -| statSampleCount | 183 | -| rssSampleCount | 183 | -| cpuSampleCount | 183 | +| p50OpenClawImportMs | 315.9 ms | +| p95OpenClawImportMs | 316.1 ms | +| p50OpenClawActivationMs | 0.1 ms | +| p95OpenClawActivationMs | 0.2 ms | +| maxPeakRssMb | 352.2 MB | +| maxCpuMsEstimate | 2037 ms | +| baselineReferenceWallMs | 2209 ms | +| baselineReferencePeakRssMb | 348.7 MB | +| baselineReferenceCpuMsEstimate | 1799 ms | +| statSampleCount | 20 | +| rssSampleCount | 20 | +| cpuSampleCount | 20 | | capturedCount | 6 | | failCount | 0 | @@ -40,19 +40,19 @@ Entrypoint: test/fixtures/lazy-import-plugin.mjs | mode | minimal-plugin-capture | | runs | 3 | | entrypoint | .crabpot/import-loop/baseline-plugin.mjs | -| referenceWallMs | 1558 ms | -| referencePeakRssMb | 278.2 MB | -| referenceCpuMsEstimate | 2791 ms | -| maxWallMs | 2132 ms | -| maxPeakRssMb | 300.1 MB | -| maxCpuMsEstimate | 3584 ms | -| statSampleCount | 202 | +| referenceWallMs | 2209 ms | +| referencePeakRssMb | 348.7 MB | +| referenceCpuMsEstimate | 1799 ms | +| maxWallMs | 2442 ms | +| maxPeakRssMb | 351.8 MB | +| maxCpuMsEstimate | 1838 ms | +| statSampleCount | 19 | | failCount | 0 | ## Samples | Run | Status | Captured | OpenClaw Import | OpenClaw Activate | Plugin Wall Delta | Plugin RSS Delta | Plugin CPU Delta | Raw Wall | Raw Peak RSS | Raw CPU Estimate | RSS/CPU samples | Exit | | --- | -------- | -------- | --------------- | ----------------- | ----------------- | ---------------- | ---------------- | -------- | ------------ | ---------------- | --------------- | ---- | -| 0 | captured | 2 | 101.5 ms | 0.2 ms | 18 ms | 0 MB | 61 ms | 1576 ms | 271.5 MB | 2852 ms | 62/62 | 0 | -| 1 | captured | 2 | 99 ms | 0.3 ms | 0 ms | 1.5 MB | 0 ms | 1530 ms | 279.7 MB | 2733 ms | 60/60 | 0 | -| 2 | captured | 2 | 100.7 ms | 0.3 ms | 0 ms | 0 MB | 0 ms | 1534 ms | 276.4 MB | 2716 ms | 61/61 | 0 | +| 0 | captured | 2 | 311.6 ms | 0.2 ms | 275 ms | 3.5 MB | 238 ms | 2484 ms | 352.2 MB | 2037 ms | 7/7 | 0 | +| 1 | captured | 2 | 316.1 ms | 0.1 ms | 258 ms | 2.4 MB | 224 ms | 2467 ms | 351.1 MB | 2023 ms | 7/7 | 0 | +| 2 | captured | 2 | 315.9 ms | 0.1 ms | 0 ms | 2.9 MB | 0 ms | 2151 ms | 351.6 MB | 1757 ms | 6/6 | 0 | diff --git a/reports/crabpot-issues.md b/reports/crabpot-issues.md index 4a0f0c3..7c68576 100644 --- a/reports/crabpot-issues.md +++ b/reports/crabpot-issues.md @@ -7,26 +7,26 @@ Status: PASS | Metric | Value | | -------------------- | ----- | -| Issue findings | 222 | -| 🔴 P0 | 5 | -| 🟠 P1 | 83 | -| Live issues | 5 | -| Live P0 issues | 5 | -| Compat gaps | 49 | -| Deprecation warnings | 27 | -| Inspector gaps | 113 | -| Upstream metadata | 28 | -| Contract probes | 170 | +| Issue findings | 181 | +| 🔴 P0 | 4 | +| 🟠 P1 | 39 | +| Live issues | 4 | +| Live P0 issues | 4 | +| Compat gaps | 3 | +| Deprecation warnings | 28 | +| Inspector gaps | 117 | +| Upstream metadata | 29 | +| Contract probes | 175 | ## Triage Overview | Class | Count | P0 | Meaning | | ------------------- | ----- | -- | --------------------------------------------------------------------------------------------------------------- | -| live-issue | 5 | 5 | Potential runtime breakage in the target OpenClaw/plugin pair. P0 only when it is not a deprecated compat seam. | -| compat-gap | 49 | - | Compatibility behavior is needed but missing from the target OpenClaw compat registry. | -| deprecation-warning | 27 | - | Plugin uses a supported but deprecated compatibility seam; keep it wired while migration exists. | -| inspector-gap | 113 | - | Plugin Inspector needs stronger capture/probe evidence before making contract judgments. | -| upstream-metadata | 28 | - | Plugin package or manifest metadata should improve upstream; not a target OpenClaw live break by itself. | +| live-issue | 4 | 4 | Potential runtime breakage in the target OpenClaw/plugin pair. P0 only when it is not a deprecated compat seam. | +| compat-gap | 3 | - | Compatibility behavior is needed but missing from the target OpenClaw compat registry. | +| deprecation-warning | 28 | - | Plugin uses a supported but deprecated compatibility seam; keep it wired while migration exists. | +| inspector-gap | 117 | - | Plugin Inspector needs stronger capture/probe evidence before making contract judgments. | +| upstream-metadata | 29 | - | Plugin package or manifest metadata should improve upstream; not a target OpenClaw live break by itself. | | fixture-regression | 0 | - | Fixture no longer exposes an expected seam; investigate fixture pin or scanner drift. | ## P0 Live Issues @@ -37,14 +37,6 @@ Status: PASS - evidence: - [openclaw/plugin-sdk/diagnostics-otel @ service.ts:2](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/src/service.ts#L2) -- 🔴 P0 **codex-app-server** `live-issue` `core-compat-adapter` - - **sdk-export-missing**: codex-app-server: plugin SDK import aliases are missing from target package exports - - state: blocking · compat:untracked · live - - evidence: - - [openclaw/plugin-sdk/discord @ controller.ts:104](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L104) - - [openclaw/plugin-sdk/discord @ controller.ts:106](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L106) - - [openclaw/plugin-sdk/telegram-account @ controller.ts:105](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L105) - - 🔴 P0 **honcho** `live-issue` `core-compat-adapter` - **sdk-export-missing**: honcho: plugin SDK import aliases are missing from target package exports - state: blocking · compat:untracked · live @@ -76,14 +68,6 @@ Status: PASS - evidence: - [openclaw/plugin-sdk/diagnostics-otel @ service.ts:2](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/src/service.ts#L2) -- 🔴 P0 **codex-app-server** `live-issue` `core-compat-adapter` - - **sdk-export-missing**: codex-app-server: plugin SDK import aliases are missing from target package exports - - state: blocking · compat:untracked · live - - evidence: - - [openclaw/plugin-sdk/discord @ controller.ts:104](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L104) - - [openclaw/plugin-sdk/discord @ controller.ts:106](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L106) - - [openclaw/plugin-sdk/telegram-account @ controller.ts:105](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L105) - - 🔴 P0 **honcho** `live-issue` `core-compat-adapter` - **sdk-export-missing**: honcho: plugin SDK import aliases are missing from target package exports - state: blocking · compat:untracked · live @@ -109,294 +93,18 @@ Status: PASS ## Compat Gaps -- 🟠 P1 **a2a-gateway** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: a2a-gateway: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **agentchat** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: agentchat: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **clawmetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: clawmetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **clawmetry** `compat-gap` `core-compat-adapter` - **missing-compat-record**: clawmetry: compat-dependent behavior lacks registry coverage - state: open · compat:missing - evidence: - plugin-sdk-export-aliases -- 🟠 P1 **clawrouter** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: clawrouter: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **codex-app-server** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: codex-app-server: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **codex-app-server** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: codex-app-server: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - plugin-sdk-export-aliases - -- 🟠 P1 **connectclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: connectclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **ddingtalk** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: ddingtalk: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **dingtalk-connector** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: dingtalk-connector: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **dingtalk-connector** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: dingtalk-connector: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - state: open · compat:missing - evidence: - plugin-sdk-export-aliases -- 🟠 P1 **hyperspell** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: hyperspell: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **hyperspell** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: hyperspell: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **lightclawbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lightclawbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **lightclawbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lightclawbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **llm-trace-phoenix** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: llm-trace-phoenix: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **lossless-claw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lossless-claw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **mcp-adapter** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mcp-adapter: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **memory-tencentdb** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memory-tencentdb: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **memos-cloud** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memos-cloud: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **memos-cloud** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memos-cloud: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **mocrane-wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mocrane-wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **mocrane-wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mocrane-wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **openclaw-weixin** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-weixin: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **openclaw-weixin** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-weixin: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **qqbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: qqbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **qqbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: qqbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **secureclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: secureclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **telnyx-sms** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: telnyx-sms: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **telnyx-sms** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: telnyx-sms: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - state: open · compat:missing @@ -592,6 +300,12 @@ Status: PASS - [openclaw/plugin-sdk @ command-auth.ts:1](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/src/shared/command-auth.ts#L1) - [openclaw/plugin-sdk @ ws-adapter.ts:14](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/src/ws-adapter.ts#L14) +- 🟡 P2 **nemoclaw** `deprecation-warning` `core-compat-adapter` + - **legacy-before-agent-start**: nemoclaw: legacy before_agent_start hook compatibility is still used + - state: open · compat:deprecated · deprecated + - evidence: + - before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 + - 🟡 P2 **openclaw-telemetry** `deprecation-warning` `core-compat-adapter` - **legacy-before-agent-start**: openclaw-telemetry: legacy before_agent_start hook compatibility is still used - state: open · compat:deprecated · deprecated @@ -650,7 +364,7 @@ Status: PASS - 🟠 P1 **a2a-gateway** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: a2a-gateway: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerGatewayMethod @ index.ts:616](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L616) - [registerGatewayMethod @ index.ts:622](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L622) @@ -661,13 +375,13 @@ Status: PASS - 🟠 P1 **clawmetry** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: clawmetry: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:9](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/index.ts#L9) - 🟠 P1 **clawrouter** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: clawrouter: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:1636](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1636) - [registerCommand @ index.ts:1682](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1682) @@ -680,7 +394,7 @@ Status: PASS - 🟠 P1 **codex-app-server** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: codex-app-server: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:48](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L48) - [registerInteractiveHandler @ index.ts:29](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L29) @@ -689,7 +403,7 @@ Status: PASS - 🟠 P1 **connectclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: connectclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ commands.ts:18](https://github.com/osipov-anton/connectclaw/blob/6cd516650168890e9b850064afaaa5fe24df5950/packages/plugin/src/commands.ts#L18) - [registerCommand @ commands.ts:64](https://github.com/osipov-anton/connectclaw/blob/6cd516650168890e9b850064afaaa5fe24df5950/packages/plugin/src/commands.ts#L64) @@ -697,7 +411,7 @@ Status: PASS - 🟠 P1 **dingtalk-connector** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: dingtalk-connector: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:74](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/index.ts#L74) - [registerGatewayMethod @ gateway-methods.ts:130](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/src/gateway-methods.ts#L130) @@ -716,28 +430,28 @@ Status: PASS - 🟠 P1 **honcho** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: honcho: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ capture.ts:151](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/hooks/capture.ts#L151) - [agent_end @ subagent.ts:34](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/hooks/subagent.ts#L34) - 🟠 P1 **honcho** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: honcho: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerMemoryPromptSection @ index.ts:97](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/index.ts#L97) - [registerMemoryRuntime @ runtime.ts:274](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/runtime.ts#L274) - 🟠 P1 **hyperspell** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: hyperspell: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.ts:105](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/index.ts#L105) - [agent_end @ index.ts:116](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/index.ts#L116) - 🟠 P1 **hyperspell** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: hyperspell: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ slash.ts:166](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/commands/slash.ts#L166) - [registerCommand @ slash.ts:43](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/commands/slash.ts#L43) @@ -749,13 +463,13 @@ Status: PASS - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: kitchen-sink: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ generated-hooks.js:18](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L18) - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: kitchen-sink: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ generated-hooks.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L7) - [llm_input @ generated-hooks.js:22](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L22) @@ -763,7 +477,7 @@ Status: PASS - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: kitchen-sink: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerAutoEnableProbe @ generated-registrars.js:6](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L6) - [registerChannel @ generated-registrars.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L7) @@ -802,88 +516,100 @@ Status: PASS - 🟠 P1 **lightclawbot** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: lightclawbot: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/lightclawbot/.crabpot-package/dist/index.js:13 - 🟠 P1 **llm-trace-phoenix** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: llm-trace-phoenix: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [llm_input @ index.ts:154](https://github.com/pingshian0131/openclaw-plugin-llm-trace-phoenix/blob/05bc0f4ba67281c10fad7be356d32a54b00c59fd/index.ts#L154) - [llm_output @ index.ts:168](https://github.com/pingshian0131/openclaw-plugin-llm-trace-phoenix/blob/05bc0f4ba67281c10fad7be356d32a54b00c59fd/index.ts#L168) - 🟠 P1 **lossless-claw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: lossless-claw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:2055](https://github.com/Martian-Engineering/lossless-claw/blob/4724d3fe6ccfd85f275aad732f3b01551d909e5a/src/plugin/index.ts#L2055) - [registerContextEngine @ index.ts:2035](https://github.com/Martian-Engineering/lossless-claw/blob/4724d3fe6ccfd85f275aad732f3b01551d909e5a/src/plugin/index.ts#L2035) - 🟠 P1 **mcp-adapter** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: mcp-adapter: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:15](https://github.com/androidStern-personal/openclaw-mcp-adapter/blob/5434ce21ac780a46a493c8125e52e80a03dd2640/index.ts#L15) - 🟠 P1 **memory-tencentdb** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: memory-tencentdb: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - agent_end @ plugins/memory-tencentdb/.crabpot-package/index.ts:820 - 🟠 P1 **memos-cloud** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: memos-cloud: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.js:515](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/blob/03fcc33c5fd285971d4b3dbaa8bbb31cb727db7c/index.js#L515) - 🟠 P1 **memos-cloud** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: memos-cloud: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerHook @ index.js:467](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/blob/03fcc33c5fd285971d4b3dbaa8bbb31cb727db7c/index.js#L467) - 🟠 P1 **mocrane-wecom** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: mocrane-wecom: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:31](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L31) - [registerHttpRoute @ index.ts:34](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L34) +- 🟠 P1 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **before-tool-call-probe**: nemoclaw: before_tool_call needs terminal/block/approval probes + - state: open · compat:active + - evidence: + - before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384 + +- 🟠 P1 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **registration-capture-gap**: nemoclaw: runtime registrations need capture before contract judgment + - state: open · compat:active + - evidence: + - registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336 + - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: openclaw-telemetry: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ index.ts:12](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L12) - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: openclaw-telemetry: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.ts:62](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L62) - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: openclaw-telemetry: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:10](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L10) - 🟠 P1 **openclaw-weixin** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: openclaw-weixin: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22 - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: opik-openclaw: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ tool.ts:34](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service/hooks/tool.ts#L34) - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: opik-openclaw: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ service.ts:560](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service.ts#L560) - [llm_input @ llm.ts:39](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service/hooks/llm.ts#L39) @@ -891,19 +617,19 @@ Status: PASS - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: opik-openclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:16](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/index.ts#L16) - 🟠 P1 **qqbot** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: qqbot: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:16](https://github.com/tencent-connect/openclaw-qqbot/blob/3eee78922ed0b19af5c4c55f1dfe7d1c848e31f5/index.ts#L16) - 🟠 P1 **secureclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: secureclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:295](https://github.com/adversa-ai/secureclaw/blob/bf17e2b3deb989e348b3a98080e33a7047e90ac3/secureclaw/src/index.ts#L295) - [registerService @ index.ts:301](https://github.com/adversa-ai/secureclaw/blob/bf17e2b3deb989e348b3a98080e33a7047e90ac3/secureclaw/src/index.ts#L301) @@ -911,26 +637,26 @@ Status: PASS - 🟠 P1 **telnyx-sms** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: telnyx-sms: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerHttpRoute @ index.ts:259](https://github.com/team-telnyx/telnyx-openclaw-sms-channel/blob/66dba9edf2bd43605327531a748b4d8fbf0017dd/index.ts#L259) - 🟠 P1 **wecom** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: wecom: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ index.js:76](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L76) - 🟠 P1 **wecom** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: wecom: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.js:27](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L27) - [registerHttpRoute @ index.js:56](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L56) - 🟠 P1 **yuanbao** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: yuanbao: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:13 - registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:14 @@ -965,7 +691,7 @@ Status: PASS - 🟡 P2 **agentchat** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: agentchat: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ channel.ts:333](https://github.com/agentchatme/agentchat/blob/1460cece00ebd3829fb39d5db5ee23050937ed02/integrations/openclaw-channel/src/channel.ts#L333) @@ -1087,7 +813,7 @@ Status: PASS - 🟡 P2 **ddingtalk** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: ddingtalk: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ index.ts:8](https://github.com/largezhou/openclaw-dingtalk/blob/74d22da7335f261ec5febe2663bed6b81068b7ec/index.ts#L8) @@ -1106,7 +832,7 @@ Status: PASS - 🟡 P2 **dingtalk-connector** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: dingtalk-connector: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:74](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/index.ts#L74) @@ -1196,14 +922,14 @@ Status: PASS - 🟡 P2 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: kitchen-sink: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ generated-registrars.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L7) - [registerChannel @ kitchen-runtime.js:63](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/kitchen-runtime.js#L63) - 🟡 P2 **lightclawbot** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: lightclawbot: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/lightclawbot/.crabpot-package/dist/index.js:13 @@ -1306,7 +1032,7 @@ Status: PASS - 🟡 P2 **mocrane-wecom** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: mocrane-wecom: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:31](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L31) @@ -1332,6 +1058,22 @@ Status: PASS - evidence: - [registerTool @ index.ts:43](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L43) +- 🟡 P2 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **package-build-artifact-entrypoint**: nemoclaw: cold import requires package build output + - state: open · compat:none + - evidence: + - extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js + +- 🟡 P2 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **package-dependency-install-required**: nemoclaw: cold import requires dependency installation in an isolated workspace + - state: open · compat:none + - evidence: + - commander @ plugins/nemoclaw/nemoclaw/package.json + - execa @ plugins/nemoclaw/nemoclaw/package.json + - json5 @ plugins/nemoclaw/nemoclaw/package.json + - tar @ plugins/nemoclaw/nemoclaw/package.json + - yaml @ plugins/nemoclaw/nemoclaw/package.json + - 🟡 P2 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **package-typescript-source-entrypoint**: openclaw-telemetry: cold import needs TypeScript source entrypoint support - state: open · compat:none @@ -1340,7 +1082,7 @@ Status: PASS - 🟡 P2 **openclaw-weixin** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: openclaw-weixin: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22 @@ -1379,7 +1121,7 @@ Status: PASS - 🟡 P2 **qqbot** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: qqbot: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:16](https://github.com/tencent-connect/openclaw-qqbot/blob/3eee78922ed0b19af5c4c55f1dfe7d1c848e31f5/index.ts#L16) @@ -1413,7 +1155,7 @@ Status: PASS - 🟡 P2 **telnyx-sms** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: telnyx-sms: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ index.ts:207](https://github.com/team-telnyx/telnyx-openclaw-sms-channel/blob/66dba9edf2bd43605327531a748b4d8fbf0017dd/index.ts#L207) @@ -1439,7 +1181,7 @@ Status: PASS - 🟡 P2 **wecom** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: wecom: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.js:27](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L27) @@ -1462,7 +1204,7 @@ Status: PASS - 🟡 P2 **yuanbao** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: yuanbao: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - createChatChannelPlugin @ plugins/yuanbao/.crabpot-package/dist/src/channel.js:11 - createChatChannelPlugin @ plugins/yuanbao/.crabpot-package/src/channel.ts:32 @@ -1609,6 +1351,12 @@ Status: PASS - evidence: - [package.json](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/package.json) +- 🟡 P2 **nemoclaw** `upstream-metadata` `plugin-upstream-fix` + - **package-plugin-api-compat-missing**: nemoclaw: plugin API compatibility range is missing + - state: open · compat:none + - evidence: + - plugins/nemoclaw/nemoclaw/package.json + - 🟡 P2 **openclaw-telemetry** `upstream-metadata` `plugin-upstream-fix` - **package-plugin-api-compat-missing**: openclaw-telemetry: plugin API compatibility range is missing - state: open · compat:none @@ -1678,14 +1426,6 @@ Status: PASS - evidence: - [openclaw/plugin-sdk/diagnostics-otel @ service.ts:2](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/src/service.ts#L2) -- 🔴 P0 **codex-app-server** `live-issue` `core-compat-adapter` - - **sdk-export-missing**: codex-app-server: plugin SDK import aliases are missing from target package exports - - state: blocking · compat:untracked · live - - evidence: - - [openclaw/plugin-sdk/discord @ controller.ts:104](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L104) - - [openclaw/plugin-sdk/discord @ controller.ts:106](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L106) - - [openclaw/plugin-sdk/telegram-account @ controller.ts:105](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L105) - - 🔴 P0 **honcho** `live-issue` `core-compat-adapter` - **sdk-export-missing**: honcho: plugin SDK import aliases are missing from target package exports - state: blocking · compat:untracked · live @@ -1709,15 +1449,9 @@ Status: PASS - openclaw/plugin-sdk/matrix @ plugins/yuanbao/.crabpot-package/src/business/commands/upgrade/env.ts:2 - openclaw/plugin-sdk/matrix @ plugins/yuanbao/.crabpot-package/src/business/commands/upgrade/utils.ts:2 -- 🟠 P1 **a2a-gateway** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: a2a-gateway: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **a2a-gateway** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: a2a-gateway: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerGatewayMethod @ index.ts:616](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L616) - [registerGatewayMethod @ index.ts:622](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L622) @@ -1726,18 +1460,6 @@ Status: PASS - [registerGatewayMethod @ index.ts:669](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L669) - [registerService @ index.ts:857](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L857) -- 🟠 P1 **agentchat** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: agentchat: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **clawmetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: clawmetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **clawmetry** `compat-gap` `core-compat-adapter` - **missing-compat-record**: clawmetry: compat-dependent behavior lacks registry coverage - state: open · compat:missing @@ -1746,19 +1468,13 @@ Status: PASS - 🟠 P1 **clawmetry** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: clawmetry: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:9](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/index.ts#L9) -- 🟠 P1 **clawrouter** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: clawrouter: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **clawrouter** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: clawrouter: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:1636](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1636) - [registerCommand @ index.ts:1682](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1682) @@ -1769,62 +1485,26 @@ Status: PASS - [registerCommand @ index.ts:1800](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1800) - [registerService @ index.ts:1809](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1809) -- 🟠 P1 **codex-app-server** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: codex-app-server: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **codex-app-server** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: codex-app-server: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - plugin-sdk-export-aliases - - 🟠 P1 **codex-app-server** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: codex-app-server: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:48](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L48) - [registerInteractiveHandler @ index.ts:29](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L29) - [registerInteractiveHandler @ index.ts:38](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L38) - [registerService @ index.ts:12](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L12) -- 🟠 P1 **connectclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: connectclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **connectclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: connectclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ commands.ts:18](https://github.com/osipov-anton/connectclaw/blob/6cd516650168890e9b850064afaaa5fe24df5950/packages/plugin/src/commands.ts#L18) - [registerCommand @ commands.ts:64](https://github.com/osipov-anton/connectclaw/blob/6cd516650168890e9b850064afaaa5fe24df5950/packages/plugin/src/commands.ts#L64) - [registerService @ hooks.ts:91](https://github.com/osipov-anton/connectclaw/blob/6cd516650168890e9b850064afaaa5fe24df5950/packages/plugin/src/hooks.ts#L91) -- 🟠 P1 **ddingtalk** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: ddingtalk: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **dingtalk-connector** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: dingtalk-connector: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **dingtalk-connector** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: dingtalk-connector: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **dingtalk-connector** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: dingtalk-connector: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:74](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/index.ts#L74) - [registerGatewayMethod @ gateway-methods.ts:130](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/src/gateway-methods.ts#L130) @@ -1843,23 +1523,11 @@ Status: PASS - 🟠 P1 **honcho** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: honcho: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ capture.ts:151](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/hooks/capture.ts#L151) - [agent_end @ subagent.ts:34](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/hooks/subagent.ts#L34) -- 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - state: open · compat:missing @@ -1868,33 +1536,21 @@ Status: PASS - 🟠 P1 **honcho** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: honcho: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerMemoryPromptSection @ index.ts:97](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/index.ts#L97) - [registerMemoryRuntime @ runtime.ts:274](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/runtime.ts#L274) - 🟠 P1 **hyperspell** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: hyperspell: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.ts:105](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/index.ts#L105) - [agent_end @ index.ts:116](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/index.ts#L116) -- 🟠 P1 **hyperspell** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: hyperspell: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **hyperspell** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: hyperspell: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **hyperspell** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: hyperspell: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ slash.ts:166](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/commands/slash.ts#L166) - [registerCommand @ slash.ts:43](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/commands/slash.ts#L43) @@ -1906,45 +1562,21 @@ Status: PASS - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: kitchen-sink: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ generated-hooks.js:18](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L18) - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: kitchen-sink: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ generated-hooks.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L7) - [llm_input @ generated-hooks.js:22](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L22) - [llm_output @ generated-hooks.js:23](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L23) -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: kitchen-sink: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerAutoEnableProbe @ generated-registrars.js:6](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L6) - [registerChannel @ generated-registrars.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L7) @@ -1981,302 +1613,146 @@ Status: PASS - [registerService @ generated-registrars.js:38](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L38) - [registerService @ kitchen-runtime.js:112](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/kitchen-runtime.js#L112) -- 🟠 P1 **lightclawbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lightclawbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **lightclawbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lightclawbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **lightclawbot** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: lightclawbot: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/lightclawbot/.crabpot-package/dist/index.js:13 - 🟠 P1 **llm-trace-phoenix** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: llm-trace-phoenix: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [llm_input @ index.ts:154](https://github.com/pingshian0131/openclaw-plugin-llm-trace-phoenix/blob/05bc0f4ba67281c10fad7be356d32a54b00c59fd/index.ts#L154) - [llm_output @ index.ts:168](https://github.com/pingshian0131/openclaw-plugin-llm-trace-phoenix/blob/05bc0f4ba67281c10fad7be356d32a54b00c59fd/index.ts#L168) -- 🟠 P1 **llm-trace-phoenix** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: llm-trace-phoenix: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **lossless-claw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lossless-claw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **lossless-claw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: lossless-claw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:2055](https://github.com/Martian-Engineering/lossless-claw/blob/4724d3fe6ccfd85f275aad732f3b01551d909e5a/src/plugin/index.ts#L2055) - [registerContextEngine @ index.ts:2035](https://github.com/Martian-Engineering/lossless-claw/blob/4724d3fe6ccfd85f275aad732f3b01551d909e5a/src/plugin/index.ts#L2035) -- 🟠 P1 **mcp-adapter** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mcp-adapter: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **mcp-adapter** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: mcp-adapter: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:15](https://github.com/androidStern-personal/openclaw-mcp-adapter/blob/5434ce21ac780a46a493c8125e52e80a03dd2640/index.ts#L15) - 🟠 P1 **memory-tencentdb** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: memory-tencentdb: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - agent_end @ plugins/memory-tencentdb/.crabpot-package/index.ts:820 -- 🟠 P1 **memory-tencentdb** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memory-tencentdb: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **memos-cloud** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: memos-cloud: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.js:515](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/blob/03fcc33c5fd285971d4b3dbaa8bbb31cb727db7c/index.js#L515) -- 🟠 P1 **memos-cloud** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memos-cloud: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **memos-cloud** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memos-cloud: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **memos-cloud** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: memos-cloud: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerHook @ index.js:467](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/blob/03fcc33c5fd285971d4b3dbaa8bbb31cb727db7c/index.js#L467) -- 🟠 P1 **mocrane-wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mocrane-wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **mocrane-wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mocrane-wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **mocrane-wecom** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: mocrane-wecom: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:31](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L31) - [registerHttpRoute @ index.ts:34](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L34) +- 🟠 P1 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **before-tool-call-probe**: nemoclaw: before_tool_call needs terminal/block/approval probes + - state: open · compat:active + - evidence: + - before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384 + +- 🟠 P1 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **registration-capture-gap**: nemoclaw: runtime registrations need capture before contract judgment + - state: open · compat:active + - evidence: + - registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336 + - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: openclaw-telemetry: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ index.ts:12](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L12) - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: openclaw-telemetry: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.ts:62](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L62) -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: openclaw-telemetry: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:10](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L10) -- 🟠 P1 **openclaw-weixin** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-weixin: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **openclaw-weixin** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-weixin: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **openclaw-weixin** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: openclaw-weixin: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22 - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: opik-openclaw: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ tool.ts:34](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service/hooks/tool.ts#L34) - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: opik-openclaw: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ service.ts:560](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service.ts#L560) - [llm_input @ llm.ts:39](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service/hooks/llm.ts#L39) - [llm_output @ llm.ts:150](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service/hooks/llm.ts#L150) -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: opik-openclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:16](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/index.ts#L16) -- 🟠 P1 **qqbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: qqbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **qqbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: qqbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **qqbot** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: qqbot: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:16](https://github.com/tencent-connect/openclaw-qqbot/blob/3eee78922ed0b19af5c4c55f1dfe7d1c848e31f5/index.ts#L16) -- 🟠 P1 **secureclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: secureclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **secureclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: secureclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:295](https://github.com/adversa-ai/secureclaw/blob/bf17e2b3deb989e348b3a98080e33a7047e90ac3/secureclaw/src/index.ts#L295) - [registerService @ index.ts:301](https://github.com/adversa-ai/secureclaw/blob/bf17e2b3deb989e348b3a98080e33a7047e90ac3/secureclaw/src/index.ts#L301) - [registerService @ index.ts:307](https://github.com/adversa-ai/secureclaw/blob/bf17e2b3deb989e348b3a98080e33a7047e90ac3/secureclaw/src/index.ts#L307) -- 🟠 P1 **telnyx-sms** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: telnyx-sms: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **telnyx-sms** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: telnyx-sms: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **telnyx-sms** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: telnyx-sms: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerHttpRoute @ index.ts:259](https://github.com/team-telnyx/telnyx-openclaw-sms-channel/blob/66dba9edf2bd43605327531a748b4d8fbf0017dd/index.ts#L259) - 🟠 P1 **wecom** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: wecom: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ index.js:76](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L76) -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - - 🟠 P1 **wecom** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: wecom: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.js:27](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L27) - [registerHttpRoute @ index.js:56](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L56) -- 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - state: open · compat:missing @@ -2285,7 +1761,7 @@ Status: PASS - 🟠 P1 **yuanbao** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: yuanbao: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:13 - registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:14 @@ -2345,7 +1821,7 @@ Status: PASS - 🟡 P2 **agentchat** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: agentchat: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ channel.ts:333](https://github.com/agentchatme/agentchat/blob/1460cece00ebd3829fb39d5db5ee23050937ed02/integrations/openclaw-channel/src/channel.ts#L333) @@ -2541,7 +2017,7 @@ Status: PASS - 🟡 P2 **ddingtalk** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: ddingtalk: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ index.ts:8](https://github.com/largezhou/openclaw-dingtalk/blob/74d22da7335f261ec5febe2663bed6b81068b7ec/index.ts#L8) @@ -2566,7 +2042,7 @@ Status: PASS - 🟡 P2 **dingtalk-connector** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: dingtalk-connector: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:74](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/index.ts#L74) @@ -2734,7 +2210,7 @@ Status: PASS - 🟡 P2 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: kitchen-sink: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ generated-registrars.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L7) - [registerChannel @ kitchen-runtime.js:63](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/kitchen-runtime.js#L63) @@ -2753,7 +2229,7 @@ Status: PASS - 🟡 P2 **lightclawbot** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: lightclawbot: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/lightclawbot/.crabpot-package/dist/index.js:13 @@ -2924,7 +2400,7 @@ Status: PASS - 🟡 P2 **mocrane-wecom** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: mocrane-wecom: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:31](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L31) @@ -2987,6 +2463,34 @@ Status: PASS - evidence: - [registerTool @ index.ts:43](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L43) +- 🟡 P2 **nemoclaw** `deprecation-warning` `core-compat-adapter` + - **legacy-before-agent-start**: nemoclaw: legacy before_agent_start hook compatibility is still used + - state: open · compat:deprecated · deprecated + - evidence: + - before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 + +- 🟡 P2 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **package-build-artifact-entrypoint**: nemoclaw: cold import requires package build output + - state: open · compat:none + - evidence: + - extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js + +- 🟡 P2 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **package-dependency-install-required**: nemoclaw: cold import requires dependency installation in an isolated workspace + - state: open · compat:none + - evidence: + - commander @ plugins/nemoclaw/nemoclaw/package.json + - execa @ plugins/nemoclaw/nemoclaw/package.json + - json5 @ plugins/nemoclaw/nemoclaw/package.json + - tar @ plugins/nemoclaw/nemoclaw/package.json + - yaml @ plugins/nemoclaw/nemoclaw/package.json + +- 🟡 P2 **nemoclaw** `upstream-metadata` `plugin-upstream-fix` + - **package-plugin-api-compat-missing**: nemoclaw: plugin API compatibility range is missing + - state: open · compat:none + - evidence: + - plugins/nemoclaw/nemoclaw/package.json + - 🟡 P2 **openclaw-telemetry** `deprecation-warning` `core-compat-adapter` - **legacy-before-agent-start**: openclaw-telemetry: legacy before_agent_start hook compatibility is still used - state: open · compat:deprecated · deprecated @@ -3015,7 +2519,7 @@ Status: PASS - 🟡 P2 **openclaw-weixin** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: openclaw-weixin: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22 @@ -3074,7 +2578,7 @@ Status: PASS - 🟡 P2 **qqbot** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: qqbot: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:16](https://github.com/tencent-connect/openclaw-qqbot/blob/3eee78922ed0b19af5c4c55f1dfe7d1c848e31f5/index.ts#L16) @@ -3141,7 +2645,7 @@ Status: PASS - 🟡 P2 **telnyx-sms** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: telnyx-sms: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ index.ts:207](https://github.com/team-telnyx/telnyx-openclaw-sms-channel/blob/66dba9edf2bd43605327531a748b4d8fbf0017dd/index.ts#L207) @@ -3179,7 +2683,7 @@ Status: PASS - 🟡 P2 **wecom** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: wecom: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.js:27](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L27) @@ -3208,7 +2712,7 @@ Status: PASS - 🟡 P2 **yuanbao** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: yuanbao: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - createChatChannelPlugin @ plugins/yuanbao/.crabpot-package/dist/src/channel.js:11 - createChatChannelPlugin @ plugins/yuanbao/.crabpot-package/src/channel.ts:32 @@ -3422,6 +2926,12 @@ Status: PASS - [registerChannel @ index.ts:31](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L31) - [registerHttpRoute @ index.ts:34](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L34) +- 🟠 P1 **nemoclaw** `inspector-capture-api` + - contract: External inspector capture records service, route, gateway, command, and interactive registrations. + - id: `api.capture.runtime-registrars:nemoclaw` + - evidence: + - registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336 + - 🟠 P1 **openclaw-telemetry** `inspector-capture-api` - contract: External inspector capture records service, route, gateway, command, and interactive registrations. - id: `api.capture.runtime-registrars:openclaw-telemetry` @@ -3484,6 +2994,12 @@ Status: PASS - evidence: - [before_tool_call @ generated-hooks.js:18](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L18) +- 🟠 P1 **nemoclaw** `hook-runner` + - contract: Hook returns preserve terminal, block, and approval semantics. + - id: `hook.before_tool_call.terminal-block-approval:nemoclaw` + - evidence: + - before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384 + - 🟠 P1 **openclaw-telemetry** `hook-runner` - contract: Hook returns preserve terminal, block, and approval semantics. - id: `hook.before_tool_call.terminal-block-approval:openclaw-telemetry` @@ -3563,14 +3079,6 @@ Status: PASS - evidence: - [openclaw/plugin-sdk/diagnostics-otel @ service.ts:2](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/src/service.ts#L2) -- 🟠 P1 **codex-app-server** `sdk-alias` - - contract: Every observed OpenClaw plugin SDK import remains exported by the target OpenClaw package. - - id: `sdk.import.package-export-cold-import:codex-app-server` - - evidence: - - [openclaw/plugin-sdk/discord @ controller.ts:104](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L104) - - [openclaw/plugin-sdk/discord @ controller.ts:106](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L106) - - [openclaw/plugin-sdk/telegram-account @ controller.ts:105](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L105) - - 🟠 P1 **honcho** `sdk-alias` - contract: Every observed OpenClaw plugin SDK import remains exported by the target OpenClaw package. - id: `sdk.import.package-export-cold-import:honcho` @@ -3669,6 +3177,12 @@ Status: PASS - evidence: - [before_agent_start @ generated-hooks.js:10](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L10) +- 🟡 P2 **nemoclaw** `hook-runner` + - contract: Legacy before_agent_start remains wired until plugins migrate to before_model_resolve and before_prompt_build. + - id: `hook.compat.before-agent-start-migration:nemoclaw` + - evidence: + - before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 + - 🟡 P2 **openclaw-telemetry** `hook-runner` - contract: Legacy before_agent_start remains wired until plugins migrate to before_model_resolve and before_prompt_build. - id: `hook.compat.before-agent-start-migration:openclaw-telemetry` @@ -3763,6 +3277,12 @@ Status: PASS - evidence: - [package.json](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/package.json) +- 🟡 P2 **nemoclaw** `package-loader` + - contract: Package metadata declares the OpenClaw plugin API range used by the plugin. + - id: `package.compat.plugin-api-range:nemoclaw` + - evidence: + - plugins/nemoclaw/nemoclaw/package.json + - 🟡 P2 **openclaw-telemetry** `package-loader` - contract: Package metadata declares the OpenClaw plugin API range used by the plugin. - id: `package.compat.plugin-api-range:openclaw-telemetry` @@ -3818,6 +3338,12 @@ Status: PASS - evidence: - [extension:./dist/index.js @ index.js](https://github.com/Martian-Engineering/lossless-claw/blob/4724d3fe6ccfd85f275aad732f3b01551d909e5a/dist/index.js) +- 🟡 P2 **nemoclaw** `package-loader` + - contract: Inspector can build or resolve source aliases before cold importing package entrypoints. + - id: `package.entrypoint.build-before-cold-import:nemoclaw` + - evidence: + - extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js + - 🟡 P2 **opik-openclaw** `package-loader` - contract: Inspector can build or resolve source aliases before cold importing package entrypoints. - id: `package.entrypoint.build-before-cold-import:opik-openclaw` @@ -3928,6 +3454,16 @@ Status: PASS - [undici @ package.json](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/package.json) - [zod @ package.json](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/package.json) +- 🟡 P2 **nemoclaw** `package-loader` + - contract: Inspector installs package dependencies in an isolated workspace before cold import. + - id: `package.entrypoint.isolated-dependency-install:nemoclaw` + - evidence: + - commander @ plugins/nemoclaw/nemoclaw/package.json + - execa @ plugins/nemoclaw/nemoclaw/package.json + - json5 @ plugins/nemoclaw/nemoclaw/package.json + - tar @ plugins/nemoclaw/nemoclaw/package.json + - yaml @ plugins/nemoclaw/nemoclaw/package.json + - 🟡 P2 **openclaw-weixin** `package-loader` - contract: Inspector installs package dependencies in an isolated workspace before cold import. - id: `package.entrypoint.isolated-dependency-install:openclaw-weixin` diff --git a/reports/crabpot-platform-probes.json b/reports/crabpot-platform-probes.json index a2d12bd..daa3a8f 100644 --- a/reports/crabpot-platform-probes.json +++ b/reports/crabpot-platform-probes.json @@ -8,13 +8,13 @@ "container" ], "summary": { - "fixtureCount": 32, - "entrypointCount": 39, + "fixtureCount": 33, + "entrypointCount": 40, "tsLoaderEntrypointCount": 21, "jitiAlternativeCount": 21, - "lazyImportProbeCount": 39, + "lazyImportProbeCount": 40, "portabilityFindingCount": 56, - "coveredPortabilityFindingCount": 175, + "coveredPortabilityFindingCount": 179, "windowsRiskStepCount": 14, "macosRiskStepCount": 14, "linuxRiskStepCount": 14, @@ -305,6 +305,20 @@ "captureUsesTsx": false, "syntheticUsesTsx": false }, + { + "fixture": "nemoclaw", + "id": "cold-import.extension:nemoclaw:plugins-nemoclaw-nemoclaw-dist-index-js", + "status": "build-required", + "entrypoint": "plugins/nemoclaw/nemoclaw/dist/index.js", + "packageManager": "npm", + "loaderSource": "native-node", + "loaderPrimary": "node", + "loaderAlternatives": [], + "capturePlanned": true, + "syntheticProbePlanned": true, + "captureUsesTsx": false, + "syntheticUsesTsx": false + }, { "fixture": "memory-tencentdb", "id": "cold-import.extension:memory-tencentdb:plugins-memory-tencentdb-crabpot-package-index-ts", @@ -548,7 +562,7 @@ { "fixture": "codex-app-server", "id": "cold-import.extension:codex-app-server:plugins-codex-app-server-index-ts", - "status": "sdk-alias-required", + "status": "ts-loader-required", "entrypoint": "plugins/codex-app-server/index.ts", "packageManager": "pnpm", "loaderSource": "typescript-source", @@ -2583,6 +2597,60 @@ "posix-env-prefix" ] }, + { + "fixture": "nemoclaw", + "entrypoint": "cold-import.extension:nemoclaw:plugins-nemoclaw-nemoclaw-dist-index-js", + "kind": "prepare", + "command": "mkdir -p .crabpot/workspaces/nemoclaw && rsync -a --delete plugins/nemoclaw/nemoclaw/ .crabpot/workspaces/nemoclaw/", + "coverage": "covered by Crabpot structured executor", + "platforms": [ + "container", + "windows" + ], + "riskCodes": [ + "posix-mkdir", + "rsync-required" + ] + }, + { + "fixture": "nemoclaw", + "entrypoint": "cold-import.extension:nemoclaw:plugins-nemoclaw-nemoclaw-dist-index-js", + "kind": "prepare-artifacts", + "command": "mkdir -p .crabpot/results/nemoclaw", + "coverage": "covered by Crabpot structured executor", + "platforms": [ + "windows" + ], + "riskCodes": [ + "posix-mkdir" + ] + }, + { + "fixture": "nemoclaw", + "entrypoint": "cold-import.extension:nemoclaw:plugins-nemoclaw-nemoclaw-dist-index-js", + "kind": "capture", + "command": "CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/index.js --mock-sdk --output ../../results/nemoclaw/cold-import-extension-nemoclaw-plugins-nemoclaw-nemoclaw-dist-index-js.capture.json", + "coverage": "covered by Crabpot structured executor", + "platforms": [ + "windows" + ], + "riskCodes": [ + "posix-env-prefix" + ] + }, + { + "fixture": "nemoclaw", + "entrypoint": "cold-import.extension:nemoclaw:plugins-nemoclaw-nemoclaw-dist-index-js", + "kind": "synthetic-probe", + "command": "CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/index.js --mock-sdk --output ../../results/nemoclaw/cold-import-extension-nemoclaw-plugins-nemoclaw-nemoclaw-dist-index-js.synthetic.json", + "coverage": "covered by Crabpot structured executor", + "platforms": [ + "windows" + ], + "riskCodes": [ + "posix-env-prefix" + ] + }, { "fixture": "memory-tencentdb", "entrypoint": "cold-import.extension:memory-tencentdb:plugins-memory-tencentdb-crabpot-package-index-ts", diff --git a/reports/crabpot-platform-probes.md b/reports/crabpot-platform-probes.md index a92912a..240cab8 100644 --- a/reports/crabpot-platform-probes.md +++ b/reports/crabpot-platform-probes.md @@ -8,13 +8,13 @@ Targets: linux, macos, windows, container | Metric | Value | | ------------------------------ | ----- | -| fixtureCount | 32 | -| entrypointCount | 39 | +| fixtureCount | 33 | +| entrypointCount | 40 | | tsLoaderEntrypointCount | 21 | | jitiAlternativeCount | 21 | -| lazyImportProbeCount | 39 | +| lazyImportProbeCount | 40 | | portabilityFindingCount | 56 | -| coveredPortabilityFindingCount | 175 | +| coveredPortabilityFindingCount | 179 | | windowsRiskStepCount | 14 | | macosRiskStepCount | 14 | | linuxRiskStepCount | 14 | @@ -43,6 +43,7 @@ Targets: linux, macos, windows, container | kitchen-sink | ready | node | - | no | no | plugins/kitchen-sink/src/index.js | | kitchen-sink | ready | node | - | no | no | plugins/kitchen-sink/src/index.js | | kitchen-sink | ready | node | - | no | no | plugins/kitchen-sink/src/setup.js | +| nemoclaw | build-required | node | - | no | no | plugins/nemoclaw/nemoclaw/dist/index.js | | memory-tencentdb | ts-loader-required | tsx | jiti | yes | yes | plugins/memory-tencentdb/.crabpot-package/index.ts | | ddingtalk | ts-loader-required | tsx | jiti | yes | yes | plugins/ddingtalk/index.ts | | dingtalk-connector | build-required | node | - | no | no | plugins/dingtalk-connector/dist/index.mjs | @@ -59,7 +60,7 @@ Targets: linux, macos, windows, container | memos-cloud | review-required | node | - | no | no | plugins/memos-cloud/index.js | | clawmetry | sdk-alias-required | tsx | jiti | yes | yes | plugins/clawmetry/clawhub-plugin/index.ts | | clawmetry | sdk-alias-required | node | - | no | no | plugins/clawmetry/clawhub-plugin/dist/index.js | -| codex-app-server | sdk-alias-required | tsx | jiti | yes | yes | plugins/codex-app-server/index.ts | +| codex-app-server | ts-loader-required | tsx | jiti | yes | yes | plugins/codex-app-server/index.ts | | web-search-plus | ts-loader-required | tsx | jiti | yes | yes | plugins/web-search-plus/index.ts | | apify | ts-loader-required | tsx | jiti | yes | yes | plugins/apify/src/index.ts | | inworld-tts | ts-loader-required | tsx | jiti | yes | yes | plugins/inworld-tts/index.ts | @@ -213,6 +214,10 @@ Targets: linux, macos, windows, container | kitchen-sink | prepare-artifacts | windows | posix-mkdir | covered by Crabpot structured executor | | kitchen-sink | capture | windows | posix-env-prefix | covered by Crabpot structured executor | | kitchen-sink | synthetic-probe | windows | posix-env-prefix | covered by Crabpot structured executor | +| nemoclaw | prepare | container, windows | posix-mkdir, rsync-required | covered by Crabpot structured executor | +| nemoclaw | prepare-artifacts | windows | posix-mkdir | covered by Crabpot structured executor | +| nemoclaw | capture | windows | posix-env-prefix | covered by Crabpot structured executor | +| nemoclaw | synthetic-probe | windows | posix-env-prefix | covered by Crabpot structured executor | | memory-tencentdb | prepare | container, windows | posix-mkdir, rsync-required | covered by Crabpot structured executor | | memory-tencentdb | prepare-artifacts | windows | posix-mkdir | covered by Crabpot structured executor | | memory-tencentdb | audit | windows | posix-null-failure, shell-redirection | covered by Crabpot structured executor | diff --git a/reports/crabpot-report.json b/reports/crabpot-report.json index 9010f20..df180a5 100644 --- a/reports/crabpot-report.json +++ b/reports/crabpot-report.json @@ -7,7 +7,7 @@ ], "status": "ok", "compatRegistryPath": "openclaw/src/plugins/compat/registry.ts", - "compatRecordCount": 56, + "compatRecordCount": 61, "compatRecords": [ "activation-agent-harness-hint", "activation-capability-hint", @@ -19,8 +19,10 @@ "agent-harness-id-alias", "agent-harness-sdk-alias", "agent-tool-result-harness-alias", + "api.capture.runtime-registrars", "approval-capability-approvals-alias", "bundled-channel-config-schema-legacy", + "bundled-channel-sdk-compat-facades", "bundled-plugin-allowlist", "bundled-plugin-enablement", "bundled-plugin-load-path-aliases", @@ -32,12 +34,15 @@ "channel-route-key-aliases", "channel-runtime-sdk-alias", "channel-target-comparable-aliases", + "channel.runtime.envelope-config-metadata", "clawdbot-config-type-alias", "command-auth-status-builders", "disable-persisted-plugin-registry-env", "embedded-harness-config-alias", "generated-bundled-channel-config-fallback", "hook-only-plugin-shape", + "hook.before_tool_call.terminal-block-approval", + "hook.llm-observer.privacy-payload", "legacy-before-agent-start", "legacy-extension-api-import", "legacy-implicit-startup-sidecar", @@ -77,8 +82,10 @@ "agent-harness-id-alias": "deprecated", "agent-harness-sdk-alias": "deprecated", "agent-tool-result-harness-alias": "deprecated", + "api.capture.runtime-registrars": "active", "approval-capability-approvals-alias": "deprecated", "bundled-channel-config-schema-legacy": "deprecated", + "bundled-channel-sdk-compat-facades": "active", "bundled-plugin-allowlist": "active", "bundled-plugin-enablement": "active", "bundled-plugin-load-path-aliases": "deprecated", @@ -90,12 +97,15 @@ "channel-route-key-aliases": "deprecated", "channel-runtime-sdk-alias": "deprecated", "channel-target-comparable-aliases": "deprecated", + "channel.runtime.envelope-config-metadata": "active", "clawdbot-config-type-alias": "deprecated", "command-auth-status-builders": "deprecated", "disable-persisted-plugin-registry-env": "deprecated", "embedded-harness-config-alias": "deprecated", "generated-bundled-channel-config-fallback": "active", "hook-only-plugin-shape": "active", + "hook.before_tool_call.terminal-block-approval": "active", + "hook.llm-observer.privacy-payload": "active", "legacy-before-agent-start": "deprecated", "legacy-extension-api-import": "deprecated", "legacy-implicit-startup-sidecar": "deprecated", @@ -125,7 +135,7 @@ "setup-runtime-fallback": "active" }, "hookTypesPath": "openclaw/src/plugins/hook-types.ts", - "hookNameCount": 34, + "hookNameCount": 35, "hookNames": [ "after_compaction", "after_tool_call", @@ -142,6 +152,7 @@ "before_prompt_build", "before_reset", "before_tool_call", + "cron_changed", "gateway_start", "gateway_stop", "heartbeat_prompt_contribution", @@ -163,7 +174,7 @@ "tool_result_persist" ], "apiBuilderPath": "openclaw/src/plugins/api-builder.ts", - "apiRegistrarCount": 48, + "apiRegistrarCount": 49, "apiRegistrars": [ "registerAgentEventSubscription", "registerAgentHarness", @@ -196,6 +207,7 @@ "registerMigrationProvider", "registerMusicGenerationProvider", "registerNodeHostCommand", + "registerNodeInvokePolicy", "registerProvider", "registerRealtimeTranscriptionProvider", "registerRealtimeVoiceProvider", @@ -245,7 +257,7 @@ "registerWebSearchProvider" ], "packagePath": "openclaw/package.json", - "sdkExportCount": 291, + "sdkExportCount": 294, "sdkExports": [ "openclaw/plugin-sdk", "openclaw/plugin-sdk/account-core", @@ -349,6 +361,7 @@ "openclaw/plugin-sdk/direct-dm-guard-policy", "openclaw/plugin-sdk/directory-config-runtime", "openclaw/plugin-sdk/directory-runtime", + "openclaw/plugin-sdk/discord", "openclaw/plugin-sdk/document-extractor", "openclaw/plugin-sdk/error-runtime", "openclaw/plugin-sdk/extension-shared", @@ -511,6 +524,7 @@ "openclaw/plugin-sdk/system-event-runtime", "openclaw/plugin-sdk/talk-config-runtime", "openclaw/plugin-sdk/target-resolver-runtime", + "openclaw/plugin-sdk/telegram-account", "openclaw/plugin-sdk/telegram-command-config", "openclaw/plugin-sdk/temp-path", "openclaw/plugin-sdk/test-env", @@ -537,17 +551,21 @@ "openclaw/plugin-sdk/webhook-request-guards", "openclaw/plugin-sdk/webhook-targets", "openclaw/plugin-sdk/windows-spawn", + "openclaw/plugin-sdk/zalouser", "openclaw/plugin-sdk/zod" ], "pluginSdkEntrypointsPath": "openclaw/src/plugin-sdk/entrypoints.ts", "reservedSdkExportCount": 0, "reservedSdkExports": [], "supportedFacadeSdkExports": [ + "openclaw/plugin-sdk/discord", "openclaw/plugin-sdk/lmstudio", "openclaw/plugin-sdk/lmstudio-runtime", "openclaw/plugin-sdk/memory-core-engine-runtime", "openclaw/plugin-sdk/qa-runner-runtime", - "openclaw/plugin-sdk/tts-runtime" + "openclaw/plugin-sdk/telegram-account", + "openclaw/plugin-sdk/tts-runtime", + "openclaw/plugin-sdk/zalouser" ], "publicPluginOwnedSdkExports": [ "openclaw/plugin-sdk/browser-config", @@ -636,24 +654,24 @@ }, "status": "pass", "summary": { - "fixtureCount": 32, - "highPriorityFixtures": 21, + "fixtureCount": 33, + "highPriorityFixtures": 22, "breakageCount": 0, - "warningCount": 68, - "suggestionCount": 154, - "decisionCount": 224, - "logCount": 210, - "issueCount": 222, - "p0IssueCount": 5, - "p1IssueCount": 83, - "liveIssueCount": 5, - "liveP0IssueCount": 5, - "compatGapCount": 49, - "deprecationWarningCount": 27, - "inspectorGapCount": 113, - "upstreamIssueCount": 28, + "warningCount": 69, + "suggestionCount": 112, + "decisionCount": 183, + "logCount": 264, + "issueCount": 181, + "p0IssueCount": 4, + "p1IssueCount": 39, + "liveIssueCount": 4, + "liveP0IssueCount": 4, + "compatGapCount": 3, + "deprecationWarningCount": 28, + "inspectorGapCount": 117, + "upstreamIssueCount": 29, "fixtureRegressionCount": 0, - "contractProbeCount": 170 + "contractProbeCount": 175 }, "fixtures": [ { @@ -6650,6 +6668,203 @@ } ] }, + { + "id": "nemoclaw", + "name": "NemoClaw", + "priority": "high", + "seams": [ + "provider-capability", + "prompt-mutation", + "security-audit", + "process-spawn", + "command", + "config-schema" + ], + "why": "NVIDIA OpenShell fixture covering sandbox-aware runtime context injection, managed inference provider registration, slash-command migration/status flows, OpenShell CLI probing, and secret-blocking tool-call policy.", + "status": "ok", + "hooks": [ + "before_agent_start", + "before_tool_call" + ], + "hookDetails": [ + { + "name": "before_agent_start", + "file": "plugins/nemoclaw/nemoclaw/src/runtime-context.ts", + "line": 474, + "ref": "plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474" + }, + { + "name": "before_tool_call", + "file": "plugins/nemoclaw/nemoclaw/src/index.ts", + "line": 384, + "ref": "plugins/nemoclaw/nemoclaw/src/index.ts:384" + } + ], + "registrations": [ + "registerCommand", + "registerProvider" + ], + "registrationDetails": [ + { + "name": "registerCommand", + "file": "plugins/nemoclaw/nemoclaw/src/index.ts", + "line": 336, + "ref": "plugins/nemoclaw/nemoclaw/src/index.ts:336" + }, + { + "name": "registerProvider", + "file": "plugins/nemoclaw/nemoclaw/src/index.ts", + "line": 372, + "ref": "plugins/nemoclaw/nemoclaw/src/index.ts:372" + } + ], + "manifestContracts": [], + "manifestFiles": [ + "plugins/nemoclaw/nemoclaw/openclaw.plugin.json" + ], + "sourceFiles": [ + "plugins/nemoclaw/commitlint.config.js", + "plugins/nemoclaw/eslint.config.mjs", + "plugins/nemoclaw/nemoclaw/eslint.config.mjs", + "plugins/nemoclaw/nemoclaw/src/blueprint/private-networks.ts", + "plugins/nemoclaw/nemoclaw/src/blueprint/runner.ts", + "plugins/nemoclaw/nemoclaw/src/blueprint/snapshot.ts", + "plugins/nemoclaw/nemoclaw/src/blueprint/ssrf.ts", + "plugins/nemoclaw/nemoclaw/src/blueprint/state.ts", + "plugins/nemoclaw/nemoclaw/src/commands/config-show.ts", + "plugins/nemoclaw/nemoclaw/src/commands/migration-state.ts", + "plugins/nemoclaw/nemoclaw/src/commands/shields-status.ts", + "plugins/nemoclaw/nemoclaw/src/commands/slash.ts", + "plugins/nemoclaw/nemoclaw/src/index.ts", + "plugins/nemoclaw/nemoclaw/src/lib/ports.ts", + "plugins/nemoclaw/nemoclaw/src/lib/subprocess-env.ts", + "plugins/nemoclaw/nemoclaw/src/onboard/config.ts", + "plugins/nemoclaw/nemoclaw/src/runtime-context.ts", + "plugins/nemoclaw/nemoclaw/src/security/secret-scanner.ts", + "plugins/nemoclaw/vitest.config.ts" + ], + "pluginManifests": [ + { + "path": "plugins/nemoclaw/nemoclaw/openclaw.plugin.json", + "id": "nemoclaw", + "name": "NemoClaw", + "version": "0.1.0", + "keys": [ + "configSchema", + "description", + "id", + "name", + "version" + ], + "contracts": [], + "providerAuthEnvVars": {}, + "channelEnvVars": {}, + "activation": null + } + ], + "securityManifests": [], + "package": { + "path": "plugins/nemoclaw/nemoclaw/package.json", + "name": "nemoclaw", + "version": "0.1.0", + "type": "module", + "main": "dist/index.js", + "dependencies": [ + "commander", + "execa", + "json5", + "tar", + "yaml" + ], + "peerDependencies": [], + "optionalDependencies": [], + "openclaw": { + "extensions": [ + "./dist/index.js" + ], + "runtimeExtensions": [], + "setupEntry": null, + "compatPluginApi": null, + "buildOpenClawVersion": null, + "buildPluginSdkVersion": null, + "entrypoints": [ + { + "kind": "extension", + "specifier": "./dist/index.js", + "relativePath": "plugins/nemoclaw/nemoclaw/dist/index.js", + "exists": false, + "requiresBuild": true + } + ] + } + }, + "packages": [ + { + "path": "plugins/nemoclaw/nemoclaw/package.json", + "name": "nemoclaw", + "version": "0.1.0", + "type": "module", + "main": "dist/index.js", + "dependencies": [ + "commander", + "execa", + "json5", + "tar", + "yaml" + ], + "peerDependencies": [], + "optionalDependencies": [], + "openclaw": { + "extensions": [ + "./dist/index.js" + ], + "runtimeExtensions": [], + "setupEntry": null, + "compatPluginApi": null, + "buildOpenClawVersion": null, + "buildPluginSdkVersion": null, + "entrypoints": [ + { + "kind": "extension", + "specifier": "./dist/index.js", + "relativePath": "plugins/nemoclaw/nemoclaw/dist/index.js", + "exists": false, + "requiresBuild": true + } + ] + } + }, + { + "path": "plugins/nemoclaw/package.json", + "name": "nemoclaw", + "version": "0.1.0", + "type": null, + "main": null, + "dependencies": [ + "@oclif/core", + "js-yaml", + "p-retry", + "yaml" + ], + "peerDependencies": [], + "optionalDependencies": [], + "openclaw": null + }, + { + "path": "plugins/nemoclaw/test/package.json", + "name": null, + "version": null, + "type": "module", + "main": null, + "dependencies": [], + "peerDependencies": [], + "optionalDependencies": [], + "openclaw": null + } + ], + "sdkImports": [], + "sdkImportDetails": [] + }, { "id": "memory-tencentdb", "name": "TencentDB Agent Memory", @@ -11815,6 +12030,25 @@ ], "compatRecord": "legacy-before-agent-start" }, + { + "fixture": "nemoclaw", + "code": "package-plugin-api-compat-missing", + "level": "warning", + "message": "package openclaw metadata does not declare compat.pluginApi", + "evidence": [ + "plugins/nemoclaw/nemoclaw/package.json" + ] + }, + { + "fixture": "nemoclaw", + "code": "legacy-before-agent-start", + "level": "warning", + "message": "fixture uses deprecated before_agent_start hook compatibility", + "evidence": [ + "before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474" + ], + "compatRecord": "legacy-before-agent-start" + }, { "fixture": "memory-tencentdb", "code": "conversation-access-hook", @@ -12100,18 +12334,6 @@ ], "compatRecord": "plugin-sdk-export-aliases" }, - { - "fixture": "codex-app-server", - "code": "sdk-export-missing", - "level": "warning", - "message": "fixture imports plugin SDK aliases that are not exported by the target OpenClaw package", - "evidence": [ - "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:104", - "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:106", - "openclaw/plugin-sdk/telegram-account @ plugins/codex-app-server/src/controller.ts:105" - ], - "compatRecord": "plugin-sdk-export-aliases" - }, { "fixture": "codex-app-server", "code": "legacy-root-sdk-import", @@ -12736,6 +12958,48 @@ ], "compatRecord": "channel.runtime.envelope-config-metadata" }, + { + "fixture": "nemoclaw", + "code": "package-build-artifact-entrypoint", + "level": "suggestion", + "message": "package OpenClaw entrypoint points at build output that is not present in the source fixture checkout", + "evidence": [ + "extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js" + ] + }, + { + "fixture": "nemoclaw", + "code": "package-dependency-install-required", + "level": "suggestion", + "message": "package declares runtime dependencies that must be installed before cold import", + "evidence": [ + "commander @ plugins/nemoclaw/nemoclaw/package.json", + "execa @ plugins/nemoclaw/nemoclaw/package.json", + "json5 @ plugins/nemoclaw/nemoclaw/package.json", + "tar @ plugins/nemoclaw/nemoclaw/package.json", + "yaml @ plugins/nemoclaw/nemoclaw/package.json" + ] + }, + { + "fixture": "nemoclaw", + "code": "registration-capture-gap", + "level": "suggestion", + "message": "future inspector capture API should record lifecycle, route, gateway, command, and interactive registrations", + "evidence": [ + "registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "nemoclaw", + "code": "before-tool-call-probe", + "level": "suggestion", + "message": "add contract probes for before_tool_call terminal, block, and approval semantics", + "evidence": [ + "before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384" + ], + "compatRecord": "hook.before_tool_call.terminal-block-approval" + }, { "fixture": "memory-tencentdb", "code": "package-typescript-source-entrypoint", @@ -13301,46 +13565,6 @@ "extension:plugins/inworld-tts/index.ts" ] }, - { - "fixture": "llm-trace-phoenix", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, - { - "fixture": "opik-openclaw", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, - { - "fixture": "openclaw-telemetry", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, - { - "fixture": "hyperspell", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, { "fixture": "honcho", "code": "missing-compat-record", @@ -13351,36 +13575,6 @@ ], "compatRecord": "plugin-sdk-export-aliases" }, - { - "fixture": "honcho", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, - { - "fixture": "kitchen-sink", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, - { - "fixture": "memory-tencentdb", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, { "fixture": "yuanbao", "code": "missing-compat-record", @@ -13391,16 +13585,6 @@ ], "compatRecord": "plugin-sdk-export-aliases" }, - { - "fixture": "memos-cloud", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, { "fixture": "clawmetry", "code": "missing-compat-record", @@ -13410,386 +13594,6 @@ "plugin-sdk-export-aliases" ], "compatRecord": "plugin-sdk-export-aliases" - }, - { - "fixture": "codex-app-server", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "plugin-sdk-export-aliases" - ], - "compatRecord": "plugin-sdk-export-aliases" - }, - { - "fixture": "agentchat", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "wecom", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "wecom", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.before_tool_call.terminal-block-approval" - ], - "compatRecord": "hook.before_tool_call.terminal-block-approval" - }, - { - "fixture": "wecom", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "qqbot", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "qqbot", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "a2a-gateway", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "mcp-adapter", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "opik-openclaw", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "opik-openclaw", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.before_tool_call.terminal-block-approval" - ], - "compatRecord": "hook.before_tool_call.terminal-block-approval" - }, - { - "fixture": "openclaw-telemetry", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "openclaw-telemetry", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.before_tool_call.terminal-block-approval" - ], - "compatRecord": "hook.before_tool_call.terminal-block-approval" - }, - { - "fixture": "lossless-claw", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "connectclaw", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "hyperspell", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "honcho", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "kitchen-sink", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "kitchen-sink", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "hook.before_tool_call.terminal-block-approval" - ], - "compatRecord": "hook.before_tool_call.terminal-block-approval" - }, - { - "fixture": "kitchen-sink", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "ddingtalk", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "dingtalk-connector", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "dingtalk-connector", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "mocrane-wecom", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "mocrane-wecom", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "yuanbao", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "yuanbao", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "openclaw-weixin", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "openclaw-weixin", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "lightclawbot", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "lightclawbot", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "telnyx-sms", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "telnyx-sms", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "clawrouter", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "secureclaw", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "memos-cloud", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "clawmetry", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "fixture": "codex-app-server", - "code": "missing-compat-record", - "level": "suggestion", - "message": "fixture depends on a compatibility behavior that is not represented in the target compat registry", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" } ], "issues": [ @@ -13811,26 +13615,6 @@ ], "compatRecord": "plugin-sdk-export-aliases" }, - { - "id": "CRABPOT-62AC9404", - "fixture": "codex-app-server", - "severity": "P0", - "owner": "core", - "code": "sdk-export-missing", - "decision": "core-compat-adapter", - "status": "blocking", - "issueClass": "live-issue", - "live": true, - "deprecated": false, - "compatStatus": "untracked", - "title": "codex-app-server: plugin SDK import aliases are missing from target package exports", - "evidence": [ - "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:104", - "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:106", - "openclaw/plugin-sdk/telegram-account @ plugins/codex-app-server/src/controller.ts:105" - ], - "compatRecord": "plugin-sdk-export-aliases" - }, { "id": "CRABPOT-E2CB6C9A", "fixture": "honcho", @@ -13890,24 +13674,6 @@ ], "compatRecord": "plugin-sdk-export-aliases" }, - { - "id": "CRABPOT-DC39E00B", - "fixture": "a2a-gateway", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "a2a-gateway: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, { "id": "CRABPOT-955F01E4", "fixture": "a2a-gateway", @@ -13919,7 +13685,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "a2a-gateway: runtime registrations need capture before contract judgment", "evidence": [ "registerGatewayMethod @ plugins/a2a-gateway/index.ts:616", @@ -13931,42 +13697,6 @@ ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-B6F9FB5F", - "fixture": "agentchat", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "agentchat: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "id": "CRABPOT-15A7C122", - "fixture": "clawmetry", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "clawmetry: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, { "id": "CRABPOT-08C6582D", "fixture": "clawmetry", @@ -13996,31 +13726,13 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "clawmetry: runtime registrations need capture before contract judgment", "evidence": [ "registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9" ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-D7C9CF91", - "fixture": "clawrouter", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "clawrouter: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, { "id": "CRABPOT-F69491D6", "fixture": "clawrouter", @@ -14032,7 +13744,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "clawrouter: runtime registrations need capture before contract judgment", "evidence": [ "registerCommand @ plugins/clawrouter/src/index.ts:1636", @@ -14046,42 +13758,6 @@ ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-632F52B3", - "fixture": "codex-app-server", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "codex-app-server: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-6D9E51D9", - "fixture": "codex-app-server", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "codex-app-server: compat-dependent behavior lacks registry coverage", - "evidence": [ - "plugin-sdk-export-aliases" - ], - "compatRecord": "plugin-sdk-export-aliases" - }, { "id": "CRABPOT-5F421FDE", "fixture": "codex-app-server", @@ -14093,7 +13769,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "codex-app-server: runtime registrations need capture before contract judgment", "evidence": [ "registerCommand @ plugins/codex-app-server/index.ts:48", @@ -14103,24 +13779,6 @@ ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-2C205B0D", - "fixture": "connectclaw", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "connectclaw: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, { "id": "CRABPOT-FF26FA1F", "fixture": "connectclaw", @@ -14132,7 +13790,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "connectclaw: runtime registrations need capture before contract judgment", "evidence": [ "registerCommand @ plugins/connectclaw/packages/plugin/src/commands.ts:18", @@ -14141,60 +13799,6 @@ ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-5CE53DB3", - "fixture": "ddingtalk", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "ddingtalk: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "id": "CRABPOT-2D2F3FFF", - "fixture": "dingtalk-connector", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "dingtalk-connector: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-98472FFD", - "fixture": "dingtalk-connector", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "dingtalk-connector: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, { "id": "CRABPOT-CDA3D540", "fixture": "dingtalk-connector", @@ -14206,7 +13810,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "dingtalk-connector: runtime registrations need capture before contract judgment", "evidence": [ "registerChannel @ plugins/dingtalk-connector/index.ts:74", @@ -14237,7 +13841,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "honcho: conversation-access hooks need privacy-boundary probes", "evidence": [ "agent_end @ plugins/honcho/hooks/capture.ts:151", @@ -14245,42 +13849,6 @@ ], "compatRecord": "hook.llm-observer.privacy-payload" }, - { - "id": "CRABPOT-D2E78DA4", - "fixture": "honcho", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "honcho: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-25268ADE", - "fixture": "honcho", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "honcho: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, { "id": "CRABPOT-EB60A808", "fixture": "honcho", @@ -14310,7 +13878,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "honcho: runtime registrations need capture before contract judgment", "evidence": [ "registerMemoryPromptSection @ plugins/honcho/index.ts:97", @@ -14329,7 +13897,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "hyperspell: conversation-access hooks need privacy-boundary probes", "evidence": [ "agent_end @ plugins/hyperspell/index.ts:105", @@ -14337,42 +13905,6 @@ ], "compatRecord": "hook.llm-observer.privacy-payload" }, - { - "id": "CRABPOT-6C4C7DB9", - "fixture": "hyperspell", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "hyperspell: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-25864701", - "fixture": "hyperspell", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "hyperspell: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, { "id": "CRABPOT-5F6689F7", "fixture": "hyperspell", @@ -14384,7 +13916,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "hyperspell: runtime registrations need capture before contract judgment", "evidence": [ "registerCommand @ plugins/hyperspell/commands/slash.ts:166", @@ -14408,7 +13940,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "kitchen-sink: before_tool_call needs terminal/block/approval probes", "evidence": [ "before_tool_call @ plugins/kitchen-sink/src/generated-hooks.js:18" @@ -14426,7 +13958,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "kitchen-sink: conversation-access hooks need privacy-boundary probes", "evidence": [ "agent_end @ plugins/kitchen-sink/src/generated-hooks.js:7", @@ -14435,78 +13967,6 @@ ], "compatRecord": "hook.llm-observer.privacy-payload" }, - { - "id": "CRABPOT-41C8DB57", - "fixture": "kitchen-sink", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "kitchen-sink: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-E43CE1AA", - "fixture": "kitchen-sink", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "kitchen-sink: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "id": "CRABPOT-9AFA0D49", - "fixture": "kitchen-sink", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "kitchen-sink: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.before_tool_call.terminal-block-approval" - ], - "compatRecord": "hook.before_tool_call.terminal-block-approval" - }, - { - "id": "CRABPOT-3EAC7DAE", - "fixture": "kitchen-sink", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "kitchen-sink: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, { "id": "CRABPOT-8FBA613A", "fixture": "kitchen-sink", @@ -14518,7 +13978,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "kitchen-sink: runtime registrations need capture before contract judgment", "evidence": [ "registerAutoEnableProbe @ plugins/kitchen-sink/src/generated-registrars.js:6", @@ -14558,42 +14018,6 @@ ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-AD7FD546", - "fixture": "lightclawbot", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "lightclawbot: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-8275FEE2", - "fixture": "lightclawbot", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "lightclawbot: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, { "id": "CRABPOT-0E5CAC6E", "fixture": "lightclawbot", @@ -14605,7 +14029,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "lightclawbot: runtime registrations need capture before contract judgment", "evidence": [ "registerChannel @ plugins/lightclawbot/.crabpot-package/dist/index.js:13" @@ -14623,7 +14047,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "llm-trace-phoenix: conversation-access hooks need privacy-boundary probes", "evidence": [ "llm_input @ plugins/llm-trace-phoenix/index.ts:154", @@ -14631,42 +14055,6 @@ ], "compatRecord": "hook.llm-observer.privacy-payload" }, - { - "id": "CRABPOT-C109E3EA", - "fixture": "llm-trace-phoenix", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "llm-trace-phoenix: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, - { - "id": "CRABPOT-5D1AA6D5", - "fixture": "lossless-claw", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "lossless-claw: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, { "id": "CRABPOT-9F52FF3F", "fixture": "lossless-claw", @@ -14678,7 +14066,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "lossless-claw: runtime registrations need capture before contract judgment", "evidence": [ "registerCommand @ plugins/lossless-claw/src/plugin/index.ts:2055", @@ -14686,24 +14074,6 @@ ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-A47CE38B", - "fixture": "mcp-adapter", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "mcp-adapter: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, { "id": "CRABPOT-F6E89CBB", "fixture": "mcp-adapter", @@ -14715,7 +14085,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "mcp-adapter: runtime registrations need capture before contract judgment", "evidence": [ "registerService @ plugins/mcp-adapter/index.ts:15" @@ -14733,31 +14103,13 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "memory-tencentdb: conversation-access hooks need privacy-boundary probes", "evidence": [ "agent_end @ plugins/memory-tencentdb/.crabpot-package/index.ts:820" ], "compatRecord": "hook.llm-observer.privacy-payload" }, - { - "id": "CRABPOT-2699E2FF", - "fixture": "memory-tencentdb", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "memory-tencentdb: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, { "id": "CRABPOT-B1B58880", "fixture": "memos-cloud", @@ -14769,49 +14121,13 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "memos-cloud: conversation-access hooks need privacy-boundary probes", "evidence": [ "agent_end @ plugins/memos-cloud/index.js:515" ], "compatRecord": "hook.llm-observer.privacy-payload" }, - { - "id": "CRABPOT-A5CDAA9D", - "fixture": "memos-cloud", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "memos-cloud: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-086AC5F8", - "fixture": "memos-cloud", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "memos-cloud: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, { "id": "CRABPOT-2D2FD5A1", "fixture": "memos-cloud", @@ -14823,49 +14139,13 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "memos-cloud: runtime registrations need capture before contract judgment", "evidence": [ "registerHook @ plugins/memos-cloud/index.js:467" ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-E21AEA4A", - "fixture": "mocrane-wecom", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "mocrane-wecom: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-FD153FAC", - "fixture": "mocrane-wecom", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "mocrane-wecom: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, { "id": "CRABPOT-B7E96EE7", "fixture": "mocrane-wecom", @@ -14877,7 +14157,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "mocrane-wecom: runtime registrations need capture before contract judgment", "evidence": [ "registerChannel @ plugins/mocrane-wecom/index.ts:31", @@ -14885,6 +14165,42 @@ ], "compatRecord": "api.capture.runtime-registrars" }, + { + "id": "CRABPOT-120FF1E0", + "fixture": "nemoclaw", + "severity": "P1", + "owner": "inspector", + "code": "before-tool-call-probe", + "decision": "inspector-follow-up", + "status": "open", + "issueClass": "inspector-gap", + "live": false, + "deprecated": false, + "compatStatus": "active", + "title": "nemoclaw: before_tool_call needs terminal/block/approval probes", + "evidence": [ + "before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384" + ], + "compatRecord": "hook.before_tool_call.terminal-block-approval" + }, + { + "id": "CRABPOT-2DEF4272", + "fixture": "nemoclaw", + "severity": "P1", + "owner": "inspector", + "code": "registration-capture-gap", + "decision": "inspector-follow-up", + "status": "open", + "issueClass": "inspector-gap", + "live": false, + "deprecated": false, + "compatStatus": "active", + "title": "nemoclaw: runtime registrations need capture before contract judgment", + "evidence": [ + "registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336" + ], + "compatRecord": "api.capture.runtime-registrars" + }, { "id": "CRABPOT-6475B814", "fixture": "openclaw-telemetry", @@ -14896,7 +14212,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "openclaw-telemetry: before_tool_call needs terminal/block/approval probes", "evidence": [ "before_tool_call @ plugins/openclaw-telemetry/index.ts:12" @@ -14914,67 +14230,13 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "openclaw-telemetry: conversation-access hooks need privacy-boundary probes", "evidence": [ "agent_end @ plugins/openclaw-telemetry/index.ts:62" ], "compatRecord": "hook.llm-observer.privacy-payload" }, - { - "id": "CRABPOT-926958D0", - "fixture": "openclaw-telemetry", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "openclaw-telemetry: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-2C3C844F", - "fixture": "openclaw-telemetry", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "openclaw-telemetry: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.before_tool_call.terminal-block-approval" - ], - "compatRecord": "hook.before_tool_call.terminal-block-approval" - }, - { - "id": "CRABPOT-E9593347", - "fixture": "openclaw-telemetry", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "openclaw-telemetry: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, { "id": "CRABPOT-1E70B745", "fixture": "openclaw-telemetry", @@ -14986,49 +14248,13 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "openclaw-telemetry: runtime registrations need capture before contract judgment", "evidence": [ "registerService @ plugins/openclaw-telemetry/index.ts:10" ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-DA09388C", - "fixture": "openclaw-weixin", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "openclaw-weixin: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-3984A9D5", - "fixture": "openclaw-weixin", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "openclaw-weixin: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, { "id": "CRABPOT-AACD04BD", "fixture": "openclaw-weixin", @@ -15040,7 +14266,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "openclaw-weixin: runtime registrations need capture before contract judgment", "evidence": [ "registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22" @@ -15058,7 +14284,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "opik-openclaw: before_tool_call needs terminal/block/approval probes", "evidence": [ "before_tool_call @ plugins/opik-openclaw/src/service/hooks/tool.ts:34" @@ -15076,7 +14302,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "opik-openclaw: conversation-access hooks need privacy-boundary probes", "evidence": [ "agent_end @ plugins/opik-openclaw/src/service.ts:560", @@ -15085,60 +14311,6 @@ ], "compatRecord": "hook.llm-observer.privacy-payload" }, - { - "id": "CRABPOT-47587310", - "fixture": "opik-openclaw", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "opik-openclaw: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-7F50C61E", - "fixture": "opik-openclaw", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "opik-openclaw: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.before_tool_call.terminal-block-approval" - ], - "compatRecord": "hook.before_tool_call.terminal-block-approval" - }, - { - "id": "CRABPOT-D1D87BFD", - "fixture": "opik-openclaw", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "opik-openclaw: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.llm-observer.privacy-payload" - ], - "compatRecord": "hook.llm-observer.privacy-payload" - }, { "id": "CRABPOT-A8C0B484", "fixture": "opik-openclaw", @@ -15150,49 +14322,13 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "opik-openclaw: runtime registrations need capture before contract judgment", "evidence": [ "registerService @ plugins/opik-openclaw/index.ts:16" ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-80BC634E", - "fixture": "qqbot", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "qqbot: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-77516CA6", - "fixture": "qqbot", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "qqbot: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, { "id": "CRABPOT-2E059FBD", "fixture": "qqbot", @@ -15204,31 +14340,13 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "qqbot: runtime registrations need capture before contract judgment", "evidence": [ "registerChannel @ plugins/qqbot/index.ts:16" ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-06325244", - "fixture": "secureclaw", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "secureclaw: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, { "id": "CRABPOT-77829940", "fixture": "secureclaw", @@ -15240,7 +14358,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "secureclaw: runtime registrations need capture before contract judgment", "evidence": [ "registerService @ plugins/secureclaw/secureclaw/src/index.ts:295", @@ -15249,42 +14367,6 @@ ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-F6AFB055", - "fixture": "telnyx-sms", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "telnyx-sms: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-B7572FB5", - "fixture": "telnyx-sms", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "telnyx-sms: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, { "id": "CRABPOT-5B7CB483", "fixture": "telnyx-sms", @@ -15296,7 +14378,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "telnyx-sms: runtime registrations need capture before contract judgment", "evidence": [ "registerHttpRoute @ plugins/telnyx-sms/index.ts:259" @@ -15314,67 +14396,13 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "wecom: before_tool_call needs terminal/block/approval probes", "evidence": [ "before_tool_call @ plugins/wecom/index.js:76" ], "compatRecord": "hook.before_tool_call.terminal-block-approval" }, - { - "id": "CRABPOT-A49D177D", - "fixture": "wecom", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "wecom: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-2A199DA9", - "fixture": "wecom", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "wecom: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, - { - "id": "CRABPOT-3E6EE0B8", - "fixture": "wecom", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "wecom: compat-dependent behavior lacks registry coverage", - "evidence": [ - "hook.before_tool_call.terminal-block-approval" - ], - "compatRecord": "hook.before_tool_call.terminal-block-approval" - }, { "id": "CRABPOT-2B6998AF", "fixture": "wecom", @@ -15386,7 +14414,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "wecom: runtime registrations need capture before contract judgment", "evidence": [ "registerChannel @ plugins/wecom/index.js:27", @@ -15394,42 +14422,6 @@ ], "compatRecord": "api.capture.runtime-registrars" }, - { - "id": "CRABPOT-D1D0863B", - "fixture": "yuanbao", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "yuanbao: compat-dependent behavior lacks registry coverage", - "evidence": [ - "api.capture.runtime-registrars" - ], - "compatRecord": "api.capture.runtime-registrars" - }, - { - "id": "CRABPOT-7ECE0D11", - "fixture": "yuanbao", - "severity": "P1", - "owner": "core", - "code": "missing-compat-record", - "decision": "core-compat-adapter", - "status": "open", - "issueClass": "compat-gap", - "live": false, - "deprecated": false, - "compatStatus": "missing", - "title": "yuanbao: compat-dependent behavior lacks registry coverage", - "evidence": [ - "channel.runtime.envelope-config-metadata" - ], - "compatRecord": "channel.runtime.envelope-config-metadata" - }, { "id": "CRABPOT-FA6EA79E", "fixture": "yuanbao", @@ -15459,7 +14451,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "yuanbao: runtime registrations need capture before contract judgment", "evidence": [ "registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:13", @@ -15615,7 +14607,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "agentchat: channel runtime needs envelope/config probes", "evidence": [ "defineChannelPluginEntry @ plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333" @@ -16147,7 +15139,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "ddingtalk: channel runtime needs envelope/config probes", "evidence": [ "defineChannelPluginEntry @ plugins/ddingtalk/index.ts:8" @@ -16220,7 +15212,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "dingtalk-connector: channel runtime needs envelope/config probes", "evidence": [ "registerChannel @ plugins/dingtalk-connector/index.ts:74" @@ -16640,7 +15632,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "kitchen-sink: channel runtime needs envelope/config probes", "evidence": [ "registerChannel @ plugins/kitchen-sink/src/generated-registrars.js:7", @@ -16695,7 +15687,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "lightclawbot: channel runtime needs envelope/config probes", "evidence": [ "registerChannel @ plugins/lightclawbot/.crabpot-package/dist/index.js:13" @@ -17178,7 +16170,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "mocrane-wecom: channel runtime needs envelope/config probes", "evidence": [ "registerChannel @ plugins/mocrane-wecom/index.ts:31" @@ -17304,6 +16296,82 @@ ], "compatRecord": null }, + { + "id": "CRABPOT-905635E3", + "fixture": "nemoclaw", + "severity": "P2", + "owner": "core", + "code": "legacy-before-agent-start", + "decision": "core-compat-adapter", + "status": "open", + "issueClass": "deprecation-warning", + "live": false, + "deprecated": true, + "compatStatus": "deprecated", + "title": "nemoclaw: legacy before_agent_start hook compatibility is still used", + "evidence": [ + "before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474" + ], + "compatRecord": "legacy-before-agent-start" + }, + { + "id": "CRABPOT-8CD3E234", + "fixture": "nemoclaw", + "severity": "P2", + "owner": "inspector", + "code": "package-build-artifact-entrypoint", + "decision": "inspector-follow-up", + "status": "open", + "issueClass": "inspector-gap", + "live": false, + "deprecated": false, + "compatStatus": "none", + "title": "nemoclaw: cold import requires package build output", + "evidence": [ + "extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js" + ], + "compatRecord": null + }, + { + "id": "CRABPOT-0999AA2A", + "fixture": "nemoclaw", + "severity": "P2", + "owner": "inspector", + "code": "package-dependency-install-required", + "decision": "inspector-follow-up", + "status": "open", + "issueClass": "inspector-gap", + "live": false, + "deprecated": false, + "compatStatus": "none", + "title": "nemoclaw: cold import requires dependency installation in an isolated workspace", + "evidence": [ + "commander @ plugins/nemoclaw/nemoclaw/package.json", + "execa @ plugins/nemoclaw/nemoclaw/package.json", + "json5 @ plugins/nemoclaw/nemoclaw/package.json", + "tar @ plugins/nemoclaw/nemoclaw/package.json", + "yaml @ plugins/nemoclaw/nemoclaw/package.json" + ], + "compatRecord": null + }, + { + "id": "CRABPOT-3C95F2D4", + "fixture": "nemoclaw", + "severity": "P2", + "owner": "plugin", + "code": "package-plugin-api-compat-missing", + "decision": "plugin-upstream-fix", + "status": "open", + "issueClass": "upstream-metadata", + "live": false, + "deprecated": false, + "compatStatus": "none", + "title": "nemoclaw: plugin API compatibility range is missing", + "evidence": [ + "plugins/nemoclaw/nemoclaw/package.json" + ], + "compatRecord": null + }, { "id": "CRABPOT-BAB79693", "fixture": "openclaw-telemetry", @@ -17389,7 +16457,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "openclaw-weixin: channel runtime needs envelope/config probes", "evidence": [ "registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22" @@ -17544,7 +16612,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "qqbot: channel runtime needs envelope/config probes", "evidence": [ "registerChannel @ plugins/qqbot/index.ts:16" @@ -17719,7 +16787,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "telnyx-sms: channel runtime needs envelope/config probes", "evidence": [ "defineChannelPluginEntry @ plugins/telnyx-sms/index.ts:207" @@ -17829,7 +16897,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "wecom: channel runtime needs envelope/config probes", "evidence": [ "registerChannel @ plugins/wecom/index.js:27" @@ -17906,7 +16974,7 @@ "issueClass": "inspector-gap", "live": false, "deprecated": false, - "compatStatus": "untracked", + "compatStatus": "active", "title": "yuanbao: channel runtime needs envelope/config probes", "evidence": [ "createChatChannelPlugin @ plugins/yuanbao/.crabpot-package/dist/src/channel.js:11", @@ -18263,6 +17331,16 @@ "registerHttpRoute @ plugins/mocrane-wecom/index.ts:34" ] }, + { + "id": "api.capture.runtime-registrars:nemoclaw", + "fixture": "nemoclaw", + "priority": "P1", + "target": "inspector-capture-api", + "contract": "External inspector capture records service, route, gateway, command, and interactive registrations.", + "evidence": [ + "registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336" + ] + }, { "id": "api.capture.runtime-registrars:openclaw-telemetry", "fixture": "openclaw-telemetry", @@ -18361,6 +17439,16 @@ "before_tool_call @ plugins/kitchen-sink/src/generated-hooks.js:18" ] }, + { + "id": "hook.before_tool_call.terminal-block-approval:nemoclaw", + "fixture": "nemoclaw", + "priority": "P1", + "target": "hook-runner", + "contract": "Hook returns preserve terminal, block, and approval semantics.", + "evidence": [ + "before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384" + ] + }, { "id": "hook.before_tool_call.terminal-block-approval:openclaw-telemetry", "fixture": "openclaw-telemetry", @@ -18488,18 +17576,6 @@ "openclaw/plugin-sdk/diagnostics-otel @ plugins/clawmetry/clawhub-plugin/src/service.ts:2" ] }, - { - "id": "sdk.import.package-export-cold-import:codex-app-server", - "fixture": "codex-app-server", - "priority": "P1", - "target": "sdk-alias", - "contract": "Every observed OpenClaw plugin SDK import remains exported by the target OpenClaw package.", - "evidence": [ - "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:104", - "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:106", - "openclaw/plugin-sdk/telegram-account @ plugins/codex-app-server/src/controller.ts:105" - ] - }, { "id": "sdk.import.package-export-cold-import:honcho", "fixture": "honcho", @@ -18658,6 +17734,16 @@ "before_agent_start @ plugins/kitchen-sink/src/generated-hooks.js:10" ] }, + { + "id": "hook.compat.before-agent-start-migration:nemoclaw", + "fixture": "nemoclaw", + "priority": "P2", + "target": "hook-runner", + "contract": "Legacy before_agent_start remains wired until plugins migrate to before_model_resolve and before_prompt_build.", + "evidence": [ + "before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474" + ] + }, { "id": "hook.compat.before-agent-start-migration:openclaw-telemetry", "fixture": "openclaw-telemetry", @@ -18812,6 +17898,16 @@ "plugins/mocrane-wecom/package.json" ] }, + { + "id": "package.compat.plugin-api-range:nemoclaw", + "fixture": "nemoclaw", + "priority": "P2", + "target": "package-loader", + "contract": "Package metadata declares the OpenClaw plugin API range used by the plugin.", + "evidence": [ + "plugins/nemoclaw/nemoclaw/package.json" + ] + }, { "id": "package.compat.plugin-api-range:openclaw-telemetry", "fixture": "openclaw-telemetry", @@ -18903,6 +17999,16 @@ "extension:./dist/index.js -> plugins/lossless-claw/dist/index.js" ] }, + { + "id": "package.entrypoint.build-before-cold-import:nemoclaw", + "fixture": "nemoclaw", + "priority": "P2", + "target": "package-loader", + "contract": "Inspector can build or resolve source aliases before cold importing package entrypoints.", + "evidence": [ + "extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js" + ] + }, { "id": "package.entrypoint.build-before-cold-import:opik-openclaw", "fixture": "opik-openclaw", @@ -19065,6 +18171,20 @@ "zod @ plugins/mocrane-wecom/package.json" ] }, + { + "id": "package.entrypoint.isolated-dependency-install:nemoclaw", + "fixture": "nemoclaw", + "priority": "P2", + "target": "package-loader", + "contract": "Inspector installs package dependencies in an isolated workspace before cold import.", + "evidence": [ + "commander @ plugins/nemoclaw/nemoclaw/package.json", + "execa @ plugins/nemoclaw/nemoclaw/package.json", + "json5 @ plugins/nemoclaw/nemoclaw/package.json", + "tar @ plugins/nemoclaw/nemoclaw/package.json", + "yaml @ plugins/nemoclaw/nemoclaw/package.json" + ] + }, { "id": "package.entrypoint.isolated-dependency-install:openclaw-weixin", "fixture": "openclaw-weixin", @@ -21374,6 +20494,58 @@ "webSearchProviders" ] }, + { + "fixture": "nemoclaw", + "code": "seam-inventory", + "level": "log", + "message": "observed 2 hooks, 2 registrations, and 0 manifest contracts", + "evidence": [ + "hook:before_agent_start", + "hook:before_tool_call", + "registration:registerCommand", + "registration:registerProvider" + ] + }, + { + "fixture": "nemoclaw", + "code": "hook-names-present", + "level": "log", + "message": "all observed hooks exist in the target OpenClaw hook registry", + "evidence": [ + "before_agent_start", + "before_tool_call" + ] + }, + { + "fixture": "nemoclaw", + "code": "api-registrars-present", + "level": "log", + "message": "all observed api.register* calls exist in the target OpenClaw plugin API builder", + "evidence": [ + "registerCommand", + "registerProvider" + ] + }, + { + "fixture": "nemoclaw", + "code": "manifest-fields-checked", + "level": "log", + "message": "plugin manifest fields were compared with target OpenClaw manifest types", + "evidence": [ + "plugins/nemoclaw/nemoclaw/openclaw.plugin.json" + ] + }, + { + "fixture": "nemoclaw", + "code": "package-metadata", + "level": "log", + "message": "selected package metadata for plugin contract checks", + "evidence": [ + "plugins/nemoclaw/nemoclaw/package.json", + "nemoclaw", + "version:0.1.0" + ] + }, { "fixture": "memory-tencentdb", "code": "seam-inventory", @@ -22130,6 +21302,17 @@ "registerService" ] }, + { + "fixture": "codex-app-server", + "code": "sdk-exports-present", + "level": "log", + "message": "all observed plugin SDK imports exist in target OpenClaw package exports", + "evidence": [ + "openclaw/plugin-sdk", + "openclaw/plugin-sdk/discord", + "openclaw/plugin-sdk/telegram-account" + ] + }, { "fixture": "codex-app-server", "code": "manifest-fields-checked", @@ -22363,6 +21546,17 @@ ], "compatRecord": "provider-auth-env-vars" }, + { + "fixture": "llm-trace-phoenix", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.llm-observer.privacy-payload", + "status:active" + ], + "compatRecord": "hook.llm-observer.privacy-payload" + }, { "fixture": "llm-trace-phoenix", "code": "compat-record-present", @@ -22374,6 +21568,17 @@ ], "compatRecord": "legacy-root-sdk-import" }, + { + "fixture": "opik-openclaw", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.llm-observer.privacy-payload", + "status:active" + ], + "compatRecord": "hook.llm-observer.privacy-payload" + }, { "fixture": "opik-openclaw", "code": "compat-record-present", @@ -22385,6 +21590,17 @@ ], "compatRecord": "legacy-root-sdk-import" }, + { + "fixture": "openclaw-telemetry", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.llm-observer.privacy-payload", + "status:active" + ], + "compatRecord": "hook.llm-observer.privacy-payload" + }, { "fixture": "openclaw-telemetry", "code": "compat-record-present", @@ -22440,6 +21656,17 @@ ], "compatRecord": "legacy-before-agent-start" }, + { + "fixture": "hyperspell", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.llm-observer.privacy-payload", + "status:active" + ], + "compatRecord": "hook.llm-observer.privacy-payload" + }, { "fixture": "hyperspell", "code": "compat-record-present", @@ -22462,6 +21689,17 @@ ], "compatRecord": "legacy-before-agent-start" }, + { + "fixture": "honcho", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.llm-observer.privacy-payload", + "status:active" + ], + "compatRecord": "hook.llm-observer.privacy-payload" + }, { "fixture": "honcho", "code": "compat-record-present", @@ -22495,6 +21733,17 @@ ], "compatRecord": "legacy-root-sdk-import" }, + { + "fixture": "kitchen-sink", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.llm-observer.privacy-payload", + "status:active" + ], + "compatRecord": "hook.llm-observer.privacy-payload" + }, { "fixture": "kitchen-sink", "code": "compat-record-present", @@ -22517,6 +21766,28 @@ ], "compatRecord": "legacy-before-agent-start" }, + { + "fixture": "nemoclaw", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "legacy-before-agent-start", + "status:deprecated" + ], + "compatRecord": "legacy-before-agent-start" + }, + { + "fixture": "memory-tencentdb", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.llm-observer.privacy-payload", + "status:active" + ], + "compatRecord": "hook.llm-observer.privacy-payload" + }, { "fixture": "dingtalk-connector", "code": "compat-record-present", @@ -22572,6 +21843,17 @@ ], "compatRecord": "legacy-root-sdk-import" }, + { + "fixture": "memos-cloud", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.llm-observer.privacy-payload", + "status:active" + ], + "compatRecord": "hook.llm-observer.privacy-payload" + }, { "fixture": "memos-cloud", "code": "compat-record-present", @@ -22615,6 +21897,435 @@ "status:deprecated" ], "compatRecord": "provider-auth-env-vars" + }, + { + "fixture": "agentchat", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "wecom", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "wecom", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.before_tool_call.terminal-block-approval", + "status:active" + ], + "compatRecord": "hook.before_tool_call.terminal-block-approval" + }, + { + "fixture": "wecom", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "qqbot", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "qqbot", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "a2a-gateway", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "mcp-adapter", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "opik-openclaw", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "opik-openclaw", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.before_tool_call.terminal-block-approval", + "status:active" + ], + "compatRecord": "hook.before_tool_call.terminal-block-approval" + }, + { + "fixture": "openclaw-telemetry", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "openclaw-telemetry", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.before_tool_call.terminal-block-approval", + "status:active" + ], + "compatRecord": "hook.before_tool_call.terminal-block-approval" + }, + { + "fixture": "lossless-claw", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "connectclaw", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "hyperspell", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "honcho", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "kitchen-sink", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "kitchen-sink", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.before_tool_call.terminal-block-approval", + "status:active" + ], + "compatRecord": "hook.before_tool_call.terminal-block-approval" + }, + { + "fixture": "kitchen-sink", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "nemoclaw", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "nemoclaw", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "hook.before_tool_call.terminal-block-approval", + "status:active" + ], + "compatRecord": "hook.before_tool_call.terminal-block-approval" + }, + { + "fixture": "ddingtalk", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "dingtalk-connector", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "dingtalk-connector", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "mocrane-wecom", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "mocrane-wecom", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "yuanbao", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "yuanbao", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "openclaw-weixin", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "openclaw-weixin", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "lightclawbot", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "lightclawbot", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "telnyx-sms", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "telnyx-sms", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "channel.runtime.envelope-config-metadata", + "status:active" + ], + "compatRecord": "channel.runtime.envelope-config-metadata" + }, + { + "fixture": "clawrouter", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "secureclaw", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "memos-cloud", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "clawmetry", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" + }, + { + "fixture": "codex-app-server", + "code": "compat-record-present", + "level": "log", + "message": "target OpenClaw checkout has a matching compat registry record", + "evidence": [ + "api.capture.runtime-registrars", + "status:active" + ], + "compatRecord": "api.capture.runtime-registrars" } ], "decisions": [ @@ -23248,6 +22959,48 @@ "action": "Keep checking this declarative contract in default offline CI.", "evidence": "agentToolResultMiddleware, documentExtractors, embeddedExtensionFactories, externalAuthProviders, imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, migrationProviders, musicGenerationProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, speechProviders, tools, videoGenerationProviders, webContentExtractors, webFetchProviders, webSearchProviders" }, + { + "fixture": "nemoclaw", + "decision": "plugin-upstream-fix", + "seam": "package-metadata", + "action": "Ask the plugin to declare the plugin API range it was built against.", + "evidence": "plugins/nemoclaw/nemoclaw/package.json" + }, + { + "fixture": "nemoclaw", + "decision": "inspector-follow-up", + "seam": "cold-import", + "action": "Run the plugin build or resolve source entrypoint aliases before cold-importing this fixture.", + "evidence": "./dist/index.js" + }, + { + "fixture": "nemoclaw", + "decision": "inspector-follow-up", + "seam": "cold-import", + "action": "Install runtime dependencies in an isolated workspace before executing this fixture entrypoint.", + "evidence": "commander, execa, json5, tar, yaml" + }, + { + "fixture": "nemoclaw", + "decision": "core-compat-adapter", + "seam": "hook-compat", + "action": "Keep before_agent_start wired while plugin authors migrate to before_model_resolve and before_prompt_build.", + "evidence": "before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474" + }, + { + "fixture": "nemoclaw", + "decision": "inspector-follow-up", + "seam": "registration-capture", + "action": "Expose or mirror a full public API capture shim before treating these runtime-only seams as covered.", + "evidence": "registerCommand" + }, + { + "fixture": "nemoclaw", + "decision": "inspector-follow-up", + "seam": "tool-policy", + "action": "Probe before_tool_call return shapes before changing tool-call approval or block behavior.", + "evidence": "before_tool_call" + }, { "fixture": "memory-tencentdb", "decision": "inspector-follow-up", @@ -23738,13 +23491,6 @@ "action": "Expose or mirror a full public API capture shim before treating these runtime-only seams as covered.", "evidence": "registerService" }, - { - "fixture": "codex-app-server", - "decision": "core-compat-adapter", - "seam": "sdk-alias", - "action": "Restore the package export alias or publish a versioned migration map before cold-importing old plugins.", - "evidence": "openclaw/plugin-sdk/discord, openclaw/plugin-sdk/telegram-account" - }, { "fixture": "codex-app-server", "decision": "inspector-follow-up", @@ -23843,34 +23589,6 @@ "action": "Keep checking this declarative contract in default offline CI.", "evidence": "speechProviders" }, - { - "fixture": "llm-trace-phoenix", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.llm-observer.privacy-payload" - }, - { - "fixture": "opik-openclaw", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.llm-observer.privacy-payload" - }, - { - "fixture": "openclaw-telemetry", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.llm-observer.privacy-payload" - }, - { - "fixture": "hyperspell", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.llm-observer.privacy-payload" - }, { "fixture": "honcho", "decision": "core-compat-adapter", @@ -23878,27 +23596,6 @@ "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", "evidence": "plugin-sdk-export-aliases" }, - { - "fixture": "honcho", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.llm-observer.privacy-payload" - }, - { - "fixture": "kitchen-sink", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.llm-observer.privacy-payload" - }, - { - "fixture": "memory-tencentdb", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.llm-observer.privacy-payload" - }, { "fixture": "yuanbao", "decision": "core-compat-adapter", @@ -23906,285 +23603,12 @@ "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", "evidence": "plugin-sdk-export-aliases" }, - { - "fixture": "memos-cloud", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.llm-observer.privacy-payload" - }, { "fixture": "clawmetry", "decision": "core-compat-adapter", "seam": "compat-registry", "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", "evidence": "plugin-sdk-export-aliases" - }, - { - "fixture": "codex-app-server", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "plugin-sdk-export-aliases" - }, - { - "fixture": "agentchat", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "wecom", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "wecom", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.before_tool_call.terminal-block-approval" - }, - { - "fixture": "wecom", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "qqbot", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "qqbot", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "a2a-gateway", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "mcp-adapter", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "opik-openclaw", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "opik-openclaw", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.before_tool_call.terminal-block-approval" - }, - { - "fixture": "openclaw-telemetry", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "openclaw-telemetry", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.before_tool_call.terminal-block-approval" - }, - { - "fixture": "lossless-claw", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "connectclaw", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "hyperspell", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "honcho", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "kitchen-sink", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "kitchen-sink", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "hook.before_tool_call.terminal-block-approval" - }, - { - "fixture": "kitchen-sink", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "ddingtalk", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "dingtalk-connector", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "dingtalk-connector", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "mocrane-wecom", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "mocrane-wecom", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "yuanbao", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "yuanbao", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "openclaw-weixin", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "openclaw-weixin", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "lightclawbot", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "lightclawbot", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "telnyx-sms", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "telnyx-sms", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "channel.runtime.envelope-config-metadata" - }, - { - "fixture": "clawrouter", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "secureclaw", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "memos-cloud", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "clawmetry", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" - }, - { - "fixture": "codex-app-server", - "decision": "core-compat-adapter", - "seam": "compat-registry", - "action": "Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior.", - "evidence": "api.capture.runtime-registrars" } ] } diff --git a/reports/crabpot-report.md b/reports/crabpot-report.md index 803bb74..3f17cd3 100644 --- a/reports/crabpot-report.md +++ b/reports/crabpot-report.md @@ -7,32 +7,32 @@ Status: PASS | Metric | Value | | ------------------------- | ----- | -| Fixtures | 32 | -| High-priority fixtures | 21 | +| Fixtures | 33 | +| High-priority fixtures | 22 | | Hard breakages | 0 | -| Warnings | 68 | -| Compatibility suggestions | 154 | -| Issue findings | 222 | -| P0 issues | 5 | -| P1 issues | 83 | -| Live issues | 5 | -| Live P0 issues | 5 | -| Compat gaps | 49 | -| Deprecation warnings | 27 | -| Inspector gaps | 113 | -| Upstream metadata | 28 | -| Contract probes | 170 | -| Decision rows | 224 | +| Warnings | 69 | +| Compatibility suggestions | 112 | +| Issue findings | 181 | +| P0 issues | 4 | +| P1 issues | 39 | +| Live issues | 4 | +| Live P0 issues | 4 | +| Compat gaps | 3 | +| Deprecation warnings | 28 | +| Inspector gaps | 117 | +| Upstream metadata | 29 | +| Contract probes | 175 | +| Decision rows | 183 | ## Triage Overview | Class | Count | P0 | Meaning | | ------------------- | ----- | -- | --------------------------------------------------------------------------------------------------------------- | -| live-issue | 5 | 5 | Potential runtime breakage in the target OpenClaw/plugin pair. P0 only when it is not a deprecated compat seam. | -| compat-gap | 49 | - | Compatibility behavior is needed but missing from the target OpenClaw compat registry. | -| deprecation-warning | 27 | - | Plugin uses a supported but deprecated compatibility seam; keep it wired while migration exists. | -| inspector-gap | 113 | - | Plugin Inspector needs stronger capture/probe evidence before making contract judgments. | -| upstream-metadata | 28 | - | Plugin package or manifest metadata should improve upstream; not a target OpenClaw live break by itself. | +| live-issue | 4 | 4 | Potential runtime breakage in the target OpenClaw/plugin pair. P0 only when it is not a deprecated compat seam. | +| compat-gap | 3 | - | Compatibility behavior is needed but missing from the target OpenClaw compat registry. | +| deprecation-warning | 28 | - | Plugin uses a supported but deprecated compatibility seam; keep it wired while migration exists. | +| inspector-gap | 117 | - | Plugin Inspector needs stronger capture/probe evidence before making contract judgments. | +| upstream-metadata | 29 | - | Plugin package or manifest metadata should improve upstream; not a target OpenClaw live break by itself. | | fixture-regression | 0 | - | Fixture no longer exposes an expected seam; investigate fixture pin or scanner drift. | ## P0 Live Issues @@ -43,14 +43,6 @@ Status: PASS - evidence: - [openclaw/plugin-sdk/diagnostics-otel @ service.ts:2](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/src/service.ts#L2) -- 🔴 P0 **codex-app-server** `live-issue` `core-compat-adapter` - - **sdk-export-missing**: codex-app-server: plugin SDK import aliases are missing from target package exports - - state: blocking · compat:untracked · live - - evidence: - - [openclaw/plugin-sdk/discord @ controller.ts:104](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L104) - - [openclaw/plugin-sdk/discord @ controller.ts:106](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L106) - - [openclaw/plugin-sdk/telegram-account @ controller.ts:105](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L105) - - 🔴 P0 **honcho** `live-issue` `core-compat-adapter` - **sdk-export-missing**: honcho: plugin SDK import aliases are missing from target package exports - state: blocking · compat:untracked · live @@ -82,14 +74,6 @@ Status: PASS - evidence: - [openclaw/plugin-sdk/diagnostics-otel @ service.ts:2](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/src/service.ts#L2) -- 🔴 P0 **codex-app-server** `live-issue` `core-compat-adapter` - - **sdk-export-missing**: codex-app-server: plugin SDK import aliases are missing from target package exports - - state: blocking · compat:untracked · live - - evidence: - - [openclaw/plugin-sdk/discord @ controller.ts:104](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L104) - - [openclaw/plugin-sdk/discord @ controller.ts:106](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L106) - - [openclaw/plugin-sdk/telegram-account @ controller.ts:105](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L105) - - 🔴 P0 **honcho** `live-issue` `core-compat-adapter` - **sdk-export-missing**: honcho: plugin SDK import aliases are missing from target package exports - state: blocking · compat:untracked · live @@ -115,294 +99,18 @@ Status: PASS ## Compat Gaps -- 🟠 P1 **a2a-gateway** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: a2a-gateway: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **agentchat** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: agentchat: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **clawmetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: clawmetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **clawmetry** `compat-gap` `core-compat-adapter` - **missing-compat-record**: clawmetry: compat-dependent behavior lacks registry coverage - state: open · compat:missing - evidence: - plugin-sdk-export-aliases -- 🟠 P1 **clawrouter** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: clawrouter: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **codex-app-server** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: codex-app-server: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **codex-app-server** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: codex-app-server: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - plugin-sdk-export-aliases - -- 🟠 P1 **connectclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: connectclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **ddingtalk** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: ddingtalk: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **dingtalk-connector** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: dingtalk-connector: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **dingtalk-connector** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: dingtalk-connector: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - state: open · compat:missing - evidence: - plugin-sdk-export-aliases -- 🟠 P1 **hyperspell** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: hyperspell: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **hyperspell** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: hyperspell: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **lightclawbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lightclawbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **lightclawbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lightclawbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **llm-trace-phoenix** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: llm-trace-phoenix: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **lossless-claw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lossless-claw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **mcp-adapter** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mcp-adapter: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **memory-tencentdb** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memory-tencentdb: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **memos-cloud** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memos-cloud: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **memos-cloud** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memos-cloud: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **mocrane-wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mocrane-wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **mocrane-wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mocrane-wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **openclaw-weixin** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-weixin: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **openclaw-weixin** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-weixin: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **qqbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: qqbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **qqbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: qqbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **secureclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: secureclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **telnyx-sms** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: telnyx-sms: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **telnyx-sms** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: telnyx-sms: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - state: open · compat:missing @@ -598,6 +306,12 @@ Status: PASS - [openclaw/plugin-sdk @ command-auth.ts:1](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/src/shared/command-auth.ts#L1) - [openclaw/plugin-sdk @ ws-adapter.ts:14](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/src/ws-adapter.ts#L14) +- 🟡 P2 **nemoclaw** `deprecation-warning` `core-compat-adapter` + - **legacy-before-agent-start**: nemoclaw: legacy before_agent_start hook compatibility is still used + - state: open · compat:deprecated · deprecated + - evidence: + - before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 + - 🟡 P2 **openclaw-telemetry** `deprecation-warning` `core-compat-adapter` - **legacy-before-agent-start**: openclaw-telemetry: legacy before_agent_start hook compatibility is still used - state: open · compat:deprecated · deprecated @@ -656,7 +370,7 @@ Status: PASS - 🟠 P1 **a2a-gateway** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: a2a-gateway: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerGatewayMethod @ index.ts:616](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L616) - [registerGatewayMethod @ index.ts:622](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L622) @@ -667,13 +381,13 @@ Status: PASS - 🟠 P1 **clawmetry** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: clawmetry: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:9](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/index.ts#L9) - 🟠 P1 **clawrouter** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: clawrouter: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:1636](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1636) - [registerCommand @ index.ts:1682](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1682) @@ -686,7 +400,7 @@ Status: PASS - 🟠 P1 **codex-app-server** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: codex-app-server: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:48](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L48) - [registerInteractiveHandler @ index.ts:29](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L29) @@ -695,7 +409,7 @@ Status: PASS - 🟠 P1 **connectclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: connectclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ commands.ts:18](https://github.com/osipov-anton/connectclaw/blob/6cd516650168890e9b850064afaaa5fe24df5950/packages/plugin/src/commands.ts#L18) - [registerCommand @ commands.ts:64](https://github.com/osipov-anton/connectclaw/blob/6cd516650168890e9b850064afaaa5fe24df5950/packages/plugin/src/commands.ts#L64) @@ -703,7 +417,7 @@ Status: PASS - 🟠 P1 **dingtalk-connector** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: dingtalk-connector: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:74](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/index.ts#L74) - [registerGatewayMethod @ gateway-methods.ts:130](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/src/gateway-methods.ts#L130) @@ -722,28 +436,28 @@ Status: PASS - 🟠 P1 **honcho** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: honcho: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ capture.ts:151](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/hooks/capture.ts#L151) - [agent_end @ subagent.ts:34](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/hooks/subagent.ts#L34) - 🟠 P1 **honcho** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: honcho: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerMemoryPromptSection @ index.ts:97](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/index.ts#L97) - [registerMemoryRuntime @ runtime.ts:274](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/runtime.ts#L274) - 🟠 P1 **hyperspell** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: hyperspell: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.ts:105](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/index.ts#L105) - [agent_end @ index.ts:116](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/index.ts#L116) - 🟠 P1 **hyperspell** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: hyperspell: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ slash.ts:166](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/commands/slash.ts#L166) - [registerCommand @ slash.ts:43](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/commands/slash.ts#L43) @@ -755,13 +469,13 @@ Status: PASS - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: kitchen-sink: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ generated-hooks.js:18](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L18) - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: kitchen-sink: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ generated-hooks.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L7) - [llm_input @ generated-hooks.js:22](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L22) @@ -769,7 +483,7 @@ Status: PASS - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: kitchen-sink: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerAutoEnableProbe @ generated-registrars.js:6](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L6) - [registerChannel @ generated-registrars.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L7) @@ -808,88 +522,100 @@ Status: PASS - 🟠 P1 **lightclawbot** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: lightclawbot: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/lightclawbot/.crabpot-package/dist/index.js:13 - 🟠 P1 **llm-trace-phoenix** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: llm-trace-phoenix: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [llm_input @ index.ts:154](https://github.com/pingshian0131/openclaw-plugin-llm-trace-phoenix/blob/05bc0f4ba67281c10fad7be356d32a54b00c59fd/index.ts#L154) - [llm_output @ index.ts:168](https://github.com/pingshian0131/openclaw-plugin-llm-trace-phoenix/blob/05bc0f4ba67281c10fad7be356d32a54b00c59fd/index.ts#L168) - 🟠 P1 **lossless-claw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: lossless-claw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:2055](https://github.com/Martian-Engineering/lossless-claw/blob/4724d3fe6ccfd85f275aad732f3b01551d909e5a/src/plugin/index.ts#L2055) - [registerContextEngine @ index.ts:2035](https://github.com/Martian-Engineering/lossless-claw/blob/4724d3fe6ccfd85f275aad732f3b01551d909e5a/src/plugin/index.ts#L2035) - 🟠 P1 **mcp-adapter** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: mcp-adapter: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:15](https://github.com/androidStern-personal/openclaw-mcp-adapter/blob/5434ce21ac780a46a493c8125e52e80a03dd2640/index.ts#L15) - 🟠 P1 **memory-tencentdb** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: memory-tencentdb: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - agent_end @ plugins/memory-tencentdb/.crabpot-package/index.ts:820 - 🟠 P1 **memos-cloud** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: memos-cloud: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.js:515](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/blob/03fcc33c5fd285971d4b3dbaa8bbb31cb727db7c/index.js#L515) - 🟠 P1 **memos-cloud** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: memos-cloud: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerHook @ index.js:467](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/blob/03fcc33c5fd285971d4b3dbaa8bbb31cb727db7c/index.js#L467) - 🟠 P1 **mocrane-wecom** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: mocrane-wecom: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:31](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L31) - [registerHttpRoute @ index.ts:34](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L34) +- 🟠 P1 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **before-tool-call-probe**: nemoclaw: before_tool_call needs terminal/block/approval probes + - state: open · compat:active + - evidence: + - before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384 + +- 🟠 P1 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **registration-capture-gap**: nemoclaw: runtime registrations need capture before contract judgment + - state: open · compat:active + - evidence: + - registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336 + - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: openclaw-telemetry: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ index.ts:12](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L12) - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: openclaw-telemetry: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.ts:62](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L62) - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: openclaw-telemetry: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:10](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L10) - 🟠 P1 **openclaw-weixin** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: openclaw-weixin: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22 - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: opik-openclaw: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ tool.ts:34](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service/hooks/tool.ts#L34) - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: opik-openclaw: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ service.ts:560](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service.ts#L560) - [llm_input @ llm.ts:39](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service/hooks/llm.ts#L39) @@ -897,19 +623,19 @@ Status: PASS - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: opik-openclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:16](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/index.ts#L16) - 🟠 P1 **qqbot** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: qqbot: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:16](https://github.com/tencent-connect/openclaw-qqbot/blob/3eee78922ed0b19af5c4c55f1dfe7d1c848e31f5/index.ts#L16) - 🟠 P1 **secureclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: secureclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:295](https://github.com/adversa-ai/secureclaw/blob/bf17e2b3deb989e348b3a98080e33a7047e90ac3/secureclaw/src/index.ts#L295) - [registerService @ index.ts:301](https://github.com/adversa-ai/secureclaw/blob/bf17e2b3deb989e348b3a98080e33a7047e90ac3/secureclaw/src/index.ts#L301) @@ -917,26 +643,26 @@ Status: PASS - 🟠 P1 **telnyx-sms** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: telnyx-sms: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerHttpRoute @ index.ts:259](https://github.com/team-telnyx/telnyx-openclaw-sms-channel/blob/66dba9edf2bd43605327531a748b4d8fbf0017dd/index.ts#L259) - 🟠 P1 **wecom** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: wecom: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ index.js:76](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L76) - 🟠 P1 **wecom** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: wecom: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.js:27](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L27) - [registerHttpRoute @ index.js:56](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L56) - 🟠 P1 **yuanbao** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: yuanbao: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:13 - registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:14 @@ -971,7 +697,7 @@ Status: PASS - 🟡 P2 **agentchat** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: agentchat: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ channel.ts:333](https://github.com/agentchatme/agentchat/blob/1460cece00ebd3829fb39d5db5ee23050937ed02/integrations/openclaw-channel/src/channel.ts#L333) @@ -1093,7 +819,7 @@ Status: PASS - 🟡 P2 **ddingtalk** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: ddingtalk: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ index.ts:8](https://github.com/largezhou/openclaw-dingtalk/blob/74d22da7335f261ec5febe2663bed6b81068b7ec/index.ts#L8) @@ -1112,7 +838,7 @@ Status: PASS - 🟡 P2 **dingtalk-connector** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: dingtalk-connector: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:74](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/index.ts#L74) @@ -1202,14 +928,14 @@ Status: PASS - 🟡 P2 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: kitchen-sink: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ generated-registrars.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L7) - [registerChannel @ kitchen-runtime.js:63](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/kitchen-runtime.js#L63) - 🟡 P2 **lightclawbot** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: lightclawbot: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/lightclawbot/.crabpot-package/dist/index.js:13 @@ -1312,7 +1038,7 @@ Status: PASS - 🟡 P2 **mocrane-wecom** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: mocrane-wecom: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:31](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L31) @@ -1338,6 +1064,22 @@ Status: PASS - evidence: - [registerTool @ index.ts:43](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L43) +- 🟡 P2 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **package-build-artifact-entrypoint**: nemoclaw: cold import requires package build output + - state: open · compat:none + - evidence: + - extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js + +- 🟡 P2 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **package-dependency-install-required**: nemoclaw: cold import requires dependency installation in an isolated workspace + - state: open · compat:none + - evidence: + - commander @ plugins/nemoclaw/nemoclaw/package.json + - execa @ plugins/nemoclaw/nemoclaw/package.json + - json5 @ plugins/nemoclaw/nemoclaw/package.json + - tar @ plugins/nemoclaw/nemoclaw/package.json + - yaml @ plugins/nemoclaw/nemoclaw/package.json + - 🟡 P2 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **package-typescript-source-entrypoint**: openclaw-telemetry: cold import needs TypeScript source entrypoint support - state: open · compat:none @@ -1346,7 +1088,7 @@ Status: PASS - 🟡 P2 **openclaw-weixin** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: openclaw-weixin: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22 @@ -1385,7 +1127,7 @@ Status: PASS - 🟡 P2 **qqbot** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: qqbot: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:16](https://github.com/tencent-connect/openclaw-qqbot/blob/3eee78922ed0b19af5c4c55f1dfe7d1c848e31f5/index.ts#L16) @@ -1419,7 +1161,7 @@ Status: PASS - 🟡 P2 **telnyx-sms** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: telnyx-sms: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ index.ts:207](https://github.com/team-telnyx/telnyx-openclaw-sms-channel/blob/66dba9edf2bd43605327531a748b4d8fbf0017dd/index.ts#L207) @@ -1445,7 +1187,7 @@ Status: PASS - 🟡 P2 **wecom** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: wecom: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.js:27](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L27) @@ -1468,7 +1210,7 @@ Status: PASS - 🟡 P2 **yuanbao** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: yuanbao: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - createChatChannelPlugin @ plugins/yuanbao/.crabpot-package/dist/src/channel.js:11 - createChatChannelPlugin @ plugins/yuanbao/.crabpot-package/src/channel.ts:32 @@ -1615,6 +1357,12 @@ Status: PASS - evidence: - [package.json](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/package.json) +- 🟡 P2 **nemoclaw** `upstream-metadata` `plugin-upstream-fix` + - **package-plugin-api-compat-missing**: nemoclaw: plugin API compatibility range is missing + - state: open · compat:none + - evidence: + - plugins/nemoclaw/nemoclaw/package.json + - 🟡 P2 **openclaw-telemetry** `upstream-metadata` `plugin-upstream-fix` - **package-plugin-api-compat-missing**: openclaw-telemetry: plugin API compatibility range is missing - state: open · compat:none @@ -1682,25 +1430,25 @@ _none_ ## Target OpenClaw Compat Records -| Metric | Value | -| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Configured path | ./openclaw | -| Status | ok | -| Compat registry | openclaw/src/plugins/compat/registry.ts | -| Compat records | 56 | -| Compat status counts | active:13, deprecated:43 | -| Record ids | activation-agent-harness-hint, activation-capability-hint, activation-channel-hint, activation-command-hint, activation-config-path-hint, activation-provider-hint, activation-route-hint, agent-harness-id-alias, agent-harness-sdk-alias, agent-tool-result-harness-alias, approval-capability-approvals-alias, bundled-channel-config-schema-legacy, bundled-plugin-allowlist, bundled-plugin-enablement, bundled-plugin-load-path-aliases, bundled-plugin-vitest-defaults, channel-env-vars, channel-exposure-legacy-aliases, channel-mention-gating-legacy-helpers, channel-native-message-schema-helpers, channel-route-key-aliases, channel-runtime-sdk-alias, channel-target-comparable-aliases, clawdbot-config-type-alias, command-auth-status-builders, disable-persisted-plugin-registry-env, embedded-harness-config-alias, generated-bundled-channel-config-fallback, hook-only-plugin-shape, legacy-before-agent-start, legacy-extension-api-import, legacy-implicit-startup-sidecar, legacy-root-sdk-import, memory-split-registration, openclaw-schema-type-alias, plugin-activate-entrypoint-alias, plugin-install-config-ledger, plugin-owned-web-fetch-config, plugin-owned-web-search-config, plugin-owned-x-search-config, plugin-registry-install-migration-env, plugin-sdk-test-utils-alias, plugin-sdk-testing-barrel, provider-auth-env-vars, provider-discovery-hook-alias, provider-discovery-type-aliases, provider-external-oauth-profiles-hook, provider-static-capabilities-bag, provider-thinking-policy-hooks, provider-web-search-core-wrapper, runtime-config-load-write, runtime-inbound-envelope-alias, runtime-stt-alias, runtime-subagent-get-session-alias, runtime-taskflow-legacy-alias, setup-runtime-fallback | -| Hook registry | openclaw/src/plugins/hook-types.ts | -| Hook names | 34 | -| API builder | openclaw/src/plugins/api-builder.ts | -| API registrars | 48 | -| Captured registration | openclaw/src/plugins/captured-registration.ts | -| Captured registrars | 26 | -| Package metadata | openclaw/package.json | -| Plugin SDK exports | 291 | -| Manifest types | openclaw/src/plugins/manifest.ts | -| Manifest fields | 35 | -| Manifest contract fields | 17 | +| Metric | Value | +| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Configured path | ./openclaw | +| Status | ok | +| Compat registry | openclaw/src/plugins/compat/registry.ts | +| Compat records | 61 | +| Compat status counts | active:18, deprecated:43 | +| Record ids | activation-agent-harness-hint, activation-capability-hint, activation-channel-hint, activation-command-hint, activation-config-path-hint, activation-provider-hint, activation-route-hint, agent-harness-id-alias, agent-harness-sdk-alias, agent-tool-result-harness-alias, api.capture.runtime-registrars, approval-capability-approvals-alias, bundled-channel-config-schema-legacy, bundled-channel-sdk-compat-facades, bundled-plugin-allowlist, bundled-plugin-enablement, bundled-plugin-load-path-aliases, bundled-plugin-vitest-defaults, channel-env-vars, channel-exposure-legacy-aliases, channel-mention-gating-legacy-helpers, channel-native-message-schema-helpers, channel-route-key-aliases, channel-runtime-sdk-alias, channel-target-comparable-aliases, channel.runtime.envelope-config-metadata, clawdbot-config-type-alias, command-auth-status-builders, disable-persisted-plugin-registry-env, embedded-harness-config-alias, generated-bundled-channel-config-fallback, hook-only-plugin-shape, hook.before_tool_call.terminal-block-approval, hook.llm-observer.privacy-payload, legacy-before-agent-start, legacy-extension-api-import, legacy-implicit-startup-sidecar, legacy-root-sdk-import, memory-split-registration, openclaw-schema-type-alias, plugin-activate-entrypoint-alias, plugin-install-config-ledger, plugin-owned-web-fetch-config, plugin-owned-web-search-config, plugin-owned-x-search-config, plugin-registry-install-migration-env, plugin-sdk-test-utils-alias, plugin-sdk-testing-barrel, provider-auth-env-vars, provider-discovery-hook-alias, provider-discovery-type-aliases, provider-external-oauth-profiles-hook, provider-static-capabilities-bag, provider-thinking-policy-hooks, provider-web-search-core-wrapper, runtime-config-load-write, runtime-inbound-envelope-alias, runtime-stt-alias, runtime-subagent-get-session-alias, runtime-taskflow-legacy-alias, setup-runtime-fallback | +| Hook registry | openclaw/src/plugins/hook-types.ts | +| Hook names | 35 | +| API builder | openclaw/src/plugins/api-builder.ts | +| API registrars | 49 | +| Captured registration | openclaw/src/plugins/captured-registration.ts | +| Captured registrars | 26 | +| Package metadata | openclaw/package.json | +| Plugin SDK exports | 294 | +| Manifest types | openclaw/src/plugins/manifest.ts | +| Manifest fields | 35 | +| Manifest contract fields | 17 | ## Warnings @@ -1743,6 +1491,8 @@ _none_ | kitchen-sink | conversation-access-hook | warning | fixture observes raw model or conversation content and needs privacy-boundary contract probes | agent_end @ plugins/kitchen-sink/src/generated-hooks.js:7, llm_input @ plugins/kitchen-sink/src/generated-hooks.js:22, llm_output @ plugins/kitchen-sink/src/generated-hooks.js:23 | hook.llm-observer.privacy-payload | | kitchen-sink | legacy-root-sdk-import | warning | fixture imports the root plugin SDK barrel | openclaw/plugin-sdk @ plugins/kitchen-sink/src/generated-sdk-imports.ts:2 | legacy-root-sdk-import | | kitchen-sink | legacy-before-agent-start | warning | fixture uses deprecated before_agent_start hook compatibility | before_agent_start @ plugins/kitchen-sink/src/generated-hooks.js:10 | legacy-before-agent-start | +| nemoclaw | package-plugin-api-compat-missing | warning | package openclaw metadata does not declare compat.pluginApi | plugins/nemoclaw/nemoclaw/package.json | - | +| nemoclaw | legacy-before-agent-start | warning | fixture uses deprecated before_agent_start hook compatibility | before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 | legacy-before-agent-start | | memory-tencentdb | conversation-access-hook | warning | fixture observes raw model or conversation content and needs privacy-boundary contract probes | agent_end @ plugins/memory-tencentdb/.crabpot-package/index.ts:820 | hook.llm-observer.privacy-payload | | ddingtalk | package-plugin-api-compat-missing | warning | package openclaw metadata does not declare compat.pluginApi | plugins/ddingtalk/package.json | - | | dingtalk-connector | manifest-unknown-fields | warning | manifest uses top-level fields that are not present in the target OpenClaw PluginManifest type | author @ plugins/dingtalk-connector/openclaw.plugin.json, main @ plugins/dingtalk-connector/openclaw.plugin.json | - | @@ -1769,7 +1519,6 @@ _none_ | memos-cloud | conversation-access-hook | warning | fixture observes raw model or conversation content and needs privacy-boundary contract probes | agent_end @ plugins/memos-cloud/index.js:515 | hook.llm-observer.privacy-payload | | memos-cloud | legacy-before-agent-start | warning | fixture uses deprecated before_agent_start hook compatibility | before_agent_start @ plugins/memos-cloud/index.js:481 | legacy-before-agent-start | | clawmetry | sdk-export-missing | warning | fixture imports plugin SDK aliases that are not exported by the target OpenClaw package | openclaw/plugin-sdk/diagnostics-otel @ plugins/clawmetry/clawhub-plugin/src/service.ts:2 | plugin-sdk-export-aliases | -| codex-app-server | sdk-export-missing | warning | fixture imports plugin SDK aliases that are not exported by the target OpenClaw package | openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:104, openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:106, openclaw/plugin-sdk/telegram-account @ plugins/codex-app-server/src/controller.ts:105 | plugin-sdk-export-aliases | | codex-app-server | legacy-root-sdk-import | warning | fixture imports the root plugin SDK barrel | openclaw/plugin-sdk @ plugins/codex-app-server/index.ts:1, openclaw/plugin-sdk @ plugins/codex-app-server/src/client.ts:6, openclaw/plugin-sdk @ plugins/codex-app-server/src/controller.ts:18, openclaw/plugin-sdk @ plugins/codex-app-server/src/types.ts:1 | legacy-root-sdk-import | | web-search-plus | manifest-unknown-fields | warning | manifest uses top-level fields that are not present in the target OpenClaw PluginManifest type | displayName @ plugins/web-search-plus/openclaw.plugin.json | - | | apify | legacy-root-sdk-import | warning | fixture imports the root plugin SDK barrel | openclaw/plugin-sdk @ plugins/apify/src/cli.ts:2, openclaw/plugin-sdk @ plugins/apify/src/index.ts:1, openclaw/plugin-sdk @ plugins/apify/src/tools/apify-scraper-tool.ts:4 | legacy-root-sdk-import | @@ -1831,6 +1580,10 @@ _none_ | kitchen-sink | registration-capture-gap | suggestion | future inspector capture API should record lifecycle, route, gateway, command, and interactive registrations | registerAutoEnableProbe @ plugins/kitchen-sink/src/generated-registrars.js:6, registerChannel @ plugins/kitchen-sink/src/generated-registrars.js:7, registerChannel @ plugins/kitchen-sink/src/kitchen-runtime.js:63, registerCommand @ plugins/kitchen-sink/src/generated-registrars.js:11, registerCommand @ plugins/kitchen-sink/src/kitchen-runtime.js:58, registerCommand @ plugins/kitchen-sink/src/kitchen-runtime.js:59, registerCompactionProvider @ plugins/kitchen-sink/src/generated-registrars.js:12, registerCompactionProvider @ plugins/kitchen-sink/src/kitchen-runtime.js:103, registerConfigMigration @ plugins/kitchen-sink/src/generated-registrars.js:13, registerContextEngine @ plugins/kitchen-sink/src/generated-registrars.js:14, registerDetachedTaskRuntime @ plugins/kitchen-sink/scripts/sync-surface.mjs:113, registerDetachedTaskRuntime @ plugins/kitchen-sink/src/generated-registrars.js:15, registerDetachedTaskRuntime @ plugins/kitchen-sink/src/kitchen-runtime.js:94, registerGatewayDiscoveryService @ plugins/kitchen-sink/src/generated-registrars.js:16, registerGatewayMethod @ plugins/kitchen-sink/src/generated-registrars.js:17, registerGatewayMethod @ plugins/kitchen-sink/src/kitchen-runtime.js:115, registerHook @ plugins/kitchen-sink/src/generated-registrars.js:18, registerHttpRoute @ plugins/kitchen-sink/src/generated-registrars.js:19, registerHttpRoute @ plugins/kitchen-sink/src/kitchen-runtime.js:113, registerInteractiveHandler @ plugins/kitchen-sink/src/generated-registrars.js:21, registerInteractiveHandler @ plugins/kitchen-sink/src/kitchen-runtime.js:61, registerMemoryCapability @ plugins/kitchen-sink/src/generated-registrars.js:23, registerMemoryCorpusSupplement @ plugins/kitchen-sink/src/generated-registrars.js:24, registerMemoryCorpusSupplement @ plugins/kitchen-sink/src/kitchen-runtime.js:100, registerMemoryFlushPlan @ plugins/kitchen-sink/src/generated-registrars.js:26, registerMemoryPromptSection @ plugins/kitchen-sink/src/generated-registrars.js:27, registerMemoryPromptSupplement @ plugins/kitchen-sink/src/generated-registrars.js:28, registerMemoryPromptSupplement @ plugins/kitchen-sink/src/kitchen-runtime.js:119, registerMemoryRuntime @ plugins/kitchen-sink/src/generated-registrars.js:29, registerNodeHostCommand @ plugins/kitchen-sink/src/generated-registrars.js:32, registerReload @ plugins/kitchen-sink/src/generated-registrars.js:36, registerSecurityAuditCollector @ plugins/kitchen-sink/src/generated-registrars.js:37, registerService @ plugins/kitchen-sink/src/generated-registrars.js:38, registerService @ plugins/kitchen-sink/src/kitchen-runtime.js:112 | api.capture.runtime-registrars | | kitchen-sink | before-tool-call-probe | suggestion | add contract probes for before_tool_call terminal, block, and approval semantics | before_tool_call @ plugins/kitchen-sink/src/generated-hooks.js:18 | hook.before_tool_call.terminal-block-approval | | kitchen-sink | channel-contract-probe | suggestion | add channel envelope, config-schema, and runtime metadata probes | registerChannel @ plugins/kitchen-sink/src/generated-registrars.js:7, registerChannel @ plugins/kitchen-sink/src/kitchen-runtime.js:63 | channel.runtime.envelope-config-metadata | +| nemoclaw | package-build-artifact-entrypoint | suggestion | package OpenClaw entrypoint points at build output that is not present in the source fixture checkout | extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js | - | +| nemoclaw | package-dependency-install-required | suggestion | package declares runtime dependencies that must be installed before cold import | commander @ plugins/nemoclaw/nemoclaw/package.json, execa @ plugins/nemoclaw/nemoclaw/package.json, json5 @ plugins/nemoclaw/nemoclaw/package.json, tar @ plugins/nemoclaw/nemoclaw/package.json, yaml @ plugins/nemoclaw/nemoclaw/package.json | - | +| nemoclaw | registration-capture-gap | suggestion | future inspector capture API should record lifecycle, route, gateway, command, and interactive registrations | registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336 | api.capture.runtime-registrars | +| nemoclaw | before-tool-call-probe | suggestion | add contract probes for before_tool_call terminal, block, and approval semantics | before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384 | hook.before_tool_call.terminal-block-approval | | memory-tencentdb | package-typescript-source-entrypoint | suggestion | package OpenClaw entrypoint resolves to TypeScript source in this fixture checkout | extension:plugins/memory-tencentdb/.crabpot-package/index.ts | - | | memory-tencentdb | package-dependency-install-required | suggestion | package declares runtime dependencies that must be installed before cold import | @node-rs/jieba @ plugins/memory-tencentdb/.crabpot-package/package.json, @tencentdb-agent-memory/tcvdb-text @ plugins/memory-tencentdb/.crabpot-package/package.json, json5 @ plugins/memory-tencentdb/.crabpot-package/package.json, sqlite-vec @ plugins/memory-tencentdb/.crabpot-package/package.json, undici @ plugins/memory-tencentdb/.crabpot-package/package.json, node-llama-cpp @ plugins/memory-tencentdb/.crabpot-package/package.json | - | | memory-tencentdb | runtime-tool-capture | suggestion | tool shape is only visible after runtime registration capture | registerTool @ plugins/memory-tencentdb/.crabpot-package/index.ts:268, registerTool @ plugins/memory-tencentdb/.crabpot-package/index.ts:365 | - | @@ -1884,55 +1637,9 @@ _none_ | apify | package-dependency-install-required | suggestion | package declares runtime dependencies that must be installed before cold import | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json | - | | apify | runtime-tool-capture | suggestion | tool shape is only visible after runtime registration capture | registerTool @ plugins/apify/src/index.ts:13 | - | | inworld-tts | package-typescript-source-entrypoint | suggestion | package OpenClaw entrypoint resolves to TypeScript source in this fixture checkout | extension:plugins/inworld-tts/index.ts | - | -| llm-trace-phoenix | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.llm-observer.privacy-payload | hook.llm-observer.privacy-payload | -| opik-openclaw | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.llm-observer.privacy-payload | hook.llm-observer.privacy-payload | -| openclaw-telemetry | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.llm-observer.privacy-payload | hook.llm-observer.privacy-payload | -| hyperspell | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.llm-observer.privacy-payload | hook.llm-observer.privacy-payload | | honcho | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | plugin-sdk-export-aliases | plugin-sdk-export-aliases | -| honcho | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.llm-observer.privacy-payload | hook.llm-observer.privacy-payload | -| kitchen-sink | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.llm-observer.privacy-payload | hook.llm-observer.privacy-payload | -| memory-tencentdb | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.llm-observer.privacy-payload | hook.llm-observer.privacy-payload | | yuanbao | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | plugin-sdk-export-aliases | plugin-sdk-export-aliases | -| memos-cloud | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.llm-observer.privacy-payload | hook.llm-observer.privacy-payload | | clawmetry | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | plugin-sdk-export-aliases | plugin-sdk-export-aliases | -| codex-app-server | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | plugin-sdk-export-aliases | plugin-sdk-export-aliases | -| agentchat | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| wecom | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| wecom | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.before_tool_call.terminal-block-approval | hook.before_tool_call.terminal-block-approval | -| wecom | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| qqbot | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| qqbot | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| a2a-gateway | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| mcp-adapter | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| opik-openclaw | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| opik-openclaw | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.before_tool_call.terminal-block-approval | hook.before_tool_call.terminal-block-approval | -| openclaw-telemetry | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| openclaw-telemetry | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.before_tool_call.terminal-block-approval | hook.before_tool_call.terminal-block-approval | -| lossless-claw | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| connectclaw | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| hyperspell | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| honcho | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| kitchen-sink | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| kitchen-sink | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | hook.before_tool_call.terminal-block-approval | hook.before_tool_call.terminal-block-approval | -| kitchen-sink | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| ddingtalk | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| dingtalk-connector | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| dingtalk-connector | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| mocrane-wecom | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| mocrane-wecom | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| yuanbao | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| yuanbao | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| openclaw-weixin | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| openclaw-weixin | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| lightclawbot | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| lightclawbot | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| telnyx-sms | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| telnyx-sms | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | channel.runtime.envelope-config-metadata | channel.runtime.envelope-config-metadata | -| clawrouter | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| secureclaw | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| memos-cloud | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| clawmetry | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | -| codex-app-server | missing-compat-record | suggestion | fixture depends on a compatibility behavior that is not represented in the target compat registry | api.capture.runtime-registrars | api.capture.runtime-registrars | ## Issue Findings @@ -1942,14 +1649,6 @@ _none_ - evidence: - [openclaw/plugin-sdk/diagnostics-otel @ service.ts:2](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/src/service.ts#L2) -- 🔴 P0 **codex-app-server** `live-issue` `core-compat-adapter` - - **sdk-export-missing**: codex-app-server: plugin SDK import aliases are missing from target package exports - - state: blocking · compat:untracked · live - - evidence: - - [openclaw/plugin-sdk/discord @ controller.ts:104](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L104) - - [openclaw/plugin-sdk/discord @ controller.ts:106](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L106) - - [openclaw/plugin-sdk/telegram-account @ controller.ts:105](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L105) - - 🔴 P0 **honcho** `live-issue` `core-compat-adapter` - **sdk-export-missing**: honcho: plugin SDK import aliases are missing from target package exports - state: blocking · compat:untracked · live @@ -1973,15 +1672,9 @@ _none_ - openclaw/plugin-sdk/matrix @ plugins/yuanbao/.crabpot-package/src/business/commands/upgrade/env.ts:2 - openclaw/plugin-sdk/matrix @ plugins/yuanbao/.crabpot-package/src/business/commands/upgrade/utils.ts:2 -- 🟠 P1 **a2a-gateway** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: a2a-gateway: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **a2a-gateway** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: a2a-gateway: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerGatewayMethod @ index.ts:616](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L616) - [registerGatewayMethod @ index.ts:622](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L622) @@ -1990,18 +1683,6 @@ _none_ - [registerGatewayMethod @ index.ts:669](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L669) - [registerService @ index.ts:857](https://github.com/win4r/openclaw-a2a-gateway/blob/a335e59e926f7e1a8913e6cd7b1cbf2d44c33cb7/index.ts#L857) -- 🟠 P1 **agentchat** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: agentchat: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **clawmetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: clawmetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **clawmetry** `compat-gap` `core-compat-adapter` - **missing-compat-record**: clawmetry: compat-dependent behavior lacks registry coverage - state: open · compat:missing @@ -2010,19 +1691,13 @@ _none_ - 🟠 P1 **clawmetry** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: clawmetry: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:9](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/index.ts#L9) -- 🟠 P1 **clawrouter** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: clawrouter: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **clawrouter** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: clawrouter: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:1636](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1636) - [registerCommand @ index.ts:1682](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1682) @@ -2033,62 +1708,26 @@ _none_ - [registerCommand @ index.ts:1800](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1800) - [registerService @ index.ts:1809](https://github.com/BlockRunAI/ClawRouter/blob/44bc6beced9add67b009cb57d9f84136c5369985/src/index.ts#L1809) -- 🟠 P1 **codex-app-server** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: codex-app-server: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **codex-app-server** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: codex-app-server: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - plugin-sdk-export-aliases - - 🟠 P1 **codex-app-server** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: codex-app-server: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:48](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L48) - [registerInteractiveHandler @ index.ts:29](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L29) - [registerInteractiveHandler @ index.ts:38](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L38) - [registerService @ index.ts:12](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/index.ts#L12) -- 🟠 P1 **connectclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: connectclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **connectclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: connectclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ commands.ts:18](https://github.com/osipov-anton/connectclaw/blob/6cd516650168890e9b850064afaaa5fe24df5950/packages/plugin/src/commands.ts#L18) - [registerCommand @ commands.ts:64](https://github.com/osipov-anton/connectclaw/blob/6cd516650168890e9b850064afaaa5fe24df5950/packages/plugin/src/commands.ts#L64) - [registerService @ hooks.ts:91](https://github.com/osipov-anton/connectclaw/blob/6cd516650168890e9b850064afaaa5fe24df5950/packages/plugin/src/hooks.ts#L91) -- 🟠 P1 **ddingtalk** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: ddingtalk: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **dingtalk-connector** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: dingtalk-connector: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **dingtalk-connector** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: dingtalk-connector: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **dingtalk-connector** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: dingtalk-connector: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:74](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/index.ts#L74) - [registerGatewayMethod @ gateway-methods.ts:130](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/src/gateway-methods.ts#L130) @@ -2107,23 +1746,11 @@ _none_ - 🟠 P1 **honcho** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: honcho: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ capture.ts:151](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/hooks/capture.ts#L151) - [agent_end @ subagent.ts:34](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/hooks/subagent.ts#L34) -- 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **honcho** `compat-gap` `core-compat-adapter` - **missing-compat-record**: honcho: compat-dependent behavior lacks registry coverage - state: open · compat:missing @@ -2132,33 +1759,21 @@ _none_ - 🟠 P1 **honcho** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: honcho: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerMemoryPromptSection @ index.ts:97](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/index.ts#L97) - [registerMemoryRuntime @ runtime.ts:274](https://github.com/plastic-labs/openclaw-honcho/blob/9580d37d95ef63b0e8b64578fbfc8abfcfc745e4/runtime.ts#L274) - 🟠 P1 **hyperspell** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: hyperspell: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.ts:105](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/index.ts#L105) - [agent_end @ index.ts:116](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/index.ts#L116) -- 🟠 P1 **hyperspell** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: hyperspell: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **hyperspell** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: hyperspell: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **hyperspell** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: hyperspell: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ slash.ts:166](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/commands/slash.ts#L166) - [registerCommand @ slash.ts:43](https://github.com/hyperspell/hyperspell-openclaw/blob/a04d35176c4ffbe99d906f7d8075fc8671e7968d/commands/slash.ts#L43) @@ -2170,45 +1785,21 @@ _none_ - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: kitchen-sink: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ generated-hooks.js:18](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L18) - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: kitchen-sink: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ generated-hooks.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L7) - [llm_input @ generated-hooks.js:22](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L22) - [llm_output @ generated-hooks.js:23](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L23) -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **kitchen-sink** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: kitchen-sink: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: kitchen-sink: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerAutoEnableProbe @ generated-registrars.js:6](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L6) - [registerChannel @ generated-registrars.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L7) @@ -2245,302 +1836,146 @@ _none_ - [registerService @ generated-registrars.js:38](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L38) - [registerService @ kitchen-runtime.js:112](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/kitchen-runtime.js#L112) -- 🟠 P1 **lightclawbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lightclawbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **lightclawbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lightclawbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **lightclawbot** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: lightclawbot: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/lightclawbot/.crabpot-package/dist/index.js:13 - 🟠 P1 **llm-trace-phoenix** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: llm-trace-phoenix: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [llm_input @ index.ts:154](https://github.com/pingshian0131/openclaw-plugin-llm-trace-phoenix/blob/05bc0f4ba67281c10fad7be356d32a54b00c59fd/index.ts#L154) - [llm_output @ index.ts:168](https://github.com/pingshian0131/openclaw-plugin-llm-trace-phoenix/blob/05bc0f4ba67281c10fad7be356d32a54b00c59fd/index.ts#L168) -- 🟠 P1 **llm-trace-phoenix** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: llm-trace-phoenix: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - -- 🟠 P1 **lossless-claw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: lossless-claw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **lossless-claw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: lossless-claw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerCommand @ index.ts:2055](https://github.com/Martian-Engineering/lossless-claw/blob/4724d3fe6ccfd85f275aad732f3b01551d909e5a/src/plugin/index.ts#L2055) - [registerContextEngine @ index.ts:2035](https://github.com/Martian-Engineering/lossless-claw/blob/4724d3fe6ccfd85f275aad732f3b01551d909e5a/src/plugin/index.ts#L2035) -- 🟠 P1 **mcp-adapter** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mcp-adapter: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **mcp-adapter** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: mcp-adapter: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:15](https://github.com/androidStern-personal/openclaw-mcp-adapter/blob/5434ce21ac780a46a493c8125e52e80a03dd2640/index.ts#L15) - 🟠 P1 **memory-tencentdb** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: memory-tencentdb: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - agent_end @ plugins/memory-tencentdb/.crabpot-package/index.ts:820 -- 🟠 P1 **memory-tencentdb** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memory-tencentdb: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **memos-cloud** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: memos-cloud: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.js:515](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/blob/03fcc33c5fd285971d4b3dbaa8bbb31cb727db7c/index.js#L515) -- 🟠 P1 **memos-cloud** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memos-cloud: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **memos-cloud** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: memos-cloud: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **memos-cloud** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: memos-cloud: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerHook @ index.js:467](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin/blob/03fcc33c5fd285971d4b3dbaa8bbb31cb727db7c/index.js#L467) -- 🟠 P1 **mocrane-wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mocrane-wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **mocrane-wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: mocrane-wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **mocrane-wecom** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: mocrane-wecom: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:31](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L31) - [registerHttpRoute @ index.ts:34](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L34) +- 🟠 P1 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **before-tool-call-probe**: nemoclaw: before_tool_call needs terminal/block/approval probes + - state: open · compat:active + - evidence: + - before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384 + +- 🟠 P1 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **registration-capture-gap**: nemoclaw: runtime registrations need capture before contract judgment + - state: open · compat:active + - evidence: + - registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336 + - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: openclaw-telemetry: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ index.ts:12](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L12) - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: openclaw-telemetry: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ index.ts:62](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L62) -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **openclaw-telemetry** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-telemetry: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **openclaw-telemetry** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: openclaw-telemetry: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:10](https://github.com/knostic/openclaw-telemetry/blob/86c2458a0dfe82d639c208c5220396feb9d53c45/index.ts#L10) -- 🟠 P1 **openclaw-weixin** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-weixin: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **openclaw-weixin** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: openclaw-weixin: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **openclaw-weixin** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: openclaw-weixin: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22 - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: opik-openclaw: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ tool.ts:34](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service/hooks/tool.ts#L34) - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **conversation-access-hook**: opik-openclaw: conversation-access hooks need privacy-boundary probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [agent_end @ service.ts:560](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service.ts#L560) - [llm_input @ llm.ts:39](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service/hooks/llm.ts#L39) - [llm_output @ llm.ts:150](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/src/service/hooks/llm.ts#L150) -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - -- 🟠 P1 **opik-openclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: opik-openclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.llm-observer.privacy-payload - - 🟠 P1 **opik-openclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: opik-openclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:16](https://github.com/comet-ml/opik-openclaw/blob/f8987269d3f2121f52ace4f60c80629266c0dfd7/index.ts#L16) -- 🟠 P1 **qqbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: qqbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **qqbot** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: qqbot: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **qqbot** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: qqbot: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:16](https://github.com/tencent-connect/openclaw-qqbot/blob/3eee78922ed0b19af5c4c55f1dfe7d1c848e31f5/index.ts#L16) -- 🟠 P1 **secureclaw** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: secureclaw: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - - 🟠 P1 **secureclaw** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: secureclaw: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerService @ index.ts:295](https://github.com/adversa-ai/secureclaw/blob/bf17e2b3deb989e348b3a98080e33a7047e90ac3/secureclaw/src/index.ts#L295) - [registerService @ index.ts:301](https://github.com/adversa-ai/secureclaw/blob/bf17e2b3deb989e348b3a98080e33a7047e90ac3/secureclaw/src/index.ts#L301) - [registerService @ index.ts:307](https://github.com/adversa-ai/secureclaw/blob/bf17e2b3deb989e348b3a98080e33a7047e90ac3/secureclaw/src/index.ts#L307) -- 🟠 P1 **telnyx-sms** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: telnyx-sms: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **telnyx-sms** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: telnyx-sms: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **telnyx-sms** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: telnyx-sms: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerHttpRoute @ index.ts:259](https://github.com/team-telnyx/telnyx-openclaw-sms-channel/blob/66dba9edf2bd43605327531a748b4d8fbf0017dd/index.ts#L259) - 🟠 P1 **wecom** `inspector-gap` `inspector-follow-up` - **before-tool-call-probe**: wecom: before_tool_call needs terminal/block/approval probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [before_tool_call @ index.js:76](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L76) -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - -- 🟠 P1 **wecom** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: wecom: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - hook.before_tool_call.terminal-block-approval - - 🟠 P1 **wecom** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: wecom: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.js:27](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L27) - [registerHttpRoute @ index.js:56](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L56) -- 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - api.capture.runtime-registrars - -- 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - - state: open · compat:missing - - evidence: - - channel.runtime.envelope-config-metadata - - 🟠 P1 **yuanbao** `compat-gap` `core-compat-adapter` - **missing-compat-record**: yuanbao: compat-dependent behavior lacks registry coverage - state: open · compat:missing @@ -2549,7 +1984,7 @@ _none_ - 🟠 P1 **yuanbao** `inspector-gap` `inspector-follow-up` - **registration-capture-gap**: yuanbao: runtime registrations need capture before contract judgment - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:13 - registerCommand @ plugins/yuanbao/.crabpot-package/dist/index.js:14 @@ -2609,7 +2044,7 @@ _none_ - 🟡 P2 **agentchat** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: agentchat: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ channel.ts:333](https://github.com/agentchatme/agentchat/blob/1460cece00ebd3829fb39d5db5ee23050937ed02/integrations/openclaw-channel/src/channel.ts#L333) @@ -2805,7 +2240,7 @@ _none_ - 🟡 P2 **ddingtalk** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: ddingtalk: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ index.ts:8](https://github.com/largezhou/openclaw-dingtalk/blob/74d22da7335f261ec5febe2663bed6b81068b7ec/index.ts#L8) @@ -2830,7 +2265,7 @@ _none_ - 🟡 P2 **dingtalk-connector** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: dingtalk-connector: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:74](https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/blob/3441bcffc4dee15936ede406ce001ffcf9e2efc3/index.ts#L74) @@ -2998,7 +2433,7 @@ _none_ - 🟡 P2 **kitchen-sink** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: kitchen-sink: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ generated-registrars.js:7](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-registrars.js#L7) - [registerChannel @ kitchen-runtime.js:63](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/kitchen-runtime.js#L63) @@ -3017,7 +2452,7 @@ _none_ - 🟡 P2 **lightclawbot** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: lightclawbot: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/lightclawbot/.crabpot-package/dist/index.js:13 @@ -3188,7 +2623,7 @@ _none_ - 🟡 P2 **mocrane-wecom** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: mocrane-wecom: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:31](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L31) @@ -3251,6 +2686,34 @@ _none_ - evidence: - [registerTool @ index.ts:43](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L43) +- 🟡 P2 **nemoclaw** `deprecation-warning` `core-compat-adapter` + - **legacy-before-agent-start**: nemoclaw: legacy before_agent_start hook compatibility is still used + - state: open · compat:deprecated · deprecated + - evidence: + - before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 + +- 🟡 P2 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **package-build-artifact-entrypoint**: nemoclaw: cold import requires package build output + - state: open · compat:none + - evidence: + - extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js + +- 🟡 P2 **nemoclaw** `inspector-gap` `inspector-follow-up` + - **package-dependency-install-required**: nemoclaw: cold import requires dependency installation in an isolated workspace + - state: open · compat:none + - evidence: + - commander @ plugins/nemoclaw/nemoclaw/package.json + - execa @ plugins/nemoclaw/nemoclaw/package.json + - json5 @ plugins/nemoclaw/nemoclaw/package.json + - tar @ plugins/nemoclaw/nemoclaw/package.json + - yaml @ plugins/nemoclaw/nemoclaw/package.json + +- 🟡 P2 **nemoclaw** `upstream-metadata` `plugin-upstream-fix` + - **package-plugin-api-compat-missing**: nemoclaw: plugin API compatibility range is missing + - state: open · compat:none + - evidence: + - plugins/nemoclaw/nemoclaw/package.json + - 🟡 P2 **openclaw-telemetry** `deprecation-warning` `core-compat-adapter` - **legacy-before-agent-start**: openclaw-telemetry: legacy before_agent_start hook compatibility is still used - state: open · compat:deprecated · deprecated @@ -3279,7 +2742,7 @@ _none_ - 🟡 P2 **openclaw-weixin** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: openclaw-weixin: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - registerChannel @ plugins/openclaw-weixin/.crabpot-package/index.ts:22 @@ -3338,7 +2801,7 @@ _none_ - 🟡 P2 **qqbot** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: qqbot: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.ts:16](https://github.com/tencent-connect/openclaw-qqbot/blob/3eee78922ed0b19af5c4c55f1dfe7d1c848e31f5/index.ts#L16) @@ -3405,7 +2868,7 @@ _none_ - 🟡 P2 **telnyx-sms** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: telnyx-sms: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [defineChannelPluginEntry @ index.ts:207](https://github.com/team-telnyx/telnyx-openclaw-sms-channel/blob/66dba9edf2bd43605327531a748b4d8fbf0017dd/index.ts#L207) @@ -3443,7 +2906,7 @@ _none_ - 🟡 P2 **wecom** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: wecom: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - [registerChannel @ index.js:27](https://github.com/sunnoy/openclaw-plugin-wecom/blob/503a1d5403bc3a57763b9ef17c60a9d5e31b53d9/index.js#L27) @@ -3472,7 +2935,7 @@ _none_ - 🟡 P2 **yuanbao** `inspector-gap` `inspector-follow-up` - **channel-contract-probe**: yuanbao: channel runtime needs envelope/config probes - - state: open · compat:untracked + - state: open · compat:active - evidence: - createChatChannelPlugin @ plugins/yuanbao/.crabpot-package/dist/src/channel.js:11 - createChatChannelPlugin @ plugins/yuanbao/.crabpot-package/src/channel.ts:32 @@ -3686,6 +3149,12 @@ _none_ - [registerChannel @ index.ts:31](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L31) - [registerHttpRoute @ index.ts:34](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/index.ts#L34) +- 🟠 P1 **nemoclaw** `inspector-capture-api` + - contract: External inspector capture records service, route, gateway, command, and interactive registrations. + - id: `api.capture.runtime-registrars:nemoclaw` + - evidence: + - registerCommand @ plugins/nemoclaw/nemoclaw/src/index.ts:336 + - 🟠 P1 **openclaw-telemetry** `inspector-capture-api` - contract: External inspector capture records service, route, gateway, command, and interactive registrations. - id: `api.capture.runtime-registrars:openclaw-telemetry` @@ -3748,6 +3217,12 @@ _none_ - evidence: - [before_tool_call @ generated-hooks.js:18](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L18) +- 🟠 P1 **nemoclaw** `hook-runner` + - contract: Hook returns preserve terminal, block, and approval semantics. + - id: `hook.before_tool_call.terminal-block-approval:nemoclaw` + - evidence: + - before_tool_call @ plugins/nemoclaw/nemoclaw/src/index.ts:384 + - 🟠 P1 **openclaw-telemetry** `hook-runner` - contract: Hook returns preserve terminal, block, and approval semantics. - id: `hook.before_tool_call.terminal-block-approval:openclaw-telemetry` @@ -3827,14 +3302,6 @@ _none_ - evidence: - [openclaw/plugin-sdk/diagnostics-otel @ service.ts:2](https://github.com/vivekchand/clawmetry/blob/d6b8c926d0aadcf4f428843f3757ce0fb0825143/clawhub-plugin/src/service.ts#L2) -- 🟠 P1 **codex-app-server** `sdk-alias` - - contract: Every observed OpenClaw plugin SDK import remains exported by the target OpenClaw package. - - id: `sdk.import.package-export-cold-import:codex-app-server` - - evidence: - - [openclaw/plugin-sdk/discord @ controller.ts:104](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L104) - - [openclaw/plugin-sdk/discord @ controller.ts:106](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L106) - - [openclaw/plugin-sdk/telegram-account @ controller.ts:105](https://github.com/pwrdrvr/openclaw-codex-app-server/blob/4a87dce5d620a8fb30842bb1b726390fe442247e/src/controller.ts#L105) - - 🟠 P1 **honcho** `sdk-alias` - contract: Every observed OpenClaw plugin SDK import remains exported by the target OpenClaw package. - id: `sdk.import.package-export-cold-import:honcho` @@ -3933,6 +3400,12 @@ _none_ - evidence: - [before_agent_start @ generated-hooks.js:10](https://github.com/openclaw/kitchen-sink/blob/f24c6aea640e6a141543af308dd4a20f929c6d9e/src/generated-hooks.js#L10) +- 🟡 P2 **nemoclaw** `hook-runner` + - contract: Legacy before_agent_start remains wired until plugins migrate to before_model_resolve and before_prompt_build. + - id: `hook.compat.before-agent-start-migration:nemoclaw` + - evidence: + - before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 + - 🟡 P2 **openclaw-telemetry** `hook-runner` - contract: Legacy before_agent_start remains wired until plugins migrate to before_model_resolve and before_prompt_build. - id: `hook.compat.before-agent-start-migration:openclaw-telemetry` @@ -4027,6 +3500,12 @@ _none_ - evidence: - [package.json](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/package.json) +- 🟡 P2 **nemoclaw** `package-loader` + - contract: Package metadata declares the OpenClaw plugin API range used by the plugin. + - id: `package.compat.plugin-api-range:nemoclaw` + - evidence: + - plugins/nemoclaw/nemoclaw/package.json + - 🟡 P2 **openclaw-telemetry** `package-loader` - contract: Package metadata declares the OpenClaw plugin API range used by the plugin. - id: `package.compat.plugin-api-range:openclaw-telemetry` @@ -4082,6 +3561,12 @@ _none_ - evidence: - [extension:./dist/index.js @ index.js](https://github.com/Martian-Engineering/lossless-claw/blob/4724d3fe6ccfd85f275aad732f3b01551d909e5a/dist/index.js) +- 🟡 P2 **nemoclaw** `package-loader` + - contract: Inspector can build or resolve source aliases before cold importing package entrypoints. + - id: `package.entrypoint.build-before-cold-import:nemoclaw` + - evidence: + - extension:./dist/index.js -> plugins/nemoclaw/nemoclaw/dist/index.js + - 🟡 P2 **opik-openclaw** `package-loader` - contract: Inspector can build or resolve source aliases before cold importing package entrypoints. - id: `package.entrypoint.build-before-cold-import:opik-openclaw` @@ -4192,6 +3677,16 @@ _none_ - [undici @ package.json](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/package.json) - [zod @ package.json](https://github.com/TencentCloud-Lighthouse/openclaw-wecom/blob/5edda565415e29e30f6388c2160f750bb026ec32/package.json) +- 🟡 P2 **nemoclaw** `package-loader` + - contract: Inspector installs package dependencies in an isolated workspace before cold import. + - id: `package.entrypoint.isolated-dependency-install:nemoclaw` + - evidence: + - commander @ plugins/nemoclaw/nemoclaw/package.json + - execa @ plugins/nemoclaw/nemoclaw/package.json + - json5 @ plugins/nemoclaw/nemoclaw/package.json + - tar @ plugins/nemoclaw/nemoclaw/package.json + - yaml @ plugins/nemoclaw/nemoclaw/package.json + - 🟡 P2 **openclaw-weixin** `package-loader` - contract: Inspector installs package dependencies in an isolated workspace before cold import. - id: `package.entrypoint.isolated-dependency-install:openclaw-weixin` @@ -4829,6 +4324,7 @@ _none_ | honcho | high | memory-runtime, prompt-mutation, gateway-lifecycle, subagent-routing, sdk-compat | agent_end, before_agent_start, before_compaction, before_prompt_build, before_reset, gateway_start, subagent_spawned | definePluginEntry, registerCli, registerMemoryPromptSection, registerMemoryRuntime, registerTool | - | | composio | high | dynamic-tool, mcp, external-api, prompt-mutation, cli | before_prompt_build | registerCli, registerTool | - | | kitchen-sink | high | plugin-api-surface, hook, registration-surface, manifest-contracts, provider-capability, credential-free | after_compaction, after_tool_call, agent_end, before_agent_finalize, before_agent_reply, before_agent_start, before_compaction, before_dispatch, before_install, before_message_write, before_model_resolve, before_prompt_build, before_reset, before_tool_call, gateway_start, gateway_stop, inbound_claim, llm_input, llm_output, message_received, message_sending, message_sent, model_call_ended, model_call_started, reply_dispatch, session_end, session_start, subagent_delivery_target, subagent_ended, subagent_spawned, subagent_spawning, tool_result_persist | registerAgentHarness, registerAgentToolResultMiddleware, registerAutoEnableProbe, registerChannel, registerCli, registerCliBackend, registerCodexAppServerExtensionFactory, registerCommand, registerCompactionProvider, registerConfigMigration, registerContextEngine, registerDetachedTaskRuntime, registerGatewayDiscoveryService, registerGatewayMethod, registerHook, registerHttpRoute, registerImageGenerationProvider, registerInteractiveHandler, registerMediaUnderstandingProvider, registerMemoryCapability, registerMemoryCorpusSupplement, registerMemoryEmbeddingProvider, registerMemoryFlushPlan, registerMemoryPromptSection, registerMemoryPromptSupplement, registerMemoryRuntime, registerMigrationProvider, registerMusicGenerationProvider, registerNodeHostCommand, registerProvider, registerRealtimeTranscriptionProvider, registerRealtimeVoiceProvider, registerReload, registerSecurityAuditCollector, registerService, registerSpeechProvider, registerTextTransforms, registerTool, registerVideoGenerationProvider, registerWebFetchProvider, registerWebSearchProvider | agentToolResultMiddleware, documentExtractors, embeddedExtensionFactories, externalAuthProviders, imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, migrationProviders, musicGenerationProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, speechProviders, tools, videoGenerationProviders, webContentExtractors, webFetchProviders, webSearchProviders | +| nemoclaw | high | provider-capability, prompt-mutation, security-audit, process-spawn, command, config-schema | before_agent_start, before_tool_call | registerCommand, registerProvider | - | | memory-tencentdb | high | memory-runtime, prompt-mutation, session-lifecycle, vector-store, cli | agent_end, before_prompt_build, gateway_stop | registerCli, registerTool | - | | ddingtalk | high | channel, media, account-auth, webhook, config-schema | - | defineChannelPluginEntry | - | | dingtalk-connector | high | channel, streaming, account-auth, interactive-card, gateway-method | - | registerChannel, registerGatewayMethod | - | @@ -4941,6 +4437,12 @@ _none_ | kitchen-sink | inspector-follow-up | tool-policy | Probe before_tool_call return shapes before changing tool-call approval or block behavior. | before_tool_call | | kitchen-sink | inspector-follow-up | channel-runtime | Probe channel setup and message envelope contracts before changing channel runtime payloads. | registerChannel | | kitchen-sink | no-action | manifest-contract | Keep checking this declarative contract in default offline CI. | agentToolResultMiddleware, documentExtractors, embeddedExtensionFactories, externalAuthProviders, imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, migrationProviders, musicGenerationProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, speechProviders, tools, videoGenerationProviders, webContentExtractors, webFetchProviders, webSearchProviders | +| nemoclaw | plugin-upstream-fix | package-metadata | Ask the plugin to declare the plugin API range it was built against. | plugins/nemoclaw/nemoclaw/package.json | +| nemoclaw | inspector-follow-up | cold-import | Run the plugin build or resolve source entrypoint aliases before cold-importing this fixture. | ./dist/index.js | +| nemoclaw | inspector-follow-up | cold-import | Install runtime dependencies in an isolated workspace before executing this fixture entrypoint. | commander, execa, json5, tar, yaml | +| nemoclaw | core-compat-adapter | hook-compat | Keep before_agent_start wired while plugin authors migrate to before_model_resolve and before_prompt_build. | before_agent_start @ plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 | +| nemoclaw | inspector-follow-up | registration-capture | Expose or mirror a full public API capture shim before treating these runtime-only seams as covered. | registerCommand | +| nemoclaw | inspector-follow-up | tool-policy | Probe before_tool_call return shapes before changing tool-call approval or block behavior. | before_tool_call | | memory-tencentdb | inspector-follow-up | cold-import | Compile TypeScript source or run a loader before cold-importing this fixture entrypoint. | plugins/memory-tencentdb/.crabpot-package/index.ts | | memory-tencentdb | inspector-follow-up | cold-import | Install runtime dependencies in an isolated workspace before executing this fixture entrypoint. | @node-rs/jieba, @tencentdb-agent-memory/tcvdb-text, json5, sqlite-vec, undici, node-llama-cpp | | memory-tencentdb | inspector-follow-up | conversation-access | Add synthetic llm_input/llm_output/agent_end probes before tightening hook payloads or redaction behavior. | agent_end | @@ -5011,7 +4513,6 @@ _none_ | clawmetry | inspector-follow-up | cold-import | Compile TypeScript source or run a loader before cold-importing this fixture entrypoint. | plugins/clawmetry/clawhub-plugin/index.ts | | clawmetry | inspector-follow-up | cold-import | Install runtime dependencies in an isolated workspace before executing this fixture entrypoint. | node-fetch | | clawmetry | inspector-follow-up | registration-capture | Expose or mirror a full public API capture shim before treating these runtime-only seams as covered. | registerService | -| codex-app-server | core-compat-adapter | sdk-alias | Restore the package export alias or publish a versioned migration map before cold-importing old plugins. | openclaw/plugin-sdk/discord, openclaw/plugin-sdk/telegram-account | | codex-app-server | inspector-follow-up | cold-import | Compile TypeScript source or run a loader before cold-importing this fixture entrypoint. | plugins/codex-app-server/index.ts | | codex-app-server | inspector-follow-up | cold-import | Install runtime dependencies in an isolated workspace before executing this fixture entrypoint. | ws | | codex-app-server | core-compat-adapter | sdk-import | Keep the root SDK barrel stable or expose a machine-readable migration map before removing aliases. | openclaw/plugin-sdk | @@ -5026,267 +4527,275 @@ _none_ | inworld-tts | inspector-follow-up | cold-import | Compile TypeScript source or run a loader before cold-importing this fixture entrypoint. | plugins/inworld-tts/index.ts | | inworld-tts | core-compat-adapter | env-auth | Keep providerAuthEnvVars compatibility active while the inspector recommends manifest-schema migration upstream. | inworld | | inworld-tts | no-action | manifest-contract | Keep checking this declarative contract in default offline CI. | speechProviders | -| llm-trace-phoenix | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.llm-observer.privacy-payload | -| opik-openclaw | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.llm-observer.privacy-payload | -| openclaw-telemetry | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.llm-observer.privacy-payload | -| hyperspell | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.llm-observer.privacy-payload | | honcho | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | plugin-sdk-export-aliases | -| honcho | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.llm-observer.privacy-payload | -| kitchen-sink | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.llm-observer.privacy-payload | -| memory-tencentdb | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.llm-observer.privacy-payload | | yuanbao | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | plugin-sdk-export-aliases | -| memos-cloud | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.llm-observer.privacy-payload | | clawmetry | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | plugin-sdk-export-aliases | -| codex-app-server | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | plugin-sdk-export-aliases | -| agentchat | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| wecom | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| wecom | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.before_tool_call.terminal-block-approval | -| wecom | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| qqbot | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| qqbot | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| a2a-gateway | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| mcp-adapter | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| opik-openclaw | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| opik-openclaw | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.before_tool_call.terminal-block-approval | -| openclaw-telemetry | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| openclaw-telemetry | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.before_tool_call.terminal-block-approval | -| lossless-claw | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| connectclaw | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| hyperspell | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| honcho | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| kitchen-sink | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| kitchen-sink | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | hook.before_tool_call.terminal-block-approval | -| kitchen-sink | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| ddingtalk | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| dingtalk-connector | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| dingtalk-connector | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| mocrane-wecom | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| mocrane-wecom | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| yuanbao | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| yuanbao | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| openclaw-weixin | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| openclaw-weixin | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| lightclawbot | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| lightclawbot | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| telnyx-sms | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| telnyx-sms | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | channel.runtime.envelope-config-metadata | -| clawrouter | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| secureclaw | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| memos-cloud | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| clawmetry | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | -| codex-app-server | core-compat-adapter | compat-registry | Add or restore a machine-readable OpenClaw compat record before changing this plugin-facing behavior. | api.capture.runtime-registrars | ## Raw Logs -| Fixture | Code | Level | Message | Evidence | Compat record | -| ------------------ | ----------------------- | ----- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | -| agentchat | seam-inventory | log | observed 0 hooks, 1 registrations, and 0 manifest contracts | registration:defineChannelPluginEntry | - | -| agentchat | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| agentchat | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | - | - | -| agentchat | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/channel-contract, openclaw/plugin-sdk/channel-core, openclaw/plugin-sdk/setup | - | -| agentchat | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json | - | -| agentchat | package-metadata | log | selected package metadata for plugin contract checks | plugins/agentchat/integrations/openclaw-channel/package.json, @agentchatme/openclaw, version:0.6.2 | - | -| wecom | seam-inventory | log | observed 5 hooks, 3 registrations, and 0 manifest contracts | hook:before_prompt_build, hook:before_tool_call, hook:subagent_delivery_target, hook:subagent_ended, hook:subagent_spawned, registration:registerChannel, registration:registerHttpRoute, registration:registerTool | - | -| wecom | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_prompt_build, before_tool_call, subagent_delivery_target, subagent_ended, subagent_spawned | - | -| wecom | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel, registerHttpRoute, registerTool | - | -| wecom | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/core, openclaw/plugin-sdk/media-runtime, openclaw/plugin-sdk/setup, openclaw/plugin-sdk/status-helpers | - | -| wecom | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/wecom/openclaw.plugin.json | - | -| wecom | package-metadata | log | selected package metadata for plugin contract checks | plugins/wecom/package.json, @sunnoy/wecom, version:3.2.0 | - | -| qqbot | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:registerChannel, registration:registerTool | - | -| qqbot | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| qqbot | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel, registerTool | - | -| qqbot | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk, openclaw/plugin-sdk/core | - | -| qqbot | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/qqbot/openclaw.plugin.json | - | -| qqbot | package-metadata | log | selected package metadata for plugin contract checks | plugins/qqbot/package.json, @tencent-connect/openclaw-qqbot, version:1.7.1 | - | -| a2a-gateway | seam-inventory | log | observed 0 hooks, 3 registrations, and 0 manifest contracts | registration:registerGatewayMethod, registration:registerService, registration:registerTool | - | -| a2a-gateway | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| a2a-gateway | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerGatewayMethod, registerService, registerTool | - | -| a2a-gateway | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | -| a2a-gateway | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/a2a-gateway/openclaw.plugin.json | - | -| a2a-gateway | package-metadata | log | selected package metadata for plugin contract checks | plugins/a2a-gateway/package.json, openclaw-a2a-gateway, version:1.4.0 | - | -| hasdata | seam-inventory | log | observed 0 hooks, 1 registrations, and 1 manifest contracts | registration:registerTool, manifestContract:tools | - | -| hasdata | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| hasdata | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerTool | - | -| hasdata | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/hasdata/openclaw.plugin.json | - | -| hasdata | package-metadata | log | selected package metadata for plugin contract checks | plugins/hasdata/package.json, @hasdata/hasdata-openclaw-plugin, version:0.1.5 | - | -| hasdata | declarative-contracts | log | fixture declares manifest contracts that can be checked without executing plugin code | tools | - | -| mcp-adapter | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:registerService, registration:registerTool | - | -| mcp-adapter | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| mcp-adapter | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerService, registerTool | - | -| mcp-adapter | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/mcp-adapter/openclaw.plugin.json | - | -| mcp-adapter | package-metadata | log | selected package metadata for plugin contract checks | plugins/mcp-adapter/package.json, openclaw-mcp-adapter, version:0.1.1 | - | -| llm-trace-phoenix | seam-inventory | log | observed 2 hooks, 0 registrations, and 0 manifest contracts | hook:llm_input, hook:llm_output | - | -| llm-trace-phoenix | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | llm_input, llm_output | - | -| llm-trace-phoenix | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | - | - | -| llm-trace-phoenix | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | -| llm-trace-phoenix | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/llm-trace-phoenix/openclaw.plugin.json | - | -| llm-trace-phoenix | package-metadata | log | selected package metadata for plugin contract checks | plugins/llm-trace-phoenix/package.json, llm-trace-phoenix, version:1.0.1 | - | -| opik-openclaw | seam-inventory | log | observed 10 hooks, 2 registrations, and 0 manifest contracts | hook:after_tool_call, hook:agent_end, hook:before_tool_call, hook:llm_input, hook:llm_output, hook:subagent_delivery_target, hook:subagent_ended, hook:subagent_spawned, hook:subagent_spawning, hook:tool_result_persist, registration:registerCli, registration:registerService | - | -| opik-openclaw | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | after_tool_call, agent_end, before_tool_call, llm_input, llm_output, subagent_delivery_target, subagent_ended, subagent_spawned, subagent_spawning, tool_result_persist | - | -| opik-openclaw | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerService | - | -| opik-openclaw | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | -| opik-openclaw | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/opik-openclaw/openclaw.plugin.json | - | -| opik-openclaw | package-metadata | log | selected package metadata for plugin contract checks | plugins/opik-openclaw/package.json, @opik/opik-openclaw, version:0.2.14 | - | -| openclaw-telemetry | seam-inventory | log | observed 6 hooks, 1 registrations, and 0 manifest contracts | hook:after_tool_call, hook:agent_end, hook:before_agent_start, hook:before_tool_call, hook:message_received, hook:message_sent, registration:registerService | - | -| openclaw-telemetry | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | after_tool_call, agent_end, before_agent_start, before_tool_call, message_received, message_sent | - | -| openclaw-telemetry | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerService | - | -| openclaw-telemetry | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | -| openclaw-telemetry | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/openclaw-telemetry/openclaw.plugin.json | - | -| openclaw-telemetry | package-metadata | log | selected package metadata for plugin contract checks | plugins/openclaw-telemetry/package.json, @openclaw/telemetry, version:0.1.0 | - | -| lossless-claw | seam-inventory | log | observed 5 hooks, 3 registrations, and 0 manifest contracts | hook:before_prompt_build, hook:before_reset, hook:gateway_start, hook:gateway_stop, hook:session_end, registration:registerCommand, registration:registerContextEngine, registration:registerTool | - | -| lossless-claw | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_prompt_build, before_reset, gateway_start, gateway_stop, session_end | - | -| lossless-claw | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerContextEngine, registerTool | - | -| lossless-claw | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | -| lossless-claw | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/lossless-claw/openclaw.plugin.json | - | -| lossless-claw | package-metadata | log | selected package metadata for plugin contract checks | plugins/lossless-claw/package.json, @martian-engineering/lossless-claw, version:0.9.2 | - | -| connectclaw | seam-inventory | log | observed 1 hooks, 3 registrations, and 0 manifest contracts | hook:before_agent_start, registration:registerCommand, registration:registerService, registration:registerTool | - | -| connectclaw | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_agent_start | - | -| connectclaw | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerService, registerTool | - | -| connectclaw | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | -| connectclaw | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/connectclaw/packages/plugin/openclaw.plugin.json | - | -| connectclaw | package-metadata | log | selected package metadata for plugin contract checks | plugins/connectclaw/packages/plugin/package.json, @connectclaw/connectclaw, version:0.3.0 | - | -| hyperspell | seam-inventory | log | observed 5 hooks, 4 registrations, and 0 manifest contracts | hook:after_compaction, hook:agent_end, hook:before_agent_start, hook:file_changed, hook:session_end, registration:registerCli, registration:registerCommand, registration:registerService, registration:registerTool | - | -| hyperspell | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerCommand, registerService, registerTool | - | -| hyperspell | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | -| hyperspell | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/hyperspell/openclaw.plugin.json | - | -| hyperspell | package-metadata | log | selected package metadata for plugin contract checks | plugins/hyperspell/package.json, @hyperspell/openclaw-hyperspell, version:0.12.0 | - | -| honcho | seam-inventory | log | observed 7 hooks, 5 registrations, and 0 manifest contracts | hook:agent_end, hook:before_agent_start, hook:before_compaction, hook:before_prompt_build, hook:before_reset, hook:gateway_start, hook:subagent_spawned, registration:definePluginEntry, registration:registerCli, registration:registerMemoryPromptSection, registration:registerMemoryRuntime, registration:registerTool | - | -| honcho | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | agent_end, before_agent_start, before_compaction, before_prompt_build, before_reset, gateway_start, subagent_spawned | - | -| honcho | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerMemoryPromptSection, registerMemoryRuntime, registerTool | - | -| honcho | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/honcho/openclaw.plugin.json | - | -| honcho | package-metadata | log | selected package metadata for plugin contract checks | plugins/honcho/package.json, @honcho-ai/openclaw-honcho, version:1.4.0 | - | -| composio | seam-inventory | log | observed 1 hooks, 2 registrations, and 0 manifest contracts | hook:before_prompt_build, registration:registerCli, registration:registerTool | - | -| composio | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_prompt_build | - | -| composio | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerTool | - | -| composio | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | -| composio | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/composio/openclaw.plugin.json | - | -| composio | package-metadata | log | selected package metadata for plugin contract checks | plugins/composio/package.json, @composio/openclaw-plugin, version:0.0.11 | - | -| kitchen-sink | seam-inventory | log | observed 32 hooks, 41 registrations, and 17 manifest contracts | hook:after_compaction, hook:after_tool_call, hook:agent_end, hook:before_agent_finalize, hook:before_agent_reply, hook:before_agent_start, hook:before_compaction, hook:before_dispatch, hook:before_install, hook:before_message_write, hook:before_model_resolve, hook:before_prompt_build, hook:before_reset, hook:before_tool_call, hook:gateway_start, hook:gateway_stop, hook:inbound_claim, hook:llm_input, hook:llm_output, hook:message_received, hook:message_sending, hook:message_sent, hook:model_call_ended, hook:model_call_started, hook:reply_dispatch, hook:session_end, hook:session_start, hook:subagent_delivery_target, hook:subagent_ended, hook:subagent_spawned, hook:subagent_spawning, hook:tool_result_persist, registration:registerAgentHarness, registration:registerAgentToolResultMiddleware, registration:registerAutoEnableProbe, registration:registerChannel, registration:registerCli, registration:registerCliBackend, registration:registerCodexAppServerExtensionFactory, registration:registerCommand, registration:registerCompactionProvider, registration:registerConfigMigration, registration:registerContextEngine, registration:registerDetachedTaskRuntime, registration:registerGatewayDiscoveryService, registration:registerGatewayMethod, registration:registerHook, registration:registerHttpRoute, registration:registerImageGenerationProvider, registration:registerInteractiveHandler, registration:registerMediaUnderstandingProvider, registration:registerMemoryCapability, registration:registerMemoryCorpusSupplement, registration:registerMemoryEmbeddingProvider, registration:registerMemoryFlushPlan, registration:registerMemoryPromptSection, registration:registerMemoryPromptSupplement, registration:registerMemoryRuntime, registration:registerMigrationProvider, registration:registerMusicGenerationProvider, registration:registerNodeHostCommand, registration:registerProvider, registration:registerRealtimeTranscriptionProvider, registration:registerRealtimeVoiceProvider, registration:registerReload, registration:registerSecurityAuditCollector, registration:registerService, registration:registerSpeechProvider, registration:registerTextTransforms, registration:registerTool, registration:registerVideoGenerationProvider, registration:registerWebFetchProvider, registration:registerWebSearchProvider, manifestContract:agentToolResultMiddleware, manifestContract:documentExtractors, manifestContract:embeddedExtensionFactories, manifestContract:externalAuthProviders, manifestContract:imageGenerationProviders, manifestContract:mediaUnderstandingProviders, manifestContract:memoryEmbeddingProviders, manifestContract:migrationProviders, manifestContract:musicGenerationProviders, manifestContract:realtimeTranscriptionProviders, manifestContract:realtimeVoiceProviders, manifestContract:speechProviders, manifestContract:tools, manifestContract:videoGenerationProviders, manifestContract:webContentExtractors, manifestContract:webFetchProviders, manifestContract:webSearchProviders | - | -| kitchen-sink | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | after_compaction, after_tool_call, agent_end, before_agent_finalize, before_agent_reply, before_agent_start, before_compaction, before_dispatch, before_install, before_message_write, before_model_resolve, before_prompt_build, before_reset, before_tool_call, gateway_start, gateway_stop, inbound_claim, llm_input, llm_output, message_received, message_sending, message_sent, model_call_ended, model_call_started, reply_dispatch, session_end, session_start, subagent_delivery_target, subagent_ended, subagent_spawned, subagent_spawning, tool_result_persist | - | -| kitchen-sink | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerAgentHarness, registerAgentToolResultMiddleware, registerAutoEnableProbe, registerChannel, registerCli, registerCliBackend, registerCodexAppServerExtensionFactory, registerCommand, registerCompactionProvider, registerConfigMigration, registerContextEngine, registerDetachedTaskRuntime, registerGatewayDiscoveryService, registerGatewayMethod, registerHook, registerHttpRoute, registerImageGenerationProvider, registerInteractiveHandler, registerMediaUnderstandingProvider, registerMemoryCapability, registerMemoryCorpusSupplement, registerMemoryEmbeddingProvider, registerMemoryFlushPlan, registerMemoryPromptSection, registerMemoryPromptSupplement, registerMemoryRuntime, registerMigrationProvider, registerMusicGenerationProvider, registerNodeHostCommand, registerProvider, registerRealtimeTranscriptionProvider, registerRealtimeVoiceProvider, registerReload, registerSecurityAuditCollector, registerService, registerSpeechProvider, registerTextTransforms, registerTool, registerVideoGenerationProvider, registerWebFetchProvider, registerWebSearchProvider | - | -| kitchen-sink | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk, openclaw/plugin-sdk/account-core, openclaw/plugin-sdk/account-helpers, openclaw/plugin-sdk/account-id, openclaw/plugin-sdk/account-resolution, openclaw/plugin-sdk/account-resolution-runtime, openclaw/plugin-sdk/acp-binding-resolve-runtime, openclaw/plugin-sdk/acp-binding-runtime, openclaw/plugin-sdk/acp-runtime, openclaw/plugin-sdk/agent-config-primitives, openclaw/plugin-sdk/agent-harness, openclaw/plugin-sdk/agent-harness-runtime, openclaw/plugin-sdk/agent-media-payload, openclaw/plugin-sdk/agent-runtime, openclaw/plugin-sdk/allow-from, openclaw/plugin-sdk/allowlist-config-edit, openclaw/plugin-sdk/approval-auth-runtime, openclaw/plugin-sdk/approval-client-runtime, openclaw/plugin-sdk/approval-delivery-runtime, openclaw/plugin-sdk/approval-gateway-runtime, openclaw/plugin-sdk/approval-handler-adapter-runtime, openclaw/plugin-sdk/approval-handler-runtime, openclaw/plugin-sdk/approval-native-runtime, openclaw/plugin-sdk/approval-reply-runtime, openclaw/plugin-sdk/approval-runtime, openclaw/plugin-sdk/boolean-param, openclaw/plugin-sdk/browser-config, openclaw/plugin-sdk/channel-actions, openclaw/plugin-sdk/channel-config-helpers, openclaw/plugin-sdk/channel-config-primitives, openclaw/plugin-sdk/channel-config-schema, openclaw/plugin-sdk/channel-config-schema-legacy, openclaw/plugin-sdk/channel-config-writes, openclaw/plugin-sdk/channel-contract, openclaw/plugin-sdk/channel-contract-testing, openclaw/plugin-sdk/channel-core, openclaw/plugin-sdk/channel-entry-contract, openclaw/plugin-sdk/channel-envelope, openclaw/plugin-sdk/channel-feedback, openclaw/plugin-sdk/channel-inbound, openclaw/plugin-sdk/channel-inbound-debounce, openclaw/plugin-sdk/channel-inbound-roots, openclaw/plugin-sdk/channel-lifecycle, openclaw/plugin-sdk/channel-location, openclaw/plugin-sdk/channel-logging, openclaw/plugin-sdk/channel-mention-gating, openclaw/plugin-sdk/channel-pairing, openclaw/plugin-sdk/channel-pairing-paths, openclaw/plugin-sdk/channel-plugin-common, openclaw/plugin-sdk/channel-policy, openclaw/plugin-sdk/channel-reply-options-runtime, openclaw/plugin-sdk/channel-reply-pipeline, openclaw/plugin-sdk/channel-runtime, openclaw/plugin-sdk/channel-runtime-context, openclaw/plugin-sdk/channel-secret-basic-runtime, openclaw/plugin-sdk/channel-secret-runtime, openclaw/plugin-sdk/channel-secret-tts-runtime, openclaw/plugin-sdk/channel-send-result, openclaw/plugin-sdk/channel-setup, openclaw/plugin-sdk/channel-status, openclaw/plugin-sdk/channel-streaming, openclaw/plugin-sdk/channel-targets, openclaw/plugin-sdk/cli-backend, openclaw/plugin-sdk/cli-runtime, openclaw/plugin-sdk/collection-runtime, openclaw/plugin-sdk/command-auth, openclaw/plugin-sdk/command-auth-native, openclaw/plugin-sdk/command-detection, openclaw/plugin-sdk/command-gating, openclaw/plugin-sdk/command-primitives-runtime, openclaw/plugin-sdk/command-status, openclaw/plugin-sdk/command-status-runtime, openclaw/plugin-sdk/command-surface, openclaw/plugin-sdk/compat, openclaw/plugin-sdk/config-mutation, openclaw/plugin-sdk/config-runtime, openclaw/plugin-sdk/config-schema, openclaw/plugin-sdk/config-types, openclaw/plugin-sdk/context-visibility-runtime, openclaw/plugin-sdk/conversation-binding-runtime, openclaw/plugin-sdk/conversation-runtime, openclaw/plugin-sdk/core, openclaw/plugin-sdk/cron-store-runtime, openclaw/plugin-sdk/dangerous-name-runtime, openclaw/plugin-sdk/device-bootstrap, openclaw/plugin-sdk/diagnostic-runtime, openclaw/plugin-sdk/direct-dm, openclaw/plugin-sdk/direct-dm-access, openclaw/plugin-sdk/direct-dm-guard-policy, openclaw/plugin-sdk/directory-config-runtime, openclaw/plugin-sdk/directory-runtime, openclaw/plugin-sdk/document-extractor, openclaw/plugin-sdk/error-runtime, openclaw/plugin-sdk/extension-shared, openclaw/plugin-sdk/fetch-runtime, openclaw/plugin-sdk/file-lock, openclaw/plugin-sdk/gateway-runtime, openclaw/plugin-sdk/global-singleton, openclaw/plugin-sdk/group-access, openclaw/plugin-sdk/group-activation, openclaw/plugin-sdk/hook-runtime, openclaw/plugin-sdk/host-runtime, openclaw/plugin-sdk/image-generation, openclaw/plugin-sdk/image-generation-core, openclaw/plugin-sdk/image-generation-runtime, openclaw/plugin-sdk/inbound-envelope, openclaw/plugin-sdk/inbound-reply-dispatch, openclaw/plugin-sdk/infra-runtime, openclaw/plugin-sdk/interactive-runtime, openclaw/plugin-sdk/json-store, openclaw/plugin-sdk/keyed-async-queue, openclaw/plugin-sdk/lazy-runtime, openclaw/plugin-sdk/lmstudio, openclaw/plugin-sdk/lmstudio-runtime, openclaw/plugin-sdk/logging-core, openclaw/plugin-sdk/markdown-table-runtime, openclaw/plugin-sdk/media-generation-runtime, openclaw/plugin-sdk/media-generation-runtime-shared, openclaw/plugin-sdk/media-mime, openclaw/plugin-sdk/media-runtime, openclaw/plugin-sdk/media-store, openclaw/plugin-sdk/media-understanding, openclaw/plugin-sdk/media-understanding-runtime, openclaw/plugin-sdk/memory-core-engine-runtime, openclaw/plugin-sdk/memory-core-host-engine-embeddings, openclaw/plugin-sdk/memory-core-host-engine-foundation, openclaw/plugin-sdk/memory-core-host-engine-qmd, openclaw/plugin-sdk/memory-core-host-engine-storage, openclaw/plugin-sdk/memory-core-host-events, openclaw/plugin-sdk/memory-core-host-multimodal, openclaw/plugin-sdk/memory-core-host-query, openclaw/plugin-sdk/memory-core-host-runtime-cli, openclaw/plugin-sdk/memory-core-host-runtime-core, openclaw/plugin-sdk/memory-core-host-runtime-files, openclaw/plugin-sdk/memory-core-host-secret, openclaw/plugin-sdk/memory-core-host-status, openclaw/plugin-sdk/memory-host-core, openclaw/plugin-sdk/memory-host-events, openclaw/plugin-sdk/memory-host-files, openclaw/plugin-sdk/memory-host-markdown, openclaw/plugin-sdk/memory-host-search, openclaw/plugin-sdk/memory-host-status, openclaw/plugin-sdk/messaging-targets, openclaw/plugin-sdk/migration, openclaw/plugin-sdk/migration-runtime, openclaw/plugin-sdk/model-session-runtime, openclaw/plugin-sdk/models-provider-runtime, openclaw/plugin-sdk/music-generation, openclaw/plugin-sdk/music-generation-core, openclaw/plugin-sdk/native-command-config-runtime, openclaw/plugin-sdk/native-command-registry, openclaw/plugin-sdk/outbound-media, openclaw/plugin-sdk/outbound-runtime, openclaw/plugin-sdk/outbound-send-deps, openclaw/plugin-sdk/param-readers, openclaw/plugin-sdk/persistent-dedupe, openclaw/plugin-sdk/plugin-config-runtime, openclaw/plugin-sdk/plugin-entry, openclaw/plugin-sdk/plugin-runtime, openclaw/plugin-sdk/poll-runtime, openclaw/plugin-sdk/process-runtime, openclaw/plugin-sdk/provider-auth, openclaw/plugin-sdk/provider-auth-api-key, openclaw/plugin-sdk/provider-auth-login, openclaw/plugin-sdk/provider-auth-result, openclaw/plugin-sdk/provider-auth-runtime, openclaw/plugin-sdk/provider-catalog-shared, openclaw/plugin-sdk/provider-entry, openclaw/plugin-sdk/provider-env-vars, openclaw/plugin-sdk/provider-http, openclaw/plugin-sdk/provider-model-shared, openclaw/plugin-sdk/provider-model-types, openclaw/plugin-sdk/provider-onboard, openclaw/plugin-sdk/provider-selection-runtime, openclaw/plugin-sdk/provider-setup, openclaw/plugin-sdk/provider-stream, openclaw/plugin-sdk/provider-stream-family, openclaw/plugin-sdk/provider-stream-shared, openclaw/plugin-sdk/provider-tools, openclaw/plugin-sdk/provider-transport-runtime, openclaw/plugin-sdk/provider-usage, openclaw/plugin-sdk/provider-web-fetch, openclaw/plugin-sdk/provider-web-fetch-contract, openclaw/plugin-sdk/provider-web-search, openclaw/plugin-sdk/provider-web-search-config-contract, openclaw/plugin-sdk/provider-web-search-contract, openclaw/plugin-sdk/provider-zai-endpoint, openclaw/plugin-sdk/proxy-capture, openclaw/plugin-sdk/qa-runner-runtime, openclaw/plugin-sdk/realtime-transcription, openclaw/plugin-sdk/realtime-voice, openclaw/plugin-sdk/reply-chunking, openclaw/plugin-sdk/reply-dedupe, openclaw/plugin-sdk/reply-dispatch-runtime, openclaw/plugin-sdk/reply-history, openclaw/plugin-sdk/reply-payload, openclaw/plugin-sdk/reply-reference, openclaw/plugin-sdk/reply-runtime, openclaw/plugin-sdk/request-url, openclaw/plugin-sdk/response-limit-runtime, openclaw/plugin-sdk/retry-runtime, openclaw/plugin-sdk/routing, openclaw/plugin-sdk/run-command, openclaw/plugin-sdk/runtime, openclaw/plugin-sdk/runtime-config-snapshot, openclaw/plugin-sdk/runtime-doctor, openclaw/plugin-sdk/runtime-env, openclaw/plugin-sdk/runtime-fetch, openclaw/plugin-sdk/runtime-group-policy, openclaw/plugin-sdk/runtime-logger, openclaw/plugin-sdk/runtime-secret-resolution, openclaw/plugin-sdk/runtime-store, openclaw/plugin-sdk/sandbox, openclaw/plugin-sdk/secret-file-runtime, openclaw/plugin-sdk/secret-input, openclaw/plugin-sdk/secret-input-runtime, openclaw/plugin-sdk/secret-ref-runtime, openclaw/plugin-sdk/security-runtime, openclaw/plugin-sdk/self-hosted-provider-setup, openclaw/plugin-sdk/session-binding-runtime, openclaw/plugin-sdk/session-key-runtime, openclaw/plugin-sdk/session-store-runtime, openclaw/plugin-sdk/session-transcript-hit, openclaw/plugin-sdk/session-visibility, openclaw/plugin-sdk/setup, openclaw/plugin-sdk/setup-adapter-runtime, openclaw/plugin-sdk/setup-runtime, openclaw/plugin-sdk/setup-tools, openclaw/plugin-sdk/simple-completion-runtime, openclaw/plugin-sdk/skill-commands-runtime, openclaw/plugin-sdk/skills-runtime, openclaw/plugin-sdk/speech, openclaw/plugin-sdk/speech-core, openclaw/plugin-sdk/ssrf-dispatcher, openclaw/plugin-sdk/ssrf-policy, openclaw/plugin-sdk/ssrf-runtime, openclaw/plugin-sdk/state-paths, openclaw/plugin-sdk/status-helpers, openclaw/plugin-sdk/string-coerce-runtime, openclaw/plugin-sdk/string-normalization-runtime, openclaw/plugin-sdk/talk-config-runtime, openclaw/plugin-sdk/target-resolver-runtime, openclaw/plugin-sdk/telegram-command-config, openclaw/plugin-sdk/temp-path, openclaw/plugin-sdk/testing, openclaw/plugin-sdk/text-autolink-runtime, openclaw/plugin-sdk/text-chunking, openclaw/plugin-sdk/text-runtime, openclaw/plugin-sdk/thread-bindings-runtime, openclaw/plugin-sdk/thread-bindings-session-runtime, openclaw/plugin-sdk/tool-payload, openclaw/plugin-sdk/tool-send, openclaw/plugin-sdk/tts-runtime, openclaw/plugin-sdk/video-generation, openclaw/plugin-sdk/video-generation-core, openclaw/plugin-sdk/video-generation-runtime, openclaw/plugin-sdk/web-content-extractor, openclaw/plugin-sdk/web-media, openclaw/plugin-sdk/webhook-ingress, openclaw/plugin-sdk/webhook-path, openclaw/plugin-sdk/webhook-request-guards, openclaw/plugin-sdk/webhook-targets, openclaw/plugin-sdk/windows-spawn, openclaw/plugin-sdk/zod | - | -| kitchen-sink | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/kitchen-sink/openclaw.plugin.json | - | -| kitchen-sink | package-metadata | log | selected package metadata for plugin contract checks | plugins/kitchen-sink/package.json, @openclaw/kitchen-sink, version:0.2.2 | - | -| kitchen-sink | declarative-contracts | log | fixture declares manifest contracts that can be checked without executing plugin code | agentToolResultMiddleware, documentExtractors, embeddedExtensionFactories, externalAuthProviders, imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, migrationProviders, musicGenerationProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, speechProviders, tools, videoGenerationProviders, webContentExtractors, webFetchProviders, webSearchProviders | - | -| memory-tencentdb | seam-inventory | log | observed 3 hooks, 2 registrations, and 0 manifest contracts | hook:agent_end, hook:before_prompt_build, hook:gateway_stop, registration:registerCli, registration:registerTool | - | -| memory-tencentdb | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | agent_end, before_prompt_build, gateway_stop | - | -| memory-tencentdb | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerTool | - | -| memory-tencentdb | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/core | - | -| memory-tencentdb | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/memory-tencentdb/.crabpot-package/openclaw.plugin.json | - | -| memory-tencentdb | package-metadata | log | selected package metadata for plugin contract checks | plugins/memory-tencentdb/.crabpot-package/package.json, @tencentdb-agent-memory/memory-tencentdb, version:0.2.3 | - | -| ddingtalk | seam-inventory | log | observed 0 hooks, 1 registrations, and 0 manifest contracts | registration:defineChannelPluginEntry | - | -| ddingtalk | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| ddingtalk | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | - | - | -| ddingtalk | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/channel-contract, openclaw/plugin-sdk/channel-feedback, openclaw/plugin-sdk/conversation-runtime, openclaw/plugin-sdk/core, openclaw/plugin-sdk/runtime-env, openclaw/plugin-sdk/setup, openclaw/plugin-sdk/setup-tools, openclaw/plugin-sdk/web-media | - | -| ddingtalk | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/ddingtalk/openclaw.plugin.json | - | -| ddingtalk | package-metadata | log | selected package metadata for plugin contract checks | plugins/ddingtalk/package.json, @largezhou/ddingtalk, version:2.0.1 | - | -| dingtalk-connector | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:registerChannel, registration:registerGatewayMethod | - | -| dingtalk-connector | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| dingtalk-connector | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel, registerGatewayMethod | - | -| dingtalk-connector | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk, openclaw/plugin-sdk/channel-entry-contract, openclaw/plugin-sdk/channel-runtime, openclaw/plugin-sdk/config-runtime, openclaw/plugin-sdk/core, openclaw/plugin-sdk/setup | - | -| dingtalk-connector | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/dingtalk-connector/openclaw.plugin.json | - | -| dingtalk-connector | package-metadata | log | selected package metadata for plugin contract checks | plugins/dingtalk-connector/package.json, @dingtalk-real-ai/dingtalk-connector, version:0.8.19 | - | -| mocrane-wecom | seam-inventory | log | observed 1 hooks, 3 registrations, and 0 manifest contracts | hook:before_prompt_build, registration:registerChannel, registration:registerHttpRoute, registration:registerTool | - | -| mocrane-wecom | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_prompt_build | - | -| mocrane-wecom | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel, registerHttpRoute, registerTool | - | -| mocrane-wecom | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | -| mocrane-wecom | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/mocrane-wecom/openclaw.plugin.json | - | -| mocrane-wecom | package-metadata | log | selected package metadata for plugin contract checks | plugins/mocrane-wecom/package.json, @mocrane/wecom, version:2026.3.24-beta | - | -| yuanbao | seam-inventory | log | observed 0 hooks, 3 registrations, and 0 manifest contracts | registration:createChatChannelPlugin, registration:registerCommand, registration:registerTool | - | -| yuanbao | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| yuanbao | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerTool | - | -| yuanbao | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/yuanbao/.crabpot-package/openclaw.plugin.json | - | -| yuanbao | package-metadata | log | selected package metadata for plugin contract checks | plugins/yuanbao/.crabpot-package/package.json, openclaw-plugin-yuanbao, version:2.12.0 | - | -| openclaw-weixin | seam-inventory | log | observed 0 hooks, 1 registrations, and 0 manifest contracts | registration:registerChannel | - | -| openclaw-weixin | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| openclaw-weixin | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel | - | -| openclaw-weixin | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/account-id, openclaw/plugin-sdk/channel-config-schema, openclaw/plugin-sdk/channel-contract, openclaw/plugin-sdk/channel-runtime, openclaw/plugin-sdk/command-auth, openclaw/plugin-sdk/config-runtime, openclaw/plugin-sdk/core, openclaw/plugin-sdk/hook-runtime, openclaw/plugin-sdk/infra-runtime, openclaw/plugin-sdk/plugin-entry, openclaw/plugin-sdk/plugin-runtime, openclaw/plugin-sdk/reply-runtime | - | -| openclaw-weixin | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/openclaw-weixin/.crabpot-package/openclaw.plugin.json | - | -| openclaw-weixin | package-metadata | log | selected package metadata for plugin contract checks | plugins/openclaw-weixin/.crabpot-package/package.json, @tencent-weixin/openclaw-weixin, version:2.3.1 | - | -| lightclawbot | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:registerChannel, registration:registerTool | - | -| lightclawbot | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| lightclawbot | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel, registerTool | - | -| lightclawbot | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/channel-reply-pipeline, openclaw/plugin-sdk/core | - | -| lightclawbot | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/lightclawbot/.crabpot-package/openclaw.plugin.json | - | -| lightclawbot | package-metadata | log | selected package metadata for plugin contract checks | plugins/lightclawbot/.crabpot-package/package.json, lightclawbot, version:1.1.2 | - | -| telnyx-sms | seam-inventory | log | observed 0 hooks, 3 registrations, and 0 manifest contracts | registration:defineChannelPluginEntry, registration:registerCli, registration:registerHttpRoute | - | -| telnyx-sms | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| telnyx-sms | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerHttpRoute | - | -| telnyx-sms | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/channel-config-helpers, openclaw/plugin-sdk/channel-core, openclaw/plugin-sdk/direct-dm, openclaw/plugin-sdk/setup | - | -| telnyx-sms | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/telnyx-sms/openclaw.plugin.json | - | -| telnyx-sms | package-metadata | log | selected package metadata for plugin contract checks | plugins/telnyx-sms/package.json, telnyx-openclaw-sms-channel, version:0.1.0 | - | -| clawrouter | seam-inventory | log | observed 0 hooks, 8 registrations, and 0 manifest contracts | registration:registerCommand, registration:registerImageGenerationProvider, registration:registerMusicGenerationProvider, registration:registerProvider, registration:registerService, registration:registerTool, registration:registerVideoGenerationProvider, registration:registerWebSearchProvider | - | -| clawrouter | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| clawrouter | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerImageGenerationProvider, registerMusicGenerationProvider, registerProvider, registerService, registerTool, registerVideoGenerationProvider, registerWebSearchProvider | - | -| clawrouter | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/clawrouter/openclaw.plugin.json | - | -| clawrouter | package-metadata | log | selected package metadata for plugin contract checks | plugins/clawrouter/package.json, @blockrun/clawrouter, version:0.12.169 | - | -| memu-engine | seam-inventory | log | observed 0 hooks, 1 registrations, and 0 manifest contracts | registration:registerTool | - | -| memu-engine | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| memu-engine | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerTool | - | -| memu-engine | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | -| memu-engine | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/memu-engine/openclaw.plugin.json | - | -| memu-engine | package-metadata | log | selected package metadata for plugin contract checks | plugins/memu-engine/package.json, memu-engine, version:0.3.6 | - | -| secureclaw | seam-inventory | log | observed 1 hooks, 2 registrations, and 0 manifest contracts | hook:gateway_start, registration:registerCli, registration:registerService | - | -| secureclaw | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | gateway_start | - | -| secureclaw | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerService | - | -| secureclaw | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/secureclaw/secureclaw/openclaw.plugin.json | - | -| secureclaw | package-metadata | log | selected package metadata for plugin contract checks | plugins/secureclaw/secureclaw/package.json, @adversa/secureclaw, version:2.2.0 | - | -| memos-cloud | seam-inventory | log | observed 2 hooks, 1 registrations, and 0 manifest contracts | hook:agent_end, hook:before_agent_start, registration:registerHook | - | -| memos-cloud | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | agent_end, before_agent_start | - | -| memos-cloud | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerHook | - | -| memos-cloud | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/memos-cloud/openclaw.plugin.json | - | -| memos-cloud | package-metadata | log | selected package metadata for plugin contract checks | plugins/memos-cloud/package.json, @memtensor/memos-cloud-openclaw-plugin, version:0.1.13 | - | -| clawmetry | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:definePluginEntry, registration:registerService | - | -| clawmetry | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| clawmetry | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerService | - | -| clawmetry | package-metadata | log | selected package metadata for plugin contract checks | plugins/clawmetry/clawhub-plugin/package.json, @clawmetry/openclaw-plugin, version:1.0.0 | - | -| codex-app-server | seam-inventory | log | observed 1 hooks, 3 registrations, and 0 manifest contracts | hook:inbound_claim, registration:registerCommand, registration:registerInteractiveHandler, registration:registerService | - | -| codex-app-server | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | inbound_claim | - | -| codex-app-server | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerInteractiveHandler, registerService | - | -| codex-app-server | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/codex-app-server/openclaw.plugin.json | - | -| codex-app-server | package-metadata | log | selected package metadata for plugin contract checks | plugins/codex-app-server/package.json, openclaw-codex-app-server, version:0.0.0 | - | -| web-search-plus | seam-inventory | log | observed 0 hooks, 1 registrations, and 0 manifest contracts | registration:registerTool | - | -| web-search-plus | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| web-search-plus | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerTool | - | -| web-search-plus | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/web-search-plus/openclaw.plugin.json | - | -| web-search-plus | package-metadata | log | selected package metadata for plugin contract checks | plugins/web-search-plus/package.json, web-search-plus-plugin-v2, version:2.2.9 | - | -| apify | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:registerCli, registration:registerTool | - | -| apify | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| apify | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerTool | - | -| apify | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk, openclaw/plugin-sdk/core | - | -| apify | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/apify/openclaw.plugin.json | - | -| apify | package-metadata | log | selected package metadata for plugin contract checks | plugins/apify/package.json, @apify/apify-openclaw-plugin, version:0.2.0 | - | -| inworld-tts | seam-inventory | log | observed 0 hooks, 2 registrations, and 1 manifest contracts | registration:definePluginEntry, registration:registerSpeechProvider, manifestContract:speechProviders | - | -| inworld-tts | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | -| inworld-tts | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerSpeechProvider | - | -| inworld-tts | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/plugin-entry, openclaw/plugin-sdk/secret-input, openclaw/plugin-sdk/speech | - | -| inworld-tts | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/inworld-tts/openclaw.plugin.json | - | -| inworld-tts | package-metadata | log | selected package metadata for plugin contract checks | plugins/inworld-tts/package.json, openclaw-inworld-tts, version:1.0.2 | - | -| inworld-tts | declarative-contracts | log | fixture declares manifest contracts that can be checked without executing plugin code | speechProviders | - | -| agentchat | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel-env-vars, status:deprecated | channel-env-vars | -| qqbot | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| a2a-gateway | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| hasdata | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | provider-auth-env-vars, status:deprecated | provider-auth-env-vars | -| llm-trace-phoenix | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| opik-openclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| openclaw-telemetry | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| openclaw-telemetry | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | -| lossless-claw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| connectclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| connectclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | -| hyperspell | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| hyperspell | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | -| honcho | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| honcho | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | -| composio | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| kitchen-sink | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| kitchen-sink | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | -| dingtalk-connector | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| mocrane-wecom | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| yuanbao | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel-env-vars, status:deprecated | channel-env-vars | -| telnyx-sms | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel-env-vars, status:deprecated | channel-env-vars | -| memu-engine | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| memos-cloud | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | -| codex-app-server | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| apify | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | -| inworld-tts | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | provider-auth-env-vars, status:deprecated | provider-auth-env-vars | +| Fixture | Code | Level | Message | Evidence | Compat record | +| ------------------ | ----------------------- | ----- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | +| agentchat | seam-inventory | log | observed 0 hooks, 1 registrations, and 0 manifest contracts | registration:defineChannelPluginEntry | - | +| agentchat | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| agentchat | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | - | - | +| agentchat | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/channel-contract, openclaw/plugin-sdk/channel-core, openclaw/plugin-sdk/setup | - | +| agentchat | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json | - | +| agentchat | package-metadata | log | selected package metadata for plugin contract checks | plugins/agentchat/integrations/openclaw-channel/package.json, @agentchatme/openclaw, version:0.6.2 | - | +| wecom | seam-inventory | log | observed 5 hooks, 3 registrations, and 0 manifest contracts | hook:before_prompt_build, hook:before_tool_call, hook:subagent_delivery_target, hook:subagent_ended, hook:subagent_spawned, registration:registerChannel, registration:registerHttpRoute, registration:registerTool | - | +| wecom | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_prompt_build, before_tool_call, subagent_delivery_target, subagent_ended, subagent_spawned | - | +| wecom | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel, registerHttpRoute, registerTool | - | +| wecom | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/core, openclaw/plugin-sdk/media-runtime, openclaw/plugin-sdk/setup, openclaw/plugin-sdk/status-helpers | - | +| wecom | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/wecom/openclaw.plugin.json | - | +| wecom | package-metadata | log | selected package metadata for plugin contract checks | plugins/wecom/package.json, @sunnoy/wecom, version:3.2.0 | - | +| qqbot | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:registerChannel, registration:registerTool | - | +| qqbot | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| qqbot | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel, registerTool | - | +| qqbot | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk, openclaw/plugin-sdk/core | - | +| qqbot | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/qqbot/openclaw.plugin.json | - | +| qqbot | package-metadata | log | selected package metadata for plugin contract checks | plugins/qqbot/package.json, @tencent-connect/openclaw-qqbot, version:1.7.1 | - | +| a2a-gateway | seam-inventory | log | observed 0 hooks, 3 registrations, and 0 manifest contracts | registration:registerGatewayMethod, registration:registerService, registration:registerTool | - | +| a2a-gateway | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| a2a-gateway | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerGatewayMethod, registerService, registerTool | - | +| a2a-gateway | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | +| a2a-gateway | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/a2a-gateway/openclaw.plugin.json | - | +| a2a-gateway | package-metadata | log | selected package metadata for plugin contract checks | plugins/a2a-gateway/package.json, openclaw-a2a-gateway, version:1.4.0 | - | +| hasdata | seam-inventory | log | observed 0 hooks, 1 registrations, and 1 manifest contracts | registration:registerTool, manifestContract:tools | - | +| hasdata | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| hasdata | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerTool | - | +| hasdata | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/hasdata/openclaw.plugin.json | - | +| hasdata | package-metadata | log | selected package metadata for plugin contract checks | plugins/hasdata/package.json, @hasdata/hasdata-openclaw-plugin, version:0.1.5 | - | +| hasdata | declarative-contracts | log | fixture declares manifest contracts that can be checked without executing plugin code | tools | - | +| mcp-adapter | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:registerService, registration:registerTool | - | +| mcp-adapter | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| mcp-adapter | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerService, registerTool | - | +| mcp-adapter | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/mcp-adapter/openclaw.plugin.json | - | +| mcp-adapter | package-metadata | log | selected package metadata for plugin contract checks | plugins/mcp-adapter/package.json, openclaw-mcp-adapter, version:0.1.1 | - | +| llm-trace-phoenix | seam-inventory | log | observed 2 hooks, 0 registrations, and 0 manifest contracts | hook:llm_input, hook:llm_output | - | +| llm-trace-phoenix | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | llm_input, llm_output | - | +| llm-trace-phoenix | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | - | - | +| llm-trace-phoenix | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | +| llm-trace-phoenix | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/llm-trace-phoenix/openclaw.plugin.json | - | +| llm-trace-phoenix | package-metadata | log | selected package metadata for plugin contract checks | plugins/llm-trace-phoenix/package.json, llm-trace-phoenix, version:1.0.1 | - | +| opik-openclaw | seam-inventory | log | observed 10 hooks, 2 registrations, and 0 manifest contracts | hook:after_tool_call, hook:agent_end, hook:before_tool_call, hook:llm_input, hook:llm_output, hook:subagent_delivery_target, hook:subagent_ended, hook:subagent_spawned, hook:subagent_spawning, hook:tool_result_persist, registration:registerCli, registration:registerService | - | +| opik-openclaw | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | after_tool_call, agent_end, before_tool_call, llm_input, llm_output, subagent_delivery_target, subagent_ended, subagent_spawned, subagent_spawning, tool_result_persist | - | +| opik-openclaw | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerService | - | +| opik-openclaw | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | +| opik-openclaw | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/opik-openclaw/openclaw.plugin.json | - | +| opik-openclaw | package-metadata | log | selected package metadata for plugin contract checks | plugins/opik-openclaw/package.json, @opik/opik-openclaw, version:0.2.14 | - | +| openclaw-telemetry | seam-inventory | log | observed 6 hooks, 1 registrations, and 0 manifest contracts | hook:after_tool_call, hook:agent_end, hook:before_agent_start, hook:before_tool_call, hook:message_received, hook:message_sent, registration:registerService | - | +| openclaw-telemetry | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | after_tool_call, agent_end, before_agent_start, before_tool_call, message_received, message_sent | - | +| openclaw-telemetry | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerService | - | +| openclaw-telemetry | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | +| openclaw-telemetry | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/openclaw-telemetry/openclaw.plugin.json | - | +| openclaw-telemetry | package-metadata | log | selected package metadata for plugin contract checks | plugins/openclaw-telemetry/package.json, @openclaw/telemetry, version:0.1.0 | - | +| lossless-claw | seam-inventory | log | observed 5 hooks, 3 registrations, and 0 manifest contracts | hook:before_prompt_build, hook:before_reset, hook:gateway_start, hook:gateway_stop, hook:session_end, registration:registerCommand, registration:registerContextEngine, registration:registerTool | - | +| lossless-claw | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_prompt_build, before_reset, gateway_start, gateway_stop, session_end | - | +| lossless-claw | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerContextEngine, registerTool | - | +| lossless-claw | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | +| lossless-claw | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/lossless-claw/openclaw.plugin.json | - | +| lossless-claw | package-metadata | log | selected package metadata for plugin contract checks | plugins/lossless-claw/package.json, @martian-engineering/lossless-claw, version:0.9.2 | - | +| connectclaw | seam-inventory | log | observed 1 hooks, 3 registrations, and 0 manifest contracts | hook:before_agent_start, registration:registerCommand, registration:registerService, registration:registerTool | - | +| connectclaw | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_agent_start | - | +| connectclaw | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerService, registerTool | - | +| connectclaw | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | +| connectclaw | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/connectclaw/packages/plugin/openclaw.plugin.json | - | +| connectclaw | package-metadata | log | selected package metadata for plugin contract checks | plugins/connectclaw/packages/plugin/package.json, @connectclaw/connectclaw, version:0.3.0 | - | +| hyperspell | seam-inventory | log | observed 5 hooks, 4 registrations, and 0 manifest contracts | hook:after_compaction, hook:agent_end, hook:before_agent_start, hook:file_changed, hook:session_end, registration:registerCli, registration:registerCommand, registration:registerService, registration:registerTool | - | +| hyperspell | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerCommand, registerService, registerTool | - | +| hyperspell | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | +| hyperspell | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/hyperspell/openclaw.plugin.json | - | +| hyperspell | package-metadata | log | selected package metadata for plugin contract checks | plugins/hyperspell/package.json, @hyperspell/openclaw-hyperspell, version:0.12.0 | - | +| honcho | seam-inventory | log | observed 7 hooks, 5 registrations, and 0 manifest contracts | hook:agent_end, hook:before_agent_start, hook:before_compaction, hook:before_prompt_build, hook:before_reset, hook:gateway_start, hook:subagent_spawned, registration:definePluginEntry, registration:registerCli, registration:registerMemoryPromptSection, registration:registerMemoryRuntime, registration:registerTool | - | +| honcho | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | agent_end, before_agent_start, before_compaction, before_prompt_build, before_reset, gateway_start, subagent_spawned | - | +| honcho | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerMemoryPromptSection, registerMemoryRuntime, registerTool | - | +| honcho | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/honcho/openclaw.plugin.json | - | +| honcho | package-metadata | log | selected package metadata for plugin contract checks | plugins/honcho/package.json, @honcho-ai/openclaw-honcho, version:1.4.0 | - | +| composio | seam-inventory | log | observed 1 hooks, 2 registrations, and 0 manifest contracts | hook:before_prompt_build, registration:registerCli, registration:registerTool | - | +| composio | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_prompt_build | - | +| composio | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerTool | - | +| composio | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | +| composio | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/composio/openclaw.plugin.json | - | +| composio | package-metadata | log | selected package metadata for plugin contract checks | plugins/composio/package.json, @composio/openclaw-plugin, version:0.0.11 | - | +| kitchen-sink | seam-inventory | log | observed 32 hooks, 41 registrations, and 17 manifest contracts | hook:after_compaction, hook:after_tool_call, hook:agent_end, hook:before_agent_finalize, hook:before_agent_reply, hook:before_agent_start, hook:before_compaction, hook:before_dispatch, hook:before_install, hook:before_message_write, hook:before_model_resolve, hook:before_prompt_build, hook:before_reset, hook:before_tool_call, hook:gateway_start, hook:gateway_stop, hook:inbound_claim, hook:llm_input, hook:llm_output, hook:message_received, hook:message_sending, hook:message_sent, hook:model_call_ended, hook:model_call_started, hook:reply_dispatch, hook:session_end, hook:session_start, hook:subagent_delivery_target, hook:subagent_ended, hook:subagent_spawned, hook:subagent_spawning, hook:tool_result_persist, registration:registerAgentHarness, registration:registerAgentToolResultMiddleware, registration:registerAutoEnableProbe, registration:registerChannel, registration:registerCli, registration:registerCliBackend, registration:registerCodexAppServerExtensionFactory, registration:registerCommand, registration:registerCompactionProvider, registration:registerConfigMigration, registration:registerContextEngine, registration:registerDetachedTaskRuntime, registration:registerGatewayDiscoveryService, registration:registerGatewayMethod, registration:registerHook, registration:registerHttpRoute, registration:registerImageGenerationProvider, registration:registerInteractiveHandler, registration:registerMediaUnderstandingProvider, registration:registerMemoryCapability, registration:registerMemoryCorpusSupplement, registration:registerMemoryEmbeddingProvider, registration:registerMemoryFlushPlan, registration:registerMemoryPromptSection, registration:registerMemoryPromptSupplement, registration:registerMemoryRuntime, registration:registerMigrationProvider, registration:registerMusicGenerationProvider, registration:registerNodeHostCommand, registration:registerProvider, registration:registerRealtimeTranscriptionProvider, registration:registerRealtimeVoiceProvider, registration:registerReload, registration:registerSecurityAuditCollector, registration:registerService, registration:registerSpeechProvider, registration:registerTextTransforms, registration:registerTool, registration:registerVideoGenerationProvider, registration:registerWebFetchProvider, registration:registerWebSearchProvider, manifestContract:agentToolResultMiddleware, manifestContract:documentExtractors, manifestContract:embeddedExtensionFactories, manifestContract:externalAuthProviders, manifestContract:imageGenerationProviders, manifestContract:mediaUnderstandingProviders, manifestContract:memoryEmbeddingProviders, manifestContract:migrationProviders, manifestContract:musicGenerationProviders, manifestContract:realtimeTranscriptionProviders, manifestContract:realtimeVoiceProviders, manifestContract:speechProviders, manifestContract:tools, manifestContract:videoGenerationProviders, manifestContract:webContentExtractors, manifestContract:webFetchProviders, manifestContract:webSearchProviders | - | +| kitchen-sink | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | after_compaction, after_tool_call, agent_end, before_agent_finalize, before_agent_reply, before_agent_start, before_compaction, before_dispatch, before_install, before_message_write, before_model_resolve, before_prompt_build, before_reset, before_tool_call, gateway_start, gateway_stop, inbound_claim, llm_input, llm_output, message_received, message_sending, message_sent, model_call_ended, model_call_started, reply_dispatch, session_end, session_start, subagent_delivery_target, subagent_ended, subagent_spawned, subagent_spawning, tool_result_persist | - | +| kitchen-sink | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerAgentHarness, registerAgentToolResultMiddleware, registerAutoEnableProbe, registerChannel, registerCli, registerCliBackend, registerCodexAppServerExtensionFactory, registerCommand, registerCompactionProvider, registerConfigMigration, registerContextEngine, registerDetachedTaskRuntime, registerGatewayDiscoveryService, registerGatewayMethod, registerHook, registerHttpRoute, registerImageGenerationProvider, registerInteractiveHandler, registerMediaUnderstandingProvider, registerMemoryCapability, registerMemoryCorpusSupplement, registerMemoryEmbeddingProvider, registerMemoryFlushPlan, registerMemoryPromptSection, registerMemoryPromptSupplement, registerMemoryRuntime, registerMigrationProvider, registerMusicGenerationProvider, registerNodeHostCommand, registerProvider, registerRealtimeTranscriptionProvider, registerRealtimeVoiceProvider, registerReload, registerSecurityAuditCollector, registerService, registerSpeechProvider, registerTextTransforms, registerTool, registerVideoGenerationProvider, registerWebFetchProvider, registerWebSearchProvider | - | +| kitchen-sink | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk, openclaw/plugin-sdk/account-core, openclaw/plugin-sdk/account-helpers, openclaw/plugin-sdk/account-id, openclaw/plugin-sdk/account-resolution, openclaw/plugin-sdk/account-resolution-runtime, openclaw/plugin-sdk/acp-binding-resolve-runtime, openclaw/plugin-sdk/acp-binding-runtime, openclaw/plugin-sdk/acp-runtime, openclaw/plugin-sdk/agent-config-primitives, openclaw/plugin-sdk/agent-harness, openclaw/plugin-sdk/agent-harness-runtime, openclaw/plugin-sdk/agent-media-payload, openclaw/plugin-sdk/agent-runtime, openclaw/plugin-sdk/allow-from, openclaw/plugin-sdk/allowlist-config-edit, openclaw/plugin-sdk/approval-auth-runtime, openclaw/plugin-sdk/approval-client-runtime, openclaw/plugin-sdk/approval-delivery-runtime, openclaw/plugin-sdk/approval-gateway-runtime, openclaw/plugin-sdk/approval-handler-adapter-runtime, openclaw/plugin-sdk/approval-handler-runtime, openclaw/plugin-sdk/approval-native-runtime, openclaw/plugin-sdk/approval-reply-runtime, openclaw/plugin-sdk/approval-runtime, openclaw/plugin-sdk/boolean-param, openclaw/plugin-sdk/browser-config, openclaw/plugin-sdk/channel-actions, openclaw/plugin-sdk/channel-config-helpers, openclaw/plugin-sdk/channel-config-primitives, openclaw/plugin-sdk/channel-config-schema, openclaw/plugin-sdk/channel-config-schema-legacy, openclaw/plugin-sdk/channel-config-writes, openclaw/plugin-sdk/channel-contract, openclaw/plugin-sdk/channel-contract-testing, openclaw/plugin-sdk/channel-core, openclaw/plugin-sdk/channel-entry-contract, openclaw/plugin-sdk/channel-envelope, openclaw/plugin-sdk/channel-feedback, openclaw/plugin-sdk/channel-inbound, openclaw/plugin-sdk/channel-inbound-debounce, openclaw/plugin-sdk/channel-inbound-roots, openclaw/plugin-sdk/channel-lifecycle, openclaw/plugin-sdk/channel-location, openclaw/plugin-sdk/channel-logging, openclaw/plugin-sdk/channel-mention-gating, openclaw/plugin-sdk/channel-pairing, openclaw/plugin-sdk/channel-pairing-paths, openclaw/plugin-sdk/channel-plugin-common, openclaw/plugin-sdk/channel-policy, openclaw/plugin-sdk/channel-reply-options-runtime, openclaw/plugin-sdk/channel-reply-pipeline, openclaw/plugin-sdk/channel-runtime, openclaw/plugin-sdk/channel-runtime-context, openclaw/plugin-sdk/channel-secret-basic-runtime, openclaw/plugin-sdk/channel-secret-runtime, openclaw/plugin-sdk/channel-secret-tts-runtime, openclaw/plugin-sdk/channel-send-result, openclaw/plugin-sdk/channel-setup, openclaw/plugin-sdk/channel-status, openclaw/plugin-sdk/channel-streaming, openclaw/plugin-sdk/channel-targets, openclaw/plugin-sdk/cli-backend, openclaw/plugin-sdk/cli-runtime, openclaw/plugin-sdk/collection-runtime, openclaw/plugin-sdk/command-auth, openclaw/plugin-sdk/command-auth-native, openclaw/plugin-sdk/command-detection, openclaw/plugin-sdk/command-gating, openclaw/plugin-sdk/command-primitives-runtime, openclaw/plugin-sdk/command-status, openclaw/plugin-sdk/command-status-runtime, openclaw/plugin-sdk/command-surface, openclaw/plugin-sdk/compat, openclaw/plugin-sdk/config-mutation, openclaw/plugin-sdk/config-runtime, openclaw/plugin-sdk/config-schema, openclaw/plugin-sdk/config-types, openclaw/plugin-sdk/context-visibility-runtime, openclaw/plugin-sdk/conversation-binding-runtime, openclaw/plugin-sdk/conversation-runtime, openclaw/plugin-sdk/core, openclaw/plugin-sdk/cron-store-runtime, openclaw/plugin-sdk/dangerous-name-runtime, openclaw/plugin-sdk/device-bootstrap, openclaw/plugin-sdk/diagnostic-runtime, openclaw/plugin-sdk/direct-dm, openclaw/plugin-sdk/direct-dm-access, openclaw/plugin-sdk/direct-dm-guard-policy, openclaw/plugin-sdk/directory-config-runtime, openclaw/plugin-sdk/directory-runtime, openclaw/plugin-sdk/document-extractor, openclaw/plugin-sdk/error-runtime, openclaw/plugin-sdk/extension-shared, openclaw/plugin-sdk/fetch-runtime, openclaw/plugin-sdk/file-lock, openclaw/plugin-sdk/gateway-runtime, openclaw/plugin-sdk/global-singleton, openclaw/plugin-sdk/group-access, openclaw/plugin-sdk/group-activation, openclaw/plugin-sdk/hook-runtime, openclaw/plugin-sdk/host-runtime, openclaw/plugin-sdk/image-generation, openclaw/plugin-sdk/image-generation-core, openclaw/plugin-sdk/image-generation-runtime, openclaw/plugin-sdk/inbound-envelope, openclaw/plugin-sdk/inbound-reply-dispatch, openclaw/plugin-sdk/infra-runtime, openclaw/plugin-sdk/interactive-runtime, openclaw/plugin-sdk/json-store, openclaw/plugin-sdk/keyed-async-queue, openclaw/plugin-sdk/lazy-runtime, openclaw/plugin-sdk/lmstudio, openclaw/plugin-sdk/lmstudio-runtime, openclaw/plugin-sdk/logging-core, openclaw/plugin-sdk/markdown-table-runtime, openclaw/plugin-sdk/media-generation-runtime, openclaw/plugin-sdk/media-generation-runtime-shared, openclaw/plugin-sdk/media-mime, openclaw/plugin-sdk/media-runtime, openclaw/plugin-sdk/media-store, openclaw/plugin-sdk/media-understanding, openclaw/plugin-sdk/media-understanding-runtime, openclaw/plugin-sdk/memory-core-engine-runtime, openclaw/plugin-sdk/memory-core-host-engine-embeddings, openclaw/plugin-sdk/memory-core-host-engine-foundation, openclaw/plugin-sdk/memory-core-host-engine-qmd, openclaw/plugin-sdk/memory-core-host-engine-storage, openclaw/plugin-sdk/memory-core-host-events, openclaw/plugin-sdk/memory-core-host-multimodal, openclaw/plugin-sdk/memory-core-host-query, openclaw/plugin-sdk/memory-core-host-runtime-cli, openclaw/plugin-sdk/memory-core-host-runtime-core, openclaw/plugin-sdk/memory-core-host-runtime-files, openclaw/plugin-sdk/memory-core-host-secret, openclaw/plugin-sdk/memory-core-host-status, openclaw/plugin-sdk/memory-host-core, openclaw/plugin-sdk/memory-host-events, openclaw/plugin-sdk/memory-host-files, openclaw/plugin-sdk/memory-host-markdown, openclaw/plugin-sdk/memory-host-search, openclaw/plugin-sdk/memory-host-status, openclaw/plugin-sdk/messaging-targets, openclaw/plugin-sdk/migration, openclaw/plugin-sdk/migration-runtime, openclaw/plugin-sdk/model-session-runtime, openclaw/plugin-sdk/models-provider-runtime, openclaw/plugin-sdk/music-generation, openclaw/plugin-sdk/music-generation-core, openclaw/plugin-sdk/native-command-config-runtime, openclaw/plugin-sdk/native-command-registry, openclaw/plugin-sdk/outbound-media, openclaw/plugin-sdk/outbound-runtime, openclaw/plugin-sdk/outbound-send-deps, openclaw/plugin-sdk/param-readers, openclaw/plugin-sdk/persistent-dedupe, openclaw/plugin-sdk/plugin-config-runtime, openclaw/plugin-sdk/plugin-entry, openclaw/plugin-sdk/plugin-runtime, openclaw/plugin-sdk/poll-runtime, openclaw/plugin-sdk/process-runtime, openclaw/plugin-sdk/provider-auth, openclaw/plugin-sdk/provider-auth-api-key, openclaw/plugin-sdk/provider-auth-login, openclaw/plugin-sdk/provider-auth-result, openclaw/plugin-sdk/provider-auth-runtime, openclaw/plugin-sdk/provider-catalog-shared, openclaw/plugin-sdk/provider-entry, openclaw/plugin-sdk/provider-env-vars, openclaw/plugin-sdk/provider-http, openclaw/plugin-sdk/provider-model-shared, openclaw/plugin-sdk/provider-model-types, openclaw/plugin-sdk/provider-onboard, openclaw/plugin-sdk/provider-selection-runtime, openclaw/plugin-sdk/provider-setup, openclaw/plugin-sdk/provider-stream, openclaw/plugin-sdk/provider-stream-family, openclaw/plugin-sdk/provider-stream-shared, openclaw/plugin-sdk/provider-tools, openclaw/plugin-sdk/provider-transport-runtime, openclaw/plugin-sdk/provider-usage, openclaw/plugin-sdk/provider-web-fetch, openclaw/plugin-sdk/provider-web-fetch-contract, openclaw/plugin-sdk/provider-web-search, openclaw/plugin-sdk/provider-web-search-config-contract, openclaw/plugin-sdk/provider-web-search-contract, openclaw/plugin-sdk/provider-zai-endpoint, openclaw/plugin-sdk/proxy-capture, openclaw/plugin-sdk/qa-runner-runtime, openclaw/plugin-sdk/realtime-transcription, openclaw/plugin-sdk/realtime-voice, openclaw/plugin-sdk/reply-chunking, openclaw/plugin-sdk/reply-dedupe, openclaw/plugin-sdk/reply-dispatch-runtime, openclaw/plugin-sdk/reply-history, openclaw/plugin-sdk/reply-payload, openclaw/plugin-sdk/reply-reference, openclaw/plugin-sdk/reply-runtime, openclaw/plugin-sdk/request-url, openclaw/plugin-sdk/response-limit-runtime, openclaw/plugin-sdk/retry-runtime, openclaw/plugin-sdk/routing, openclaw/plugin-sdk/run-command, openclaw/plugin-sdk/runtime, openclaw/plugin-sdk/runtime-config-snapshot, openclaw/plugin-sdk/runtime-doctor, openclaw/plugin-sdk/runtime-env, openclaw/plugin-sdk/runtime-fetch, openclaw/plugin-sdk/runtime-group-policy, openclaw/plugin-sdk/runtime-logger, openclaw/plugin-sdk/runtime-secret-resolution, openclaw/plugin-sdk/runtime-store, openclaw/plugin-sdk/sandbox, openclaw/plugin-sdk/secret-file-runtime, openclaw/plugin-sdk/secret-input, openclaw/plugin-sdk/secret-input-runtime, openclaw/plugin-sdk/secret-ref-runtime, openclaw/plugin-sdk/security-runtime, openclaw/plugin-sdk/self-hosted-provider-setup, openclaw/plugin-sdk/session-binding-runtime, openclaw/plugin-sdk/session-key-runtime, openclaw/plugin-sdk/session-store-runtime, openclaw/plugin-sdk/session-transcript-hit, openclaw/plugin-sdk/session-visibility, openclaw/plugin-sdk/setup, openclaw/plugin-sdk/setup-adapter-runtime, openclaw/plugin-sdk/setup-runtime, openclaw/plugin-sdk/setup-tools, openclaw/plugin-sdk/simple-completion-runtime, openclaw/plugin-sdk/skill-commands-runtime, openclaw/plugin-sdk/skills-runtime, openclaw/plugin-sdk/speech, openclaw/plugin-sdk/speech-core, openclaw/plugin-sdk/ssrf-dispatcher, openclaw/plugin-sdk/ssrf-policy, openclaw/plugin-sdk/ssrf-runtime, openclaw/plugin-sdk/state-paths, openclaw/plugin-sdk/status-helpers, openclaw/plugin-sdk/string-coerce-runtime, openclaw/plugin-sdk/string-normalization-runtime, openclaw/plugin-sdk/talk-config-runtime, openclaw/plugin-sdk/target-resolver-runtime, openclaw/plugin-sdk/telegram-command-config, openclaw/plugin-sdk/temp-path, openclaw/plugin-sdk/testing, openclaw/plugin-sdk/text-autolink-runtime, openclaw/plugin-sdk/text-chunking, openclaw/plugin-sdk/text-runtime, openclaw/plugin-sdk/thread-bindings-runtime, openclaw/plugin-sdk/thread-bindings-session-runtime, openclaw/plugin-sdk/tool-payload, openclaw/plugin-sdk/tool-send, openclaw/plugin-sdk/tts-runtime, openclaw/plugin-sdk/video-generation, openclaw/plugin-sdk/video-generation-core, openclaw/plugin-sdk/video-generation-runtime, openclaw/plugin-sdk/web-content-extractor, openclaw/plugin-sdk/web-media, openclaw/plugin-sdk/webhook-ingress, openclaw/plugin-sdk/webhook-path, openclaw/plugin-sdk/webhook-request-guards, openclaw/plugin-sdk/webhook-targets, openclaw/plugin-sdk/windows-spawn, openclaw/plugin-sdk/zod | - | +| kitchen-sink | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/kitchen-sink/openclaw.plugin.json | - | +| kitchen-sink | package-metadata | log | selected package metadata for plugin contract checks | plugins/kitchen-sink/package.json, @openclaw/kitchen-sink, version:0.2.2 | - | +| kitchen-sink | declarative-contracts | log | fixture declares manifest contracts that can be checked without executing plugin code | agentToolResultMiddleware, documentExtractors, embeddedExtensionFactories, externalAuthProviders, imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, migrationProviders, musicGenerationProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, speechProviders, tools, videoGenerationProviders, webContentExtractors, webFetchProviders, webSearchProviders | - | +| nemoclaw | seam-inventory | log | observed 2 hooks, 2 registrations, and 0 manifest contracts | hook:before_agent_start, hook:before_tool_call, registration:registerCommand, registration:registerProvider | - | +| nemoclaw | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_agent_start, before_tool_call | - | +| nemoclaw | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerProvider | - | +| nemoclaw | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/nemoclaw/nemoclaw/openclaw.plugin.json | - | +| nemoclaw | package-metadata | log | selected package metadata for plugin contract checks | plugins/nemoclaw/nemoclaw/package.json, nemoclaw, version:0.1.0 | - | +| memory-tencentdb | seam-inventory | log | observed 3 hooks, 2 registrations, and 0 manifest contracts | hook:agent_end, hook:before_prompt_build, hook:gateway_stop, registration:registerCli, registration:registerTool | - | +| memory-tencentdb | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | agent_end, before_prompt_build, gateway_stop | - | +| memory-tencentdb | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerTool | - | +| memory-tencentdb | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/core | - | +| memory-tencentdb | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/memory-tencentdb/.crabpot-package/openclaw.plugin.json | - | +| memory-tencentdb | package-metadata | log | selected package metadata for plugin contract checks | plugins/memory-tencentdb/.crabpot-package/package.json, @tencentdb-agent-memory/memory-tencentdb, version:0.2.3 | - | +| ddingtalk | seam-inventory | log | observed 0 hooks, 1 registrations, and 0 manifest contracts | registration:defineChannelPluginEntry | - | +| ddingtalk | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| ddingtalk | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | - | - | +| ddingtalk | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/channel-contract, openclaw/plugin-sdk/channel-feedback, openclaw/plugin-sdk/conversation-runtime, openclaw/plugin-sdk/core, openclaw/plugin-sdk/runtime-env, openclaw/plugin-sdk/setup, openclaw/plugin-sdk/setup-tools, openclaw/plugin-sdk/web-media | - | +| ddingtalk | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/ddingtalk/openclaw.plugin.json | - | +| ddingtalk | package-metadata | log | selected package metadata for plugin contract checks | plugins/ddingtalk/package.json, @largezhou/ddingtalk, version:2.0.1 | - | +| dingtalk-connector | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:registerChannel, registration:registerGatewayMethod | - | +| dingtalk-connector | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| dingtalk-connector | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel, registerGatewayMethod | - | +| dingtalk-connector | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk, openclaw/plugin-sdk/channel-entry-contract, openclaw/plugin-sdk/channel-runtime, openclaw/plugin-sdk/config-runtime, openclaw/plugin-sdk/core, openclaw/plugin-sdk/setup | - | +| dingtalk-connector | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/dingtalk-connector/openclaw.plugin.json | - | +| dingtalk-connector | package-metadata | log | selected package metadata for plugin contract checks | plugins/dingtalk-connector/package.json, @dingtalk-real-ai/dingtalk-connector, version:0.8.19 | - | +| mocrane-wecom | seam-inventory | log | observed 1 hooks, 3 registrations, and 0 manifest contracts | hook:before_prompt_build, registration:registerChannel, registration:registerHttpRoute, registration:registerTool | - | +| mocrane-wecom | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | before_prompt_build | - | +| mocrane-wecom | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel, registerHttpRoute, registerTool | - | +| mocrane-wecom | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | +| mocrane-wecom | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/mocrane-wecom/openclaw.plugin.json | - | +| mocrane-wecom | package-metadata | log | selected package metadata for plugin contract checks | plugins/mocrane-wecom/package.json, @mocrane/wecom, version:2026.3.24-beta | - | +| yuanbao | seam-inventory | log | observed 0 hooks, 3 registrations, and 0 manifest contracts | registration:createChatChannelPlugin, registration:registerCommand, registration:registerTool | - | +| yuanbao | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| yuanbao | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerTool | - | +| yuanbao | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/yuanbao/.crabpot-package/openclaw.plugin.json | - | +| yuanbao | package-metadata | log | selected package metadata for plugin contract checks | plugins/yuanbao/.crabpot-package/package.json, openclaw-plugin-yuanbao, version:2.12.0 | - | +| openclaw-weixin | seam-inventory | log | observed 0 hooks, 1 registrations, and 0 manifest contracts | registration:registerChannel | - | +| openclaw-weixin | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| openclaw-weixin | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel | - | +| openclaw-weixin | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/account-id, openclaw/plugin-sdk/channel-config-schema, openclaw/plugin-sdk/channel-contract, openclaw/plugin-sdk/channel-runtime, openclaw/plugin-sdk/command-auth, openclaw/plugin-sdk/config-runtime, openclaw/plugin-sdk/core, openclaw/plugin-sdk/hook-runtime, openclaw/plugin-sdk/infra-runtime, openclaw/plugin-sdk/plugin-entry, openclaw/plugin-sdk/plugin-runtime, openclaw/plugin-sdk/reply-runtime | - | +| openclaw-weixin | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/openclaw-weixin/.crabpot-package/openclaw.plugin.json | - | +| openclaw-weixin | package-metadata | log | selected package metadata for plugin contract checks | plugins/openclaw-weixin/.crabpot-package/package.json, @tencent-weixin/openclaw-weixin, version:2.3.1 | - | +| lightclawbot | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:registerChannel, registration:registerTool | - | +| lightclawbot | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| lightclawbot | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerChannel, registerTool | - | +| lightclawbot | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/channel-reply-pipeline, openclaw/plugin-sdk/core | - | +| lightclawbot | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/lightclawbot/.crabpot-package/openclaw.plugin.json | - | +| lightclawbot | package-metadata | log | selected package metadata for plugin contract checks | plugins/lightclawbot/.crabpot-package/package.json, lightclawbot, version:1.1.2 | - | +| telnyx-sms | seam-inventory | log | observed 0 hooks, 3 registrations, and 0 manifest contracts | registration:defineChannelPluginEntry, registration:registerCli, registration:registerHttpRoute | - | +| telnyx-sms | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| telnyx-sms | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerHttpRoute | - | +| telnyx-sms | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/channel-config-helpers, openclaw/plugin-sdk/channel-core, openclaw/plugin-sdk/direct-dm, openclaw/plugin-sdk/setup | - | +| telnyx-sms | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/telnyx-sms/openclaw.plugin.json | - | +| telnyx-sms | package-metadata | log | selected package metadata for plugin contract checks | plugins/telnyx-sms/package.json, telnyx-openclaw-sms-channel, version:0.1.0 | - | +| clawrouter | seam-inventory | log | observed 0 hooks, 8 registrations, and 0 manifest contracts | registration:registerCommand, registration:registerImageGenerationProvider, registration:registerMusicGenerationProvider, registration:registerProvider, registration:registerService, registration:registerTool, registration:registerVideoGenerationProvider, registration:registerWebSearchProvider | - | +| clawrouter | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| clawrouter | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerImageGenerationProvider, registerMusicGenerationProvider, registerProvider, registerService, registerTool, registerVideoGenerationProvider, registerWebSearchProvider | - | +| clawrouter | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/clawrouter/openclaw.plugin.json | - | +| clawrouter | package-metadata | log | selected package metadata for plugin contract checks | plugins/clawrouter/package.json, @blockrun/clawrouter, version:0.12.169 | - | +| memu-engine | seam-inventory | log | observed 0 hooks, 1 registrations, and 0 manifest contracts | registration:registerTool | - | +| memu-engine | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| memu-engine | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerTool | - | +| memu-engine | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk | - | +| memu-engine | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/memu-engine/openclaw.plugin.json | - | +| memu-engine | package-metadata | log | selected package metadata for plugin contract checks | plugins/memu-engine/package.json, memu-engine, version:0.3.6 | - | +| secureclaw | seam-inventory | log | observed 1 hooks, 2 registrations, and 0 manifest contracts | hook:gateway_start, registration:registerCli, registration:registerService | - | +| secureclaw | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | gateway_start | - | +| secureclaw | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerService | - | +| secureclaw | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/secureclaw/secureclaw/openclaw.plugin.json | - | +| secureclaw | package-metadata | log | selected package metadata for plugin contract checks | plugins/secureclaw/secureclaw/package.json, @adversa/secureclaw, version:2.2.0 | - | +| memos-cloud | seam-inventory | log | observed 2 hooks, 1 registrations, and 0 manifest contracts | hook:agent_end, hook:before_agent_start, registration:registerHook | - | +| memos-cloud | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | agent_end, before_agent_start | - | +| memos-cloud | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerHook | - | +| memos-cloud | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/memos-cloud/openclaw.plugin.json | - | +| memos-cloud | package-metadata | log | selected package metadata for plugin contract checks | plugins/memos-cloud/package.json, @memtensor/memos-cloud-openclaw-plugin, version:0.1.13 | - | +| clawmetry | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:definePluginEntry, registration:registerService | - | +| clawmetry | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| clawmetry | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerService | - | +| clawmetry | package-metadata | log | selected package metadata for plugin contract checks | plugins/clawmetry/clawhub-plugin/package.json, @clawmetry/openclaw-plugin, version:1.0.0 | - | +| codex-app-server | seam-inventory | log | observed 1 hooks, 3 registrations, and 0 manifest contracts | hook:inbound_claim, registration:registerCommand, registration:registerInteractiveHandler, registration:registerService | - | +| codex-app-server | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | inbound_claim | - | +| codex-app-server | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCommand, registerInteractiveHandler, registerService | - | +| codex-app-server | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/telegram-account | - | +| codex-app-server | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/codex-app-server/openclaw.plugin.json | - | +| codex-app-server | package-metadata | log | selected package metadata for plugin contract checks | plugins/codex-app-server/package.json, openclaw-codex-app-server, version:0.0.0 | - | +| web-search-plus | seam-inventory | log | observed 0 hooks, 1 registrations, and 0 manifest contracts | registration:registerTool | - | +| web-search-plus | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| web-search-plus | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerTool | - | +| web-search-plus | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/web-search-plus/openclaw.plugin.json | - | +| web-search-plus | package-metadata | log | selected package metadata for plugin contract checks | plugins/web-search-plus/package.json, web-search-plus-plugin-v2, version:2.2.9 | - | +| apify | seam-inventory | log | observed 0 hooks, 2 registrations, and 0 manifest contracts | registration:registerCli, registration:registerTool | - | +| apify | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| apify | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerCli, registerTool | - | +| apify | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk, openclaw/plugin-sdk/core | - | +| apify | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/apify/openclaw.plugin.json | - | +| apify | package-metadata | log | selected package metadata for plugin contract checks | plugins/apify/package.json, @apify/apify-openclaw-plugin, version:0.2.0 | - | +| inworld-tts | seam-inventory | log | observed 0 hooks, 2 registrations, and 1 manifest contracts | registration:definePluginEntry, registration:registerSpeechProvider, manifestContract:speechProviders | - | +| inworld-tts | hook-names-present | log | all observed hooks exist in the target OpenClaw hook registry | - | - | +| inworld-tts | api-registrars-present | log | all observed api.register* calls exist in the target OpenClaw plugin API builder | registerSpeechProvider | - | +| inworld-tts | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/plugin-entry, openclaw/plugin-sdk/secret-input, openclaw/plugin-sdk/speech | - | +| inworld-tts | manifest-fields-checked | log | plugin manifest fields were compared with target OpenClaw manifest types | plugins/inworld-tts/openclaw.plugin.json | - | +| inworld-tts | package-metadata | log | selected package metadata for plugin contract checks | plugins/inworld-tts/package.json, openclaw-inworld-tts, version:1.0.2 | - | +| inworld-tts | declarative-contracts | log | fixture declares manifest contracts that can be checked without executing plugin code | speechProviders | - | +| agentchat | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel-env-vars, status:deprecated | channel-env-vars | +| qqbot | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| a2a-gateway | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| hasdata | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | provider-auth-env-vars, status:deprecated | provider-auth-env-vars | +| llm-trace-phoenix | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.llm-observer.privacy-payload, status:active | hook.llm-observer.privacy-payload | +| llm-trace-phoenix | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| opik-openclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.llm-observer.privacy-payload, status:active | hook.llm-observer.privacy-payload | +| opik-openclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| openclaw-telemetry | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.llm-observer.privacy-payload, status:active | hook.llm-observer.privacy-payload | +| openclaw-telemetry | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| openclaw-telemetry | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | +| lossless-claw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| connectclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| connectclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | +| hyperspell | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.llm-observer.privacy-payload, status:active | hook.llm-observer.privacy-payload | +| hyperspell | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| hyperspell | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | +| honcho | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.llm-observer.privacy-payload, status:active | hook.llm-observer.privacy-payload | +| honcho | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| honcho | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | +| composio | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| kitchen-sink | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.llm-observer.privacy-payload, status:active | hook.llm-observer.privacy-payload | +| kitchen-sink | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| kitchen-sink | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | +| nemoclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | +| memory-tencentdb | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.llm-observer.privacy-payload, status:active | hook.llm-observer.privacy-payload | +| dingtalk-connector | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| mocrane-wecom | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| yuanbao | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel-env-vars, status:deprecated | channel-env-vars | +| telnyx-sms | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel-env-vars, status:deprecated | channel-env-vars | +| memu-engine | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| memos-cloud | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.llm-observer.privacy-payload, status:active | hook.llm-observer.privacy-payload | +| memos-cloud | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-before-agent-start, status:deprecated | legacy-before-agent-start | +| codex-app-server | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| apify | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import, status:deprecated | legacy-root-sdk-import | +| inworld-tts | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | provider-auth-env-vars, status:deprecated | provider-auth-env-vars | +| agentchat | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| wecom | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| wecom | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.before_tool_call.terminal-block-approval, status:active | hook.before_tool_call.terminal-block-approval | +| wecom | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| qqbot | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| qqbot | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| a2a-gateway | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| mcp-adapter | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| opik-openclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| opik-openclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.before_tool_call.terminal-block-approval, status:active | hook.before_tool_call.terminal-block-approval | +| openclaw-telemetry | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| openclaw-telemetry | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.before_tool_call.terminal-block-approval, status:active | hook.before_tool_call.terminal-block-approval | +| lossless-claw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| connectclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| hyperspell | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| honcho | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| kitchen-sink | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| kitchen-sink | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.before_tool_call.terminal-block-approval, status:active | hook.before_tool_call.terminal-block-approval | +| kitchen-sink | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| nemoclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| nemoclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | hook.before_tool_call.terminal-block-approval, status:active | hook.before_tool_call.terminal-block-approval | +| ddingtalk | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| dingtalk-connector | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| dingtalk-connector | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| mocrane-wecom | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| mocrane-wecom | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| yuanbao | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| yuanbao | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| openclaw-weixin | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| openclaw-weixin | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| lightclawbot | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| lightclawbot | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| telnyx-sms | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| telnyx-sms | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | channel.runtime.envelope-config-metadata, status:active | channel.runtime.envelope-config-metadata | +| clawrouter | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| secureclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| memos-cloud | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| clawmetry | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | +| codex-app-server | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | api.capture.runtime-registrars, status:active | api.capture.runtime-registrars | diff --git a/reports/crabpot-runtime-profile.json b/reports/crabpot-runtime-profile.json index 1922c31..bce505a 100644 --- a/reports/crabpot-runtime-profile.json +++ b/reports/crabpot-runtime-profile.json @@ -4,50 +4,50 @@ "targetOpenClaw": { "status": "ok", "configuredPath": "./openclaw", - "compatRecords": 56, - "hookNames": 34, - "apiRegistrars": 48, + "compatRecords": 61, + "hookNames": 35, + "apiRegistrars": 49, "capturedRegistrars": 26, - "sdkExports": 291, + "sdkExports": 294, "manifestFields": 35, "manifestContractFields": 17 }, "fixtureInventory": { - "fixtures": 32, - "sourceFiles": 979, - "observedHooks": 82, - "observedRegistrations": 112, + "fixtures": 33, + "sourceFiles": 998, + "observedHooks": 84, + "observedRegistrations": 114, "observedSdkImports": 350, - "contractProbes": 170, - "issueFindings": 222 + "contractProbes": 175, + "issueFindings": 181 }, "platform": { - "os": "linux", - "arch": "x64", - "node": "v22.22.2", + "os": "darwin", + "arch": "arm64", + "node": "v25.9.0", "rssSampler": "ps-immediate-25ms", "cpuSampler": "ps-percent-immediate-25ms" }, "summary": { "commandCount": 9, "sampleCount": 27, - "rssSampleCount": 496, - "cpuSampleCount": 496, + "rssSampleCount": 181, + "cpuSampleCount": 181, "wallTimeBasis": "command-median-p95", - "p50WallMs": 547, - "p95WallMs": 570, - "maxPeakRssMb": 88.3, - "maxRssDeltaMb": 59.6, - "maxCpuMsEstimate": 611, - "maxHarnessHeapDeltaMb": 2.1 + "p50WallMs": 2072, + "p95WallMs": 8684, + "maxPeakRssMb": 80.5, + "maxRssDeltaMb": 80.2, + "maxCpuMsEstimate": 756, + "maxHarnessHeapDeltaMb": 3.1 }, "groups": [ { "category": "baseline", "commandCount": 1, - "p50WallMs": 31, - "p95WallMs": 32, - "maxPeakRssMb": 30.2, + "p50WallMs": 793, + "p95WallMs": 809, + "maxPeakRssMb": 0.3, "maxCpuMsEstimate": 0, "rssSampleCount": 3, "cpuSampleCount": 3, @@ -58,12 +58,12 @@ { "category": "fixture-scan", "commandCount": 1, - "p50WallMs": 474, - "p95WallMs": 480, - "maxPeakRssMb": 85.6, - "maxCpuMsEstimate": 490, - "rssSampleCount": 56, - "cpuSampleCount": 56, + "p50WallMs": 2891, + "p95WallMs": 3373, + "maxPeakRssMb": 80.5, + "maxCpuMsEstimate": 756, + "rssSampleCount": 24, + "cpuSampleCount": 24, "commands": [ "fixture-inspection" ] @@ -71,12 +71,12 @@ { "category": "target-registry", "commandCount": 1, - "p50WallMs": 547, - "p95WallMs": 553, - "maxPeakRssMb": 84.9, - "maxCpuMsEstimate": 555, - "rssSampleCount": 64, - "cpuSampleCount": 64, + "p50WallMs": 1582, + "p95WallMs": 1924, + "maxPeakRssMb": 74.2, + "maxCpuMsEstimate": 335, + "rssSampleCount": 13, + "cpuSampleCount": 13, "commands": [ "compat-report-registry" ] @@ -84,12 +84,12 @@ { "category": "contract-capture", "commandCount": 1, - "p50WallMs": 547, - "p95WallMs": 561, - "maxPeakRssMb": 85.3, - "maxCpuMsEstimate": 552, - "rssSampleCount": 64, - "cpuSampleCount": 64, + "p50WallMs": 2072, + "p95WallMs": 2145, + "maxPeakRssMb": 79.3, + "maxCpuMsEstimate": 304, + "rssSampleCount": 17, + "cpuSampleCount": 17, "commands": [ "contract-capture" ] @@ -97,12 +97,12 @@ { "category": "synthetic-probes", "commandCount": 1, - "p50WallMs": 559, - "p95WallMs": 568, - "maxPeakRssMb": 85.1, - "maxCpuMsEstimate": 569, - "rssSampleCount": 65, - "cpuSampleCount": 65, + "p50WallMs": 3264, + "p95WallMs": 3282, + "maxPeakRssMb": 78.7, + "maxCpuMsEstimate": 341, + "rssSampleCount": 27, + "cpuSampleCount": 27, "commands": [ "synthetic-probe-plan" ] @@ -110,12 +110,12 @@ { "category": "cold-import", "commandCount": 1, - "p50WallMs": 554, - "p95WallMs": 560, - "maxPeakRssMb": 88.3, - "maxCpuMsEstimate": 582, - "rssSampleCount": 66, - "cpuSampleCount": 66, + "p50WallMs": 1605, + "p95WallMs": 1644, + "maxPeakRssMb": 76.3, + "maxCpuMsEstimate": 308, + "rssSampleCount": 12, + "cpuSampleCount": 12, "commands": [ "cold-import-readiness" ] @@ -123,12 +123,12 @@ { "category": "workspace-plan", "commandCount": 1, - "p50WallMs": 570, - "p95WallMs": 570, - "maxPeakRssMb": 88.1, - "maxCpuMsEstimate": 594, - "rssSampleCount": 66, - "cpuSampleCount": 66, + "p50WallMs": 1623, + "p95WallMs": 1635, + "maxPeakRssMb": 78.3, + "maxCpuMsEstimate": 389, + "rssSampleCount": 11, + "cpuSampleCount": 11, "commands": [ "workspace-plan" ] @@ -136,12 +136,12 @@ { "category": "platform-probes", "commandCount": 1, - "p50WallMs": 570, - "p95WallMs": 598, - "maxPeakRssMb": 86.2, - "maxCpuMsEstimate": 611, - "rssSampleCount": 67, - "cpuSampleCount": 67, + "p50WallMs": 2708, + "p95WallMs": 3496, + "maxPeakRssMb": 74.8, + "maxCpuMsEstimate": 261, + "rssSampleCount": 24, + "cpuSampleCount": 24, "commands": [ "platform-probes" ] @@ -149,12 +149,12 @@ { "category": "import-loop", "commandCount": 1, - "p50WallMs": 375, - "p95WallMs": 378, - "maxPeakRssMb": 60.2, - "maxCpuMsEstimate": 180, - "rssSampleCount": 45, - "cpuSampleCount": 45, + "p50WallMs": 8684, + "p95WallMs": 8922, + "maxPeakRssMb": 60.7, + "maxCpuMsEstimate": 224, + "rssSampleCount": 50, + "cpuSampleCount": 50, "commands": [ "import-loop-profile" ] @@ -165,15 +165,15 @@ "id": "node-boot", "label": "Node boot", "category": "baseline", - "command": "/opt/hostedtoolcache/node/22.22.2/x64/bin/node -e 0", + "command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node -e 0", "samples": [ { - "wallMs": 32, - "peakRssMb": 30.2, + "wallMs": 809, + "peakRssMb": 0.3, "rssDeltaMb": 0, "peakCpuPercent": 0, "cpuMsEstimate": 0, - "harnessHeapDeltaMb": 0.4, + "harnessHeapDeltaMb": 1.1, "statSampleCount": 1, "rssSampleCount": 1, "cpuSampleCount": 1, @@ -182,12 +182,12 @@ "stderrPreview": "" }, { - "wallMs": 30, - "peakRssMb": 29.6, + "wallMs": 781, + "peakRssMb": 0.3, "rssDeltaMb": 0, "peakCpuPercent": 0, "cpuMsEstimate": 0, - "harnessHeapDeltaMb": 0.3, + "harnessHeapDeltaMb": 1, "statSampleCount": 1, "rssSampleCount": 1, "cpuSampleCount": 1, @@ -196,12 +196,12 @@ "stderrPreview": "" }, { - "wallMs": 31, - "peakRssMb": 28.7, + "wallMs": 793, + "peakRssMb": 0.3, "rssDeltaMb": 0, "peakCpuPercent": 0, "cpuMsEstimate": 0, - "harnessHeapDeltaMb": 0.2, + "harnessHeapDeltaMb": 0.9, "statSampleCount": 1, "rssSampleCount": 1, "cpuSampleCount": 1, @@ -211,14 +211,14 @@ } ], "wallMs": { - "min": 30, - "median": 31, - "max": 32 + "min": 781, + "median": 793, + "max": 809 }, "peakRssMb": { - "min": 28.7, - "median": 29.6, - "max": 30.2 + "min": 0.3, + "median": 0.3, + "max": 0.3 }, "rssDeltaMb": { "min": 0, @@ -236,9 +236,9 @@ "max": 0 }, "harnessHeapDeltaMb": { - "min": 0.2, - "median": 0.3, - "max": 0.4 + "min": 0.9, + "median": 1, + "max": 1.1 }, "statSampleCount": 3, "rssSampleCount": 3, @@ -251,84 +251,84 @@ "id": "fixture-inspection", "label": "Fixture inspection", "category": "fixture-scan", - "command": "/opt/hostedtoolcache/node/22.22.2/x64/bin/node scripts/inspect-fixtures.mjs --check", + "command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/inspect-fixtures.mjs --check", "samples": [ { - "wallMs": 474, - "peakRssMb": 84, - "rssDeltaMb": 54, - "peakCpuPercent": 116, - "cpuMsEstimate": 490, - "harnessHeapDeltaMb": 1.9, - "statSampleCount": 19, - "rssSampleCount": 19, - "cpuSampleCount": 19, + "wallMs": 3373, + "peakRssMb": 77, + "rssDeltaMb": 76.7, + "peakCpuPercent": 37.7, + "cpuMsEstimate": 756, + "harnessHeapDeltaMb": 3.1, + "statSampleCount": 10, + "rssSampleCount": 10, + "cpuSampleCount": 10, "exitCode": 0, - "stdoutPreview": "│ 31 │ 'inworld-tts' │ 'ok' │ '' │ 'definePluginEntry,registerSpeechProvider' │ 'speechProviders' │\n└─────────┴──────────────────────┴────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘", - "stderrPreview": "" + "stdoutPreview": "│ 32 │ \u001b[32m'inworld-tts'\u001b[39m │ \u001b[32m'ok'\u001b[39m │ \u001b[32m''\u001b[39m │ \u001b[32m'definePluginEntry,registerSpeechProvider'\u001b[39m │ \u001b[32m'speechProviders'\u001b[39m │\n└─────────┴──────────────────────┴────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘", + "stderrPreview": "(node:65772) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 470, - "peakRssMb": 85.6, - "rssDeltaMb": 56.9, - "peakCpuPercent": 109, - "cpuMsEstimate": 455, - "harnessHeapDeltaMb": -15.5, - "statSampleCount": 18, - "rssSampleCount": 18, - "cpuSampleCount": 18, + "wallMs": 2891, + "peakRssMb": 79.4, + "rssDeltaMb": 79.1, + "peakCpuPercent": 64.5, + "cpuMsEstimate": 604, + "harnessHeapDeltaMb": -15.3, + "statSampleCount": 8, + "rssSampleCount": 8, + "cpuSampleCount": 8, "exitCode": 0, - "stdoutPreview": "│ 31 │ 'inworld-tts' │ 'ok' │ '' │ 'definePluginEntry,registerSpeechProvider' │ 'speechProviders' │\n└─────────┴──────────────────────┴────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘", - "stderrPreview": "" + "stdoutPreview": "│ 32 │ \u001b[32m'inworld-tts'\u001b[39m │ \u001b[32m'ok'\u001b[39m │ \u001b[32m''\u001b[39m │ \u001b[32m'definePluginEntry,registerSpeechProvider'\u001b[39m │ \u001b[32m'speechProviders'\u001b[39m │\n└─────────┴──────────────────────┴────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘", + "stderrPreview": "(node:65977) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 480, - "peakRssMb": 85.4, - "rssDeltaMb": 56.7, - "peakCpuPercent": 112, - "cpuMsEstimate": 482, - "harnessHeapDeltaMb": 1.8, - "statSampleCount": 19, - "rssSampleCount": 19, - "cpuSampleCount": 19, + "wallMs": 2279, + "peakRssMb": 80.5, + "rssDeltaMb": 80.2, + "peakCpuPercent": 65.7, + "cpuMsEstimate": 531, + "harnessHeapDeltaMb": 2, + "statSampleCount": 6, + "rssSampleCount": 6, + "cpuSampleCount": 6, "exitCode": 0, - "stdoutPreview": "│ 31 │ 'inworld-tts' │ 'ok' │ '' │ 'definePluginEntry,registerSpeechProvider' │ 'speechProviders' │\n└─────────┴──────────────────────┴────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘", - "stderrPreview": "" + "stdoutPreview": "│ 32 │ \u001b[32m'inworld-tts'\u001b[39m │ \u001b[32m'ok'\u001b[39m │ \u001b[32m''\u001b[39m │ \u001b[32m'definePluginEntry,registerSpeechProvider'\u001b[39m │ \u001b[32m'speechProviders'\u001b[39m │\n└─────────┴──────────────────────┴────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘", + "stderrPreview": "(node:66334) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" } ], "wallMs": { - "min": 470, - "median": 474, - "max": 480 + "min": 2279, + "median": 2891, + "max": 3373 }, "peakRssMb": { - "min": 84, - "median": 85.4, - "max": 85.6 + "min": 77, + "median": 79.4, + "max": 80.5 }, "rssDeltaMb": { - "min": 54, - "median": 56.7, - "max": 56.9 + "min": 76.7, + "median": 79.1, + "max": 80.2 }, "peakCpuPercent": { - "min": 109, - "median": 112, - "max": 116 + "min": 37.7, + "median": 64.5, + "max": 65.7 }, "cpuMsEstimate": { - "min": 455, - "median": 482, - "max": 490 + "min": 531, + "median": 604, + "max": 756 }, "harnessHeapDeltaMb": { - "min": -15.5, - "median": 1.8, - "max": 1.9 + "min": -15.3, + "median": 2, + "max": 3.1 }, - "statSampleCount": 56, - "rssSampleCount": 56, - "cpuSampleCount": 56, + "statSampleCount": 24, + "rssSampleCount": 24, + "cpuSampleCount": 24, "exitCodes": [ 0 ] @@ -337,84 +337,84 @@ "id": "compat-report-registry", "label": "Compatibility report plus target registry parse", "category": "target-registry", - "command": "/opt/hostedtoolcache/node/22.22.2/x64/bin/node scripts/generate-report.mjs --check", + "command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/generate-report.mjs --check", "samples": [ { - "wallMs": 553, - "peakRssMb": 81.5, - "rssDeltaMb": 52.8, - "peakCpuPercent": 112, - "cpuMsEstimate": 555, - "harnessHeapDeltaMb": 2.1, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 1924, + "peakRssMb": 72.1, + "rssDeltaMb": 71.8, + "peakCpuPercent": 47.1, + "cpuMsEstimate": 335, + "harnessHeapDeltaMb": 1.8, + "statSampleCount": 5, + "rssSampleCount": 5, + "cpuSampleCount": 5, "exitCode": 0, - "stdoutPreview": "crabpot report check: pass; 0 breakages, 68 warnings, 154 suggestions, 222 issues\nreport targets: /home/runner/work/crabpot/crabpot/reports/crabpot-report.md, /home/runner/work/crabpot/crabpot/reports/crabpot-report.json, /home/runner/work/crabpot/crabpot/reports/crabpot-issues.md", - "stderrPreview": "" + "stdoutPreview": "crabpot report check: pass; 0 breakages, 69 warnings, 112 suggestions, 181 issues\nreport targets: /Users/vincentkoc/.codex/worktrees/openclaw-crabpot/add-nemoclaw-fixture/reports/crabpot-report.md, /Users/vincentkoc/.codex/worktrees/openclaw-crabpot/add-nemoclaw-fixture/reports/crabpot-report.json, /Users/vincentkoc/.codex/worktrees/openclaw-crabpot/add-nemoclaw-fixture/reports/crabpot-issues.md", + "stderrPreview": "(node:66470) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 526, - "peakRssMb": 84.9, - "rssDeltaMb": 54.9, - "peakCpuPercent": 113, - "cpuMsEstimate": 544, - "harnessHeapDeltaMb": 2, - "statSampleCount": 21, - "rssSampleCount": 21, - "cpuSampleCount": 21, + "wallMs": 1582, + "peakRssMb": 73.1, + "rssDeltaMb": 72.8, + "peakCpuPercent": 35, + "cpuMsEstimate": 210, + "harnessHeapDeltaMb": 1.5, + "statSampleCount": 4, + "rssSampleCount": 4, + "cpuSampleCount": 4, "exitCode": 0, - "stdoutPreview": "crabpot report check: pass; 0 breakages, 68 warnings, 154 suggestions, 222 issues\nreport targets: /home/runner/work/crabpot/crabpot/reports/crabpot-report.md, /home/runner/work/crabpot/crabpot/reports/crabpot-report.json, /home/runner/work/crabpot/crabpot/reports/crabpot-issues.md", - "stderrPreview": "" + "stdoutPreview": "crabpot report check: pass; 0 breakages, 69 warnings, 112 suggestions, 181 issues\nreport targets: /Users/vincentkoc/.codex/worktrees/openclaw-crabpot/add-nemoclaw-fixture/reports/crabpot-report.md, /Users/vincentkoc/.codex/worktrees/openclaw-crabpot/add-nemoclaw-fixture/reports/crabpot-report.json, /Users/vincentkoc/.codex/worktrees/openclaw-crabpot/add-nemoclaw-fixture/reports/crabpot-issues.md", + "stderrPreview": "(node:66608) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 547, - "peakRssMb": 83.2, - "rssDeltaMb": 54.4, - "peakCpuPercent": 111, - "cpuMsEstimate": 543, - "harnessHeapDeltaMb": 2.1, - "statSampleCount": 21, - "rssSampleCount": 21, - "cpuSampleCount": 21, + "wallMs": 1578, + "peakRssMb": 74.2, + "rssDeltaMb": 73.8, + "peakCpuPercent": 43, + "cpuMsEstimate": 234, + "harnessHeapDeltaMb": 1.5, + "statSampleCount": 4, + "rssSampleCount": 4, + "cpuSampleCount": 4, "exitCode": 0, - "stdoutPreview": "crabpot report check: pass; 0 breakages, 68 warnings, 154 suggestions, 222 issues\nreport targets: /home/runner/work/crabpot/crabpot/reports/crabpot-report.md, /home/runner/work/crabpot/crabpot/reports/crabpot-report.json, /home/runner/work/crabpot/crabpot/reports/crabpot-issues.md", - "stderrPreview": "" + "stdoutPreview": "crabpot report check: pass; 0 breakages, 69 warnings, 112 suggestions, 181 issues\nreport targets: /Users/vincentkoc/.codex/worktrees/openclaw-crabpot/add-nemoclaw-fixture/reports/crabpot-report.md, /Users/vincentkoc/.codex/worktrees/openclaw-crabpot/add-nemoclaw-fixture/reports/crabpot-report.json, /Users/vincentkoc/.codex/worktrees/openclaw-crabpot/add-nemoclaw-fixture/reports/crabpot-issues.md", + "stderrPreview": "(node:66767) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" } ], "wallMs": { - "min": 526, - "median": 547, - "max": 553 + "min": 1578, + "median": 1582, + "max": 1924 }, "peakRssMb": { - "min": 81.5, - "median": 83.2, - "max": 84.9 + "min": 72.1, + "median": 73.1, + "max": 74.2 }, "rssDeltaMb": { - "min": 52.8, - "median": 54.4, - "max": 54.9 + "min": 71.8, + "median": 72.8, + "max": 73.8 }, "peakCpuPercent": { - "min": 111, - "median": 112, - "max": 113 + "min": 35, + "median": 43, + "max": 47.1 }, "cpuMsEstimate": { - "min": 543, - "median": 544, - "max": 555 + "min": 210, + "median": 234, + "max": 335 }, "harnessHeapDeltaMb": { - "min": 2, - "median": 2.1, - "max": 2.1 + "min": 1.5, + "median": 1.5, + "max": 1.8 }, - "statSampleCount": 64, - "rssSampleCount": 64, - "cpuSampleCount": 64, + "statSampleCount": 13, + "rssSampleCount": 13, + "cpuSampleCount": 13, "exitCodes": [ 0 ] @@ -423,84 +423,84 @@ "id": "contract-capture", "label": "Contract capture inventory", "category": "contract-capture", - "command": "/opt/hostedtoolcache/node/22.22.2/x64/bin/node scripts/capture-contracts.mjs --check", + "command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/capture-contracts.mjs --check", "samples": [ { - "wallMs": 547, - "peakRssMb": 83.9, - "rssDeltaMb": 55.1, - "peakCpuPercent": 112, - "cpuMsEstimate": 552, - "harnessHeapDeltaMb": 2.1, - "statSampleCount": 21, - "rssSampleCount": 21, - "cpuSampleCount": 21, + "wallMs": 2072, + "peakRssMb": 66, + "rssDeltaMb": 65.7, + "peakCpuPercent": 14.9, + "cpuMsEstimate": 99, + "harnessHeapDeltaMb": 2, + "statSampleCount": 6, + "rssSampleCount": 6, + "cpuSampleCount": 6, "exitCode": 0, - "stdoutPreview": "contract capture: 202 registrations, 86 hooks, 549 sdk imports, 170 issue probes", - "stderrPreview": "" + "stdoutPreview": "contract capture: 204 registrations, 88 hooks, 549 sdk imports, 175 issue probes", + "stderrPreview": "(node:66877) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 528, - "peakRssMb": 84.8, - "rssDeltaMb": 56, - "peakCpuPercent": 120, - "cpuMsEstimate": 539, - "harnessHeapDeltaMb": -10.3, - "statSampleCount": 21, - "rssSampleCount": 21, - "cpuSampleCount": 21, + "wallMs": 1913, + "peakRssMb": 79.3, + "rssDeltaMb": 79, + "peakCpuPercent": 49.9, + "cpuMsEstimate": 304, + "harnessHeapDeltaMb": -10.8, + "statSampleCount": 5, + "rssSampleCount": 5, + "cpuSampleCount": 5, "exitCode": 0, - "stdoutPreview": "contract capture: 202 registrations, 86 hooks, 549 sdk imports, 170 issue probes", - "stderrPreview": "" + "stdoutPreview": "contract capture: 204 registrations, 88 hooks, 549 sdk imports, 175 issue probes", + "stderrPreview": "(node:67014) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 561, - "peakRssMb": 85.3, - "rssDeltaMb": 55.1, - "peakCpuPercent": 111, - "cpuMsEstimate": 545, - "harnessHeapDeltaMb": 2.1, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 2145, + "peakRssMb": 73.9, + "rssDeltaMb": 73.6, + "peakCpuPercent": 42.8, + "cpuMsEstimate": 281, + "harnessHeapDeltaMb": 2, + "statSampleCount": 6, + "rssSampleCount": 6, + "cpuSampleCount": 6, "exitCode": 0, - "stdoutPreview": "contract capture: 202 registrations, 86 hooks, 549 sdk imports, 170 issue probes", - "stderrPreview": "" + "stdoutPreview": "contract capture: 204 registrations, 88 hooks, 549 sdk imports, 175 issue probes", + "stderrPreview": "(node:67089) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" } ], "wallMs": { - "min": 528, - "median": 547, - "max": 561 + "min": 1913, + "median": 2072, + "max": 2145 }, "peakRssMb": { - "min": 83.9, - "median": 84.8, - "max": 85.3 + "min": 66, + "median": 73.9, + "max": 79.3 }, "rssDeltaMb": { - "min": 55.1, - "median": 55.1, - "max": 56 + "min": 65.7, + "median": 73.6, + "max": 79 }, "peakCpuPercent": { - "min": 111, - "median": 112, - "max": 120 + "min": 14.9, + "median": 42.8, + "max": 49.9 }, "cpuMsEstimate": { - "min": 539, - "median": 545, - "max": 552 + "min": 99, + "median": 281, + "max": 304 }, "harnessHeapDeltaMb": { - "min": -10.3, - "median": 2.1, - "max": 2.1 + "min": -10.8, + "median": 2, + "max": 2 }, - "statSampleCount": 64, - "rssSampleCount": 64, - "cpuSampleCount": 64, + "statSampleCount": 17, + "rssSampleCount": 17, + "cpuSampleCount": 17, "exitCodes": [ 0 ] @@ -509,84 +509,84 @@ "id": "synthetic-probe-plan", "label": "Synthetic probe plan", "category": "synthetic-probes", - "command": "/opt/hostedtoolcache/node/22.22.2/x64/bin/node scripts/synthetic-probes.mjs --check", + "command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/synthetic-probes.mjs --check", "samples": [ { - "wallMs": 568, - "peakRssMb": 85.1, - "rssDeltaMb": 54.9, - "peakCpuPercent": 112, - "cpuMsEstimate": 569, - "harnessHeapDeltaMb": 2, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 3282, + "peakRssMb": 78, + "rssDeltaMb": 77.6, + "peakCpuPercent": 59, + "cpuMsEstimate": 341, + "harnessHeapDeltaMb": 3, + "statSampleCount": 10, + "rssSampleCount": 10, + "cpuSampleCount": 10, "exitCode": 0, - "stdoutPreview": "synthetic probes: 288 ready, 0 blocked, 288 total", - "stderrPreview": "" + "stdoutPreview": "synthetic probes: 292 ready, 0 blocked, 292 total", + "stderrPreview": "(node:67206) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 544, - "peakRssMb": 85, - "rssDeltaMb": 55.3, - "peakCpuPercent": 110, - "cpuMsEstimate": 535, - "harnessHeapDeltaMb": 1.9, - "statSampleCount": 21, - "rssSampleCount": 21, - "cpuSampleCount": 21, + "wallMs": 3264, + "peakRssMb": 78.7, + "rssDeltaMb": 78.4, + "peakCpuPercent": 52, + "cpuMsEstimate": 277, + "harnessHeapDeltaMb": 2.9, + "statSampleCount": 10, + "rssSampleCount": 10, + "cpuSampleCount": 10, "exitCode": 0, - "stdoutPreview": "synthetic probes: 288 ready, 0 blocked, 288 total", - "stderrPreview": "" + "stdoutPreview": "synthetic probes: 292 ready, 0 blocked, 292 total", + "stderrPreview": "(node:67442) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 559, - "peakRssMb": 84.7, - "rssDeltaMb": 54.5, - "peakCpuPercent": 112, - "cpuMsEstimate": 554, - "harnessHeapDeltaMb": 2, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 2376, + "peakRssMb": 77.9, + "rssDeltaMb": 77.6, + "peakCpuPercent": 50.3, + "cpuMsEstimate": 276, + "harnessHeapDeltaMb": 2.2, + "statSampleCount": 7, + "rssSampleCount": 7, + "cpuSampleCount": 7, "exitCode": 0, - "stdoutPreview": "synthetic probes: 288 ready, 0 blocked, 288 total", - "stderrPreview": "" + "stdoutPreview": "synthetic probes: 292 ready, 0 blocked, 292 total", + "stderrPreview": "(node:67716) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" } ], "wallMs": { - "min": 544, - "median": 559, - "max": 568 + "min": 2376, + "median": 3264, + "max": 3282 }, "peakRssMb": { - "min": 84.7, - "median": 85, - "max": 85.1 + "min": 77.9, + "median": 78, + "max": 78.7 }, "rssDeltaMb": { - "min": 54.5, - "median": 54.9, - "max": 55.3 + "min": 77.6, + "median": 77.6, + "max": 78.4 }, "peakCpuPercent": { - "min": 110, - "median": 112, - "max": 112 + "min": 50.3, + "median": 52, + "max": 59 }, "cpuMsEstimate": { - "min": 535, - "median": 554, - "max": 569 + "min": 276, + "median": 277, + "max": 341 }, "harnessHeapDeltaMb": { - "min": 1.9, - "median": 2, - "max": 2 + "min": 2.2, + "median": 2.9, + "max": 3 }, - "statSampleCount": 65, - "rssSampleCount": 65, - "cpuSampleCount": 65, + "statSampleCount": 27, + "rssSampleCount": 27, + "cpuSampleCount": 27, "exitCodes": [ 0 ] @@ -595,84 +595,84 @@ "id": "cold-import-readiness", "label": "Cold import readiness", "category": "cold-import", - "command": "/opt/hostedtoolcache/node/22.22.2/x64/bin/node scripts/cold-import-readiness.mjs --check", + "command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/cold-import-readiness.mjs --check", "samples": [ { - "wallMs": 554, - "peakRssMb": 88.3, - "rssDeltaMb": 59.6, - "peakCpuPercent": 114, - "cpuMsEstimate": 562, - "harnessHeapDeltaMb": 1.9, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 1605, + "peakRssMb": 76.3, + "rssDeltaMb": 76.1, + "peakCpuPercent": 58.3, + "cpuMsEstimate": 308, + "harnessHeapDeltaMb": -11.1, + "statSampleCount": 4, + "rssSampleCount": 4, + "cpuSampleCount": 4, "exitCode": 0, - "stdoutPreview": "cold import readiness: 39 entrypoints, 3 ready, 36 blocked", - "stderrPreview": "" + "stdoutPreview": "cold import readiness: 40 entrypoints, 3 ready, 37 blocked", + "stderrPreview": "(node:67822) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 554, - "peakRssMb": 84.8, - "rssDeltaMb": 56.1, - "peakCpuPercent": 112, - "cpuMsEstimate": 568, - "harnessHeapDeltaMb": -10.1, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 1644, + "peakRssMb": 74.9, + "rssDeltaMb": 74.7, + "peakCpuPercent": 58.4, + "cpuMsEstimate": 301, + "harnessHeapDeltaMb": 0.7, + "statSampleCount": 4, + "rssSampleCount": 4, + "cpuSampleCount": 4, "exitCode": 0, - "stdoutPreview": "cold import readiness: 39 entrypoints, 3 ready, 36 blocked", - "stderrPreview": "" + "stdoutPreview": "cold import readiness: 40 entrypoints, 3 ready, 37 blocked", + "stderrPreview": "(node:67913) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 560, - "peakRssMb": 84.9, - "rssDeltaMb": 54.9, - "peakCpuPercent": 120, - "cpuMsEstimate": 582, - "harnessHeapDeltaMb": 1.9, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 1579, + "peakRssMb": 66, + "rssDeltaMb": 65.7, + "peakCpuPercent": 24.9, + "cpuMsEstimate": 163, + "harnessHeapDeltaMb": -0.3, + "statSampleCount": 4, + "rssSampleCount": 4, + "cpuSampleCount": 4, "exitCode": 0, - "stdoutPreview": "cold import readiness: 39 entrypoints, 3 ready, 36 blocked", - "stderrPreview": "" + "stdoutPreview": "cold import readiness: 40 entrypoints, 3 ready, 37 blocked", + "stderrPreview": "(node:68048) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" } ], "wallMs": { - "min": 554, - "median": 554, - "max": 560 + "min": 1579, + "median": 1605, + "max": 1644 }, "peakRssMb": { - "min": 84.8, - "median": 84.9, - "max": 88.3 + "min": 66, + "median": 74.9, + "max": 76.3 }, "rssDeltaMb": { - "min": 54.9, - "median": 56.1, - "max": 59.6 + "min": 65.7, + "median": 74.7, + "max": 76.1 }, "peakCpuPercent": { - "min": 112, - "median": 114, - "max": 120 + "min": 24.9, + "median": 58.3, + "max": 58.4 }, "cpuMsEstimate": { - "min": 562, - "median": 568, - "max": 582 + "min": 163, + "median": 301, + "max": 308 }, "harnessHeapDeltaMb": { - "min": -10.1, - "median": 1.9, - "max": 1.9 + "min": -11.1, + "median": -0.3, + "max": 0.7 }, - "statSampleCount": 66, - "rssSampleCount": 66, - "cpuSampleCount": 66, + "statSampleCount": 12, + "rssSampleCount": 12, + "cpuSampleCount": 12, "exitCodes": [ 0 ] @@ -681,84 +681,84 @@ "id": "workspace-plan", "label": "Workspace execution plan", "category": "workspace-plan", - "command": "/opt/hostedtoolcache/node/22.22.2/x64/bin/node scripts/workspace-plan.mjs --check", + "command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/workspace-plan.mjs --check", "samples": [ { - "wallMs": 570, - "peakRssMb": 87.7, - "rssDeltaMb": 59, - "peakCpuPercent": 120, - "cpuMsEstimate": 594, - "harnessHeapDeltaMb": 2, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 1623, + "peakRssMb": 73.2, + "rssDeltaMb": 73, + "peakCpuPercent": 51.7, + "cpuMsEstimate": 294, + "harnessHeapDeltaMb": -0.1, + "statSampleCount": 4, + "rssSampleCount": 4, + "cpuSampleCount": 4, "exitCode": 0, - "stdoutPreview": "workspace plan: 39 entrypoints, 19 installs, 19 audits, 10 builds, 39 captures, 39 synthetic probes, 39 artifact dirs", - "stderrPreview": "" + "stdoutPreview": "workspace plan: 40 entrypoints, 19 installs, 19 audits, 11 builds, 40 captures, 40 synthetic probes, 40 artifact dirs", + "stderrPreview": "(node:68131) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 570, - "peakRssMb": 88.1, - "rssDeltaMb": 59.4, - "peakCpuPercent": 120, - "cpuMsEstimate": 592, - "harnessHeapDeltaMb": 2, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 1635, + "peakRssMb": 78.3, + "rssDeltaMb": 78.1, + "peakCpuPercent": 61.1, + "cpuMsEstimate": 389, + "harnessHeapDeltaMb": -0.1, + "statSampleCount": 4, + "rssSampleCount": 4, + "cpuSampleCount": 4, "exitCode": 0, - "stdoutPreview": "workspace plan: 39 entrypoints, 19 installs, 19 audits, 10 builds, 39 captures, 39 synthetic probes, 39 artifact dirs", - "stderrPreview": "" + "stdoutPreview": "workspace plan: 40 entrypoints, 19 installs, 19 audits, 11 builds, 40 captures, 40 synthetic probes, 40 artifact dirs", + "stderrPreview": "(node:68224) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 570, - "peakRssMb": 83.9, - "rssDeltaMb": 55.3, - "peakCpuPercent": 120, - "cpuMsEstimate": 584, - "harnessHeapDeltaMb": 1.9, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 1343, + "peakRssMb": 73.2, + "rssDeltaMb": 73, + "peakCpuPercent": 51.1, + "cpuMsEstimate": 318, + "harnessHeapDeltaMb": -0.3, + "statSampleCount": 3, + "rssSampleCount": 3, + "cpuSampleCount": 3, "exitCode": 0, - "stdoutPreview": "workspace plan: 39 entrypoints, 19 installs, 19 audits, 10 builds, 39 captures, 39 synthetic probes, 39 artifact dirs", - "stderrPreview": "" + "stdoutPreview": "workspace plan: 40 entrypoints, 19 installs, 19 audits, 11 builds, 40 captures, 40 synthetic probes, 40 artifact dirs", + "stderrPreview": "(node:68331) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" } ], "wallMs": { - "min": 570, - "median": 570, - "max": 570 + "min": 1343, + "median": 1623, + "max": 1635 }, "peakRssMb": { - "min": 83.9, - "median": 87.7, - "max": 88.1 + "min": 73.2, + "median": 73.2, + "max": 78.3 }, "rssDeltaMb": { - "min": 55.3, - "median": 59, - "max": 59.4 + "min": 73, + "median": 73, + "max": 78.1 }, "peakCpuPercent": { - "min": 120, - "median": 120, - "max": 120 + "min": 51.1, + "median": 51.7, + "max": 61.1 }, "cpuMsEstimate": { - "min": 584, - "median": 592, - "max": 594 + "min": 294, + "median": 318, + "max": 389 }, "harnessHeapDeltaMb": { - "min": 1.9, - "median": 2, - "max": 2 + "min": -0.3, + "median": -0.1, + "max": -0.1 }, - "statSampleCount": 66, - "rssSampleCount": 66, - "cpuSampleCount": 66, + "statSampleCount": 11, + "rssSampleCount": 11, + "cpuSampleCount": 11, "exitCodes": [ 0 ] @@ -767,84 +767,84 @@ "id": "platform-probes", "label": "Platform and loader probes", "category": "platform-probes", - "command": "/opt/hostedtoolcache/node/22.22.2/x64/bin/node scripts/platform-probes.mjs --check", + "command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/platform-probes.mjs --check", "samples": [ { - "wallMs": 570, - "peakRssMb": 86.2, - "rssDeltaMb": 56.6, - "peakCpuPercent": 120, - "cpuMsEstimate": 587, - "harnessHeapDeltaMb": 1.9, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 1879, + "peakRssMb": 73.8, + "rssDeltaMb": 73.4, + "peakCpuPercent": 43.5, + "cpuMsEstimate": 261, + "harnessHeapDeltaMb": 0, + "statSampleCount": 5, + "rssSampleCount": 5, + "cpuSampleCount": 5, "exitCode": 0, - "stdoutPreview": "platform probes: 39 entrypoints, 21 TS loader, 14 Windows-risk steps, 14 container-risk steps", - "stderrPreview": "" + "stdoutPreview": "platform probes: 40 entrypoints, 21 TS loader, 14 Windows-risk steps, 14 container-risk steps", + "stderrPreview": "(node:68433) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 551, - "peakRssMb": 85, - "rssDeltaMb": 56.3, - "peakCpuPercent": 110, - "cpuMsEstimate": 550, - "harnessHeapDeltaMb": 1.9, - "statSampleCount": 22, - "rssSampleCount": 22, - "cpuSampleCount": 22, + "wallMs": 3496, + "peakRssMb": 74.8, + "rssDeltaMb": 74.6, + "peakCpuPercent": 46.5, + "cpuMsEstimate": 252, + "harnessHeapDeltaMb": -1.1, + "statSampleCount": 11, + "rssSampleCount": 11, + "cpuSampleCount": 11, "exitCode": 0, - "stdoutPreview": "platform probes: 39 entrypoints, 21 TS loader, 14 Windows-risk steps, 14 container-risk steps", - "stderrPreview": "" + "stdoutPreview": "platform probes: 40 entrypoints, 21 TS loader, 14 Windows-risk steps, 14 container-risk steps", + "stderrPreview": "(node:68544) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 598, - "peakRssMb": 85.7, - "rssDeltaMb": 57, - "peakCpuPercent": 112, - "cpuMsEstimate": 611, - "harnessHeapDeltaMb": -10, - "statSampleCount": 23, - "rssSampleCount": 23, - "cpuSampleCount": 23, + "wallMs": 2708, + "peakRssMb": 67.6, + "rssDeltaMb": 67.2, + "peakCpuPercent": 14, + "cpuMsEstimate": 146, + "harnessHeapDeltaMb": -0.3, + "statSampleCount": 8, + "rssSampleCount": 8, + "cpuSampleCount": 8, "exitCode": 0, - "stdoutPreview": "platform probes: 39 entrypoints, 21 TS loader, 14 Windows-risk steps, 14 container-risk steps", - "stderrPreview": "" + "stdoutPreview": "platform probes: 40 entrypoints, 21 TS loader, 14 Windows-risk steps, 14 container-risk steps", + "stderrPreview": "(node:68787) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" } ], "wallMs": { - "min": 551, - "median": 570, - "max": 598 + "min": 1879, + "median": 2708, + "max": 3496 }, "peakRssMb": { - "min": 85, - "median": 85.7, - "max": 86.2 + "min": 67.6, + "median": 73.8, + "max": 74.8 }, "rssDeltaMb": { - "min": 56.3, - "median": 56.6, - "max": 57 + "min": 67.2, + "median": 73.4, + "max": 74.6 }, "peakCpuPercent": { - "min": 110, - "median": 112, - "max": 120 + "min": 14, + "median": 43.5, + "max": 46.5 }, "cpuMsEstimate": { - "min": 550, - "median": 587, - "max": 611 + "min": 146, + "median": 252, + "max": 261 }, "harnessHeapDeltaMb": { - "min": -10, - "median": 1.9, - "max": 1.9 + "min": -1.1, + "median": -0.3, + "max": 0 }, - "statSampleCount": 67, - "rssSampleCount": 67, - "cpuSampleCount": 67, + "statSampleCount": 24, + "rssSampleCount": 24, + "cpuSampleCount": 24, "exitCodes": [ 0 ] @@ -853,84 +853,84 @@ "id": "import-loop-profile", "label": "Repeated cold import capture loop", "category": "import-loop", - "command": "/opt/hostedtoolcache/node/22.22.2/x64/bin/node scripts/import-loop-profile.mjs --check --runs 2", + "command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/import-loop-profile.mjs --check --runs 2", "samples": [ { - "wallMs": 375, - "peakRssMb": 60.2, - "rssDeltaMb": 31.4, - "peakCpuPercent": 120, - "cpuMsEstimate": 180, - "harnessHeapDeltaMb": 1.4, - "statSampleCount": 15, - "rssSampleCount": 15, - "cpuSampleCount": 15, + "wallMs": 8684, + "peakRssMb": 58.5, + "rssDeltaMb": 58.2, + "peakCpuPercent": 12.8, + "cpuMsEstimate": 165, + "harnessHeapDeltaMb": -0.1, + "statSampleCount": 17, + "rssSampleCount": 17, + "cpuSampleCount": 17, "exitCode": 0, - "stdoutPreview": "import loop profile: 2 runs, p50 73ms / p95 75ms / plugin delta RSS 3.8MB / plugin delta CPU 0ms", - "stderrPreview": "" + "stdoutPreview": "import loop profile: 2 runs, p50 2032ms / p95 2037ms / plugin delta RSS 0.2MB / plugin delta CPU 158ms", + "stderrPreview": "(node:68961) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 378, - "peakRssMb": 60.1, - "rssDeltaMb": 31.4, - "peakCpuPercent": 100, - "cpuMsEstimate": 167, - "harnessHeapDeltaMb": 1.3, + "wallMs": 7450, + "peakRssMb": 59.4, + "rssDeltaMb": 59.2, + "peakCpuPercent": 20.6, + "cpuMsEstimate": 224, + "harnessHeapDeltaMb": 0.4, "statSampleCount": 15, "rssSampleCount": 15, "cpuSampleCount": 15, "exitCode": 0, - "stdoutPreview": "import loop profile: 2 runs, p50 74ms / p95 74ms / plugin delta RSS 0.5MB / plugin delta CPU 4ms", - "stderrPreview": "" + "stdoutPreview": "import loop profile: 2 runs, p50 1523ms / p95 1524ms / plugin delta RSS 0.1MB / plugin delta CPU 176ms", + "stderrPreview": "(node:69506) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" }, { - "wallMs": 375, - "peakRssMb": 60.1, - "rssDeltaMb": 31.4, - "peakCpuPercent": 100, - "cpuMsEstimate": 173, - "harnessHeapDeltaMb": 1.4, - "statSampleCount": 15, - "rssSampleCount": 15, - "cpuSampleCount": 15, + "wallMs": 8922, + "peakRssMb": 60.7, + "rssDeltaMb": 60.5, + "peakCpuPercent": 11.5, + "cpuMsEstimate": 161, + "harnessHeapDeltaMb": 0.2, + "statSampleCount": 18, + "rssSampleCount": 18, + "cpuSampleCount": 18, "exitCode": 0, - "stdoutPreview": "import loop profile: 2 runs, p50 74ms / p95 75ms / plugin delta RSS 2.9MB / plugin delta CPU 1ms", - "stderrPreview": "" + "stdoutPreview": "import loop profile: 2 runs, p50 1522ms / p95 2029ms / plugin delta RSS 0.1MB / plugin delta CPU 138ms", + "stderrPreview": "(node:69908) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)" } ], "wallMs": { - "min": 375, - "median": 375, - "max": 378 + "min": 7450, + "median": 8684, + "max": 8922 }, "peakRssMb": { - "min": 60.1, - "median": 60.1, - "max": 60.2 + "min": 58.5, + "median": 59.4, + "max": 60.7 }, "rssDeltaMb": { - "min": 31.4, - "median": 31.4, - "max": 31.4 + "min": 58.2, + "median": 59.2, + "max": 60.5 }, "peakCpuPercent": { - "min": 100, - "median": 100, - "max": 120 + "min": 11.5, + "median": 12.8, + "max": 20.6 }, "cpuMsEstimate": { - "min": 167, - "median": 173, - "max": 180 + "min": 161, + "median": 165, + "max": 224 }, "harnessHeapDeltaMb": { - "min": 1.3, - "median": 1.4, - "max": 1.4 + "min": -0.1, + "median": 0.2, + "max": 0.4 }, - "statSampleCount": 45, - "rssSampleCount": 45, - "cpuSampleCount": 45, + "statSampleCount": 50, + "rssSampleCount": 50, + "cpuSampleCount": 50, "exitCodes": [ 0 ] diff --git a/reports/crabpot-runtime-profile.md b/reports/crabpot-runtime-profile.md index f076e8a..a9bbaa0 100644 --- a/reports/crabpot-runtime-profile.md +++ b/reports/crabpot-runtime-profile.md @@ -8,16 +8,16 @@ Samples per command: 3 | Metric | Value | | ---------------------- | ------------------ | | Commands | 9 | -| P50 wall time | 547 ms | -| Command P95 wall time | 570 ms | +| P50 wall time | 2072 ms | +| Command P95 wall time | 8684 ms | | Wall time basis | command-median-p95 | | Profile samples | 27 | -| RSS samples | 496 | -| CPU samples | 496 | -| Max peak RSS | 88.3 MB | -| Max RSS delta | 59.6 MB | -| Max CPU estimate | 611 ms | -| Max harness heap delta | 2.1 MB | +| RSS samples | 181 | +| CPU samples | 181 | +| Max peak RSS | 80.5 MB | +| Max RSS delta | 80.2 MB | +| Max CPU estimate | 756 ms | +| Max harness heap delta | 3.1 MB | ## Target OpenClaw Registry Surface @@ -25,11 +25,11 @@ Samples per command: 3 | ---------------------- | ---------- | | status | ok | | configuredPath | ./openclaw | -| compatRecords | 56 | -| hookNames | 34 | -| apiRegistrars | 48 | +| compatRecords | 61 | +| hookNames | 35 | +| apiRegistrars | 49 | | capturedRegistrars | 26 | -| sdkExports | 291 | +| sdkExports | 294 | | manifestFields | 35 | | manifestContractFields | 17 | @@ -37,38 +37,38 @@ Samples per command: 3 | Metric | Value | | --------------------- | ----- | -| fixtures | 32 | -| sourceFiles | 979 | -| observedHooks | 82 | -| observedRegistrations | 112 | +| fixtures | 33 | +| sourceFiles | 998 | +| observedHooks | 84 | +| observedRegistrations | 114 | | observedSdkImports | 350 | -| contractProbes | 170 | -| issueFindings | 222 | +| contractProbes | 175 | +| issueFindings | 181 | ## Boot And Memory Samples | ID | Label | Median wall | Max wall | Max peak RSS | Max RSS delta | CPU estimate | Heap delta | RSS/CPU samples | Exit codes | | ---------------------- | ----------------------------------------------- | ----------- | -------- | ------------ | ------------- | ------------ | ---------- | --------------- | ---------- | -| node-boot | Node boot | 31 ms | 32 ms | 30.2 MB | 0 MB | 0 ms | 0.4 MB | 3/3 | 0 | -| fixture-inspection | Fixture inspection | 474 ms | 480 ms | 85.6 MB | 56.9 MB | 490 ms | 1.9 MB | 56/56 | 0 | -| compat-report-registry | Compatibility report plus target registry parse | 547 ms | 553 ms | 84.9 MB | 54.9 MB | 555 ms | 2.1 MB | 64/64 | 0 | -| contract-capture | Contract capture inventory | 547 ms | 561 ms | 85.3 MB | 56 MB | 552 ms | 2.1 MB | 64/64 | 0 | -| synthetic-probe-plan | Synthetic probe plan | 559 ms | 568 ms | 85.1 MB | 55.3 MB | 569 ms | 2 MB | 65/65 | 0 | -| cold-import-readiness | Cold import readiness | 554 ms | 560 ms | 88.3 MB | 59.6 MB | 582 ms | 1.9 MB | 66/66 | 0 | -| workspace-plan | Workspace execution plan | 570 ms | 570 ms | 88.1 MB | 59.4 MB | 594 ms | 2 MB | 66/66 | 0 | -| platform-probes | Platform and loader probes | 570 ms | 598 ms | 86.2 MB | 57 MB | 611 ms | 1.9 MB | 67/67 | 0 | -| import-loop-profile | Repeated cold import capture loop | 375 ms | 378 ms | 60.2 MB | 31.4 MB | 180 ms | 1.4 MB | 45/45 | 0 | +| node-boot | Node boot | 793 ms | 809 ms | 0.3 MB | 0 MB | 0 ms | 1.1 MB | 3/3 | 0 | +| fixture-inspection | Fixture inspection | 2891 ms | 3373 ms | 80.5 MB | 80.2 MB | 756 ms | 3.1 MB | 24/24 | 0 | +| compat-report-registry | Compatibility report plus target registry parse | 1582 ms | 1924 ms | 74.2 MB | 73.8 MB | 335 ms | 1.8 MB | 13/13 | 0 | +| contract-capture | Contract capture inventory | 2072 ms | 2145 ms | 79.3 MB | 79 MB | 304 ms | 2 MB | 17/17 | 0 | +| synthetic-probe-plan | Synthetic probe plan | 3264 ms | 3282 ms | 78.7 MB | 78.4 MB | 341 ms | 3 MB | 27/27 | 0 | +| cold-import-readiness | Cold import readiness | 1605 ms | 1644 ms | 76.3 MB | 76.1 MB | 308 ms | 0.7 MB | 12/12 | 0 | +| workspace-plan | Workspace execution plan | 1623 ms | 1635 ms | 78.3 MB | 78.1 MB | 389 ms | -0.1 MB | 11/11 | 0 | +| platform-probes | Platform and loader probes | 2708 ms | 3496 ms | 74.8 MB | 74.6 MB | 261 ms | 0 MB | 24/24 | 0 | +| import-loop-profile | Repeated cold import capture loop | 8684 ms | 8922 ms | 60.7 MB | 60.5 MB | 224 ms | 0.4 MB | 50/50 | 0 | ## Category Rollups | Category | Commands | P50 wall | P95 wall | Max peak RSS | CPU estimate | RSS/CPU samples | Command IDs | | ---------------- | -------- | -------- | -------- | ------------ | ------------ | --------------- | ---------------------- | -| baseline | 1 | 31 ms | 32 ms | 30.2 MB | 0 ms | 3/3 | node-boot | -| fixture-scan | 1 | 474 ms | 480 ms | 85.6 MB | 490 ms | 56/56 | fixture-inspection | -| target-registry | 1 | 547 ms | 553 ms | 84.9 MB | 555 ms | 64/64 | compat-report-registry | -| contract-capture | 1 | 547 ms | 561 ms | 85.3 MB | 552 ms | 64/64 | contract-capture | -| synthetic-probes | 1 | 559 ms | 568 ms | 85.1 MB | 569 ms | 65/65 | synthetic-probe-plan | -| cold-import | 1 | 554 ms | 560 ms | 88.3 MB | 582 ms | 66/66 | cold-import-readiness | -| workspace-plan | 1 | 570 ms | 570 ms | 88.1 MB | 594 ms | 66/66 | workspace-plan | -| platform-probes | 1 | 570 ms | 598 ms | 86.2 MB | 611 ms | 67/67 | platform-probes | -| import-loop | 1 | 375 ms | 378 ms | 60.2 MB | 180 ms | 45/45 | import-loop-profile | +| baseline | 1 | 793 ms | 809 ms | 0.3 MB | 0 ms | 3/3 | node-boot | +| fixture-scan | 1 | 2891 ms | 3373 ms | 80.5 MB | 756 ms | 24/24 | fixture-inspection | +| target-registry | 1 | 1582 ms | 1924 ms | 74.2 MB | 335 ms | 13/13 | compat-report-registry | +| contract-capture | 1 | 2072 ms | 2145 ms | 79.3 MB | 304 ms | 17/17 | contract-capture | +| synthetic-probes | 1 | 3264 ms | 3282 ms | 78.7 MB | 341 ms | 27/27 | synthetic-probe-plan | +| cold-import | 1 | 1605 ms | 1644 ms | 76.3 MB | 308 ms | 12/12 | cold-import-readiness | +| workspace-plan | 1 | 1623 ms | 1635 ms | 78.3 MB | 389 ms | 11/11 | workspace-plan | +| platform-probes | 1 | 2708 ms | 3496 ms | 74.8 MB | 261 ms | 24/24 | platform-probes | +| import-loop | 1 | 8684 ms | 8922 ms | 60.7 MB | 224 ms | 50/50 | import-loop-profile | diff --git a/reports/crabpot-synthetic-probes.json b/reports/crabpot-synthetic-probes.json index 422ab5a..0e2b310 100644 --- a/reports/crabpot-synthetic-probes.json +++ b/reports/crabpot-synthetic-probes.json @@ -1,15 +1,15 @@ { "generatedAt": "deterministic", "summary": { - "fixtureCount": 32, - "probeCount": 288, - "hookProbeCount": 86, - "registrationProbeCount": 202, - "readyCount": 288, + "fixtureCount": 33, + "probeCount": 292, + "hookProbeCount": 88, + "registrationProbeCount": 204, + "readyCount": 292, "blockedCount": 0, - "directExecutionCount": 111, + "directExecutionCount": 112, "optInExecutionCount": 25, - "metadataOnlyCount": 66 + "metadataOnlyCount": 67 }, "probes": [ { @@ -1833,6 +1833,56 @@ }, "source": "plugins/kitchen-sink/src/generated-hooks.js:36" }, + { + "id": "hook.before_agent_start:nemoclaw:plugins-nemoclaw-nemoclaw-src-runtime-context-ts-474", + "fixture": "nemoclaw", + "kind": "hook", + "seam": "before_agent_start", + "status": "ready", + "blocker": null, + "assertions": [ + "legacy startup hook payload is accepted", + "migration metadata can map to prompt/model hooks" + ], + "syntheticEvent": { + "agentId": "agent-fixture", + "runId": "run-fixture", + "config": { + "source": "plugin-inspector" + } + }, + "syntheticContext": { + "runId": "run-fixture", + "agentId": "agent-fixture", + "sessionId": "session-fixture" + }, + "source": "plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474" + }, + { + "id": "hook.before_tool_call:nemoclaw:plugins-nemoclaw-nemoclaw-src-index-ts-384", + "fixture": "nemoclaw", + "kind": "hook", + "seam": "before_tool_call", + "status": "ready", + "blocker": null, + "assertions": [ + "block/allow return shapes are preserved", + "terminal and approval metadata are present" + ], + "syntheticEvent": { + "runId": "run-fixture", + "toolName": "fixture_tool", + "params": {}, + "toolCallId": "call-fixture" + }, + "syntheticContext": { + "runId": "run-fixture", + "agentId": "agent-fixture", + "sessionId": "session-fixture", + "toolName": "fixture_tool" + }, + "source": "plugins/nemoclaw/nemoclaw/src/index.ts:384" + }, { "id": "hook.agent_end:memory-tencentdb:plugins-memory-tencentdb-crabpot-package-index-ts-820", "fixture": "memory-tencentdb", @@ -5413,6 +5463,53 @@ }, "source": "plugins/kitchen-sink/src/kitchen-runtime.js:88" }, + { + "id": "registration.registerCommand:nemoclaw:plugins-nemoclaw-nemoclaw-src-index-ts-336", + "fixture": "nemoclaw", + "kind": "registration", + "seam": "registerCommand", + "status": "ready", + "blocker": null, + "assertions": [ + "command id is stable", + "interactive command payload is captured" + ], + "syntheticArguments": [ + { + "name": "fixture-command", + "handler": "function" + } + ], + "execution": { + "mode": "direct", + "callableProperties": [ + "handler", + "run", + "execute" + ] + }, + "source": "plugins/nemoclaw/nemoclaw/src/index.ts:336" + }, + { + "id": "registration.registerProvider:nemoclaw:plugins-nemoclaw-nemoclaw-src-index-ts-372", + "fixture": "nemoclaw", + "kind": "registration", + "seam": "registerProvider", + "status": "ready", + "blocker": null, + "assertions": [ + "registration arguments are captured" + ], + "syntheticArguments": [ + {} + ], + "execution": { + "mode": "metadata-only", + "callableProperties": [], + "reason": "provider descriptors are captured as registration metadata before provider runtime execution" + }, + "source": "plugins/nemoclaw/nemoclaw/src/index.ts:372" + }, { "id": "registration.registerCli:memory-tencentdb:plugins-memory-tencentdb-crabpot-package-index-ts-957", "fixture": "memory-tencentdb", diff --git a/reports/crabpot-synthetic-probes.md b/reports/crabpot-synthetic-probes.md index 62bb9bc..ca36fe5 100644 --- a/reports/crabpot-synthetic-probes.md +++ b/reports/crabpot-synthetic-probes.md @@ -6,15 +6,15 @@ Generated: deterministic | Metric | Value | | ------------------- | ----- | -| Fixtures | 32 | -| Probes | 288 | -| Hook probes | 86 | -| Registration probes | 202 | -| Ready | 288 | +| Fixtures | 33 | +| Probes | 292 | +| Hook probes | 88 | +| Registration probes | 204 | +| Ready | 292 | | Blocked | 0 | -| Direct execution | 111 | +| Direct execution | 112 | | Opt-in execution | 25 | -| Metadata-only | 66 | +| Metadata-only | 67 | ## Probe Inventory @@ -97,6 +97,8 @@ Generated: deterministic | kitchen-sink | hook | subagent_spawned | ready | hook-direct | plugins/kitchen-sink/src/generated-hooks.js:34 | spawn payload is preserved; parent/subagent metadata are present | | kitchen-sink | hook | subagent_spawning | ready | hook-direct | plugins/kitchen-sink/src/generated-hooks.js:35 | hook payload and return value are captured | | kitchen-sink | hook | tool_result_persist | ready | hook-direct | plugins/kitchen-sink/src/generated-hooks.js:36 | hook payload and return value are captured | +| nemoclaw | hook | before_agent_start | ready | hook-direct | plugins/nemoclaw/nemoclaw/src/runtime-context.ts:474 | legacy startup hook payload is accepted; migration metadata can map to prompt/model hooks | +| nemoclaw | hook | before_tool_call | ready | hook-direct | plugins/nemoclaw/nemoclaw/src/index.ts:384 | block/allow return shapes are preserved; terminal and approval metadata are present | | memory-tencentdb | hook | agent_end | ready | hook-direct | plugins/memory-tencentdb/.crabpot-package/index.ts:820 | final conversation payload is redacted as expected; agent id and run metadata are present | | memory-tencentdb | hook | before_prompt_build | ready | hook-direct | plugins/memory-tencentdb/.crabpot-package/index.ts:464 | prompt mutation result is preserved; agent and conversation metadata are present | | memory-tencentdb | hook | gateway_stop | ready | hook-direct | plugins/memory-tencentdb/.crabpot-package/index.ts:745 | hook payload and return value are captured | @@ -233,6 +235,8 @@ Generated: deterministic | kitchen-sink | registration | registerWebFetchProvider | ready | metadata-only | plugins/kitchen-sink/src/kitchen-runtime.js:91 | registration arguments are captured | | kitchen-sink | registration | registerWebSearchProvider | ready | metadata-only | plugins/kitchen-sink/src/generated-registrars.js:44 | registration arguments are captured | | kitchen-sink | registration | registerWebSearchProvider | ready | metadata-only | plugins/kitchen-sink/src/kitchen-runtime.js:88 | registration arguments are captured | +| nemoclaw | registration | registerCommand | ready | direct | plugins/nemoclaw/nemoclaw/src/index.ts:336 | command id is stable; interactive command payload is captured | +| nemoclaw | registration | registerProvider | ready | metadata-only | plugins/nemoclaw/nemoclaw/src/index.ts:372 | registration arguments are captured | | memory-tencentdb | registration | registerCli | ready | direct | plugins/memory-tencentdb/.crabpot-package/index.ts:957 | command name is stable; argument schema is captured | | memory-tencentdb | registration | registerTool | ready | direct | plugins/memory-tencentdb/.crabpot-package/index.ts:268 | tool name is stable; input schema is captured; result shape metadata is captured | | memory-tencentdb | registration | registerTool | ready | direct | plugins/memory-tencentdb/.crabpot-package/index.ts:365 | tool name is stable; input schema is captured; result shape metadata is captured | diff --git a/reports/crabpot-workspace-plan.json b/reports/crabpot-workspace-plan.json index a1fc60b..d980019 100644 --- a/reports/crabpot-workspace-plan.json +++ b/reports/crabpot-workspace-plan.json @@ -10,19 +10,19 @@ "configuredPath": "./openclaw" }, "summary": { - "fixtureCount": 32, - "entrypointCount": 39, + "fixtureCount": 33, + "entrypointCount": 40, "installStepCount": 19, "auditStepCount": 19, - "buildStepCount": 10, - "artifactStepCount": 39, - "captureStepCount": 39, - "syntheticProbeStepCount": 39, + "buildStepCount": 11, + "artifactStepCount": 40, + "captureStepCount": 40, + "syntheticProbeStepCount": 40, "targetOpenClawLinkStepCount": 27, "tsLoaderEntrypointCount": 21, "jitiAlternativeCount": 21, "missingBuildScriptCount": 0, - "sdkAliasRequiredCount": 6 + "sdkAliasRequiredCount": 5 }, "fixtures": [ { @@ -1453,6 +1453,73 @@ } ] }, + { + "id": "nemoclaw", + "entrypoints": [ + { + "id": "cold-import.extension:nemoclaw:plugins-nemoclaw-nemoclaw-dist-index-js", + "fixture": "nemoclaw", + "packagePath": "plugins/nemoclaw/nemoclaw/package.json", + "packageName": "nemoclaw", + "entrypoint": "plugins/nemoclaw/nemoclaw/dist/index.js", + "status": "build-required", + "packageManager": "npm", + "lockfile": "plugins/nemoclaw/nemoclaw/package-lock.json", + "loaderStrategy": { + "source": "native-node", + "primary": "node", + "alternatives": [], + "reason": "entrypoint extension can be loaded by Node without a TypeScript source loader" + }, + "requiredCapabilities": [ + "build", + "capture-shim", + "synthetic-probes" + ], + "blockers": [ + { + "code": "build-required", + "message": "entrypoint points at build output that is absent in the fixture checkout", + "evidence": "plugins/nemoclaw/nemoclaw/dist/index.js" + } + ], + "steps": [ + { + "kind": "prepare", + "command": "mkdir -p .crabpot/workspaces/nemoclaw && rsync -a --delete plugins/nemoclaw/nemoclaw/ .crabpot/workspaces/nemoclaw/", + "cwd": ".", + "reason": "copy fixture package into an isolated mutable workspace" + }, + { + "kind": "prepare-artifacts", + "command": "mkdir -p .crabpot/results/nemoclaw", + "cwd": ".", + "reason": "create a stable result directory for capture and synthetic probe artifacts" + }, + { + "kind": "build", + "command": "npm run build", + "cwd": ".crabpot/workspaces/nemoclaw", + "reason": "produce missing OpenClaw build entrypoint" + }, + { + "kind": "capture", + "command": "CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/index.js --mock-sdk --output ../../results/nemoclaw/cold-import-extension-nemoclaw-plugins-nemoclaw-nemoclaw-dist-index-js.capture.json", + "cwd": ".crabpot/workspaces/nemoclaw", + "artifactPath": ".crabpot/results/nemoclaw/cold-import-extension-nemoclaw-plugins-nemoclaw-nemoclaw-dist-index-js.capture.json", + "reason": "cold import the entrypoint against the capture shim" + }, + { + "kind": "synthetic-probe", + "command": "CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/index.js --mock-sdk --output ../../results/nemoclaw/cold-import-extension-nemoclaw-plugins-nemoclaw-nemoclaw-dist-index-js.synthetic.json", + "cwd": ".crabpot/workspaces/nemoclaw", + "artifactPath": ".crabpot/results/nemoclaw/cold-import-extension-nemoclaw-plugins-nemoclaw-nemoclaw-dist-index-js.synthetic.json", + "reason": "invoke retained hook and registration handlers with synthetic payloads" + } + ] + } + ] + }, { "id": "memory-tencentdb", "entrypoints": [ @@ -2777,7 +2844,7 @@ "packagePath": "plugins/codex-app-server/package.json", "packageName": "openclaw-codex-app-server", "entrypoint": "plugins/codex-app-server/index.ts", - "status": "sdk-alias-required", + "status": "ts-loader-required", "packageManager": "pnpm", "lockfile": "plugins/codex-app-server/pnpm-lock.yaml", "loaderStrategy": { @@ -2791,7 +2858,6 @@ "requiredCapabilities": [ "capture-shim", "dependency-install", - "sdk-alias-compat", "synthetic-probes", "target-openclaw-link", "ts-loader" @@ -2806,21 +2872,6 @@ "code": "dependency-install-required", "message": "package declares runtime dependencies that must be installed before cold import", "evidence": "ws" - }, - { - "code": "sdk-alias-required", - "message": "fixture imports an SDK alias missing from target OpenClaw package exports", - "evidence": "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:104" - }, - { - "code": "sdk-alias-required", - "message": "fixture imports an SDK alias missing from target OpenClaw package exports", - "evidence": "openclaw/plugin-sdk/discord @ plugins/codex-app-server/src/controller.ts:106" - }, - { - "code": "sdk-alias-required", - "message": "fixture imports an SDK alias missing from target OpenClaw package exports", - "evidence": "openclaw/plugin-sdk/telegram-account @ plugins/codex-app-server/src/controller.ts:105" } ], "steps": [ diff --git a/reports/crabpot-workspace-plan.md b/reports/crabpot-workspace-plan.md index fef98e2..d110672 100644 --- a/reports/crabpot-workspace-plan.md +++ b/reports/crabpot-workspace-plan.md @@ -8,19 +8,19 @@ Opt-in: CRABPOT_EXECUTE_ISOLATED=1 | Metric | Value | | ----------------------------- | ----- | -| Fixtures | 32 | -| Entrypoints | 39 | -| Artifact dirs | 39 | +| Fixtures | 33 | +| Entrypoints | 40 | +| Artifact dirs | 40 | | Install steps | 19 | | Audit steps | 19 | -| Build steps | 10 | -| Capture steps | 39 | -| Synthetic probe steps | 39 | +| Build steps | 11 | +| Capture steps | 40 | +| Synthetic probe steps | 40 | | Target OpenClaw link steps | 27 | | TypeScript loader entrypoints | 21 | | Jiti fallback candidates | 21 | | Missing build scripts | 0 | -| SDK alias required | 6 | +| SDK alias required | 5 | ## Entrypoint Workspaces @@ -45,6 +45,7 @@ Opt-in: CRABPOT_EXECUTE_ISOLATED=1 | kitchen-sink | npm | ready | node | plugins/kitchen-sink/src/index.js | capture-shim, synthetic-probes, target-openclaw-link | prepare: mkdir -p .crabpot/workspaces/kitchen-sink && rsync -a --delete plugins/kitchen-sink/ .crabpot/workspaces/kitchen-sink/; prepare-artifacts: mkdir -p .crabpot/results/kitchen-sink; link-openclaw: npm pkg set dependencies.openclaw="file:../../../openclaw"; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./src/index.js --mock-sdk --output ../../results/kitchen-sink/cold-import-extension-kitchen-sink-plugins-kitchen-sink-src-index-js.capture.json -> .crabpot/results/kitchen-sink/cold-import-extension-kitchen-sink-plugins-kitchen-sink-src-index-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./src/index.js --mock-sdk --output ../../results/kitchen-sink/cold-import-extension-kitchen-sink-plugins-kitchen-sink-src-index-js.synthetic.json -> .crabpot/results/kitchen-sink/cold-import-extension-kitchen-sink-plugins-kitchen-sink-src-index-js.synthetic.json | | kitchen-sink | npm | ready | node | plugins/kitchen-sink/src/index.js | capture-shim, synthetic-probes, target-openclaw-link | prepare: mkdir -p .crabpot/workspaces/kitchen-sink && rsync -a --delete plugins/kitchen-sink/ .crabpot/workspaces/kitchen-sink/; prepare-artifacts: mkdir -p .crabpot/results/kitchen-sink; link-openclaw: npm pkg set dependencies.openclaw="file:../../../openclaw"; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./src/index.js --mock-sdk --output ../../results/kitchen-sink/cold-import-runtimeExtension-kitchen-sink-plugins-kitchen-sink-src-index-js.capture.json -> .crabpot/results/kitchen-sink/cold-import-runtimeExtension-kitchen-sink-plugins-kitchen-sink-src-index-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./src/index.js --mock-sdk --output ../../results/kitchen-sink/cold-import-runtimeExtension-kitchen-sink-plugins-kitchen-sink-src-index-js.synthetic.json -> .crabpot/results/kitchen-sink/cold-import-runtimeExtension-kitchen-sink-plugins-kitchen-sink-src-index-js.synthetic.json | | kitchen-sink | npm | ready | node | plugins/kitchen-sink/src/setup.js | capture-shim, synthetic-probes, target-openclaw-link | prepare: mkdir -p .crabpot/workspaces/kitchen-sink && rsync -a --delete plugins/kitchen-sink/ .crabpot/workspaces/kitchen-sink/; prepare-artifacts: mkdir -p .crabpot/results/kitchen-sink; link-openclaw: npm pkg set dependencies.openclaw="file:../../../openclaw"; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./src/setup.js --mock-sdk --output ../../results/kitchen-sink/cold-import-setupEntry-kitchen-sink-plugins-kitchen-sink-src-setup-js.capture.json -> .crabpot/results/kitchen-sink/cold-import-setupEntry-kitchen-sink-plugins-kitchen-sink-src-setup-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./src/setup.js --mock-sdk --output ../../results/kitchen-sink/cold-import-setupEntry-kitchen-sink-plugins-kitchen-sink-src-setup-js.synthetic.json -> .crabpot/results/kitchen-sink/cold-import-setupEntry-kitchen-sink-plugins-kitchen-sink-src-setup-js.synthetic.json | +| nemoclaw | npm | build-required | node | plugins/nemoclaw/nemoclaw/dist/index.js | build, capture-shim, synthetic-probes | prepare: mkdir -p .crabpot/workspaces/nemoclaw && rsync -a --delete plugins/nemoclaw/nemoclaw/ .crabpot/workspaces/nemoclaw/; prepare-artifacts: mkdir -p .crabpot/results/nemoclaw; build: npm run build; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/index.js --mock-sdk --output ../../results/nemoclaw/cold-import-extension-nemoclaw-plugins-nemoclaw-nemoclaw-dist-index-js.capture.json -> .crabpot/results/nemoclaw/cold-import-extension-nemoclaw-plugins-nemoclaw-nemoclaw-dist-index-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/index.js --mock-sdk --output ../../results/nemoclaw/cold-import-extension-nemoclaw-plugins-nemoclaw-nemoclaw-dist-index-js.synthetic.json -> .crabpot/results/nemoclaw/cold-import-extension-nemoclaw-plugins-nemoclaw-nemoclaw-dist-index-js.synthetic.json | | memory-tencentdb | npm | ts-loader-required | tsx (+jiti) | plugins/memory-tencentdb/.crabpot-package/index.ts | capture-shim, dependency-install, synthetic-probes, target-openclaw-link, ts-loader | prepare: mkdir -p .crabpot/workspaces/memory-tencentdb && rsync -a --delete plugins/memory-tencentdb/.crabpot-package/ .crabpot/workspaces/memory-tencentdb/; prepare-artifacts: mkdir -p .crabpot/results/memory-tencentdb; link-openclaw: npm pkg set dependencies.openclaw="file:../../../openclaw"; install: npm install --ignore-scripts; audit: npm audit --json > ../../results/memory-tencentdb/package-audit.json || true -> .crabpot/results/memory-tencentdb/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --mock-sdk --output ../../results/memory-tencentdb/cold-import-extension-memory-tencentdb-plugins-memory-tencentdb-crabpot-package-index-ts.capture.json -> .crabpot/results/memory-tencentdb/cold-import-extension-memory-tencentdb-plugins-memory-tencentdb-crabpot-package-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --mock-sdk --output ../../results/memory-tencentdb/cold-import-extension-memory-tencentdb-plugins-memory-tencentdb-crabpot-package-index-ts.synthetic.json -> .crabpot/results/memory-tencentdb/cold-import-extension-memory-tencentdb-plugins-memory-tencentdb-crabpot-package-index-ts.synthetic.json | | ddingtalk | pnpm | ts-loader-required | tsx (+jiti) | plugins/ddingtalk/index.ts | capture-shim, dependency-install, synthetic-probes, target-openclaw-link, ts-loader | prepare: mkdir -p .crabpot/workspaces/ddingtalk && rsync -a --delete plugins/ddingtalk/ .crabpot/workspaces/ddingtalk/; prepare-artifacts: mkdir -p .crabpot/results/ddingtalk; link-openclaw: pnpm pkg set dependencies.openclaw="file:../../../openclaw"; install: pnpm install --ignore-scripts; audit: pnpm audit --json > ../../results/ddingtalk/package-audit.json || true -> .crabpot/results/ddingtalk/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --mock-sdk --output ../../results/ddingtalk/cold-import-extension-ddingtalk-plugins-ddingtalk-index-ts.capture.json -> .crabpot/results/ddingtalk/cold-import-extension-ddingtalk-plugins-ddingtalk-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --mock-sdk --output ../../results/ddingtalk/cold-import-extension-ddingtalk-plugins-ddingtalk-index-ts.synthetic.json -> .crabpot/results/ddingtalk/cold-import-extension-ddingtalk-plugins-ddingtalk-index-ts.synthetic.json | | dingtalk-connector | npm | build-required | node | plugins/dingtalk-connector/dist/index.mjs | build, capture-shim, synthetic-probes, target-openclaw-link | prepare: mkdir -p .crabpot/workspaces/dingtalk-connector && rsync -a --delete plugins/dingtalk-connector/ .crabpot/workspaces/dingtalk-connector/; prepare-artifacts: mkdir -p .crabpot/results/dingtalk-connector; link-openclaw: npm pkg set dependencies.openclaw="file:../../../openclaw"; build: npm run build; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/index.mjs --mock-sdk --output ../../results/dingtalk-connector/cold-import-extension-dingtalk-connector-plugins-dingtalk-connector-dist-index-mjs.capture.json -> .crabpot/results/dingtalk-connector/cold-import-extension-dingtalk-connector-plugins-dingtalk-connector-dist-index-mjs.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/index.mjs --mock-sdk --output ../../results/dingtalk-connector/cold-import-extension-dingtalk-connector-plugins-dingtalk-connector-dist-index-mjs.synthetic.json -> .crabpot/results/dingtalk-connector/cold-import-extension-dingtalk-connector-plugins-dingtalk-connector-dist-index-mjs.synthetic.json | @@ -61,7 +62,7 @@ Opt-in: CRABPOT_EXECUTE_ISOLATED=1 | memos-cloud | npm | review-required | node | plugins/memos-cloud/index.js | capture-shim, side-effect-sandbox, synthetic-probes | prepare: mkdir -p .crabpot/workspaces/memos-cloud && rsync -a --delete plugins/memos-cloud/ .crabpot/workspaces/memos-cloud/; prepare-artifacts: mkdir -p .crabpot/results/memos-cloud; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./index.js --mock-sdk --output ../../results/memos-cloud/cold-import-extension-memos-cloud-plugins-memos-cloud-index-js.capture.json -> .crabpot/results/memos-cloud/cold-import-extension-memos-cloud-plugins-memos-cloud-index-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./index.js --mock-sdk --output ../../results/memos-cloud/cold-import-extension-memos-cloud-plugins-memos-cloud-index-js.synthetic.json -> .crabpot/results/memos-cloud/cold-import-extension-memos-cloud-plugins-memos-cloud-index-js.synthetic.json | | clawmetry | npm | sdk-alias-required | tsx (+jiti) | plugins/clawmetry/clawhub-plugin/index.ts | capture-shim, dependency-install, sdk-alias-compat, synthetic-probes, ts-loader | prepare: mkdir -p .crabpot/workspaces/clawmetry && rsync -a --delete plugins/clawmetry/clawhub-plugin/ .crabpot/workspaces/clawmetry/; prepare-artifacts: mkdir -p .crabpot/results/clawmetry; install: npm install --ignore-scripts; audit: npm audit --json > ../../results/clawmetry/package-audit.json || true -> .crabpot/results/clawmetry/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --mock-sdk --output ../../results/clawmetry/cold-import-extension-clawmetry-plugins-clawmetry-clawhub-plugin-index-ts.capture.json -> .crabpot/results/clawmetry/cold-import-extension-clawmetry-plugins-clawmetry-clawhub-plugin-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --mock-sdk --output ../../results/clawmetry/cold-import-extension-clawmetry-plugins-clawmetry-clawhub-plugin-index-ts.synthetic.json -> .crabpot/results/clawmetry/cold-import-extension-clawmetry-plugins-clawmetry-clawhub-plugin-index-ts.synthetic.json | | clawmetry | npm | sdk-alias-required | node | plugins/clawmetry/clawhub-plugin/dist/index.js | build, capture-shim, sdk-alias-compat, synthetic-probes | prepare: mkdir -p .crabpot/workspaces/clawmetry && rsync -a --delete plugins/clawmetry/clawhub-plugin/ .crabpot/workspaces/clawmetry/; prepare-artifacts: mkdir -p .crabpot/results/clawmetry; build: npm run build; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/index.js --mock-sdk --output ../../results/clawmetry/cold-import-runtimeExtension-clawmetry-plugins-clawmetry-clawhub-plugin-dist-index-js.capture.json -> .crabpot/results/clawmetry/cold-import-runtimeExtension-clawmetry-plugins-clawmetry-clawhub-plugin-dist-index-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/index.js --mock-sdk --output ../../results/clawmetry/cold-import-runtimeExtension-clawmetry-plugins-clawmetry-clawhub-plugin-dist-index-js.synthetic.json -> .crabpot/results/clawmetry/cold-import-runtimeExtension-clawmetry-plugins-clawmetry-clawhub-plugin-dist-index-js.synthetic.json | -| codex-app-server | pnpm | sdk-alias-required | tsx (+jiti) | plugins/codex-app-server/index.ts | capture-shim, dependency-install, sdk-alias-compat, synthetic-probes, target-openclaw-link, ts-loader | prepare: mkdir -p .crabpot/workspaces/codex-app-server && rsync -a --delete plugins/codex-app-server/ .crabpot/workspaces/codex-app-server/; prepare-artifacts: mkdir -p .crabpot/results/codex-app-server; link-openclaw: pnpm pkg set dependencies.openclaw="file:../../../openclaw"; install: pnpm install --ignore-scripts; audit: pnpm audit --json > ../../results/codex-app-server/package-audit.json || true -> .crabpot/results/codex-app-server/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --mock-sdk --output ../../results/codex-app-server/cold-import-extension-codex-app-server-plugins-codex-app-server-index-ts.capture.json -> .crabpot/results/codex-app-server/cold-import-extension-codex-app-server-plugins-codex-app-server-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --mock-sdk --output ../../results/codex-app-server/cold-import-extension-codex-app-server-plugins-codex-app-server-index-ts.synthetic.json -> .crabpot/results/codex-app-server/cold-import-extension-codex-app-server-plugins-codex-app-server-index-ts.synthetic.json | +| codex-app-server | pnpm | ts-loader-required | tsx (+jiti) | plugins/codex-app-server/index.ts | capture-shim, dependency-install, synthetic-probes, target-openclaw-link, ts-loader | prepare: mkdir -p .crabpot/workspaces/codex-app-server && rsync -a --delete plugins/codex-app-server/ .crabpot/workspaces/codex-app-server/; prepare-artifacts: mkdir -p .crabpot/results/codex-app-server; link-openclaw: pnpm pkg set dependencies.openclaw="file:../../../openclaw"; install: pnpm install --ignore-scripts; audit: pnpm audit --json > ../../results/codex-app-server/package-audit.json || true -> .crabpot/results/codex-app-server/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --mock-sdk --output ../../results/codex-app-server/cold-import-extension-codex-app-server-plugins-codex-app-server-index-ts.capture.json -> .crabpot/results/codex-app-server/cold-import-extension-codex-app-server-plugins-codex-app-server-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --mock-sdk --output ../../results/codex-app-server/cold-import-extension-codex-app-server-plugins-codex-app-server-index-ts.synthetic.json -> .crabpot/results/codex-app-server/cold-import-extension-codex-app-server-plugins-codex-app-server-index-ts.synthetic.json | | web-search-plus | npm | ts-loader-required | tsx (+jiti) | plugins/web-search-plus/index.ts | capture-shim, side-effect-sandbox, synthetic-probes, target-openclaw-link, ts-loader | prepare: mkdir -p .crabpot/workspaces/web-search-plus && rsync -a --delete plugins/web-search-plus/ .crabpot/workspaces/web-search-plus/; prepare-artifacts: mkdir -p .crabpot/results/web-search-plus; link-openclaw: npm pkg set dependencies.openclaw="file:../../../openclaw"; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --mock-sdk --output ../../results/web-search-plus/cold-import-extension-web-search-plus-plugins-web-search-plus-index-ts.capture.json -> .crabpot/results/web-search-plus/cold-import-extension-web-search-plus-plugins-web-search-plus-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --mock-sdk --output ../../results/web-search-plus/cold-import-extension-web-search-plus-plugins-web-search-plus-index-ts.synthetic.json -> .crabpot/results/web-search-plus/cold-import-extension-web-search-plus-plugins-web-search-plus-index-ts.synthetic.json | | apify | npm | ts-loader-required | tsx (+jiti) | plugins/apify/src/index.ts | capture-shim, dependency-install, synthetic-probes, target-openclaw-link, ts-loader | prepare: mkdir -p .crabpot/workspaces/apify && rsync -a --delete plugins/apify/ .crabpot/workspaces/apify/; prepare-artifacts: mkdir -p .crabpot/results/apify; link-openclaw: npm pkg set dependencies.openclaw="file:../../../openclaw"; install: npm install --ignore-scripts; audit: npm audit --json > ../../results/apify/package-audit.json || true -> .crabpot/results/apify/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./src/index.ts --mock-sdk --output ../../results/apify/cold-import-extension-apify-plugins-apify-src-index-ts.capture.json -> .crabpot/results/apify/cold-import-extension-apify-plugins-apify-src-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./src/index.ts --mock-sdk --output ../../results/apify/cold-import-extension-apify-plugins-apify-src-index-ts.synthetic.json -> .crabpot/results/apify/cold-import-extension-apify-plugins-apify-src-index-ts.synthetic.json | | inworld-tts | pnpm | ts-loader-required | tsx (+jiti) | plugins/inworld-tts/index.ts | capture-shim, synthetic-probes, target-openclaw-link, ts-loader | prepare: mkdir -p .crabpot/workspaces/inworld-tts && rsync -a --delete plugins/inworld-tts/ .crabpot/workspaces/inworld-tts/; prepare-artifacts: mkdir -p .crabpot/results/inworld-tts; link-openclaw: pnpm pkg set dependencies.openclaw="file:../../../openclaw"; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --mock-sdk --output ../../results/inworld-tts/cold-import-extension-inworld-tts-plugins-inworld-tts-index-ts.capture.json -> .crabpot/results/inworld-tts/cold-import-extension-inworld-tts-plugins-inworld-tts-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --mock-sdk --output ../../results/inworld-tts/cold-import-extension-inworld-tts-plugins-inworld-tts-index-ts.synthetic.json -> .crabpot/results/inworld-tts/cold-import-extension-inworld-tts-plugins-inworld-tts-index-ts.synthetic.json | diff --git a/test/cold-import-readiness.test.mjs b/test/cold-import-readiness.test.mjs index 99a1c02..2a757f9 100644 --- a/test/cold-import-readiness.test.mjs +++ b/test/cold-import-readiness.test.mjs @@ -14,7 +14,7 @@ test("cold import readiness classifies entrypoint blockers", async () => { assert.ok(readiness.summary.buildRequiredCount > 0); assert.ok(readiness.summary.dependencyInstallRequiredCount > 0); - assertHasStatus(readiness, "wecom", "dependency-install-required"); + assertHasBlocker(readiness, "wecom", "dependency-install-required"); assertHasStatus(readiness, "agentchat", "build-required"); assertHasStatus(readiness, "a2a-gateway", "ts-loader-required"); if (report.issues.some((issue) => issue.code === "sdk-export-missing")) { @@ -38,6 +38,14 @@ function assertHasStatus(readiness, fixtureId, status) { ); } +function assertHasBlocker(readiness, fixtureId, code) { + const fixture = readiness.fixtures.find((item) => item.id === fixtureId); + assert.ok( + fixture?.entrypoints.some((entrypoint) => entrypoint.blockers.some((blocker) => blocker.code === code)), + `expected ${fixtureId} to have ${code} blocker`, + ); +} + function assertHasAnyStatus(readiness, status) { assert.ok( readiness.fixtures.some((fixture) => fixture.entrypoints.some((entrypoint) => entrypoint.status === status)), diff --git a/test/report.test.mjs b/test/report.test.mjs index e5248e4..7f9a77d 100644 --- a/test/report.test.mjs +++ b/test/report.test.mjs @@ -42,7 +42,6 @@ test("compatibility report classifies current fixture seams", async () => { assertHasFinding(report.suggestions, "a2a-gateway", "registration-capture-gap"); assertHasFinding(report.suggestions, "wecom", "before-tool-call-probe"); assertHasFinding(report.warnings, "a2a-gateway", "package-manifest-version-drift"); - assertHasFinding(report.warnings, "agentchat", "manifest-unknown-fields"); assertHasFinding(report.warnings, "connectclaw", "legacy-before-agent-start"); assertHasFinding(report.warnings, "mcp-adapter", "package-plugin-api-compat-missing"); assertHasFinding(report.suggestions, "agentchat", "package-build-artifact-entrypoint"); @@ -66,23 +65,25 @@ test("compatibility report classifies current fixture seams", async () => { assertHasIssue(report.issues, "P1", "conversation-access-hook"); assertHasIssue(report.issues, "P2", "package-plugin-api-compat-missing"); assertHasIssue(report.issues, "P2", "package-build-artifact-entrypoint"); - assertHasIssue(report.issues, "P2", "manifest-unknown-fields"); assertHasIssue(report.issues, "P2", "package-typescript-source-entrypoint"); assertHasIssue(report.issues, "P2", "package-dependency-install-required"); assertHasIssueClass(report.issues, "deprecation-warning", "legacy-before-agent-start"); assertHasIssueClass(report.issues, "inspector-gap", "registration-capture-gap"); assertHasIssueClass(report.issues, "upstream-metadata", "package-plugin-api-compat-missing"); if (hasTargetOpenClaw) { + assertHasFinding(report.warnings, "agentchat", "manifest-unknown-fields"); assertHasIssue(report.issues, "P1", "missing-compat-record"); assertHasIssue(report.issues, "P0", "sdk-export-missing"); assertHasIssue(report.issues, "P0", "unknown-hook-name"); + assertHasIssue(report.issues, "P2", "manifest-unknown-fields"); assertHasIssueClass(report.issues, "live-issue", "sdk-export-missing"); assertHasIssueClass(report.issues, "live-issue", "unknown-hook-name"); assertHasIssueClass(report.issues, "compat-gap", "missing-compat-record"); + assertHasProbe(report.contractProbes, "manifest.schema.top-level-fields:agentchat"); + assertHasProbe(report.contractProbes, "manifest.schema.top-level-fields:memos-cloud"); } assertHasProbe(report.contractProbes, "api.capture.runtime-registrars:wecom"); assertHasProbe(report.contractProbes, "hook.before_tool_call.terminal-block-approval:wecom"); - assertHasProbe(report.contractProbes, "manifest.schema.top-level-fields:agentchat"); if (hasTargetOpenClaw) { assertHasProbePrefix(report.contractProbes, "sdk.import.package-export-cold-import:"); assertHasProbePrefix(report.contractProbes, "sdk.import.package-export-cold-import:", "P1"); @@ -94,7 +95,6 @@ test("compatibility report classifies current fixture seams", async () => { assertHasProbe(report.contractProbes, "api.capture.runtime-registrars:hyperspell"); assertHasProbe(report.contractProbes, "hook.compat.before-agent-start-migration:honcho"); assertHasProbe(report.contractProbes, "package.compat.plugin-api-range:secureclaw"); - assertHasProbe(report.contractProbes, "manifest.schema.top-level-fields:memos-cloud"); }); test("markdown report includes review sections", async () => { @@ -131,11 +131,14 @@ test("issue report preserves decision metadata for compat-layer work", async () const report = await buildReport(testReportOptions()); const sdkIssue = report.issues.find((issue) => issue.code === "sdk-export-missing"); const manifestIssue = report.issues.find((issue) => issue.code === "manifest-unknown-fields"); + const pluginCompatIssue = report.issues.find((issue) => issue.code === "package-plugin-api-compat-missing"); const markdown = renderIssuesReport(report); if (report.targetOpenClaw.status !== "ok") { assert.equal(sdkIssue, undefined); - assert.equal(manifestIssue.owner, "plugin"); + assert.equal(manifestIssue, undefined); + assert.equal(pluginCompatIssue.owner, "plugin"); + assert.equal(pluginCompatIssue.decision, "plugin-upstream-fix"); assert.match(markdown, /## Triage Summary/); return; }