chore(reports): refresh compatibility artifacts

This commit is contained in:
Vincent Koc 2026-04-25 16:33:42 -07:00
parent c8308efcf0
commit 8b677c1844
No known key found for this signature in database
23 changed files with 3640 additions and 566 deletions

319
baselines/runtime/main.json Normal file
View File

@ -0,0 +1,319 @@
{
"generatedAt": "deterministic",
"runs": 3,
"targetOpenClaw": {
"status": "ok",
"configuredPath": "../openclaw",
"compatRecords": 19,
"hookNames": 31,
"apiRegistrars": 40,
"capturedRegistrars": 18,
"sdkExports": 307,
"manifestFields": 32,
"manifestContractFields": 16
},
"fixtureInventory": {
"fixtures": 12,
"sourceFiles": 201,
"observedHooks": 18,
"observedRegistrations": 22,
"observedSdkImports": 20,
"contractProbes": 57,
"issueFindings": 58
},
"summary": {
"commandCount": 7,
"p50WallMs": 742,
"p95WallMs": 1273,
"maxPeakRssMb": 65.1
},
"commands": [
{
"id": "node-boot",
"label": "Node boot",
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node -e 0",
"samples": [
{
"wallMs": 1134,
"peakRssMb": 0.4,
"exitCode": 0,
"stdoutPreview": "",
"stderrPreview": ""
},
{
"wallMs": 697,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "",
"stderrPreview": ""
},
{
"wallMs": 917,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "",
"stderrPreview": ""
}
],
"wallMs": {
"min": 697,
"median": 917,
"max": 1134
},
"peakRssMb": {
"min": 0,
"median": 0,
"max": 0.4
},
"exitCodes": [
0
]
},
{
"id": "fixture-inspection",
"label": "Fixture inspection",
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/inspect-fixtures.mjs --check",
"samples": [
{
"wallMs": 1273,
"peakRssMb": 51.8,
"exitCode": 0,
"stdoutPreview": "│ 11 │ 'inworld-tts' │ 'ok' │ '' │ 'definePluginEntry,registerSpeechProvider' │ 'speechProviders' │\n└─────────┴─────────────────────┴────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┴───────────────────┘",
"stderrPreview": ""
},
{
"wallMs": 487,
"peakRssMb": 43.1,
"exitCode": 0,
"stdoutPreview": "│ 11 │ 'inworld-tts' │ 'ok' │ '' │ 'definePluginEntry,registerSpeechProvider' │ 'speechProviders' │\n└─────────┴─────────────────────┴────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┴───────────────────┘",
"stderrPreview": ""
},
{
"wallMs": 1397,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "│ 11 │ 'inworld-tts' │ 'ok' │ '' │ 'definePluginEntry,registerSpeechProvider' │ 'speechProviders' │\n└─────────┴─────────────────────┴────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┴───────────────────┘",
"stderrPreview": ""
}
],
"wallMs": {
"min": 487,
"median": 1273,
"max": 1397
},
"peakRssMb": {
"min": 0,
"median": 43.1,
"max": 51.8
},
"exitCodes": [
0
]
},
{
"id": "compat-report-registry",
"label": "Compatibility report plus target registry parse",
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/generate-report.mjs --check",
"samples": [
{
"wallMs": 1956,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "crabpot report check: pass; 0 breakages, 18 warnings, 40 suggestions, 58 issues\nreport targets: /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.md, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.json, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-issues.md",
"stderrPreview": ""
},
{
"wallMs": 517,
"peakRssMb": 65.1,
"exitCode": 0,
"stdoutPreview": "crabpot report check: pass; 0 breakages, 18 warnings, 40 suggestions, 58 issues\nreport targets: /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.md, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.json, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-issues.md",
"stderrPreview": ""
},
{
"wallMs": 424,
"peakRssMb": 63.5,
"exitCode": 0,
"stdoutPreview": "crabpot report check: pass; 0 breakages, 18 warnings, 40 suggestions, 58 issues\nreport targets: /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.md, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.json, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-issues.md",
"stderrPreview": ""
}
],
"wallMs": {
"min": 424,
"median": 517,
"max": 1956
},
"peakRssMb": {
"min": 0,
"median": 63.5,
"max": 65.1
},
"exitCodes": [
0
]
},
{
"id": "contract-capture",
"label": "Contract capture inventory",
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/capture-contracts.mjs --check",
"samples": [
{
"wallMs": 483,
"peakRssMb": 64.1,
"exitCode": 0,
"stdoutPreview": "contract capture: 30 registrations, 18 hooks, 41 sdk imports, 57 issue probes",
"stderrPreview": ""
},
{
"wallMs": 522,
"peakRssMb": 63.6,
"exitCode": 0,
"stdoutPreview": "contract capture: 30 registrations, 18 hooks, 41 sdk imports, 57 issue probes",
"stderrPreview": ""
},
{
"wallMs": 471,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "contract capture: 30 registrations, 18 hooks, 41 sdk imports, 57 issue probes",
"stderrPreview": ""
}
],
"wallMs": {
"min": 471,
"median": 483,
"max": 522
},
"peakRssMb": {
"min": 0,
"median": 63.6,
"max": 64.1
},
"exitCodes": [
0
]
},
{
"id": "synthetic-probe-plan",
"label": "Synthetic probe plan",
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/synthetic-probes.mjs --check",
"samples": [
{
"wallMs": 821,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "synthetic probes: 48 ready, 0 blocked, 48 total",
"stderrPreview": ""
},
{
"wallMs": 874,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "synthetic probes: 48 ready, 0 blocked, 48 total",
"stderrPreview": ""
},
{
"wallMs": 2457,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "synthetic probes: 48 ready, 0 blocked, 48 total",
"stderrPreview": ""
}
],
"wallMs": {
"min": 821,
"median": 874,
"max": 2457
},
"peakRssMb": {
"min": 0,
"median": 0,
"max": 0
},
"exitCodes": [
0
]
},
{
"id": "cold-import-readiness",
"label": "Cold import readiness",
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/cold-import-readiness.mjs --check",
"samples": [
{
"wallMs": 444,
"peakRssMb": 60.8,
"exitCode": 0,
"stdoutPreview": "cold import readiness: 15 entrypoints, 0 ready, 15 blocked",
"stderrPreview": ""
},
{
"wallMs": 364,
"peakRssMb": 51.4,
"exitCode": 0,
"stdoutPreview": "cold import readiness: 15 entrypoints, 0 ready, 15 blocked",
"stderrPreview": ""
},
{
"wallMs": 604,
"peakRssMb": 57.6,
"exitCode": 0,
"stdoutPreview": "cold import readiness: 15 entrypoints, 0 ready, 15 blocked",
"stderrPreview": ""
}
],
"wallMs": {
"min": 364,
"median": 444,
"max": 604
},
"peakRssMb": {
"min": 51.4,
"median": 57.6,
"max": 60.8
},
"exitCodes": [
0
]
},
{
"id": "workspace-plan",
"label": "Workspace execution plan",
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/workspace-plan.mjs --check",
"samples": [
{
"wallMs": 369,
"peakRssMb": 0.3,
"exitCode": 0,
"stdoutPreview": "workspace plan: 15 entrypoints, 10 installs, 4 builds, 15 captures, 15 synthetic probes, 15 artifact dirs",
"stderrPreview": ""
},
{
"wallMs": 1554,
"peakRssMb": 64,
"exitCode": 0,
"stdoutPreview": "workspace plan: 15 entrypoints, 10 installs, 4 builds, 15 captures, 15 synthetic probes, 15 artifact dirs",
"stderrPreview": ""
},
{
"wallMs": 742,
"peakRssMb": 63.3,
"exitCode": 0,
"stdoutPreview": "workspace plan: 15 entrypoints, 10 installs, 4 builds, 15 captures, 15 synthetic probes, 15 artifact dirs",
"stderrPreview": ""
}
],
"wallMs": {
"min": 369,
"median": 742,
"max": 1554
},
"peakRssMb": {
"min": 0.3,
"median": 63.3,
"max": 64
},
"exitCodes": [
0
]
}
]
}

View File

@ -4,16 +4,16 @@
"status": "ok",
"configuredPath": "../openclaw",
"capturedRegistrarCount": 18,
"sdkExportCount": 306
"sdkExportCount": 307
},
"summary": {
"fixtureCount": 11,
"registrationCount": 28,
"hookCount": 8,
"sdkImportCount": 32,
"packageEntrypointCount": 13,
"issueProbeCount": 50,
"inspectorShimRequiredCount": 17,
"fixtureCount": 12,
"registrationCount": 30,
"hookCount": 18,
"sdkImportCount": 41,
"packageEntrypointCount": 15,
"issueProbeCount": 57,
"inspectorShimRequiredCount": 18,
"compatAliasRequiredCount": 3
},
"fixtures": [
@ -809,6 +809,409 @@
}
]
},
{
"id": "opik-openclaw",
"priority": "high",
"registrations": [
{
"id": "registration.registerCli:opik-openclaw:plugins-opik-openclaw-index-ts-17",
"fixture": "opik-openclaw",
"registrar": "registerCli",
"ref": "plugins/opik-openclaw/index.ts:17",
"support": "target-captured",
"assertions": [
"command name is stable",
"argument schema is captured"
],
"syntheticArguments": [
{
"name": "fixture-command",
"args": [
{
"name": "input",
"type": "string"
}
]
}
]
},
{
"id": "registration.registerService:opik-openclaw:plugins-opik-openclaw-index-ts-16",
"fixture": "opik-openclaw",
"registrar": "registerService",
"ref": "plugins/opik-openclaw/index.ts:16",
"support": "inspector-shim-required",
"assertions": [
"service id is stable",
"start/stop lifecycle handlers are captured"
],
"syntheticArguments": [
{
"name": "fixture-service",
"start": "function",
"stop": "function"
}
]
}
],
"hooks": [
{
"id": "hook.after_tool_call:opik-openclaw:plugins-opik-openclaw-src-service-hooks-tool-ts-100",
"fixture": "opik-openclaw",
"hook": "after_tool_call",
"ref": "plugins/opik-openclaw/src/service/hooks/tool.ts:100",
"support": "synthetic-event-required",
"assertions": [
"hook payload and return value are captured"
],
"syntheticEvent": {
"hook": "after_tool_call",
"fixture": "opik-openclaw"
},
"syntheticContext": {
"hook": "after_tool_call",
"fixture": "opik-openclaw"
}
},
{
"id": "hook.agent_end:opik-openclaw:plugins-opik-openclaw-src-service-ts-560",
"fixture": "opik-openclaw",
"hook": "agent_end",
"ref": "plugins/opik-openclaw/src/service.ts:560",
"support": "synthetic-event-required",
"assertions": [
"final conversation payload is redacted as expected",
"agent id and run metadata are present"
],
"syntheticEvent": {
"runId": "run-fixture",
"agentId": "agent-fixture",
"conversationId": "conversation-fixture",
"status": "completed",
"transcript": [
{
"role": "assistant",
"content": "[redacted fixture output]"
}
]
},
"syntheticContext": {
"runId": "run-fixture",
"agentId": "agent-fixture",
"sessionId": "session-fixture",
"channelId": "fixture-channel"
}
},
{
"id": "hook.before_tool_call:opik-openclaw:plugins-opik-openclaw-src-service-hooks-tool-ts-34",
"fixture": "opik-openclaw",
"hook": "before_tool_call",
"ref": "plugins/opik-openclaw/src/service/hooks/tool.ts:34",
"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",
"toolCallId": "call-fixture"
}
},
{
"id": "hook.llm_input:opik-openclaw:plugins-opik-openclaw-src-service-hooks-llm-ts-39",
"fixture": "opik-openclaw",
"hook": "llm_input",
"ref": "plugins/opik-openclaw/src/service/hooks/llm.ts:39",
"support": "synthetic-event-required",
"assertions": [
"model input payload is redacted as expected",
"model and agent metadata are present"
],
"syntheticEvent": {
"agentId": "agent-fixture",
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "[redacted fixture input]"
}
]
},
"syntheticContext": {
"runId": "run-fixture",
"agentId": "agent-fixture",
"sessionId": "session-fixture",
"channelId": "fixture-channel"
}
},
{
"id": "hook.llm_output:opik-openclaw:plugins-opik-openclaw-src-service-hooks-llm-ts-150",
"fixture": "opik-openclaw",
"hook": "llm_output",
"ref": "plugins/opik-openclaw/src/service/hooks/llm.ts:150",
"support": "synthetic-event-required",
"assertions": [
"model output payload is redacted as expected",
"model and agent metadata are present"
],
"syntheticEvent": {
"agentId": "agent-fixture",
"model": "gpt-5.4",
"output": {
"role": "assistant",
"content": "[redacted fixture output]"
}
},
"syntheticContext": {
"runId": "run-fixture",
"agentId": "agent-fixture",
"sessionId": "session-fixture",
"channelId": "fixture-channel"
}
},
{
"id": "hook.subagent_delivery_target:opik-openclaw:plugins-opik-openclaw-src-service-hooks-subagent-ts-147",
"fixture": "opik-openclaw",
"hook": "subagent_delivery_target",
"ref": "plugins/opik-openclaw/src/service/hooks/subagent.ts:147",
"support": "synthetic-event-required",
"assertions": [
"target routing result is preserved",
"parent/subagent metadata are present"
],
"syntheticEvent": {
"childSessionKey": "child-session",
"agentId": "agent-child",
"label": "fixture child",
"mode": "run",
"requester": {
"channel": "fixture-channel",
"accountId": "fixture-account"
}
},
"syntheticContext": {
"runId": "run-fixture",
"childSessionKey": "child-session",
"requesterSessionKey": "parent-session"
}
},
{
"id": "hook.subagent_ended:opik-openclaw:plugins-opik-openclaw-src-service-hooks-subagent-ts-222",
"fixture": "opik-openclaw",
"hook": "subagent_ended",
"ref": "plugins/opik-openclaw/src/service/hooks/subagent.ts:222",
"support": "synthetic-event-required",
"assertions": [
"subagent completion payload is preserved",
"status metadata is present"
],
"syntheticEvent": {
"childSessionKey": "child-session",
"agentId": "agent-child",
"status": "completed"
},
"syntheticContext": {
"runId": "run-fixture",
"childSessionKey": "child-session",
"requesterSessionKey": "parent-session"
}
},
{
"id": "hook.subagent_spawned:opik-openclaw:plugins-opik-openclaw-src-service-hooks-subagent-ts-89",
"fixture": "opik-openclaw",
"hook": "subagent_spawned",
"ref": "plugins/opik-openclaw/src/service/hooks/subagent.ts:89",
"support": "synthetic-event-required",
"assertions": [
"spawn payload is preserved",
"parent/subagent metadata are present"
],
"syntheticEvent": {
"childSessionKey": "child-session",
"agentId": "agent-child",
"label": "fixture child",
"mode": "run"
},
"syntheticContext": {
"runId": "run-fixture",
"childSessionKey": "child-session",
"requesterSessionKey": "parent-session"
}
},
{
"id": "hook.subagent_spawning:opik-openclaw:plugins-opik-openclaw-src-service-hooks-subagent-ts-38",
"fixture": "opik-openclaw",
"hook": "subagent_spawning",
"ref": "plugins/opik-openclaw/src/service/hooks/subagent.ts:38",
"support": "synthetic-event-required",
"assertions": [
"hook payload and return value are captured"
],
"syntheticEvent": {
"hook": "subagent_spawning",
"fixture": "opik-openclaw"
},
"syntheticContext": {
"hook": "subagent_spawning",
"fixture": "opik-openclaw"
}
},
{
"id": "hook.tool_result_persist:opik-openclaw:plugins-opik-openclaw-src-service-ts-541",
"fixture": "opik-openclaw",
"hook": "tool_result_persist",
"ref": "plugins/opik-openclaw/src/service.ts:541",
"support": "synthetic-event-required",
"assertions": [
"hook payload and return value are captured"
],
"syntheticEvent": {
"hook": "tool_result_persist",
"fixture": "opik-openclaw"
},
"syntheticContext": {
"hook": "tool_result_persist",
"fixture": "opik-openclaw"
}
}
],
"sdkImports": [
{
"id": "sdk.openclaw/plugin-sdk:opik-openclaw:plugins-opik-openclaw-index-ts-1",
"fixture": "opik-openclaw",
"specifier": "openclaw/plugin-sdk",
"ref": "plugins/opik-openclaw/index.ts:1",
"support": "target-exported",
"assertions": [
"package export exists",
"cold import resolves without plugin credentials"
]
},
{
"id": "sdk.openclaw/plugin-sdk:opik-openclaw:plugins-opik-openclaw-index-ts-2",
"fixture": "opik-openclaw",
"specifier": "openclaw/plugin-sdk",
"ref": "plugins/opik-openclaw/index.ts:2",
"support": "target-exported",
"assertions": [
"package export exists",
"cold import resolves without plugin credentials"
]
},
{
"id": "sdk.openclaw/plugin-sdk:opik-openclaw:plugins-opik-openclaw-src-cli-ts-1",
"fixture": "opik-openclaw",
"specifier": "openclaw/plugin-sdk",
"ref": "plugins/opik-openclaw/src/cli.ts:1",
"support": "target-exported",
"assertions": [
"package export exists",
"cold import resolves without plugin credentials"
]
},
{
"id": "sdk.openclaw/plugin-sdk:opik-openclaw:plugins-opik-openclaw-src-configure-ts-2",
"fixture": "opik-openclaw",
"specifier": "openclaw/plugin-sdk",
"ref": "plugins/opik-openclaw/src/configure.ts:2",
"support": "target-exported",
"assertions": [
"package export exists",
"cold import resolves without plugin credentials"
]
},
{
"id": "sdk.openclaw/plugin-sdk:opik-openclaw:plugins-opik-openclaw-src-service-ts-5",
"fixture": "opik-openclaw",
"specifier": "openclaw/plugin-sdk",
"ref": "plugins/opik-openclaw/src/service.ts:5",
"support": "target-exported",
"assertions": [
"package export exists",
"cold import resolves without plugin credentials"
]
},
{
"id": "sdk.openclaw/plugin-sdk:opik-openclaw:plugins-opik-openclaw-src-service-ts-6",
"fixture": "opik-openclaw",
"specifier": "openclaw/plugin-sdk",
"ref": "plugins/opik-openclaw/src/service.ts:6",
"support": "target-exported",
"assertions": [
"package export exists",
"cold import resolves without plugin credentials"
]
},
{
"id": "sdk.openclaw/plugin-sdk:opik-openclaw:plugins-opik-openclaw-src-service-hooks-llm-ts-1",
"fixture": "opik-openclaw",
"specifier": "openclaw/plugin-sdk",
"ref": "plugins/opik-openclaw/src/service/hooks/llm.ts:1",
"support": "target-exported",
"assertions": [
"package export exists",
"cold import resolves without plugin credentials"
]
},
{
"id": "sdk.openclaw/plugin-sdk:opik-openclaw:plugins-opik-openclaw-src-service-hooks-subagent-ts-1",
"fixture": "opik-openclaw",
"specifier": "openclaw/plugin-sdk",
"ref": "plugins/opik-openclaw/src/service/hooks/subagent.ts:1",
"support": "target-exported",
"assertions": [
"package export exists",
"cold import resolves without plugin credentials"
]
},
{
"id": "sdk.openclaw/plugin-sdk:opik-openclaw:plugins-opik-openclaw-src-service-hooks-tool-ts-1",
"fixture": "opik-openclaw",
"specifier": "openclaw/plugin-sdk",
"ref": "plugins/opik-openclaw/src/service/hooks/tool.ts:1",
"support": "target-exported",
"assertions": [
"package export exists",
"cold import resolves without plugin credentials"
]
}
],
"packageEntrypoints": [
{
"id": "package.extension:opik-openclaw:plugins-opik-openclaw-index-ts",
"fixture": "opik-openclaw",
"kind": "extension",
"specifier": "./index.ts",
"ref": "plugins/opik-openclaw/index.ts",
"support": "source-present",
"assertions": [
"entrypoint path resolves",
"entrypoint can be cold-imported after required build step"
]
},
{
"id": "package.runtimeExtension:opik-openclaw:plugins-opik-openclaw-dist-index-js",
"fixture": "opik-openclaw",
"kind": "runtimeExtension",
"specifier": "./dist/index.js",
"ref": "plugins/opik-openclaw/dist/index.js",
"support": "build-required",
"assertions": [
"entrypoint path resolves",
"entrypoint can be cold-imported after required build step"
]
}
]
},
{
"id": "clawmetry",
"priority": "medium",
@ -1459,6 +1862,19 @@
"registered handler metadata is retained"
]
},
{
"id": "api.capture.runtime-registrars:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P1",
"target": "inspector-capture-api",
"evidence": [
"registerService @ plugins/opik-openclaw/index.ts:16"
],
"assertions": [
"registration arguments are recorded",
"registered handler metadata is retained"
]
},
{
"id": "api.capture.runtime-registrars:wecom",
"fixture": "wecom",
@ -1473,6 +1889,19 @@
"registered handler metadata is retained"
]
},
{
"id": "hook.before_tool_call.terminal-block-approval:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P1",
"target": "hook-runner",
"evidence": [
"before_tool_call @ plugins/opik-openclaw/src/service/hooks/tool.ts:34"
],
"assertions": [
"synthetic event payload is accepted",
"return semantics are preserved"
]
},
{
"id": "hook.before_tool_call.terminal-block-approval:wecom",
"fixture": "wecom",
@ -1500,6 +1929,21 @@
"return semantics are preserved"
]
},
{
"id": "hook.llm-observer.privacy-payload:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P1",
"target": "hook-runner",
"evidence": [
"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"
],
"assertions": [
"synthetic event payload is accepted",
"return semantics are preserved"
]
},
{
"id": "sdk.import.package-export-cold-import:codex-app-server",
"fixture": "codex-app-server",
@ -1648,6 +2092,19 @@
"cold import failure mode is classified"
]
},
{
"id": "package.entrypoint.build-before-cold-import:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P2",
"target": "package-loader",
"evidence": [
"runtimeExtension:./dist/index.js -> plugins/opik-openclaw/dist/index.js"
],
"assertions": [
"entrypoint metadata resolves",
"cold import failure mode is classified"
]
},
{
"id": "package.entrypoint.isolated-dependency-install:a2a-gateway",
"fixture": "a2a-gateway",
@ -1712,6 +2169,22 @@
"cold import failure mode is classified"
]
},
{
"id": "package.entrypoint.isolated-dependency-install:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P2",
"target": "package-loader",
"evidence": [
"@clack/prompts @ plugins/opik-openclaw/package.json",
"opik @ plugins/opik-openclaw/package.json",
"zod @ plugins/opik-openclaw/package.json",
"openclaw @ plugins/opik-openclaw/package.json"
],
"assertions": [
"entrypoint metadata resolves",
"cold import failure mode is classified"
]
},
{
"id": "package.entrypoint.isolated-dependency-install:wecom",
"fixture": "wecom",
@ -1781,6 +2254,19 @@
"cold import failure mode is classified"
]
},
{
"id": "package.entrypoint.typescript-loader:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P2",
"target": "package-loader",
"evidence": [
"extension:plugins/opik-openclaw/index.ts"
],
"assertions": [
"entrypoint metadata resolves",
"cold import failure mode is classified"
]
},
{
"id": "package.metadata.version-alignment:a2a-gateway",
"fixture": "a2a-gateway",
@ -1821,6 +2307,27 @@
"migration metadata is visible when alias is missing"
]
},
{
"id": "sdk.import.root-barrel-cold-import:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P2",
"target": "sdk-alias",
"evidence": [
"openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:2",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/cli.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/configure.ts:2",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:5",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:6",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/llm.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/subagent.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/tool.ts:1"
],
"assertions": [
"package export exists",
"migration metadata is visible when alias is missing"
]
},
{
"id": "tool.registration.schema-capture:a2a-gateway",
"fixture": "a2a-gateway",

View File

@ -6,13 +6,13 @@ Generated: deterministic
| Metric | Value |
| ----------------------- | ----- |
| Fixtures | 11 |
| Registrations | 28 |
| Hooks | 8 |
| SDK imports | 32 |
| Package entrypoints | 13 |
| Issue probes | 50 |
| Inspector shim required | 17 |
| Fixtures | 12 |
| Registrations | 30 |
| Hooks | 18 |
| SDK imports | 41 |
| Package entrypoints | 15 |
| Issue probes | 57 |
| Inspector shim required | 18 |
| Compat aliases required | 3 |
## Registration Capture
@ -35,6 +35,8 @@ Generated: deterministic
| hasdata | registerTool | target-captured | plugins/hasdata/src/index.ts:43 | tool name is stable; input schema is captured; result shape metadata is captured |
| mcp-adapter | registerService | inspector-shim-required | plugins/mcp-adapter/index.ts:15 | service id is stable; start/stop lifecycle handlers are captured |
| mcp-adapter | registerTool | target-captured | plugins/mcp-adapter/index.ts:30 | tool name is stable; input schema is captured; result shape metadata is captured |
| opik-openclaw | registerCli | target-captured | plugins/opik-openclaw/index.ts:17 | command name is stable; argument schema is captured |
| opik-openclaw | registerService | inspector-shim-required | plugins/opik-openclaw/index.ts:16 | service id is stable; start/stop lifecycle handlers are captured |
| clawmetry | definePluginEntry | inspector-shim-required | plugins/clawmetry/clawhub-plugin/index.ts:4 | entrypoint register function is callable; entrypoint metadata is preserved |
| clawmetry | registerService | inspector-shim-required | plugins/clawmetry/clawhub-plugin/index.ts:9 | service id is stable; start/stop lifecycle handlers are captured |
| codex-app-server | registerCommand | inspector-shim-required | plugins/codex-app-server/index.ts:48 | command id is stable; interactive command payload is captured |
@ -50,16 +52,26 @@ Generated: deterministic
## Hook Probes
| Fixture | Hook | Support | Evidence | Assertions |
| ----------------- | ------------------------ | ------------------------ | -------------------------------------- | ----------------------------------------------------------------------------------- |
| wecom | before_prompt_build | synthetic-event-required | plugins/wecom/index.js:53 | prompt mutation result is preserved; agent and conversation metadata are present |
| wecom | before_tool_call | synthetic-event-required | plugins/wecom/index.js:65 | block/allow return shapes are preserved; terminal and approval metadata are present |
| wecom | subagent_delivery_target | synthetic-event-required | plugins/wecom/index.js:61 | target routing result is preserved; parent/subagent metadata are present |
| wecom | subagent_ended | synthetic-event-required | plugins/wecom/index.js:63 | subagent completion payload is preserved; status metadata is present |
| wecom | subagent_spawned | synthetic-event-required | plugins/wecom/index.js:62 | spawn payload is preserved; parent/subagent metadata are present |
| llm-trace-phoenix | llm_input | synthetic-event-required | plugins/llm-trace-phoenix/index.ts:154 | model input payload is redacted as expected; model and agent metadata are present |
| llm-trace-phoenix | llm_output | synthetic-event-required | plugins/llm-trace-phoenix/index.ts:168 | model output payload is redacted as expected; model and agent metadata are present |
| codex-app-server | inbound_claim | synthetic-event-required | plugins/codex-app-server/index.ts:25 | claim payload preserves channel/source identity; routing metadata is present |
| Fixture | Hook | Support | Evidence | Assertions |
| ----------------- | ------------------------ | ------------------------ | ------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| wecom | before_prompt_build | synthetic-event-required | plugins/wecom/index.js:53 | prompt mutation result is preserved; agent and conversation metadata are present |
| wecom | before_tool_call | synthetic-event-required | plugins/wecom/index.js:65 | block/allow return shapes are preserved; terminal and approval metadata are present |
| wecom | subagent_delivery_target | synthetic-event-required | plugins/wecom/index.js:61 | target routing result is preserved; parent/subagent metadata are present |
| wecom | subagent_ended | synthetic-event-required | plugins/wecom/index.js:63 | subagent completion payload is preserved; status metadata is present |
| wecom | subagent_spawned | synthetic-event-required | plugins/wecom/index.js:62 | spawn payload is preserved; parent/subagent metadata are present |
| llm-trace-phoenix | llm_input | synthetic-event-required | plugins/llm-trace-phoenix/index.ts:154 | model input payload is redacted as expected; model and agent metadata are present |
| llm-trace-phoenix | llm_output | synthetic-event-required | plugins/llm-trace-phoenix/index.ts:168 | model output payload is redacted as expected; model and agent metadata are present |
| opik-openclaw | after_tool_call | synthetic-event-required | plugins/opik-openclaw/src/service/hooks/tool.ts:100 | hook payload and return value are captured |
| opik-openclaw | agent_end | synthetic-event-required | plugins/opik-openclaw/src/service.ts:560 | final conversation payload is redacted as expected; agent id and run metadata are present |
| opik-openclaw | before_tool_call | synthetic-event-required | plugins/opik-openclaw/src/service/hooks/tool.ts:34 | block/allow return shapes are preserved; terminal and approval metadata are present |
| opik-openclaw | llm_input | synthetic-event-required | plugins/opik-openclaw/src/service/hooks/llm.ts:39 | model input payload is redacted as expected; model and agent metadata are present |
| opik-openclaw | llm_output | synthetic-event-required | plugins/opik-openclaw/src/service/hooks/llm.ts:150 | model output payload is redacted as expected; model and agent metadata are present |
| opik-openclaw | subagent_delivery_target | synthetic-event-required | plugins/opik-openclaw/src/service/hooks/subagent.ts:147 | target routing result is preserved; parent/subagent metadata are present |
| opik-openclaw | subagent_ended | synthetic-event-required | plugins/opik-openclaw/src/service/hooks/subagent.ts:222 | subagent completion payload is preserved; status metadata is present |
| opik-openclaw | subagent_spawned | synthetic-event-required | plugins/opik-openclaw/src/service/hooks/subagent.ts:89 | spawn payload is preserved; parent/subagent metadata are present |
| opik-openclaw | subagent_spawning | synthetic-event-required | plugins/opik-openclaw/src/service/hooks/subagent.ts:38 | hook payload and return value are captured |
| opik-openclaw | tool_result_persist | synthetic-event-required | plugins/opik-openclaw/src/service.ts:541 | hook payload and return value are captured |
| codex-app-server | inbound_claim | synthetic-event-required | plugins/codex-app-server/index.ts:25 | claim payload preserves channel/source identity; routing metadata is present |
## SDK Import Probes
@ -78,6 +90,15 @@ Generated: deterministic
| wecom | openclaw/plugin-sdk/status-helpers | target-exported | plugins/wecom/wecom/channel-plugin.js:6 | package export exists; cold import resolves without plugin credentials |
| a2a-gateway | openclaw/plugin-sdk | target-exported | plugins/a2a-gateway/src/types.ts:14 | package export exists; cold import resolves without plugin credentials |
| llm-trace-phoenix | openclaw/plugin-sdk | target-exported | plugins/llm-trace-phoenix/index.ts:12 | package export exists; cold import resolves without plugin credentials |
| opik-openclaw | openclaw/plugin-sdk | target-exported | plugins/opik-openclaw/index.ts:1 | package export exists; cold import resolves without plugin credentials |
| opik-openclaw | openclaw/plugin-sdk | target-exported | plugins/opik-openclaw/index.ts:2 | package export exists; cold import resolves without plugin credentials |
| opik-openclaw | openclaw/plugin-sdk | target-exported | plugins/opik-openclaw/src/cli.ts:1 | package export exists; cold import resolves without plugin credentials |
| opik-openclaw | openclaw/plugin-sdk | target-exported | plugins/opik-openclaw/src/configure.ts:2 | package export exists; cold import resolves without plugin credentials |
| opik-openclaw | openclaw/plugin-sdk | target-exported | plugins/opik-openclaw/src/service.ts:5 | package export exists; cold import resolves without plugin credentials |
| opik-openclaw | openclaw/plugin-sdk | target-exported | plugins/opik-openclaw/src/service.ts:6 | package export exists; cold import resolves without plugin credentials |
| opik-openclaw | openclaw/plugin-sdk | target-exported | plugins/opik-openclaw/src/service/hooks/llm.ts:1 | package export exists; cold import resolves without plugin credentials |
| opik-openclaw | openclaw/plugin-sdk | target-exported | plugins/opik-openclaw/src/service/hooks/subagent.ts:1 | package export exists; cold import resolves without plugin credentials |
| opik-openclaw | openclaw/plugin-sdk | target-exported | plugins/opik-openclaw/src/service/hooks/tool.ts:1 | package export exists; cold import resolves without plugin credentials |
| clawmetry | openclaw/plugin-sdk/diagnostics-otel | target-exported | plugins/clawmetry/clawhub-plugin/src/service.ts:2 | package export exists; cold import resolves without plugin credentials |
| clawmetry | openclaw/plugin-sdk/plugin-entry | target-exported | plugins/clawmetry/clawhub-plugin/index.ts:1 | package export exists; cold import resolves without plugin credentials |
| clawmetry | openclaw/plugin-sdk/plugin-entry | target-exported | plugins/clawmetry/clawhub-plugin/src/service.ts:1 | package export exists; cold import resolves without plugin credentials |
@ -100,55 +121,62 @@ Generated: deterministic
## Issue Probe Backlog
| ID | Priority | Fixture | Target | Assertions | Evidence |
| --------------------------------------------------------------- | -------- | ----------------- | --------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| api.capture.runtime-registrars:a2a-gateway | P1 | a2a-gateway | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerGatewayMethod @ plugins/a2a-gateway/index.ts:616, registerGatewayMethod @ plugins/a2a-gateway/index.ts:622, registerGatewayMethod @ plugins/a2a-gateway/index.ts:631, registerGatewayMethod @ plugins/a2a-gateway/index.ts:657, registerGatewayMethod @ plugins/a2a-gateway/index.ts:669, registerService @ plugins/a2a-gateway/index.ts:857 |
| api.capture.runtime-registrars:clawmetry | P1 | clawmetry | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9 |
| api.capture.runtime-registrars:codex-app-server | P1 | codex-app-server | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerCommand @ plugins/codex-app-server/index.ts:48, registerInteractiveHandler @ plugins/codex-app-server/index.ts:29, registerInteractiveHandler @ plugins/codex-app-server/index.ts:38, registerService @ plugins/codex-app-server/index.ts:12 |
| 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: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:45 |
| 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:65 |
| hook.llm-observer.privacy-payload:llm-trace-phoenix | P1 | llm-trace-phoenix | hook-runner | synthetic event payload is accepted; return semantics are preserved | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 |
| 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 |
| 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 |
| channel.runtime.envelope-config-metadata:wecom | P2 | wecom | channel-runtime | message envelope is stable; sender/config metadata is preserved | registerChannel @ plugins/wecom/index.js:27 |
| manifest.compat.channel-env-vars:agentchat | P2 | agentchat | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | agentchat |
| manifest.compat.provider-auth-env-vars:hasdata | P2 | hasdata | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | hasdata |
| manifest.schema.top-level-fields:a2a-gateway | P2 | a2a-gateway | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json |
| manifest.schema.top-level-fields:agentchat | P2 | agentchat | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json |
| package.compat.plugin-api-range:a2a-gateway | P2 | a2a-gateway | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/a2a-gateway/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:wecom | P2 | wecom | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/wecom/package.json |
| package.entrypoint.build-before-cold-import:agentchat | P2 | agentchat | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:./dist/index.js -> plugins/agentchat/integrations/openclaw-channel/dist/index.js, setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.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, openclaw @ plugins/agentchat/integrations/openclaw-channel/package.json |
| package.entrypoint.isolated-dependency-install:hasdata | P2 | hasdata | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @sinclair/typebox @ plugins/hasdata/package.json, openclaw @ plugins/hasdata/package.json |
| 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:wecom | P2 | wecom | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @wecom/aibot-node-sdk @ plugins/wecom/package.json, file-type @ plugins/wecom/package.json, pinyin-pro @ plugins/wecom/package.json, openclaw @ plugins/wecom/package.json, undici @ plugins/wecom/package.json |
| package.entrypoint.typescript-loader:a2a-gateway | P2 | a2a-gateway | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/a2a-gateway/index.ts |
| package.entrypoint.typescript-loader:hasdata | P2 | hasdata | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/hasdata/src/index.ts |
| package.entrypoint.typescript-loader:llm-trace-phoenix | P2 | llm-trace-phoenix | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/llm-trace-phoenix/index.ts |
| package.entrypoint.typescript-loader:mcp-adapter | P2 | mcp-adapter | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/mcp-adapter/index.ts |
| package.metadata.version-alignment:a2a-gateway | P2 | a2a-gateway | package-loader | entrypoint metadata resolves; cold import failure mode is classified | package:1.4.0, manifest:1.3.0 |
| sdk.import.root-barrel-cold-import:a2a-gateway | P2 | a2a-gateway | sdk-alias | package export exists; migration metadata is visible when alias is missing | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 |
| sdk.import.root-barrel-cold-import:llm-trace-phoenix | P2 | llm-trace-phoenix | sdk-alias | package export exists; migration metadata is visible when alias is missing | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 |
| tool.registration.schema-capture:a2a-gateway | P2 | a2a-gateway | tool-runtime | tool schema is captured; tool result metadata is retained | registerTool @ plugins/a2a-gateway/index.ts:777 |
| tool.registration.schema-capture:mcp-adapter | P2 | mcp-adapter | tool-runtime | tool schema is captured; tool result metadata is retained | registerTool @ plugins/mcp-adapter/index.ts:30 |
| tool.registration.schema-capture:wecom | P2 | wecom | tool-runtime | tool schema is captured; tool result metadata is retained | registerTool @ plugins/wecom/index.js:28, registerTool @ plugins/wecom/index.js:29, registerTool @ plugins/wecom/index.js:33 |
| manifest.compat.provider-auth-env-vars:inworld-tts | P3 | inworld-tts | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | inworld |
| manifest.compat.provider-auth-env-vars:web-search-plus | P3 | web-search-plus | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng |
| package.entrypoint.build-before-cold-import:clawmetry | P3 | clawmetry | package-loader | entrypoint metadata resolves; cold import failure mode is classified | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js |
| package.entrypoint.isolated-dependency-install:apify | P3 | apify | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json, openclaw @ plugins/apify/package.json |
| package.entrypoint.isolated-dependency-install:clawmetry | P3 | clawmetry | package-loader | entrypoint metadata resolves; cold import failure mode is classified | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json |
| package.entrypoint.isolated-dependency-install:codex-app-server | P3 | codex-app-server | package-loader | entrypoint metadata resolves; cold import failure mode is classified | ws @ plugins/codex-app-server/package.json, openclaw @ plugins/codex-app-server/package.json |
| package.entrypoint.isolated-dependency-install:inworld-tts | P3 | inworld-tts | package-loader | entrypoint metadata resolves; cold import failure mode is classified | openclaw @ plugins/inworld-tts/package.json |
| package.entrypoint.isolated-dependency-install:web-search-plus | P3 | web-search-plus | package-loader | entrypoint metadata resolves; cold import failure mode is classified | openclaw @ plugins/web-search-plus/package.json |
| package.entrypoint.typescript-loader:apify | P3 | apify | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/apify/src/index.ts |
| package.entrypoint.typescript-loader:clawmetry | P3 | clawmetry | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/clawmetry/clawhub-plugin/index.ts |
| package.entrypoint.typescript-loader:codex-app-server | P3 | codex-app-server | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/codex-app-server/index.ts |
| package.entrypoint.typescript-loader:inworld-tts | P3 | inworld-tts | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/inworld-tts/index.ts |
| package.entrypoint.typescript-loader:web-search-plus | P3 | web-search-plus | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/web-search-plus/index.ts |
| sdk.import.root-barrel-cold-import:apify | P3 | apify | sdk-alias | package export exists; migration metadata is visible when alias is missing | 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 |
| sdk.import.root-barrel-cold-import:codex-app-server | P3 | codex-app-server | sdk-alias | package export exists; migration metadata is visible when alias is missing | 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 |
| tool.registration.schema-capture:apify | P3 | apify | tool-runtime | tool schema is captured; tool result metadata is retained | registerTool @ plugins/apify/src/index.ts:13 |
| tool.registration.schema-capture:web-search-plus | P3 | web-search-plus | tool-runtime | tool schema is captured; tool result metadata is retained | registerTool @ plugins/web-search-plus/index.ts:815, registerTool @ plugins/web-search-plus/index.ts:947 |
| ID | Priority | Fixture | Target | Assertions | Evidence |
| --------------------------------------------------------------- | -------- | ----------------- | --------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| api.capture.runtime-registrars:a2a-gateway | P1 | a2a-gateway | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerGatewayMethod @ plugins/a2a-gateway/index.ts:616, registerGatewayMethod @ plugins/a2a-gateway/index.ts:622, registerGatewayMethod @ plugins/a2a-gateway/index.ts:631, registerGatewayMethod @ plugins/a2a-gateway/index.ts:657, registerGatewayMethod @ plugins/a2a-gateway/index.ts:669, registerService @ plugins/a2a-gateway/index.ts:857 |
| api.capture.runtime-registrars:clawmetry | P1 | clawmetry | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9 |
| api.capture.runtime-registrars:codex-app-server | P1 | codex-app-server | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerCommand @ plugins/codex-app-server/index.ts:48, registerInteractiveHandler @ plugins/codex-app-server/index.ts:29, registerInteractiveHandler @ plugins/codex-app-server/index.ts:38, registerService @ plugins/codex-app-server/index.ts:12 |
| 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:opik-openclaw | P1 | opik-openclaw | inspector-capture-api | registration arguments are recorded; registered handler metadata is retained | registerService @ plugins/opik-openclaw/index.ts:16 |
| 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:45 |
| 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:65 |
| hook.llm-observer.privacy-payload:llm-trace-phoenix | P1 | llm-trace-phoenix | hook-runner | synthetic event payload is accepted; return semantics are preserved | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 |
| 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: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 |
| 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 |
| channel.runtime.envelope-config-metadata:wecom | P2 | wecom | channel-runtime | message envelope is stable; sender/config metadata is preserved | registerChannel @ plugins/wecom/index.js:27 |
| manifest.compat.channel-env-vars:agentchat | P2 | agentchat | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | agentchat |
| manifest.compat.provider-auth-env-vars:hasdata | P2 | hasdata | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | hasdata |
| manifest.schema.top-level-fields:a2a-gateway | P2 | a2a-gateway | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json |
| manifest.schema.top-level-fields:agentchat | P2 | agentchat | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json |
| package.compat.plugin-api-range:a2a-gateway | P2 | a2a-gateway | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/a2a-gateway/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:wecom | P2 | wecom | package-loader | entrypoint metadata resolves; cold import failure mode is classified | plugins/wecom/package.json |
| package.entrypoint.build-before-cold-import:agentchat | P2 | agentchat | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:./dist/index.js -> plugins/agentchat/integrations/openclaw-channel/dist/index.js, setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.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, openclaw @ plugins/agentchat/integrations/openclaw-channel/package.json |
| package.entrypoint.isolated-dependency-install:hasdata | P2 | hasdata | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @sinclair/typebox @ plugins/hasdata/package.json, openclaw @ plugins/hasdata/package.json |
| 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: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, openclaw @ plugins/opik-openclaw/package.json |
| package.entrypoint.isolated-dependency-install:wecom | P2 | wecom | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @wecom/aibot-node-sdk @ plugins/wecom/package.json, file-type @ plugins/wecom/package.json, pinyin-pro @ plugins/wecom/package.json, openclaw @ plugins/wecom/package.json, undici @ plugins/wecom/package.json |
| package.entrypoint.typescript-loader:a2a-gateway | P2 | a2a-gateway | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/a2a-gateway/index.ts |
| package.entrypoint.typescript-loader:hasdata | P2 | hasdata | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/hasdata/src/index.ts |
| package.entrypoint.typescript-loader:llm-trace-phoenix | P2 | llm-trace-phoenix | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/llm-trace-phoenix/index.ts |
| package.entrypoint.typescript-loader:mcp-adapter | P2 | mcp-adapter | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/mcp-adapter/index.ts |
| package.entrypoint.typescript-loader:opik-openclaw | P2 | opik-openclaw | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/opik-openclaw/index.ts |
| package.metadata.version-alignment:a2a-gateway | P2 | a2a-gateway | package-loader | entrypoint metadata resolves; cold import failure mode is classified | package:1.4.0, manifest:1.3.0 |
| sdk.import.root-barrel-cold-import:a2a-gateway | P2 | a2a-gateway | sdk-alias | package export exists; migration metadata is visible when alias is missing | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 |
| sdk.import.root-barrel-cold-import:llm-trace-phoenix | P2 | llm-trace-phoenix | sdk-alias | package export exists; migration metadata is visible when alias is missing | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 |
| sdk.import.root-barrel-cold-import:opik-openclaw | P2 | opik-openclaw | sdk-alias | package export exists; migration metadata is visible when alias is missing | openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/cli.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/configure.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:5, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:6, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/llm.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/subagent.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/tool.ts:1 |
| tool.registration.schema-capture:a2a-gateway | P2 | a2a-gateway | tool-runtime | tool schema is captured; tool result metadata is retained | registerTool @ plugins/a2a-gateway/index.ts:777 |
| tool.registration.schema-capture:mcp-adapter | P2 | mcp-adapter | tool-runtime | tool schema is captured; tool result metadata is retained | registerTool @ plugins/mcp-adapter/index.ts:30 |
| tool.registration.schema-capture:wecom | P2 | wecom | tool-runtime | tool schema is captured; tool result metadata is retained | registerTool @ plugins/wecom/index.js:28, registerTool @ plugins/wecom/index.js:29, registerTool @ plugins/wecom/index.js:33 |
| manifest.compat.provider-auth-env-vars:inworld-tts | P3 | inworld-tts | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | inworld |
| manifest.compat.provider-auth-env-vars:web-search-plus | P3 | web-search-plus | manifest-loader | metadata key is accepted; migration or compatibility mapping is visible | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng |
| package.entrypoint.build-before-cold-import:clawmetry | P3 | clawmetry | package-loader | entrypoint metadata resolves; cold import failure mode is classified | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js |
| package.entrypoint.isolated-dependency-install:apify | P3 | apify | package-loader | entrypoint metadata resolves; cold import failure mode is classified | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json, openclaw @ plugins/apify/package.json |
| package.entrypoint.isolated-dependency-install:clawmetry | P3 | clawmetry | package-loader | entrypoint metadata resolves; cold import failure mode is classified | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json |
| package.entrypoint.isolated-dependency-install:codex-app-server | P3 | codex-app-server | package-loader | entrypoint metadata resolves; cold import failure mode is classified | ws @ plugins/codex-app-server/package.json, openclaw @ plugins/codex-app-server/package.json |
| package.entrypoint.isolated-dependency-install:inworld-tts | P3 | inworld-tts | package-loader | entrypoint metadata resolves; cold import failure mode is classified | openclaw @ plugins/inworld-tts/package.json |
| package.entrypoint.isolated-dependency-install:web-search-plus | P3 | web-search-plus | package-loader | entrypoint metadata resolves; cold import failure mode is classified | openclaw @ plugins/web-search-plus/package.json |
| package.entrypoint.typescript-loader:apify | P3 | apify | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/apify/src/index.ts |
| package.entrypoint.typescript-loader:clawmetry | P3 | clawmetry | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/clawmetry/clawhub-plugin/index.ts |
| package.entrypoint.typescript-loader:codex-app-server | P3 | codex-app-server | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/codex-app-server/index.ts |
| package.entrypoint.typescript-loader:inworld-tts | P3 | inworld-tts | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/inworld-tts/index.ts |
| package.entrypoint.typescript-loader:web-search-plus | P3 | web-search-plus | package-loader | entrypoint metadata resolves; cold import failure mode is classified | extension:plugins/web-search-plus/index.ts |
| sdk.import.root-barrel-cold-import:apify | P3 | apify | sdk-alias | package export exists; migration metadata is visible when alias is missing | 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 |
| sdk.import.root-barrel-cold-import:codex-app-server | P3 | codex-app-server | sdk-alias | package export exists; migration metadata is visible when alias is missing | 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 |
| tool.registration.schema-capture:apify | P3 | apify | tool-runtime | tool schema is captured; tool result metadata is retained | registerTool @ plugins/apify/src/index.ts:13 |
| tool.registration.schema-capture:web-search-plus | P3 | web-search-plus | tool-runtime | tool schema is captured; tool result metadata is retained | registerTool @ plugins/web-search-plus/index.ts:815, registerTool @ plugins/web-search-plus/index.ts:947 |

View File

@ -0,0 +1,88 @@
{
"generatedAt": "deterministic",
"status": "pass",
"strict": false,
"policy": {
"allowedBlocked": 2,
"expectedWarnings": 1,
"fixtureSets": [
"build",
"sdk-alias",
"side-effect-review",
"smoke"
],
"thresholds": {
"wallP95RegressionPercent": 50,
"peakRssRegressionMb": 50,
"bootRegressionMs": 500,
"strictMinimumSamples": 3
}
},
"summary": {
"checkCount": 6,
"failCount": 0,
"warnCount": 2,
"passCount": 4
},
"checks": [
{
"id": "execution-results.blocked.wecom.registerChannel.0",
"action": "warn",
"message": "allowed-blocked: captured registration requires includeChannelRuntime=true",
"evidence": [
".crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json",
"registerChannel",
"captured registration requires includeChannelRuntime=true",
"channel-runtime-harness"
]
},
{
"id": "execution-results.blocked.wecom.registerTool.2",
"action": "warn",
"message": "expected-warning: captured registration has no object descriptor",
"evidence": [
".crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json",
"registerTool",
"captured registration has no object descriptor",
"tool-factory-descriptor"
]
},
{
"id": "compatibility-report.breakages",
"action": "pass",
"message": "0 hard breakages",
"evidence": []
},
{
"id": "compatibility-report.p1-issues",
"action": "pass",
"message": "12 P1 issues tracked",
"evidence": [
"a2a-gateway:registration-capture-gap",
"clawmetry:registration-capture-gap",
"codex-app-server:missing-compat-record",
"codex-app-server:registration-capture-gap",
"codex-app-server:sdk-export-missing",
"llm-trace-phoenix:conversation-access-hook",
"mcp-adapter:registration-capture-gap",
"opik-openclaw:before-tool-call-probe",
"opik-openclaw:conversation-access-hook",
"opik-openclaw:registration-capture-gap",
"wecom:before-tool-call-probe",
"wecom:registration-capture-gap"
]
},
{
"id": "execution-results.audit-findings",
"action": "pass",
"message": "0 package audit findings",
"evidence": []
},
{
"id": "execution-results.failures",
"action": "pass",
"message": "0 failed synthetic probes",
"evidence": []
}
]
}

View File

@ -0,0 +1,28 @@
# Crabpot CI Policy
Generated: deterministic
Status: PASS
Strict: false
## Summary
| Metric | Value |
| ---------------------- | ------------------------------------------- |
| Checks | 6 |
| Fail | 0 |
| Warn | 2 |
| Pass | 4 |
| Allowed blocked rules | 2 |
| Expected warning rules | 1 |
| Fixture sets | build, sdk-alias, side-effect-review, smoke |
## Checks
| Action | ID | Message | Evidence |
| ------ | ------------------------------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| warn | execution-results.blocked.wecom.registerChannel.0 | allowed-blocked: captured registration requires includeChannelRuntime=true | .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json, registerChannel, captured registration requires includeChannelRuntime=true, channel-runtime-harness |
| warn | execution-results.blocked.wecom.registerTool.2 | expected-warning: captured registration has no object descriptor | .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json, registerTool, captured registration has no object descriptor, tool-factory-descriptor |
| pass | compatibility-report.breakages | 0 hard breakages | - |
| pass | compatibility-report.p1-issues | 12 P1 issues tracked | a2a-gateway:registration-capture-gap, clawmetry:registration-capture-gap, codex-app-server:missing-compat-record, codex-app-server:registration-capture-gap, codex-app-server:sdk-export-missing, llm-trace-phoenix:conversation-access-hook, mcp-adapter:registration-capture-gap, opik-openclaw:before-tool-call-probe, opik-openclaw:conversation-access-hook, opik-openclaw:registration-capture-gap, wecom:before-tool-call-probe, wecom:registration-capture-gap |
| pass | execution-results.audit-findings | 0 package audit findings | - |
| pass | execution-results.failures | 0 failed synthetic probes | - |

View File

@ -0,0 +1,145 @@
{
"generatedAt": "deterministic",
"mode": "local",
"openclawLabel": "../openclaw",
"status": "pass",
"summary": {
"breakages": 0,
"warnings": 18,
"suggestions": 40,
"issues": 58,
"p1Issues": 12,
"refDiffFailures": 0,
"refDiffWarnings": 0,
"policyFailures": 0,
"policyWarnings": 2,
"profileWarnings": 0,
"executionPass": 6,
"executionFail": 0,
"executionBlocked": 2
},
"topIssues": [
{
"severity": "P1",
"fixture": "a2a-gateway",
"code": "registration-capture-gap",
"title": "a2a-gateway: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"fixture": "clawmetry",
"code": "registration-capture-gap",
"title": "clawmetry: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"fixture": "codex-app-server",
"code": "missing-compat-record",
"title": "codex-app-server: compat-dependent behavior lacks registry coverage",
"decision": "core-compat-adapter"
},
{
"severity": "P1",
"fixture": "codex-app-server",
"code": "registration-capture-gap",
"title": "codex-app-server: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"fixture": "codex-app-server",
"code": "sdk-export-missing",
"title": "codex-app-server: plugin SDK import aliases are missing from target package exports",
"decision": "core-compat-adapter"
},
{
"severity": "P1",
"fixture": "llm-trace-phoenix",
"code": "conversation-access-hook",
"title": "llm-trace-phoenix: conversation-access hooks need privacy-boundary probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"fixture": "mcp-adapter",
"code": "registration-capture-gap",
"title": "mcp-adapter: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"fixture": "opik-openclaw",
"code": "before-tool-call-probe",
"title": "opik-openclaw: before_tool_call needs terminal/block/approval probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"fixture": "opik-openclaw",
"code": "conversation-access-hook",
"title": "opik-openclaw: conversation-access hooks need privacy-boundary probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"fixture": "opik-openclaw",
"code": "registration-capture-gap",
"title": "opik-openclaw: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"fixture": "wecom",
"code": "before-tool-call-probe",
"title": "wecom: before_tool_call needs terminal/block/approval probes",
"decision": "inspector-follow-up"
},
{
"severity": "P1",
"fixture": "wecom",
"code": "registration-capture-gap",
"title": "wecom: runtime registrations need capture before contract judgment",
"decision": "inspector-follow-up"
}
],
"refRegressions": [],
"policyFindings": [
{
"id": "execution-results.blocked.wecom.registerChannel.0",
"action": "warn",
"message": "allowed-blocked: captured registration requires includeChannelRuntime=true",
"evidence": [
".crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json",
"registerChannel",
"captured registration requires includeChannelRuntime=true",
"channel-runtime-harness"
]
},
{
"id": "execution-results.blocked.wecom.registerTool.2",
"action": "warn",
"message": "expected-warning: captured registration has no object descriptor",
"evidence": [
".crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json",
"registerTool",
"captured registration has no object descriptor",
"tool-factory-descriptor"
]
}
],
"profileFindings": [],
"artifacts": {
"compatibility": "reports/crabpot-report.json",
"capture": "reports/crabpot-capture.json",
"synthetic": "reports/crabpot-synthetic-probes.json",
"coldImport": "reports/crabpot-cold-import.json",
"workspace": "reports/crabpot-workspace-plan.json",
"execution": "reports/crabpot-execution-results.json",
"runtimeProfile": "reports/crabpot-runtime-profile.json",
"refDiff": "reports/crabpot-ref-diff.json",
"profileDiff": "reports/crabpot-profile-diff.json",
"ciPolicy": "reports/crabpot-ci-policy.json"
}
}

View File

@ -0,0 +1,71 @@
# Crabpot CI Summary
Generated: deterministic
Mode: local
OpenClaw: ../openclaw
Status: PASS
## Counts
| Metric | Value |
| ----------------- | ----- |
| Breakages | 0 |
| Warnings | 18 |
| Suggestions | 40 |
| Issues | 58 |
| P1 issues | 12 |
| Ref diff failures | 0 |
| Ref diff warnings | 0 |
| Policy failures | 0 |
| Policy warnings | 2 |
| Profile warnings | 0 |
| Execution pass | 6 |
| Execution fail | 0 |
| Execution blocked | 2 |
## Top Issues
| Severity | Fixture | Code | Decision | Title |
| -------- | ----------------- | ------------------------ | ------------------- | ----------------------------------------------------------------------------------- |
| P1 | a2a-gateway | registration-capture-gap | inspector-follow-up | a2a-gateway: runtime registrations need capture before contract judgment |
| P1 | clawmetry | registration-capture-gap | inspector-follow-up | clawmetry: runtime registrations need capture before contract judgment |
| P1 | codex-app-server | missing-compat-record | core-compat-adapter | codex-app-server: compat-dependent behavior lacks registry coverage |
| P1 | codex-app-server | registration-capture-gap | inspector-follow-up | codex-app-server: runtime registrations need capture before contract judgment |
| P1 | codex-app-server | sdk-export-missing | core-compat-adapter | codex-app-server: plugin SDK import aliases are missing from target package exports |
| P1 | llm-trace-phoenix | conversation-access-hook | inspector-follow-up | llm-trace-phoenix: conversation-access hooks need privacy-boundary probes |
| P1 | mcp-adapter | registration-capture-gap | inspector-follow-up | mcp-adapter: runtime registrations need capture before contract judgment |
| P1 | opik-openclaw | before-tool-call-probe | inspector-follow-up | opik-openclaw: before_tool_call needs terminal/block/approval probes |
| P1 | opik-openclaw | conversation-access-hook | inspector-follow-up | opik-openclaw: conversation-access hooks need privacy-boundary probes |
| P1 | opik-openclaw | registration-capture-gap | inspector-follow-up | opik-openclaw: runtime registrations need capture before contract judgment |
| P1 | wecom | before-tool-call-probe | inspector-follow-up | wecom: before_tool_call needs terminal/block/approval probes |
| P1 | wecom | registration-capture-gap | inspector-follow-up | wecom: runtime registrations need capture before contract judgment |
## Ref Regressions
_none_
## Policy Findings
| Action | ID | Message | Evidence |
| ------ | ------------------------------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| warn | execution-results.blocked.wecom.registerChannel.0 | allowed-blocked: captured registration requires includeChannelRuntime=true | .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json, registerChannel, captured registration requires includeChannelRuntime=true, channel-runtime-harness |
| warn | execution-results.blocked.wecom.registerTool.2 | expected-warning: captured registration has no object descriptor | .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json, registerTool, captured registration has no object descriptor, tool-factory-descriptor |
## Profile Findings
_none_
## Artifacts
| Artifact | Path |
| -------------- | -------------------------------------- |
| compatibility | reports/crabpot-report.json |
| capture | reports/crabpot-capture.json |
| synthetic | reports/crabpot-synthetic-probes.json |
| coldImport | reports/crabpot-cold-import.json |
| workspace | reports/crabpot-workspace-plan.json |
| execution | reports/crabpot-execution-results.json |
| runtimeProfile | reports/crabpot-runtime-profile.json |
| refDiff | reports/crabpot-ref-diff.json |
| profileDiff | reports/crabpot-profile-diff.json |
| ciPolicy | reports/crabpot-ci-policy.json |

View File

@ -3,16 +3,16 @@
"targetOpenClaw": {
"status": "ok",
"configuredPath": "../openclaw",
"sdkExportCount": 306
"sdkExportCount": 307
},
"summary": {
"fixtureCount": 11,
"entrypointCount": 13,
"fixtureCount": 12,
"entrypointCount": 15,
"readyCount": 0,
"blockedCount": 13,
"tsLoaderRequiredCount": 8,
"buildRequiredCount": 3,
"dependencyInstallRequiredCount": 9,
"blockedCount": 15,
"tsLoaderRequiredCount": 9,
"buildRequiredCount": 4,
"dependencyInstallRequiredCount": 10,
"sdkAliasRequiredCount": 1
},
"fixtures": [
@ -215,6 +215,56 @@
}
]
},
{
"id": "opik-openclaw",
"priority": "high",
"entrypoints": [
{
"id": "cold-import.extension:opik-openclaw:plugins-opik-openclaw-index-ts",
"fixture": "opik-openclaw",
"packagePath": "plugins/opik-openclaw/package.json",
"kind": "extension",
"specifier": "./index.ts",
"path": "plugins/opik-openclaw/index.ts",
"status": "ts-loader-required",
"blockers": [
{
"code": "ts-loader-required",
"message": "entrypoint is TypeScript source and needs a loader or build step before Node cold import",
"evidence": "plugins/opik-openclaw/index.ts"
},
{
"code": "dependency-install-required",
"message": "package declares runtime dependencies that must be installed before cold import",
"evidence": "@clack/prompts, opik, zod, openclaw"
}
],
"assertions": [
"TypeScript source entrypoint is compiled or loaded before cold import",
"fixture dependencies are installed in an isolated workspace before cold import"
]
},
{
"id": "cold-import.runtimeExtension:opik-openclaw:plugins-opik-openclaw-dist-index-js",
"fixture": "opik-openclaw",
"packagePath": "plugins/opik-openclaw/package.json",
"kind": "runtimeExtension",
"specifier": "./dist/index.js",
"path": "plugins/opik-openclaw/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/opik-openclaw/dist/index.js"
}
],
"assertions": [
"plugin build or source alias resolution runs before cold import"
]
}
]
},
{
"id": "clawmetry",
"priority": "medium",

View File

@ -6,13 +6,13 @@ Generated: deterministic
| Metric | Value |
| --------------------------- | ----- |
| Fixtures | 11 |
| Entrypoints | 13 |
| Fixtures | 12 |
| Entrypoints | 15 |
| Ready | 0 |
| Blocked | 13 |
| TypeScript loader required | 8 |
| Build required | 3 |
| Dependency install required | 9 |
| Blocked | 15 |
| TypeScript loader required | 9 |
| Build required | 4 |
| Dependency install required | 10 |
| SDK alias required | 1 |
## Entrypoints
@ -26,6 +26,8 @@ Generated: deterministic
| hasdata | extension | ts-loader-required | plugins/hasdata/src/index.ts | ts-loader-required, top-level-side-effect-review, dependency-install-required | TypeScript source entrypoint is compiled or loaded before cold import; cold import sandbox blocks network/process side effects before register capture; fixture dependencies are installed in an isolated workspace before cold import |
| mcp-adapter | extension | ts-loader-required | plugins/mcp-adapter/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 |
| llm-trace-phoenix | extension | ts-loader-required | plugins/llm-trace-phoenix/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 |
| opik-openclaw | extension | ts-loader-required | plugins/opik-openclaw/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 |
| opik-openclaw | runtimeExtension | build-required | plugins/opik-openclaw/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| clawmetry | extension | ts-loader-required | plugins/clawmetry/clawhub-plugin/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 |
| clawmetry | runtimeExtension | build-required | plugins/clawmetry/clawhub-plugin/dist/index.js | build-required | plugin build or source alias resolution runs before cold import |
| 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 |

View File

@ -7,118 +7,132 @@ Status: PASS
| Metric | Value |
| --------------- | ----- |
| Issue findings | 51 |
| Issue findings | 58 |
| P0 | 0 |
| P1 | 9 |
| Contract probes | 50 |
| P1 | 12 |
| Contract probes | 57 |
## Issues
| ID | Severity | Fixture | Owner | Decision | Status | Title | Evidence |
| ---------------- | -------- | ----------------- | --------- | ------------------- | ------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| CRABPOT-37E8444D | P1 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: runtime registrations need capture before contract judgment | registerGatewayMethod @ plugins/a2a-gateway/index.ts:616, registerGatewayMethod @ plugins/a2a-gateway/index.ts:622, registerGatewayMethod @ plugins/a2a-gateway/index.ts:631, registerGatewayMethod @ plugins/a2a-gateway/index.ts:657, registerGatewayMethod @ plugins/a2a-gateway/index.ts:669, registerService @ plugins/a2a-gateway/index.ts:857 |
| CRABPOT-9D5EE194 | P1 | clawmetry | inspector | inspector-follow-up | open | clawmetry: runtime registrations need capture before contract judgment | registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9 |
| CRABPOT-6D9E51D9 | P1 | codex-app-server | core | core-compat-adapter | open | codex-app-server: compat-dependent behavior lacks registry coverage | plugin-sdk-export-aliases |
| CRABPOT-45CAC152 | P1 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: runtime registrations need capture before contract judgment | registerCommand @ plugins/codex-app-server/index.ts:48, registerInteractiveHandler @ plugins/codex-app-server/index.ts:29, registerInteractiveHandler @ plugins/codex-app-server/index.ts:38, registerService @ plugins/codex-app-server/index.ts:12 |
| CRABPOT-C2331427 | P1 | codex-app-server | core | core-compat-adapter | open | codex-app-server: plugin SDK import aliases are missing from target package exports | 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 |
| CRABPOT-D71B126E | P1 | llm-trace-phoenix | core | inspector-follow-up | open | llm-trace-phoenix: conversation-access hooks need privacy-boundary probes | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 |
| CRABPOT-B91192E5 | P1 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: runtime registrations need capture before contract judgment | registerService @ plugins/mcp-adapter/index.ts:15 |
| CRABPOT-B08DB79E | P1 | wecom | inspector | inspector-follow-up | open | wecom: before_tool_call needs terminal/block/approval probes | before_tool_call @ plugins/wecom/index.js:65 |
| CRABPOT-9428734C | P1 | wecom | inspector | inspector-follow-up | open | wecom: runtime registrations need capture before contract judgment | registerChannel @ plugins/wecom/index.js:27, registerHttpRoute @ plugins/wecom/index.js:45 |
| CRABPOT-6469330F | P2 | a2a-gateway | core | core-compat-adapter | open | a2a-gateway: root plugin SDK barrel is still used by fixtures | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 |
| CRABPOT-892CF14F | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: manifest uses unsupported top-level fields | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json |
| CRABPOT-F5185BE0 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: cold import requires isolated dependency installation | @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 |
| CRABPOT-16E892BF | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: package and manifest versions drift | package:1.4.0, manifest:1.3.0 |
| CRABPOT-FDBB1C67 | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: plugin API compatibility range is missing | plugins/a2a-gateway/package.json |
| CRABPOT-96D2E9F4 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: cold import needs TypeScript source entrypoint support | extension:plugins/a2a-gateway/index.ts |
| CRABPOT-654F01E7 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: runtime tool schema needs registration capture | registerTool @ plugins/a2a-gateway/index.ts:777 |
| CRABPOT-74260BA0 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: channel runtime needs envelope/config probes | defineChannelPluginEntry @ plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333 |
| CRABPOT-90736EF4 | P2 | agentchat | core | core-compat-adapter | open | agentchat: channelEnvVars legacy manifest metadata must stay covered | agentchat |
| CRABPOT-BEC462A4 | P2 | agentchat | plugin | plugin-upstream-fix | open | agentchat: manifest uses unsupported top-level fields | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json |
| CRABPOT-6A790CB4 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: cold import requires package build output | extension:./dist/index.js -> plugins/agentchat/integrations/openclaw-channel/dist/index.js, setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js |
| CRABPOT-2ED34BE8 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: cold import requires isolated dependency installation | @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, openclaw @ plugins/agentchat/integrations/openclaw-channel/package.json |
| CRABPOT-0CFF8B6F | P2 | apify | core | core-compat-adapter | open | apify: root plugin SDK barrel is still used by fixtures | 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 |
| CRABPOT-74FAA2A2 | P2 | apify | inspector | inspector-follow-up | open | apify: cold import requires isolated dependency installation | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json, openclaw @ plugins/apify/package.json |
| CRABPOT-18D12186 | P2 | apify | inspector | inspector-follow-up | open | apify: cold import needs TypeScript source entrypoint support | extension:plugins/apify/src/index.ts |
| CRABPOT-93E9D53A | P2 | apify | inspector | inspector-follow-up | open | apify: runtime tool schema needs registration capture | registerTool @ plugins/apify/src/index.ts:13 |
| CRABPOT-4BCB1F63 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import requires package build output | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js |
| CRABPOT-034E5504 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import requires isolated dependency installation | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json |
| CRABPOT-EF6E7134 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import needs TypeScript source entrypoint support | extension:plugins/clawmetry/clawhub-plugin/index.ts |
| CRABPOT-A36ECE8E | P2 | codex-app-server | core | core-compat-adapter | open | codex-app-server: root plugin SDK barrel is still used by fixtures | 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 |
| CRABPOT-DC637E99 | P2 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: cold import requires isolated dependency installation | ws @ plugins/codex-app-server/package.json, openclaw @ plugins/codex-app-server/package.json |
| CRABPOT-F8C8F1CD | P2 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: cold import needs TypeScript source entrypoint support | extension:plugins/codex-app-server/index.ts |
| CRABPOT-2C2BFD3C | P2 | hasdata | inspector | inspector-follow-up | open | hasdata: cold import requires isolated dependency installation | @sinclair/typebox @ plugins/hasdata/package.json, openclaw @ plugins/hasdata/package.json |
| CRABPOT-1853BC94 | P2 | hasdata | inspector | inspector-follow-up | open | hasdata: cold import needs TypeScript source entrypoint support | extension:plugins/hasdata/src/index.ts |
| CRABPOT-1ABECD7E | P2 | hasdata | core | core-compat-adapter | open | hasdata: providerAuthEnvVars legacy manifest metadata must stay covered | hasdata |
| CRABPOT-0853EBDC | P2 | inworld-tts | inspector | inspector-follow-up | open | inworld-tts: cold import requires isolated dependency installation | openclaw @ plugins/inworld-tts/package.json |
| CRABPOT-7C59D06F | P2 | inworld-tts | inspector | inspector-follow-up | open | inworld-tts: cold import needs TypeScript source entrypoint support | extension:plugins/inworld-tts/index.ts |
| CRABPOT-CCABE384 | P2 | inworld-tts | core | core-compat-adapter | open | inworld-tts: providerAuthEnvVars legacy manifest metadata must stay covered | inworld |
| CRABPOT-4CC6CA25 | P2 | llm-trace-phoenix | core | core-compat-adapter | open | llm-trace-phoenix: root plugin SDK barrel is still used by fixtures | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 |
| CRABPOT-15F8300A | P2 | llm-trace-phoenix | inspector | inspector-follow-up | open | llm-trace-phoenix: cold import needs TypeScript source entrypoint support | extension:plugins/llm-trace-phoenix/index.ts |
| CRABPOT-22E35E29 | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: cold import requires isolated dependency installation | @modelcontextprotocol/sdk @ plugins/mcp-adapter/package.json |
| CRABPOT-4511EE11 | P2 | mcp-adapter | plugin | plugin-upstream-fix | open | mcp-adapter: plugin API compatibility range is missing | plugins/mcp-adapter/package.json |
| CRABPOT-6515DC5B | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: cold import needs TypeScript source entrypoint support | extension:plugins/mcp-adapter/index.ts |
| CRABPOT-B195BB7A | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: runtime tool schema needs registration capture | registerTool @ plugins/mcp-adapter/index.ts:30 |
| CRABPOT-D8910079 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: cold import requires isolated dependency installation | openclaw @ plugins/web-search-plus/package.json |
| CRABPOT-E55C4521 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: cold import needs TypeScript source entrypoint support | extension:plugins/web-search-plus/index.ts |
| CRABPOT-A3EA1186 | P2 | web-search-plus | core | core-compat-adapter | open | web-search-plus: providerAuthEnvVars legacy manifest metadata must stay covered | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng |
| CRABPOT-AF929F22 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: runtime tool schema needs registration capture | registerTool @ plugins/web-search-plus/index.ts:815, registerTool @ plugins/web-search-plus/index.ts:947 |
| CRABPOT-848F09E3 | P2 | wecom | inspector | inspector-follow-up | open | wecom: channel runtime needs envelope/config probes | registerChannel @ plugins/wecom/index.js:27 |
| CRABPOT-4734034D | P2 | wecom | inspector | inspector-follow-up | open | wecom: cold import requires isolated dependency installation | @wecom/aibot-node-sdk @ plugins/wecom/package.json, file-type @ plugins/wecom/package.json, pinyin-pro @ plugins/wecom/package.json, openclaw @ plugins/wecom/package.json, undici @ plugins/wecom/package.json |
| CRABPOT-5E53BD07 | P2 | wecom | plugin | plugin-upstream-fix | open | wecom: plugin API compatibility range is missing | plugins/wecom/package.json |
| CRABPOT-72021A36 | P2 | wecom | inspector | inspector-follow-up | open | wecom: runtime tool schema needs registration capture | registerTool @ plugins/wecom/index.js:28, registerTool @ plugins/wecom/index.js:29, registerTool @ plugins/wecom/index.js:33 |
| ID | Severity | Fixture | Owner | Decision | Status | Title | Evidence |
| ---------------- | -------- | ----------------- | --------- | ------------------- | ------ | ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CRABPOT-37E8444D | P1 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: runtime registrations need capture before contract judgment | registerGatewayMethod @ plugins/a2a-gateway/index.ts:616, registerGatewayMethod @ plugins/a2a-gateway/index.ts:622, registerGatewayMethod @ plugins/a2a-gateway/index.ts:631, registerGatewayMethod @ plugins/a2a-gateway/index.ts:657, registerGatewayMethod @ plugins/a2a-gateway/index.ts:669, registerService @ plugins/a2a-gateway/index.ts:857 |
| CRABPOT-9D5EE194 | P1 | clawmetry | inspector | inspector-follow-up | open | clawmetry: runtime registrations need capture before contract judgment | registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9 |
| CRABPOT-6D9E51D9 | P1 | codex-app-server | core | core-compat-adapter | open | codex-app-server: compat-dependent behavior lacks registry coverage | plugin-sdk-export-aliases |
| CRABPOT-45CAC152 | P1 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: runtime registrations need capture before contract judgment | registerCommand @ plugins/codex-app-server/index.ts:48, registerInteractiveHandler @ plugins/codex-app-server/index.ts:29, registerInteractiveHandler @ plugins/codex-app-server/index.ts:38, registerService @ plugins/codex-app-server/index.ts:12 |
| CRABPOT-C2331427 | P1 | codex-app-server | core | core-compat-adapter | open | codex-app-server: plugin SDK import aliases are missing from target package exports | 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 |
| CRABPOT-D71B126E | P1 | llm-trace-phoenix | core | inspector-follow-up | open | llm-trace-phoenix: conversation-access hooks need privacy-boundary probes | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 |
| CRABPOT-B91192E5 | P1 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: runtime registrations need capture before contract judgment | registerService @ plugins/mcp-adapter/index.ts:15 |
| CRABPOT-EE3B527C | P1 | opik-openclaw | inspector | inspector-follow-up | open | opik-openclaw: before_tool_call needs terminal/block/approval probes | before_tool_call @ plugins/opik-openclaw/src/service/hooks/tool.ts:34 |
| CRABPOT-6FC4ED08 | P1 | opik-openclaw | core | inspector-follow-up | open | opik-openclaw: conversation-access hooks need privacy-boundary probes | 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 |
| CRABPOT-5E85F236 | P1 | opik-openclaw | inspector | inspector-follow-up | open | opik-openclaw: runtime registrations need capture before contract judgment | registerService @ plugins/opik-openclaw/index.ts:16 |
| CRABPOT-B08DB79E | P1 | wecom | inspector | inspector-follow-up | open | wecom: before_tool_call needs terminal/block/approval probes | before_tool_call @ plugins/wecom/index.js:65 |
| CRABPOT-9428734C | P1 | wecom | inspector | inspector-follow-up | open | wecom: runtime registrations need capture before contract judgment | registerChannel @ plugins/wecom/index.js:27, registerHttpRoute @ plugins/wecom/index.js:45 |
| CRABPOT-6469330F | P2 | a2a-gateway | core | core-compat-adapter | open | a2a-gateway: root plugin SDK barrel is still used by fixtures | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 |
| CRABPOT-892CF14F | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: manifest uses unsupported top-level fields | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json |
| CRABPOT-F5185BE0 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: cold import requires isolated dependency installation | @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 |
| CRABPOT-16E892BF | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: package and manifest versions drift | package:1.4.0, manifest:1.3.0 |
| CRABPOT-FDBB1C67 | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: plugin API compatibility range is missing | plugins/a2a-gateway/package.json |
| CRABPOT-96D2E9F4 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: cold import needs TypeScript source entrypoint support | extension:plugins/a2a-gateway/index.ts |
| CRABPOT-654F01E7 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: runtime tool schema needs registration capture | registerTool @ plugins/a2a-gateway/index.ts:777 |
| CRABPOT-74260BA0 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: channel runtime needs envelope/config probes | defineChannelPluginEntry @ plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333 |
| CRABPOT-90736EF4 | P2 | agentchat | core | core-compat-adapter | open | agentchat: channelEnvVars legacy manifest metadata must stay covered | agentchat |
| CRABPOT-BEC462A4 | P2 | agentchat | plugin | plugin-upstream-fix | open | agentchat: manifest uses unsupported top-level fields | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json |
| CRABPOT-6A790CB4 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: cold import requires package build output | extension:./dist/index.js -> plugins/agentchat/integrations/openclaw-channel/dist/index.js, setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js |
| CRABPOT-2ED34BE8 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: cold import requires isolated dependency installation | @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, openclaw @ plugins/agentchat/integrations/openclaw-channel/package.json |
| CRABPOT-0CFF8B6F | P2 | apify | core | core-compat-adapter | open | apify: root plugin SDK barrel is still used by fixtures | 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 |
| CRABPOT-74FAA2A2 | P2 | apify | inspector | inspector-follow-up | open | apify: cold import requires isolated dependency installation | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json, openclaw @ plugins/apify/package.json |
| CRABPOT-18D12186 | P2 | apify | inspector | inspector-follow-up | open | apify: cold import needs TypeScript source entrypoint support | extension:plugins/apify/src/index.ts |
| CRABPOT-93E9D53A | P2 | apify | inspector | inspector-follow-up | open | apify: runtime tool schema needs registration capture | registerTool @ plugins/apify/src/index.ts:13 |
| CRABPOT-4BCB1F63 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import requires package build output | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js |
| CRABPOT-034E5504 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import requires isolated dependency installation | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json |
| CRABPOT-EF6E7134 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import needs TypeScript source entrypoint support | extension:plugins/clawmetry/clawhub-plugin/index.ts |
| CRABPOT-A36ECE8E | P2 | codex-app-server | core | core-compat-adapter | open | codex-app-server: root plugin SDK barrel is still used by fixtures | 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 |
| CRABPOT-DC637E99 | P2 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: cold import requires isolated dependency installation | ws @ plugins/codex-app-server/package.json, openclaw @ plugins/codex-app-server/package.json |
| CRABPOT-F8C8F1CD | P2 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: cold import needs TypeScript source entrypoint support | extension:plugins/codex-app-server/index.ts |
| CRABPOT-2C2BFD3C | P2 | hasdata | inspector | inspector-follow-up | open | hasdata: cold import requires isolated dependency installation | @sinclair/typebox @ plugins/hasdata/package.json, openclaw @ plugins/hasdata/package.json |
| CRABPOT-1853BC94 | P2 | hasdata | inspector | inspector-follow-up | open | hasdata: cold import needs TypeScript source entrypoint support | extension:plugins/hasdata/src/index.ts |
| CRABPOT-1ABECD7E | P2 | hasdata | core | core-compat-adapter | open | hasdata: providerAuthEnvVars legacy manifest metadata must stay covered | hasdata |
| CRABPOT-0853EBDC | P2 | inworld-tts | inspector | inspector-follow-up | open | inworld-tts: cold import requires isolated dependency installation | openclaw @ plugins/inworld-tts/package.json |
| CRABPOT-7C59D06F | P2 | inworld-tts | inspector | inspector-follow-up | open | inworld-tts: cold import needs TypeScript source entrypoint support | extension:plugins/inworld-tts/index.ts |
| CRABPOT-CCABE384 | P2 | inworld-tts | core | core-compat-adapter | open | inworld-tts: providerAuthEnvVars legacy manifest metadata must stay covered | inworld |
| CRABPOT-4CC6CA25 | P2 | llm-trace-phoenix | core | core-compat-adapter | open | llm-trace-phoenix: root plugin SDK barrel is still used by fixtures | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 |
| CRABPOT-15F8300A | P2 | llm-trace-phoenix | inspector | inspector-follow-up | open | llm-trace-phoenix: cold import needs TypeScript source entrypoint support | extension:plugins/llm-trace-phoenix/index.ts |
| CRABPOT-22E35E29 | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: cold import requires isolated dependency installation | @modelcontextprotocol/sdk @ plugins/mcp-adapter/package.json |
| CRABPOT-4511EE11 | P2 | mcp-adapter | plugin | plugin-upstream-fix | open | mcp-adapter: plugin API compatibility range is missing | plugins/mcp-adapter/package.json |
| CRABPOT-6515DC5B | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: cold import needs TypeScript source entrypoint support | extension:plugins/mcp-adapter/index.ts |
| CRABPOT-B195BB7A | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: runtime tool schema needs registration capture | registerTool @ plugins/mcp-adapter/index.ts:30 |
| CRABPOT-F76EC24F | P2 | opik-openclaw | core | core-compat-adapter | open | opik-openclaw: root plugin SDK barrel is still used by fixtures | openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/cli.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/configure.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:5, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:6, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/llm.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/subagent.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/tool.ts:1 |
| CRABPOT-5D328BF6 | P2 | opik-openclaw | inspector | inspector-follow-up | open | opik-openclaw: cold import requires package build output | runtimeExtension:./dist/index.js -> plugins/opik-openclaw/dist/index.js |
| CRABPOT-32CDFD6D | P2 | opik-openclaw | inspector | inspector-follow-up | open | opik-openclaw: cold import requires isolated dependency installation | @clack/prompts @ plugins/opik-openclaw/package.json, opik @ plugins/opik-openclaw/package.json, zod @ plugins/opik-openclaw/package.json, openclaw @ plugins/opik-openclaw/package.json |
| CRABPOT-FAEC3F71 | P2 | opik-openclaw | inspector | inspector-follow-up | open | opik-openclaw: cold import needs TypeScript source entrypoint support | extension:plugins/opik-openclaw/index.ts |
| CRABPOT-D8910079 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: cold import requires isolated dependency installation | openclaw @ plugins/web-search-plus/package.json |
| CRABPOT-E55C4521 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: cold import needs TypeScript source entrypoint support | extension:plugins/web-search-plus/index.ts |
| CRABPOT-A3EA1186 | P2 | web-search-plus | core | core-compat-adapter | open | web-search-plus: providerAuthEnvVars legacy manifest metadata must stay covered | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng |
| CRABPOT-AF929F22 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: runtime tool schema needs registration capture | registerTool @ plugins/web-search-plus/index.ts:815, registerTool @ plugins/web-search-plus/index.ts:947 |
| CRABPOT-848F09E3 | P2 | wecom | inspector | inspector-follow-up | open | wecom: channel runtime needs envelope/config probes | registerChannel @ plugins/wecom/index.js:27 |
| CRABPOT-4734034D | P2 | wecom | inspector | inspector-follow-up | open | wecom: cold import requires isolated dependency installation | @wecom/aibot-node-sdk @ plugins/wecom/package.json, file-type @ plugins/wecom/package.json, pinyin-pro @ plugins/wecom/package.json, openclaw @ plugins/wecom/package.json, undici @ plugins/wecom/package.json |
| CRABPOT-5E53BD07 | P2 | wecom | plugin | plugin-upstream-fix | open | wecom: plugin API compatibility range is missing | plugins/wecom/package.json |
| CRABPOT-72021A36 | P2 | wecom | inspector | inspector-follow-up | open | wecom: runtime tool schema needs registration capture | registerTool @ plugins/wecom/index.js:28, registerTool @ plugins/wecom/index.js:29, registerTool @ plugins/wecom/index.js:33 |
## Contract Probe Backlog
| ID | Priority | Fixture | Target | Contract | Evidence |
| --------------------------------------------------------------- | -------- | ----------------- | --------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| api.capture.runtime-registrars:a2a-gateway | P1 | a2a-gateway | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerGatewayMethod @ plugins/a2a-gateway/index.ts:616, registerGatewayMethod @ plugins/a2a-gateway/index.ts:622, registerGatewayMethod @ plugins/a2a-gateway/index.ts:631, registerGatewayMethod @ plugins/a2a-gateway/index.ts:657, registerGatewayMethod @ plugins/a2a-gateway/index.ts:669, registerService @ plugins/a2a-gateway/index.ts:857 |
| api.capture.runtime-registrars:clawmetry | P1 | clawmetry | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9 |
| api.capture.runtime-registrars:codex-app-server | P1 | codex-app-server | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerCommand @ plugins/codex-app-server/index.ts:48, registerInteractiveHandler @ plugins/codex-app-server/index.ts:29, registerInteractiveHandler @ plugins/codex-app-server/index.ts:38, registerService @ plugins/codex-app-server/index.ts:12 |
| api.capture.runtime-registrars:mcp-adapter | P1 | mcp-adapter | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerService @ plugins/mcp-adapter/index.ts:15 |
| api.capture.runtime-registrars:wecom | P1 | wecom | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerChannel @ plugins/wecom/index.js:27, registerHttpRoute @ plugins/wecom/index.js:45 |
| hook.before_tool_call.terminal-block-approval:wecom | P1 | wecom | hook-runner | Hook returns preserve terminal, block, and approval semantics. | before_tool_call @ plugins/wecom/index.js:65 |
| hook.llm-observer.privacy-payload:llm-trace-phoenix | P1 | llm-trace-phoenix | hook-runner | LLM observer hooks receive documented prompt/output fields with expected redaction behavior. | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 |
| sdk.import.package-export-cold-import:codex-app-server | P1 | codex-app-server | sdk-alias | Every observed OpenClaw plugin SDK import remains 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 |
| channel.runtime.envelope-config-metadata:agentchat | P2 | agentchat | channel-runtime | Channel setup, message envelope, sender metadata, and config schema remain stable. | defineChannelPluginEntry @ plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333 |
| channel.runtime.envelope-config-metadata:wecom | P2 | wecom | channel-runtime | Channel setup, message envelope, sender metadata, and config schema remain stable. | registerChannel @ plugins/wecom/index.js:27 |
| manifest.compat.channel-env-vars:agentchat | P2 | agentchat | manifest-loader | Legacy channel env metadata continues to map into channel setup/help surfaces. | agentchat |
| manifest.compat.provider-auth-env-vars:hasdata | P2 | hasdata | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | hasdata |
| manifest.schema.top-level-fields:a2a-gateway | P2 | a2a-gateway | manifest-loader | Manifest top-level fields are represented in target OpenClaw PluginManifest. | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json |
| manifest.schema.top-level-fields:agentchat | P2 | agentchat | manifest-loader | Manifest top-level fields are represented in target OpenClaw PluginManifest. | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json |
| package.compat.plugin-api-range:a2a-gateway | P2 | a2a-gateway | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/a2a-gateway/package.json |
| package.compat.plugin-api-range:mcp-adapter | P2 | mcp-adapter | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/mcp-adapter/package.json |
| package.compat.plugin-api-range:wecom | P2 | wecom | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/wecom/package.json |
| package.entrypoint.build-before-cold-import:agentchat | P2 | agentchat | package-loader | Inspector can build or resolve source aliases before cold importing package entrypoints. | extension:./dist/index.js -> plugins/agentchat/integrations/openclaw-channel/dist/index.js, setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js |
| package.entrypoint.isolated-dependency-install:a2a-gateway | P2 | a2a-gateway | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @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 | Inspector installs package dependencies in an isolated workspace before cold import. | @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, openclaw @ plugins/agentchat/integrations/openclaw-channel/package.json |
| package.entrypoint.isolated-dependency-install:hasdata | P2 | hasdata | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @sinclair/typebox @ plugins/hasdata/package.json, openclaw @ plugins/hasdata/package.json |
| package.entrypoint.isolated-dependency-install:mcp-adapter | P2 | mcp-adapter | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @modelcontextprotocol/sdk @ plugins/mcp-adapter/package.json |
| package.entrypoint.isolated-dependency-install:wecom | P2 | wecom | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @wecom/aibot-node-sdk @ plugins/wecom/package.json, file-type @ plugins/wecom/package.json, pinyin-pro @ plugins/wecom/package.json, openclaw @ plugins/wecom/package.json, undici @ plugins/wecom/package.json |
| package.entrypoint.typescript-loader:a2a-gateway | P2 | a2a-gateway | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/a2a-gateway/index.ts |
| package.entrypoint.typescript-loader:hasdata | P2 | hasdata | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/hasdata/src/index.ts |
| package.entrypoint.typescript-loader:llm-trace-phoenix | P2 | llm-trace-phoenix | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/llm-trace-phoenix/index.ts |
| package.entrypoint.typescript-loader:mcp-adapter | P2 | mcp-adapter | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/mcp-adapter/index.ts |
| package.metadata.version-alignment:a2a-gateway | P2 | a2a-gateway | package-loader | Package and OpenClaw manifest versions stay aligned for release compatibility reporting. | package:1.4.0, manifest:1.3.0 |
| sdk.import.root-barrel-cold-import:a2a-gateway | P2 | a2a-gateway | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 |
| sdk.import.root-barrel-cold-import:llm-trace-phoenix | P2 | llm-trace-phoenix | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 |
| tool.registration.schema-capture:a2a-gateway | P2 | a2a-gateway | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/a2a-gateway/index.ts:777 |
| tool.registration.schema-capture:mcp-adapter | P2 | mcp-adapter | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/mcp-adapter/index.ts:30 |
| tool.registration.schema-capture:wecom | P2 | wecom | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/wecom/index.js:28, registerTool @ plugins/wecom/index.js:29, registerTool @ plugins/wecom/index.js:33 |
| manifest.compat.provider-auth-env-vars:inworld-tts | P3 | inworld-tts | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | inworld |
| manifest.compat.provider-auth-env-vars:web-search-plus | P3 | web-search-plus | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng |
| package.entrypoint.build-before-cold-import:clawmetry | P3 | clawmetry | package-loader | Inspector can build or resolve source aliases before cold importing package entrypoints. | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js |
| package.entrypoint.isolated-dependency-install:apify | P3 | apify | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json, openclaw @ plugins/apify/package.json |
| package.entrypoint.isolated-dependency-install:clawmetry | P3 | clawmetry | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json |
| package.entrypoint.isolated-dependency-install:codex-app-server | P3 | codex-app-server | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | ws @ plugins/codex-app-server/package.json, openclaw @ plugins/codex-app-server/package.json |
| package.entrypoint.isolated-dependency-install:inworld-tts | P3 | inworld-tts | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | openclaw @ plugins/inworld-tts/package.json |
| package.entrypoint.isolated-dependency-install:web-search-plus | P3 | web-search-plus | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | openclaw @ plugins/web-search-plus/package.json |
| package.entrypoint.typescript-loader:apify | P3 | apify | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/apify/src/index.ts |
| package.entrypoint.typescript-loader:clawmetry | P3 | clawmetry | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/clawmetry/clawhub-plugin/index.ts |
| package.entrypoint.typescript-loader:codex-app-server | P3 | codex-app-server | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/codex-app-server/index.ts |
| package.entrypoint.typescript-loader:inworld-tts | P3 | inworld-tts | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/inworld-tts/index.ts |
| package.entrypoint.typescript-loader:web-search-plus | P3 | web-search-plus | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/web-search-plus/index.ts |
| sdk.import.root-barrel-cold-import:apify | P3 | apify | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | 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 |
| sdk.import.root-barrel-cold-import:codex-app-server | P3 | codex-app-server | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | 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 |
| tool.registration.schema-capture:apify | P3 | apify | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/apify/src/index.ts:13 |
| tool.registration.schema-capture:web-search-plus | P3 | web-search-plus | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/web-search-plus/index.ts:815, registerTool @ plugins/web-search-plus/index.ts:947 |
| ID | Priority | Fixture | Target | Contract | Evidence |
| --------------------------------------------------------------- | -------- | ----------------- | --------------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| api.capture.runtime-registrars:a2a-gateway | P1 | a2a-gateway | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerGatewayMethod @ plugins/a2a-gateway/index.ts:616, registerGatewayMethod @ plugins/a2a-gateway/index.ts:622, registerGatewayMethod @ plugins/a2a-gateway/index.ts:631, registerGatewayMethod @ plugins/a2a-gateway/index.ts:657, registerGatewayMethod @ plugins/a2a-gateway/index.ts:669, registerService @ plugins/a2a-gateway/index.ts:857 |
| api.capture.runtime-registrars:clawmetry | P1 | clawmetry | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9 |
| api.capture.runtime-registrars:codex-app-server | P1 | codex-app-server | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerCommand @ plugins/codex-app-server/index.ts:48, registerInteractiveHandler @ plugins/codex-app-server/index.ts:29, registerInteractiveHandler @ plugins/codex-app-server/index.ts:38, registerService @ plugins/codex-app-server/index.ts:12 |
| api.capture.runtime-registrars:mcp-adapter | P1 | mcp-adapter | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerService @ plugins/mcp-adapter/index.ts:15 |
| api.capture.runtime-registrars:opik-openclaw | P1 | opik-openclaw | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerService @ plugins/opik-openclaw/index.ts:16 |
| api.capture.runtime-registrars:wecom | P1 | wecom | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerChannel @ plugins/wecom/index.js:27, registerHttpRoute @ plugins/wecom/index.js:45 |
| hook.before_tool_call.terminal-block-approval:opik-openclaw | P1 | opik-openclaw | hook-runner | Hook returns preserve terminal, block, and approval semantics. | before_tool_call @ plugins/opik-openclaw/src/service/hooks/tool.ts:34 |
| hook.before_tool_call.terminal-block-approval:wecom | P1 | wecom | hook-runner | Hook returns preserve terminal, block, and approval semantics. | before_tool_call @ plugins/wecom/index.js:65 |
| hook.llm-observer.privacy-payload:llm-trace-phoenix | P1 | llm-trace-phoenix | hook-runner | LLM observer hooks receive documented prompt/output fields with expected redaction behavior. | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 |
| hook.llm-observer.privacy-payload:opik-openclaw | P1 | opik-openclaw | hook-runner | LLM observer hooks receive documented prompt/output fields with expected redaction behavior. | 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:codex-app-server | P1 | codex-app-server | sdk-alias | Every observed OpenClaw plugin SDK import remains 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 |
| channel.runtime.envelope-config-metadata:agentchat | P2 | agentchat | channel-runtime | Channel setup, message envelope, sender metadata, and config schema remain stable. | defineChannelPluginEntry @ plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333 |
| channel.runtime.envelope-config-metadata:wecom | P2 | wecom | channel-runtime | Channel setup, message envelope, sender metadata, and config schema remain stable. | registerChannel @ plugins/wecom/index.js:27 |
| manifest.compat.channel-env-vars:agentchat | P2 | agentchat | manifest-loader | Legacy channel env metadata continues to map into channel setup/help surfaces. | agentchat |
| manifest.compat.provider-auth-env-vars:hasdata | P2 | hasdata | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | hasdata |
| manifest.schema.top-level-fields:a2a-gateway | P2 | a2a-gateway | manifest-loader | Manifest top-level fields are represented in target OpenClaw PluginManifest. | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json |
| manifest.schema.top-level-fields:agentchat | P2 | agentchat | manifest-loader | Manifest top-level fields are represented in target OpenClaw PluginManifest. | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json |
| package.compat.plugin-api-range:a2a-gateway | P2 | a2a-gateway | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/a2a-gateway/package.json |
| package.compat.plugin-api-range:mcp-adapter | P2 | mcp-adapter | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/mcp-adapter/package.json |
| package.compat.plugin-api-range:wecom | P2 | wecom | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/wecom/package.json |
| package.entrypoint.build-before-cold-import:agentchat | P2 | agentchat | package-loader | Inspector can build or resolve source aliases before cold importing package entrypoints. | extension:./dist/index.js -> plugins/agentchat/integrations/openclaw-channel/dist/index.js, setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js |
| package.entrypoint.build-before-cold-import:opik-openclaw | P2 | opik-openclaw | package-loader | Inspector can build or resolve source aliases before cold importing package entrypoints. | runtimeExtension:./dist/index.js -> plugins/opik-openclaw/dist/index.js |
| package.entrypoint.isolated-dependency-install:a2a-gateway | P2 | a2a-gateway | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @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 | Inspector installs package dependencies in an isolated workspace before cold import. | @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, openclaw @ plugins/agentchat/integrations/openclaw-channel/package.json |
| package.entrypoint.isolated-dependency-install:hasdata | P2 | hasdata | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @sinclair/typebox @ plugins/hasdata/package.json, openclaw @ plugins/hasdata/package.json |
| package.entrypoint.isolated-dependency-install:mcp-adapter | P2 | mcp-adapter | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @modelcontextprotocol/sdk @ plugins/mcp-adapter/package.json |
| package.entrypoint.isolated-dependency-install:opik-openclaw | P2 | opik-openclaw | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @clack/prompts @ plugins/opik-openclaw/package.json, opik @ plugins/opik-openclaw/package.json, zod @ plugins/opik-openclaw/package.json, openclaw @ plugins/opik-openclaw/package.json |
| package.entrypoint.isolated-dependency-install:wecom | P2 | wecom | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @wecom/aibot-node-sdk @ plugins/wecom/package.json, file-type @ plugins/wecom/package.json, pinyin-pro @ plugins/wecom/package.json, openclaw @ plugins/wecom/package.json, undici @ plugins/wecom/package.json |
| package.entrypoint.typescript-loader:a2a-gateway | P2 | a2a-gateway | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/a2a-gateway/index.ts |
| package.entrypoint.typescript-loader:hasdata | P2 | hasdata | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/hasdata/src/index.ts |
| package.entrypoint.typescript-loader:llm-trace-phoenix | P2 | llm-trace-phoenix | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/llm-trace-phoenix/index.ts |
| package.entrypoint.typescript-loader:mcp-adapter | P2 | mcp-adapter | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/mcp-adapter/index.ts |
| package.entrypoint.typescript-loader:opik-openclaw | P2 | opik-openclaw | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/opik-openclaw/index.ts |
| package.metadata.version-alignment:a2a-gateway | P2 | a2a-gateway | package-loader | Package and OpenClaw manifest versions stay aligned for release compatibility reporting. | package:1.4.0, manifest:1.3.0 |
| sdk.import.root-barrel-cold-import:a2a-gateway | P2 | a2a-gateway | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 |
| sdk.import.root-barrel-cold-import:llm-trace-phoenix | P2 | llm-trace-phoenix | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 |
| sdk.import.root-barrel-cold-import:opik-openclaw | P2 | opik-openclaw | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/cli.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/configure.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:5, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:6, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/llm.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/subagent.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/tool.ts:1 |
| tool.registration.schema-capture:a2a-gateway | P2 | a2a-gateway | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/a2a-gateway/index.ts:777 |
| tool.registration.schema-capture:mcp-adapter | P2 | mcp-adapter | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/mcp-adapter/index.ts:30 |
| tool.registration.schema-capture:wecom | P2 | wecom | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/wecom/index.js:28, registerTool @ plugins/wecom/index.js:29, registerTool @ plugins/wecom/index.js:33 |
| manifest.compat.provider-auth-env-vars:inworld-tts | P3 | inworld-tts | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | inworld |
| manifest.compat.provider-auth-env-vars:web-search-plus | P3 | web-search-plus | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng |
| package.entrypoint.build-before-cold-import:clawmetry | P3 | clawmetry | package-loader | Inspector can build or resolve source aliases before cold importing package entrypoints. | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js |
| package.entrypoint.isolated-dependency-install:apify | P3 | apify | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json, openclaw @ plugins/apify/package.json |
| package.entrypoint.isolated-dependency-install:clawmetry | P3 | clawmetry | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json |
| package.entrypoint.isolated-dependency-install:codex-app-server | P3 | codex-app-server | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | ws @ plugins/codex-app-server/package.json, openclaw @ plugins/codex-app-server/package.json |
| package.entrypoint.isolated-dependency-install:inworld-tts | P3 | inworld-tts | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | openclaw @ plugins/inworld-tts/package.json |
| package.entrypoint.isolated-dependency-install:web-search-plus | P3 | web-search-plus | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | openclaw @ plugins/web-search-plus/package.json |
| package.entrypoint.typescript-loader:apify | P3 | apify | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/apify/src/index.ts |
| package.entrypoint.typescript-loader:clawmetry | P3 | clawmetry | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/clawmetry/clawhub-plugin/index.ts |
| package.entrypoint.typescript-loader:codex-app-server | P3 | codex-app-server | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/codex-app-server/index.ts |
| package.entrypoint.typescript-loader:inworld-tts | P3 | inworld-tts | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/inworld-tts/index.ts |
| package.entrypoint.typescript-loader:web-search-plus | P3 | web-search-plus | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/web-search-plus/index.ts |
| sdk.import.root-barrel-cold-import:apify | P3 | apify | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | 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 |
| sdk.import.root-barrel-cold-import:codex-app-server | P3 | codex-app-server | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | 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 |
| tool.registration.schema-capture:apify | P3 | apify | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/apify/src/index.ts:13 |
| tool.registration.schema-capture:web-search-plus | P3 | web-search-plus | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/web-search-plus/index.ts:815, registerTool @ plugins/web-search-plus/index.ts:947 |

View File

@ -0,0 +1,168 @@
{
"generatedAt": "deterministic",
"status": "pass",
"strict": false,
"baseline": {
"runs": 3,
"summary": {
"commandCount": 7,
"p50WallMs": 742,
"p95WallMs": 1273,
"maxPeakRssMb": 65.1
},
"targetOpenClaw": {
"status": "ok",
"configuredPath": "../openclaw",
"compatRecords": 19,
"hookNames": 31,
"apiRegistrars": 40,
"capturedRegistrars": 18,
"sdkExports": 307,
"manifestFields": 32,
"manifestContractFields": 16
},
"fixtureInventory": {
"fixtures": 12,
"sourceFiles": 201,
"observedHooks": 18,
"observedRegistrations": 22,
"observedSdkImports": 20,
"contractProbes": 57,
"issueFindings": 58
}
},
"current": {
"runs": 3,
"summary": {
"commandCount": 7,
"p50WallMs": 742,
"p95WallMs": 1273,
"maxPeakRssMb": 65.1
},
"targetOpenClaw": {
"status": "ok",
"configuredPath": "../openclaw",
"compatRecords": 19,
"hookNames": 31,
"apiRegistrars": 40,
"capturedRegistrars": 18,
"sdkExports": 307,
"manifestFields": 32,
"manifestContractFields": 16
},
"fixtureInventory": {
"fixtures": 12,
"sourceFiles": 201,
"observedHooks": 18,
"observedRegistrations": 22,
"observedSdkImports": 20,
"contractProbes": 57,
"issueFindings": 58
}
},
"thresholds": {
"wallP95RegressionPercent": 50,
"peakRssRegressionMb": 50,
"bootRegressionMs": 500,
"strictMinimumSamples": 3
},
"summary": {
"checkCount": 10,
"failCount": 0,
"warnCount": 0,
"passCount": 10
},
"checks": [
{
"id": "profile.wall-p95",
"action": "pass",
"metric": "p95WallMs",
"message": "p95WallMs stayed within 50% regression threshold",
"baseline": 1273,
"current": 1273,
"delta": 0,
"percent": 0
},
{
"id": "profile.peak-rss",
"action": "pass",
"metric": "maxPeakRssMb",
"message": "maxPeakRssMb stayed within 50 absolute regression threshold",
"baseline": 65.1,
"current": 65.1,
"delta": 0
},
{
"id": "profile.node-boot",
"action": "pass",
"metric": "nodeBootWallMs",
"message": "nodeBootWallMs stayed within 500 absolute regression threshold",
"baseline": 917,
"current": 917,
"delta": 0
},
{
"id": "registry.compatRecords",
"action": "pass",
"metric": "compatRecords",
"message": "registry surface delta is tracked as context",
"baseline": 19,
"current": 19,
"delta": 0
},
{
"id": "registry.hookNames",
"action": "pass",
"metric": "hookNames",
"message": "registry surface delta is tracked as context",
"baseline": 31,
"current": 31,
"delta": 0
},
{
"id": "registry.apiRegistrars",
"action": "pass",
"metric": "apiRegistrars",
"message": "registry surface delta is tracked as context",
"baseline": 40,
"current": 40,
"delta": 0
},
{
"id": "registry.capturedRegistrars",
"action": "pass",
"metric": "capturedRegistrars",
"message": "registry surface delta is tracked as context",
"baseline": 18,
"current": 18,
"delta": 0
},
{
"id": "registry.sdkExports",
"action": "pass",
"metric": "sdkExports",
"message": "registry surface delta is tracked as context",
"baseline": 307,
"current": 307,
"delta": 0
},
{
"id": "registry.manifestFields",
"action": "pass",
"metric": "manifestFields",
"message": "registry surface delta is tracked as context",
"baseline": 32,
"current": 32,
"delta": 0
},
{
"id": "registry.manifestContractFields",
"action": "pass",
"metric": "manifestContractFields",
"message": "registry surface delta is tracked as context",
"baseline": 16,
"current": 16,
"delta": 0
}
]
}

View File

@ -0,0 +1,31 @@
# Crabpot Runtime Profile Diff
Generated: deterministic
Status: PASS
Strict: false
## Summary
| Metric | Value |
| ------------- | ----- |
| Checks | 10 |
| Fail | 0 |
| Warn | 0 |
| Pass | 10 |
| Current runs | 3 |
| Baseline runs | 3 |
## Checks
| Action | ID | Metric | Baseline | Current | Delta | Percent | Message |
| ------ | ------------------------------- | ---------------------- | -------- | ------- | ----- | ------- | -------------------------------------------------------------- |
| pass | profile.wall-p95 | p95WallMs | 1273 | 1273 | 0 | 0% | p95WallMs stayed within 50% regression threshold |
| pass | profile.peak-rss | maxPeakRssMb | 65.1 | 65.1 | 0 | - | maxPeakRssMb stayed within 50 absolute regression threshold |
| pass | profile.node-boot | nodeBootWallMs | 917 | 917 | 0 | - | nodeBootWallMs stayed within 500 absolute regression threshold |
| pass | registry.compatRecords | compatRecords | 19 | 19 | 0 | - | registry surface delta is tracked as context |
| pass | registry.hookNames | hookNames | 31 | 31 | 0 | - | registry surface delta is tracked as context |
| pass | registry.apiRegistrars | apiRegistrars | 40 | 40 | 0 | - | registry surface delta is tracked as context |
| pass | registry.capturedRegistrars | capturedRegistrars | 18 | 18 | 0 | - | registry surface delta is tracked as context |
| pass | registry.sdkExports | sdkExports | 307 | 307 | 0 | - | registry surface delta is tracked as context |
| pass | registry.manifestFields | manifestFields | 32 | 32 | 0 | - | registry surface delta is tracked as context |
| pass | registry.manifestContractFields | manifestContractFields | 16 | 16 | 0 | - | registry surface delta is tracked as context |

View File

@ -0,0 +1,210 @@
{
"generatedAt": "deterministic",
"base": {
"label": "../openclaw",
"targetOpenClaw": {
"status": "ok",
"configuredPath": "../openclaw",
"compatRecordCount": 19,
"hookNameCount": 31,
"apiRegistrarCount": 40,
"capturedRegistrarCount": 18,
"sdkExportCount": 307,
"manifestFieldCount": 32,
"manifestContractFieldCount": 16
},
"report": {
"status": "pass",
"breakageCount": 0,
"warningCount": 18,
"suggestionCount": 40,
"issueCount": 58,
"p0IssueCount": 0,
"p1IssueCount": 12,
"contractProbeCount": 57
}
},
"head": {
"label": "../openclaw",
"targetOpenClaw": {
"status": "ok",
"configuredPath": "../openclaw",
"compatRecordCount": 19,
"hookNameCount": 31,
"apiRegistrarCount": 40,
"capturedRegistrarCount": 18,
"sdkExportCount": 307,
"manifestFieldCount": 32,
"manifestContractFieldCount": 16
},
"report": {
"status": "pass",
"breakageCount": 0,
"warningCount": 18,
"suggestionCount": 40,
"issueCount": 58,
"p0IssueCount": 0,
"p1IssueCount": 12,
"contractProbeCount": 57
}
},
"status": "pass",
"summary": {
"dimensionCount": 7,
"hardRegressionCount": 0,
"warningRegressionCount": 0,
"newIssueCount": 0,
"newP0IssueCount": 0,
"newP1IssueCount": 0,
"removedIssueCount": 0
},
"dimensions": [
{
"id": "compatRecords",
"label": "Compat records",
"baseCount": 19,
"headCount": 19,
"added": [],
"removed": [],
"removedUsed": [],
"used": [],
"regressions": []
},
{
"id": "hookNames",
"label": "Hook names",
"baseCount": 31,
"headCount": 31,
"added": [],
"removed": [],
"removedUsed": [],
"used": [
"after_tool_call",
"agent_end",
"before_prompt_build",
"before_tool_call",
"inbound_claim",
"llm_input",
"llm_output",
"subagent_delivery_target",
"subagent_ended",
"subagent_spawned",
"subagent_spawning",
"tool_result_persist"
],
"regressions": []
},
{
"id": "apiRegistrars",
"label": "API registrars",
"baseCount": 40,
"headCount": 40,
"added": [],
"removed": [],
"removedUsed": [],
"used": [
"defineChannelPluginEntry",
"definePluginEntry",
"registerChannel",
"registerCli",
"registerCommand",
"registerGatewayMethod",
"registerHttpRoute",
"registerInteractiveHandler",
"registerService",
"registerSpeechProvider",
"registerTool"
],
"regressions": []
},
{
"id": "capturedRegistrars",
"label": "Captured registrars",
"baseCount": 18,
"headCount": 18,
"added": [],
"removed": [],
"removedUsed": [],
"used": [
"defineChannelPluginEntry",
"definePluginEntry",
"registerChannel",
"registerCli",
"registerCommand",
"registerGatewayMethod",
"registerHttpRoute",
"registerInteractiveHandler",
"registerService",
"registerSpeechProvider",
"registerTool"
],
"regressions": []
},
{
"id": "sdkExports",
"label": "SDK exports",
"baseCount": 307,
"headCount": 307,
"added": [],
"removed": [],
"removedUsed": [],
"used": [
"openclaw/plugin-sdk",
"openclaw/plugin-sdk/channel-contract",
"openclaw/plugin-sdk/channel-core",
"openclaw/plugin-sdk/core",
"openclaw/plugin-sdk/diagnostics-otel",
"openclaw/plugin-sdk/discord",
"openclaw/plugin-sdk/media-runtime",
"openclaw/plugin-sdk/plugin-entry",
"openclaw/plugin-sdk/secret-input",
"openclaw/plugin-sdk/setup",
"openclaw/plugin-sdk/speech",
"openclaw/plugin-sdk/status-helpers",
"openclaw/plugin-sdk/telegram-account"
],
"regressions": []
},
{
"id": "manifestFields",
"label": "Manifest fields",
"baseCount": 32,
"headCount": 32,
"added": [],
"removed": [],
"removedUsed": [],
"used": [
"activation",
"channelEnvVars",
"contracts",
"id",
"keys",
"name",
"path",
"providerAuthEnvVars",
"version"
],
"regressions": []
},
{
"id": "manifestContractFields",
"label": "Manifest contract fields",
"baseCount": 16,
"headCount": 16,
"added": [],
"removed": [],
"removedUsed": [],
"used": [
"speechProviders",
"tools"
],
"regressions": []
}
],
"issueDelta": {
"added": [],
"removed": [],
"regressions": []
},
"regressions": []
}

View File

@ -0,0 +1,41 @@
# Crabpot OpenClaw Ref Diff
Generated: deterministic
Status: PASS
## Summary
| Metric | Value |
| ------------------- | ---------------- |
| Base | ../openclaw (ok) |
| Head | ../openclaw (ok) |
| Hard regressions | 0 |
| Warning regressions | 0 |
| New issues | 0 |
| New P0 issues | 0 |
| New P1 issues | 0 |
| Removed issues | 0 |
## Target Surface Delta
| Surface | Base | Head | Delta | Added | Removed | Removed used |
| ------------------------ | ---- | ---- | ----- | ----- | ------- | ------------ |
| Compat records | 19 | 19 | 0 | - | - | - |
| Hook names | 31 | 31 | 0 | - | - | - |
| API registrars | 40 | 40 | 0 | - | - | - |
| Captured registrars | 18 | 18 | 0 | - | - | - |
| SDK exports | 307 | 307 | 0 | - | - | - |
| Manifest fields | 32 | 32 | 0 | - | - | - |
| Manifest contract fields | 16 | 16 | 0 | - | - | - |
## Regressions
_none_
## New Issues
_none_
## Removed Issues
_none_

View File

@ -3,8 +3,7 @@
"targetOpenClaw": {
"configuredPath": "../openclaw",
"searchedPaths": [
"../openclaw",
"./openclaw"
"../openclaw"
],
"status": "ok",
"compatRegistryPath": "../openclaw/src/plugins/compat/registry.ts",
@ -132,7 +131,7 @@
"registerWebSearchProvider"
],
"packagePath": "../openclaw/package.json",
"sdkExportCount": 306,
"sdkExportCount": 307,
"sdkExports": [
"openclaw/plugin-sdk",
"openclaw/plugin-sdk/account-core",
@ -322,6 +321,7 @@
"openclaw/plugin-sdk/opencode",
"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-entry",
@ -499,16 +499,16 @@
},
"status": "pass",
"summary": {
"fixtureCount": 11,
"highPriorityFixtures": 6,
"fixtureCount": 12,
"highPriorityFixtures": 7,
"breakageCount": 0,
"warningCount": 16,
"suggestionCount": 35,
"decisionCount": 53,
"issueCount": 51,
"warningCount": 18,
"suggestionCount": 40,
"decisionCount": 60,
"issueCount": 58,
"p0IssueCount": 0,
"p1IssueCount": 9,
"contractProbeCount": 50
"p1IssueCount": 12,
"contractProbeCount": 57
},
"fixtures": [
{
@ -1695,6 +1695,306 @@
}
]
},
{
"id": "opik-openclaw",
"name": "Opik OpenClaw",
"priority": "high",
"seams": [
"llm-observer",
"tool-runtime",
"subagent-routing",
"diagnostics",
"cli"
],
"why": "Opik trace exporter covering LLM spans, tool spans, subagent spans, stale trace cleanup, CLI setup, and persisted tool-result sanitization.",
"status": "ok",
"hooks": [
"after_tool_call",
"agent_end",
"before_tool_call",
"llm_input",
"llm_output",
"subagent_delivery_target",
"subagent_ended",
"subagent_spawned",
"subagent_spawning",
"tool_result_persist"
],
"hookDetails": [
{
"name": "after_tool_call",
"file": "plugins/opik-openclaw/src/service/hooks/tool.ts",
"line": 100,
"ref": "plugins/opik-openclaw/src/service/hooks/tool.ts:100"
},
{
"name": "agent_end",
"file": "plugins/opik-openclaw/src/service.ts",
"line": 560,
"ref": "plugins/opik-openclaw/src/service.ts:560"
},
{
"name": "before_tool_call",
"file": "plugins/opik-openclaw/src/service/hooks/tool.ts",
"line": 34,
"ref": "plugins/opik-openclaw/src/service/hooks/tool.ts:34"
},
{
"name": "llm_input",
"file": "plugins/opik-openclaw/src/service/hooks/llm.ts",
"line": 39,
"ref": "plugins/opik-openclaw/src/service/hooks/llm.ts:39"
},
{
"name": "llm_output",
"file": "plugins/opik-openclaw/src/service/hooks/llm.ts",
"line": 150,
"ref": "plugins/opik-openclaw/src/service/hooks/llm.ts:150"
},
{
"name": "subagent_delivery_target",
"file": "plugins/opik-openclaw/src/service/hooks/subagent.ts",
"line": 147,
"ref": "plugins/opik-openclaw/src/service/hooks/subagent.ts:147"
},
{
"name": "subagent_ended",
"file": "plugins/opik-openclaw/src/service/hooks/subagent.ts",
"line": 222,
"ref": "plugins/opik-openclaw/src/service/hooks/subagent.ts:222"
},
{
"name": "subagent_spawned",
"file": "plugins/opik-openclaw/src/service/hooks/subagent.ts",
"line": 89,
"ref": "plugins/opik-openclaw/src/service/hooks/subagent.ts:89"
},
{
"name": "subagent_spawning",
"file": "plugins/opik-openclaw/src/service/hooks/subagent.ts",
"line": 38,
"ref": "plugins/opik-openclaw/src/service/hooks/subagent.ts:38"
},
{
"name": "tool_result_persist",
"file": "plugins/opik-openclaw/src/service.ts",
"line": 541,
"ref": "plugins/opik-openclaw/src/service.ts:541"
}
],
"registrations": [
"registerCli",
"registerService"
],
"registrationDetails": [
{
"name": "registerCli",
"file": "plugins/opik-openclaw/index.ts",
"line": 17,
"ref": "plugins/opik-openclaw/index.ts:17"
},
{
"name": "registerService",
"file": "plugins/opik-openclaw/index.ts",
"line": 16,
"ref": "plugins/opik-openclaw/index.ts:16"
}
],
"manifestContracts": [],
"manifestFiles": [
"plugins/opik-openclaw/openclaw.plugin.json"
],
"sourceFiles": [
"plugins/opik-openclaw/.scripts/build.mjs",
"plugins/opik-openclaw/.scripts/check-clawhub-suspicious.mjs",
"plugins/opik-openclaw/.scripts/check-e2e-result.mjs",
"plugins/opik-openclaw/.scripts/check-pack-payload.mjs",
"plugins/opik-openclaw/.scripts/live-e2e.mjs",
"plugins/opik-openclaw/.scripts/mock-llm-server.mjs",
"plugins/opik-openclaw/.scripts/mock-opik-server.mjs",
"plugins/opik-openclaw/index.ts",
"plugins/opik-openclaw/src/cli.ts",
"plugins/opik-openclaw/src/configure.ts",
"plugins/opik-openclaw/src/service.ts",
"plugins/opik-openclaw/src/service/attachment-uploader.ts",
"plugins/opik-openclaw/src/service/constants.ts",
"plugins/opik-openclaw/src/service/helpers.ts",
"plugins/opik-openclaw/src/service/hooks/llm.ts",
"plugins/opik-openclaw/src/service/hooks/subagent.ts",
"plugins/opik-openclaw/src/service/hooks/tool.ts",
"plugins/opik-openclaw/src/service/media.ts",
"plugins/opik-openclaw/src/service/payload-sanitizer.ts",
"plugins/opik-openclaw/src/types.ts"
],
"pluginManifests": [
{
"path": "plugins/opik-openclaw/openclaw.plugin.json",
"id": "opik-openclaw",
"name": "Opik",
"version": null,
"keys": [
"configSchema",
"description",
"id",
"name",
"uiHints"
],
"contracts": [],
"providerAuthEnvVars": {},
"channelEnvVars": {},
"activation": null
}
],
"package": {
"path": "plugins/opik-openclaw/package.json",
"name": "@opik/opik-openclaw",
"version": "0.2.14",
"type": "module",
"main": null,
"dependencies": [
"@clack/prompts",
"opik",
"zod"
],
"peerDependencies": [
"openclaw"
],
"optionalDependencies": [],
"openclaw": {
"extensions": [
"./index.ts"
],
"runtimeExtensions": [
"./dist/index.js"
],
"setupEntry": null,
"compatPluginApi": ">=2026.3.2",
"buildOpenClawVersion": "2026.3.2",
"buildPluginSdkVersion": "2026.3.2",
"entrypoints": [
{
"kind": "extension",
"specifier": "./index.ts",
"relativePath": "plugins/opik-openclaw/index.ts",
"exists": true,
"requiresBuild": false
},
{
"kind": "runtimeExtension",
"specifier": "./dist/index.js",
"relativePath": "plugins/opik-openclaw/dist/index.js",
"exists": false,
"requiresBuild": true
}
]
}
},
"packages": [
{
"path": "plugins/opik-openclaw/package.json",
"name": "@opik/opik-openclaw",
"version": "0.2.14",
"type": "module",
"main": null,
"dependencies": [
"@clack/prompts",
"opik",
"zod"
],
"peerDependencies": [
"openclaw"
],
"optionalDependencies": [],
"openclaw": {
"extensions": [
"./index.ts"
],
"runtimeExtensions": [
"./dist/index.js"
],
"setupEntry": null,
"compatPluginApi": ">=2026.3.2",
"buildOpenClawVersion": "2026.3.2",
"buildPluginSdkVersion": "2026.3.2",
"entrypoints": [
{
"kind": "extension",
"specifier": "./index.ts",
"relativePath": "plugins/opik-openclaw/index.ts",
"exists": true,
"requiresBuild": false
},
{
"kind": "runtimeExtension",
"specifier": "./dist/index.js",
"relativePath": "plugins/opik-openclaw/dist/index.js",
"exists": false,
"requiresBuild": true
}
]
}
}
],
"sdkImports": [
"openclaw/plugin-sdk"
],
"sdkImportDetails": [
{
"specifier": "openclaw/plugin-sdk",
"file": "plugins/opik-openclaw/index.ts",
"line": 1,
"ref": "plugins/opik-openclaw/index.ts:1"
},
{
"specifier": "openclaw/plugin-sdk",
"file": "plugins/opik-openclaw/index.ts",
"line": 2,
"ref": "plugins/opik-openclaw/index.ts:2"
},
{
"specifier": "openclaw/plugin-sdk",
"file": "plugins/opik-openclaw/src/cli.ts",
"line": 1,
"ref": "plugins/opik-openclaw/src/cli.ts:1"
},
{
"specifier": "openclaw/plugin-sdk",
"file": "plugins/opik-openclaw/src/configure.ts",
"line": 2,
"ref": "plugins/opik-openclaw/src/configure.ts:2"
},
{
"specifier": "openclaw/plugin-sdk",
"file": "plugins/opik-openclaw/src/service.ts",
"line": 5,
"ref": "plugins/opik-openclaw/src/service.ts:5"
},
{
"specifier": "openclaw/plugin-sdk",
"file": "plugins/opik-openclaw/src/service.ts",
"line": 6,
"ref": "plugins/opik-openclaw/src/service.ts:6"
},
{
"specifier": "openclaw/plugin-sdk",
"file": "plugins/opik-openclaw/src/service/hooks/llm.ts",
"line": 1,
"ref": "plugins/opik-openclaw/src/service/hooks/llm.ts:1"
},
{
"specifier": "openclaw/plugin-sdk",
"file": "plugins/opik-openclaw/src/service/hooks/subagent.ts",
"line": 1,
"ref": "plugins/opik-openclaw/src/service/hooks/subagent.ts:1"
},
{
"specifier": "openclaw/plugin-sdk",
"file": "plugins/opik-openclaw/src/service/hooks/tool.ts",
"line": 1,
"ref": "plugins/opik-openclaw/src/service/hooks/tool.ts:1"
}
]
},
{
"id": "clawmetry",
"name": "ClawMetry",
@ -2688,6 +2988,35 @@
],
"compatRecord": "legacy-root-sdk-import"
},
{
"fixture": "opik-openclaw",
"code": "conversation-access-hook",
"level": "warning",
"message": "fixture observes raw model or conversation content and needs privacy-boundary contract probes",
"evidence": [
"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"
]
},
{
"fixture": "opik-openclaw",
"code": "legacy-root-sdk-import",
"level": "warning",
"message": "fixture imports the root plugin SDK barrel",
"evidence": [
"openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:2",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/cli.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/configure.ts:2",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:5",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:6",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/llm.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/subagent.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/tool.ts:1"
],
"compatRecord": "legacy-root-sdk-import"
},
{
"fixture": "codex-app-server",
"code": "sdk-export-missing",
@ -2951,6 +3280,54 @@
"extension:plugins/llm-trace-phoenix/index.ts"
]
},
{
"fixture": "opik-openclaw",
"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": [
"runtimeExtension:./dist/index.js -> plugins/opik-openclaw/dist/index.js"
]
},
{
"fixture": "opik-openclaw",
"code": "package-typescript-source-entrypoint",
"level": "suggestion",
"message": "package OpenClaw entrypoint resolves to TypeScript source in this fixture checkout",
"evidence": [
"extension:plugins/opik-openclaw/index.ts"
]
},
{
"fixture": "opik-openclaw",
"code": "package-dependency-install-required",
"level": "suggestion",
"message": "package declares runtime dependencies that must be installed before cold import",
"evidence": [
"@clack/prompts @ plugins/opik-openclaw/package.json",
"opik @ plugins/opik-openclaw/package.json",
"zod @ plugins/opik-openclaw/package.json",
"openclaw @ plugins/opik-openclaw/package.json"
]
},
{
"fixture": "opik-openclaw",
"code": "registration-capture-gap",
"level": "suggestion",
"message": "future inspector capture API should record lifecycle, route, gateway, command, and interactive registrations",
"evidence": [
"registerService @ plugins/opik-openclaw/index.ts:16"
]
},
{
"fixture": "opik-openclaw",
"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/opik-openclaw/src/service/hooks/tool.ts:34"
]
},
{
"fixture": "clawmetry",
"code": "package-build-artifact-entrypoint",
@ -3214,6 +3591,50 @@
],
"compatRecord": null
},
{
"id": "CRABPOT-EE3B527C",
"fixture": "opik-openclaw",
"severity": "P1",
"owner": "inspector",
"code": "before-tool-call-probe",
"decision": "inspector-follow-up",
"status": "open",
"title": "opik-openclaw: before_tool_call needs terminal/block/approval probes",
"evidence": [
"before_tool_call @ plugins/opik-openclaw/src/service/hooks/tool.ts:34"
],
"compatRecord": null
},
{
"id": "CRABPOT-6FC4ED08",
"fixture": "opik-openclaw",
"severity": "P1",
"owner": "core",
"code": "conversation-access-hook",
"decision": "inspector-follow-up",
"status": "open",
"title": "opik-openclaw: conversation-access hooks need privacy-boundary probes",
"evidence": [
"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"
],
"compatRecord": null
},
{
"id": "CRABPOT-5E85F236",
"fixture": "opik-openclaw",
"severity": "P1",
"owner": "inspector",
"code": "registration-capture-gap",
"decision": "inspector-follow-up",
"status": "open",
"title": "opik-openclaw: runtime registrations need capture before contract judgment",
"evidence": [
"registerService @ plugins/opik-openclaw/index.ts:16"
],
"compatRecord": null
},
{
"id": "CRABPOT-B08DB79E",
"fixture": "wecom",
@ -3743,6 +4164,73 @@
],
"compatRecord": null
},
{
"id": "CRABPOT-F76EC24F",
"fixture": "opik-openclaw",
"severity": "P2",
"owner": "core",
"code": "legacy-root-sdk-import",
"decision": "core-compat-adapter",
"status": "open",
"title": "opik-openclaw: root plugin SDK barrel is still used by fixtures",
"evidence": [
"openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:2",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/cli.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/configure.ts:2",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:5",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:6",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/llm.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/subagent.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/tool.ts:1"
],
"compatRecord": "legacy-root-sdk-import"
},
{
"id": "CRABPOT-5D328BF6",
"fixture": "opik-openclaw",
"severity": "P2",
"owner": "inspector",
"code": "package-build-artifact-entrypoint",
"decision": "inspector-follow-up",
"status": "open",
"title": "opik-openclaw: cold import requires package build output",
"evidence": [
"runtimeExtension:./dist/index.js -> plugins/opik-openclaw/dist/index.js"
],
"compatRecord": null
},
{
"id": "CRABPOT-32CDFD6D",
"fixture": "opik-openclaw",
"severity": "P2",
"owner": "inspector",
"code": "package-dependency-install-required",
"decision": "inspector-follow-up",
"status": "open",
"title": "opik-openclaw: cold import requires isolated dependency installation",
"evidence": [
"@clack/prompts @ plugins/opik-openclaw/package.json",
"opik @ plugins/opik-openclaw/package.json",
"zod @ plugins/opik-openclaw/package.json",
"openclaw @ plugins/opik-openclaw/package.json"
],
"compatRecord": null
},
{
"id": "CRABPOT-FAEC3F71",
"fixture": "opik-openclaw",
"severity": "P2",
"owner": "inspector",
"code": "package-typescript-source-entrypoint",
"decision": "inspector-follow-up",
"status": "open",
"title": "opik-openclaw: cold import needs TypeScript source entrypoint support",
"evidence": [
"extension:plugins/opik-openclaw/index.ts"
],
"compatRecord": null
},
{
"id": "CRABPOT-D8910079",
"fixture": "web-search-plus",
@ -3920,6 +4408,16 @@
"registerService @ plugins/mcp-adapter/index.ts:15"
]
},
{
"id": "api.capture.runtime-registrars:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P1",
"target": "inspector-capture-api",
"contract": "External inspector capture records service, route, gateway, command, and interactive registrations.",
"evidence": [
"registerService @ plugins/opik-openclaw/index.ts:16"
]
},
{
"id": "api.capture.runtime-registrars:wecom",
"fixture": "wecom",
@ -3931,6 +4429,16 @@
"registerHttpRoute @ plugins/wecom/index.js:45"
]
},
{
"id": "hook.before_tool_call.terminal-block-approval:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P1",
"target": "hook-runner",
"contract": "Hook returns preserve terminal, block, and approval semantics.",
"evidence": [
"before_tool_call @ plugins/opik-openclaw/src/service/hooks/tool.ts:34"
]
},
{
"id": "hook.before_tool_call.terminal-block-approval:wecom",
"fixture": "wecom",
@ -3952,6 +4460,18 @@
"llm_output @ plugins/llm-trace-phoenix/index.ts:168"
]
},
{
"id": "hook.llm-observer.privacy-payload:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P1",
"target": "hook-runner",
"contract": "LLM observer hooks receive documented prompt/output fields with expected redaction behavior.",
"evidence": [
"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"
]
},
{
"id": "sdk.import.package-export-cold-import:codex-app-server",
"fixture": "codex-app-server",
@ -4067,6 +4587,16 @@
"setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js"
]
},
{
"id": "package.entrypoint.build-before-cold-import:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P2",
"target": "package-loader",
"contract": "Inspector can build or resolve source aliases before cold importing package entrypoints.",
"evidence": [
"runtimeExtension:./dist/index.js -> plugins/opik-openclaw/dist/index.js"
]
},
{
"id": "package.entrypoint.isolated-dependency-install:a2a-gateway",
"fixture": "a2a-gateway",
@ -4119,6 +4649,19 @@
"@modelcontextprotocol/sdk @ plugins/mcp-adapter/package.json"
]
},
{
"id": "package.entrypoint.isolated-dependency-install:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P2",
"target": "package-loader",
"contract": "Inspector installs package dependencies in an isolated workspace before cold import.",
"evidence": [
"@clack/prompts @ plugins/opik-openclaw/package.json",
"opik @ plugins/opik-openclaw/package.json",
"zod @ plugins/opik-openclaw/package.json",
"openclaw @ plugins/opik-openclaw/package.json"
]
},
{
"id": "package.entrypoint.isolated-dependency-install:wecom",
"fixture": "wecom",
@ -4173,6 +4716,16 @@
"extension:plugins/mcp-adapter/index.ts"
]
},
{
"id": "package.entrypoint.typescript-loader:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P2",
"target": "package-loader",
"contract": "Inspector can compile or load TypeScript source entrypoints before registration capture.",
"evidence": [
"extension:plugins/opik-openclaw/index.ts"
]
},
{
"id": "package.metadata.version-alignment:a2a-gateway",
"fixture": "a2a-gateway",
@ -4204,6 +4757,24 @@
"openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12"
]
},
{
"id": "sdk.import.root-barrel-cold-import:opik-openclaw",
"fixture": "opik-openclaw",
"priority": "P2",
"target": "sdk-alias",
"contract": "Root plugin SDK barrel remains importable or has a machine-readable migration path.",
"evidence": [
"openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:2",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/cli.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/configure.ts:2",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:5",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:6",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/llm.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/subagent.ts:1",
"openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/tool.ts:1"
]
},
{
"id": "tool.registration.schema-capture:a2a-gateway",
"fixture": "a2a-gateway",
@ -4767,6 +5338,83 @@
"version:1.0.1"
]
},
{
"fixture": "opik-openclaw",
"code": "seam-inventory",
"level": "log",
"message": "observed 10 hooks, 2 registrations, and 0 manifest contracts",
"evidence": [
"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"
]
},
{
"fixture": "opik-openclaw",
"code": "hook-names-present",
"level": "log",
"message": "all observed hooks exist in the target OpenClaw hook registry",
"evidence": [
"after_tool_call",
"agent_end",
"before_tool_call",
"llm_input",
"llm_output",
"subagent_delivery_target",
"subagent_ended",
"subagent_spawned",
"subagent_spawning",
"tool_result_persist"
]
},
{
"fixture": "opik-openclaw",
"code": "api-registrars-present",
"level": "log",
"message": "all observed api.register* calls exist in the target OpenClaw plugin API builder",
"evidence": [
"registerCli",
"registerService"
]
},
{
"fixture": "opik-openclaw",
"code": "sdk-exports-present",
"level": "log",
"message": "all observed plugin SDK imports exist in target OpenClaw package exports",
"evidence": [
"openclaw/plugin-sdk"
]
},
{
"fixture": "opik-openclaw",
"code": "manifest-fields-checked",
"level": "log",
"message": "plugin manifest fields were compared with target OpenClaw manifest types",
"evidence": [
"plugins/opik-openclaw/openclaw.plugin.json"
]
},
{
"fixture": "opik-openclaw",
"code": "package-metadata",
"level": "log",
"message": "selected package metadata for plugin contract checks",
"evidence": [
"plugins/opik-openclaw/package.json",
"@opik/opik-openclaw",
"version:0.2.14"
]
},
{
"fixture": "clawmetry",
"code": "seam-inventory",
@ -5075,6 +5723,16 @@
],
"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": [
"legacy-root-sdk-import"
],
"compatRecord": "legacy-root-sdk-import"
},
{
"fixture": "codex-app-server",
"code": "compat-record-present",
@ -5334,6 +5992,55 @@
"action": "Keep the root SDK barrel stable or expose a machine-readable migration map before removing aliases.",
"evidence": "openclaw/plugin-sdk"
},
{
"fixture": "opik-openclaw",
"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": "opik-openclaw",
"decision": "inspector-follow-up",
"seam": "cold-import",
"action": "Compile TypeScript source or run a loader before cold-importing this fixture entrypoint.",
"evidence": "plugins/opik-openclaw/index.ts"
},
{
"fixture": "opik-openclaw",
"decision": "inspector-follow-up",
"seam": "cold-import",
"action": "Install runtime dependencies in an isolated workspace before executing this fixture entrypoint.",
"evidence": "@clack/prompts, opik, zod, openclaw"
},
{
"fixture": "opik-openclaw",
"decision": "inspector-follow-up",
"seam": "conversation-access",
"action": "Add synthetic llm_input/llm_output/agent_end probes before tightening hook payloads or redaction behavior.",
"evidence": "agent_end, llm_input, llm_output"
},
{
"fixture": "opik-openclaw",
"decision": "core-compat-adapter",
"seam": "sdk-import",
"action": "Keep the root SDK barrel stable or expose a machine-readable migration map before removing aliases.",
"evidence": "openclaw/plugin-sdk"
},
{
"fixture": "opik-openclaw",
"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": "registerService"
},
{
"fixture": "opik-openclaw",
"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": "clawmetry",
"decision": "inspector-follow-up",

View File

@ -7,16 +7,16 @@ Status: PASS
| Metric | Value |
| ------------------------- | ----- |
| Fixtures | 11 |
| High-priority fixtures | 6 |
| Fixtures | 12 |
| High-priority fixtures | 7 |
| Hard breakages | 0 |
| Warnings | 16 |
| Compatibility suggestions | 35 |
| Issue findings | 51 |
| Warnings | 18 |
| Compatibility suggestions | 40 |
| Issue findings | 58 |
| P0 issues | 0 |
| P1 issues | 9 |
| Contract probes | 50 |
| Decision rows | 53 |
| P1 issues | 12 |
| Contract probes | 57 |
| Decision rows | 60 |
## Hard Breakages
@ -38,31 +38,33 @@ _none_
| Captured registration | ../openclaw/src/plugins/captured-registration.ts |
| Captured registrars | 18 |
| Package metadata | ../openclaw/package.json |
| Plugin SDK exports | 306 |
| Plugin SDK exports | 307 |
| Manifest types | ../openclaw/src/plugins/manifest.ts |
| Manifest fields | 32 |
| Manifest contract fields | 16 |
## Warnings
| Fixture | Code | Level | Message | Evidence | Compat record |
| ----------------- | --------------------------------- | ------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| agentchat | manifest-unknown-fields | warning | manifest uses top-level fields that are not present in the target OpenClaw PluginManifest type | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json | - |
| agentchat | channel-env-vars | warning | manifest uses channelEnvVars legacy compatibility metadata | agentchat | channel-env-vars |
| wecom | package-plugin-api-compat-missing | warning | package openclaw metadata does not declare compat.pluginApi | plugins/wecom/package.json | - |
| a2a-gateway | manifest-unknown-fields | warning | manifest uses top-level fields that are not present in the target OpenClaw PluginManifest type | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json | - |
| a2a-gateway | package-manifest-version-drift | warning | package.json and openclaw.plugin.json publish different versions | package:1.4.0, manifest:1.3.0 | - |
| a2a-gateway | package-plugin-api-compat-missing | warning | package openclaw metadata does not declare compat.pluginApi | plugins/a2a-gateway/package.json | - |
| a2a-gateway | legacy-root-sdk-import | warning | fixture imports the root plugin SDK barrel | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 | legacy-root-sdk-import |
| hasdata | provider-auth-env-vars | warning | manifest uses providerAuthEnvVars legacy compatibility metadata | hasdata | provider-auth-env-vars |
| mcp-adapter | package-plugin-api-compat-missing | warning | package openclaw metadata does not declare compat.pluginApi | plugins/mcp-adapter/package.json | - |
| llm-trace-phoenix | conversation-access-hook | warning | fixture observes raw model or conversation content and needs privacy-boundary contract probes | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 | - |
| llm-trace-phoenix | legacy-root-sdk-import | warning | fixture imports the root plugin SDK barrel | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 | legacy-root-sdk-import |
| 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 | provider-auth-env-vars | warning | manifest uses providerAuthEnvVars legacy compatibility metadata | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng | provider-auth-env-vars |
| 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 |
| inworld-tts | provider-auth-env-vars | warning | manifest uses providerAuthEnvVars legacy compatibility metadata | inworld | provider-auth-env-vars |
| Fixture | Code | Level | Message | Evidence | Compat record |
| ----------------- | --------------------------------- | ------- | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| agentchat | manifest-unknown-fields | warning | manifest uses top-level fields that are not present in the target OpenClaw PluginManifest type | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json | - |
| agentchat | channel-env-vars | warning | manifest uses channelEnvVars legacy compatibility metadata | agentchat | channel-env-vars |
| wecom | package-plugin-api-compat-missing | warning | package openclaw metadata does not declare compat.pluginApi | plugins/wecom/package.json | - |
| a2a-gateway | manifest-unknown-fields | warning | manifest uses top-level fields that are not present in the target OpenClaw PluginManifest type | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json | - |
| a2a-gateway | package-manifest-version-drift | warning | package.json and openclaw.plugin.json publish different versions | package:1.4.0, manifest:1.3.0 | - |
| a2a-gateway | package-plugin-api-compat-missing | warning | package openclaw metadata does not declare compat.pluginApi | plugins/a2a-gateway/package.json | - |
| a2a-gateway | legacy-root-sdk-import | warning | fixture imports the root plugin SDK barrel | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 | legacy-root-sdk-import |
| hasdata | provider-auth-env-vars | warning | manifest uses providerAuthEnvVars legacy compatibility metadata | hasdata | provider-auth-env-vars |
| mcp-adapter | package-plugin-api-compat-missing | warning | package openclaw metadata does not declare compat.pluginApi | plugins/mcp-adapter/package.json | - |
| llm-trace-phoenix | conversation-access-hook | warning | fixture observes raw model or conversation content and needs privacy-boundary contract probes | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 | - |
| llm-trace-phoenix | legacy-root-sdk-import | warning | fixture imports the root plugin SDK barrel | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 | legacy-root-sdk-import |
| opik-openclaw | conversation-access-hook | warning | fixture observes raw model or conversation content and needs privacy-boundary contract probes | 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 | - |
| opik-openclaw | legacy-root-sdk-import | warning | fixture imports the root plugin SDK barrel | openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/cli.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/configure.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:5, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:6, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/llm.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/subagent.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/tool.ts:1 | legacy-root-sdk-import |
| 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 | provider-auth-env-vars | warning | manifest uses providerAuthEnvVars legacy compatibility metadata | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng | provider-auth-env-vars |
| 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 |
| inworld-tts | provider-auth-env-vars | warning | manifest uses providerAuthEnvVars legacy compatibility metadata | inworld | provider-auth-env-vars |
## Suggestions To OpenClaw Compat Layer
@ -87,6 +89,11 @@ _none_
| mcp-adapter | registration-capture-gap | suggestion | future inspector capture API should record lifecycle, route, gateway, command, and interactive registrations | registerService @ plugins/mcp-adapter/index.ts:15 | - |
| mcp-adapter | runtime-tool-capture | suggestion | tool shape is only visible after runtime registration capture | registerTool @ plugins/mcp-adapter/index.ts:30 | - |
| llm-trace-phoenix | package-typescript-source-entrypoint | suggestion | package OpenClaw entrypoint resolves to TypeScript source in this fixture checkout | extension:plugins/llm-trace-phoenix/index.ts | - |
| opik-openclaw | package-build-artifact-entrypoint | suggestion | package OpenClaw entrypoint points at build output that is not present in the source fixture checkout | runtimeExtension:./dist/index.js -> plugins/opik-openclaw/dist/index.js | - |
| opik-openclaw | package-typescript-source-entrypoint | suggestion | package OpenClaw entrypoint resolves to TypeScript source in this fixture checkout | extension:plugins/opik-openclaw/index.ts | - |
| opik-openclaw | package-dependency-install-required | suggestion | package declares runtime dependencies that must be installed before cold import | @clack/prompts @ plugins/opik-openclaw/package.json, opik @ plugins/opik-openclaw/package.json, zod @ plugins/opik-openclaw/package.json, openclaw @ plugins/opik-openclaw/package.json | - |
| opik-openclaw | registration-capture-gap | suggestion | future inspector capture API should record lifecycle, route, gateway, command, and interactive registrations | registerService @ plugins/opik-openclaw/index.ts:16 | - |
| opik-openclaw | before-tool-call-probe | suggestion | add contract probes for before_tool_call terminal, block, and approval semantics | before_tool_call @ plugins/opik-openclaw/src/service/hooks/tool.ts:34 | - |
| clawmetry | package-build-artifact-entrypoint | suggestion | package OpenClaw entrypoint points at build output that is not present in the source fixture checkout | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js | - |
| clawmetry | package-typescript-source-entrypoint | suggestion | package OpenClaw entrypoint resolves to TypeScript source in this fixture checkout | extension:plugins/clawmetry/clawhub-plugin/index.ts | - |
| clawmetry | package-dependency-install-required | suggestion | package declares runtime dependencies that must be installed before cold import | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json | - |
@ -106,130 +113,145 @@ _none_
## Issue Findings
| ID | Severity | Fixture | Owner | Decision | Status | Title | Evidence |
| ---------------- | -------- | ----------------- | --------- | ------------------- | ------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| CRABPOT-37E8444D | P1 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: runtime registrations need capture before contract judgment | registerGatewayMethod @ plugins/a2a-gateway/index.ts:616, registerGatewayMethod @ plugins/a2a-gateway/index.ts:622, registerGatewayMethod @ plugins/a2a-gateway/index.ts:631, registerGatewayMethod @ plugins/a2a-gateway/index.ts:657, registerGatewayMethod @ plugins/a2a-gateway/index.ts:669, registerService @ plugins/a2a-gateway/index.ts:857 |
| CRABPOT-9D5EE194 | P1 | clawmetry | inspector | inspector-follow-up | open | clawmetry: runtime registrations need capture before contract judgment | registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9 |
| CRABPOT-6D9E51D9 | P1 | codex-app-server | core | core-compat-adapter | open | codex-app-server: compat-dependent behavior lacks registry coverage | plugin-sdk-export-aliases |
| CRABPOT-45CAC152 | P1 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: runtime registrations need capture before contract judgment | registerCommand @ plugins/codex-app-server/index.ts:48, registerInteractiveHandler @ plugins/codex-app-server/index.ts:29, registerInteractiveHandler @ plugins/codex-app-server/index.ts:38, registerService @ plugins/codex-app-server/index.ts:12 |
| CRABPOT-C2331427 | P1 | codex-app-server | core | core-compat-adapter | open | codex-app-server: plugin SDK import aliases are missing from target package exports | 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 |
| CRABPOT-D71B126E | P1 | llm-trace-phoenix | core | inspector-follow-up | open | llm-trace-phoenix: conversation-access hooks need privacy-boundary probes | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 |
| CRABPOT-B91192E5 | P1 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: runtime registrations need capture before contract judgment | registerService @ plugins/mcp-adapter/index.ts:15 |
| CRABPOT-B08DB79E | P1 | wecom | inspector | inspector-follow-up | open | wecom: before_tool_call needs terminal/block/approval probes | before_tool_call @ plugins/wecom/index.js:65 |
| CRABPOT-9428734C | P1 | wecom | inspector | inspector-follow-up | open | wecom: runtime registrations need capture before contract judgment | registerChannel @ plugins/wecom/index.js:27, registerHttpRoute @ plugins/wecom/index.js:45 |
| CRABPOT-6469330F | P2 | a2a-gateway | core | core-compat-adapter | open | a2a-gateway: root plugin SDK barrel is still used by fixtures | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 |
| CRABPOT-892CF14F | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: manifest uses unsupported top-level fields | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json |
| CRABPOT-F5185BE0 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: cold import requires isolated dependency installation | @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 |
| CRABPOT-16E892BF | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: package and manifest versions drift | package:1.4.0, manifest:1.3.0 |
| CRABPOT-FDBB1C67 | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: plugin API compatibility range is missing | plugins/a2a-gateway/package.json |
| CRABPOT-96D2E9F4 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: cold import needs TypeScript source entrypoint support | extension:plugins/a2a-gateway/index.ts |
| CRABPOT-654F01E7 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: runtime tool schema needs registration capture | registerTool @ plugins/a2a-gateway/index.ts:777 |
| CRABPOT-74260BA0 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: channel runtime needs envelope/config probes | defineChannelPluginEntry @ plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333 |
| CRABPOT-90736EF4 | P2 | agentchat | core | core-compat-adapter | open | agentchat: channelEnvVars legacy manifest metadata must stay covered | agentchat |
| CRABPOT-BEC462A4 | P2 | agentchat | plugin | plugin-upstream-fix | open | agentchat: manifest uses unsupported top-level fields | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json |
| CRABPOT-6A790CB4 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: cold import requires package build output | extension:./dist/index.js -> plugins/agentchat/integrations/openclaw-channel/dist/index.js, setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js |
| CRABPOT-2ED34BE8 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: cold import requires isolated dependency installation | @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, openclaw @ plugins/agentchat/integrations/openclaw-channel/package.json |
| CRABPOT-0CFF8B6F | P2 | apify | core | core-compat-adapter | open | apify: root plugin SDK barrel is still used by fixtures | 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 |
| CRABPOT-74FAA2A2 | P2 | apify | inspector | inspector-follow-up | open | apify: cold import requires isolated dependency installation | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json, openclaw @ plugins/apify/package.json |
| CRABPOT-18D12186 | P2 | apify | inspector | inspector-follow-up | open | apify: cold import needs TypeScript source entrypoint support | extension:plugins/apify/src/index.ts |
| CRABPOT-93E9D53A | P2 | apify | inspector | inspector-follow-up | open | apify: runtime tool schema needs registration capture | registerTool @ plugins/apify/src/index.ts:13 |
| CRABPOT-4BCB1F63 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import requires package build output | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js |
| CRABPOT-034E5504 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import requires isolated dependency installation | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json |
| CRABPOT-EF6E7134 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import needs TypeScript source entrypoint support | extension:plugins/clawmetry/clawhub-plugin/index.ts |
| CRABPOT-A36ECE8E | P2 | codex-app-server | core | core-compat-adapter | open | codex-app-server: root plugin SDK barrel is still used by fixtures | 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 |
| CRABPOT-DC637E99 | P2 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: cold import requires isolated dependency installation | ws @ plugins/codex-app-server/package.json, openclaw @ plugins/codex-app-server/package.json |
| CRABPOT-F8C8F1CD | P2 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: cold import needs TypeScript source entrypoint support | extension:plugins/codex-app-server/index.ts |
| CRABPOT-2C2BFD3C | P2 | hasdata | inspector | inspector-follow-up | open | hasdata: cold import requires isolated dependency installation | @sinclair/typebox @ plugins/hasdata/package.json, openclaw @ plugins/hasdata/package.json |
| CRABPOT-1853BC94 | P2 | hasdata | inspector | inspector-follow-up | open | hasdata: cold import needs TypeScript source entrypoint support | extension:plugins/hasdata/src/index.ts |
| CRABPOT-1ABECD7E | P2 | hasdata | core | core-compat-adapter | open | hasdata: providerAuthEnvVars legacy manifest metadata must stay covered | hasdata |
| CRABPOT-0853EBDC | P2 | inworld-tts | inspector | inspector-follow-up | open | inworld-tts: cold import requires isolated dependency installation | openclaw @ plugins/inworld-tts/package.json |
| CRABPOT-7C59D06F | P2 | inworld-tts | inspector | inspector-follow-up | open | inworld-tts: cold import needs TypeScript source entrypoint support | extension:plugins/inworld-tts/index.ts |
| CRABPOT-CCABE384 | P2 | inworld-tts | core | core-compat-adapter | open | inworld-tts: providerAuthEnvVars legacy manifest metadata must stay covered | inworld |
| CRABPOT-4CC6CA25 | P2 | llm-trace-phoenix | core | core-compat-adapter | open | llm-trace-phoenix: root plugin SDK barrel is still used by fixtures | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 |
| CRABPOT-15F8300A | P2 | llm-trace-phoenix | inspector | inspector-follow-up | open | llm-trace-phoenix: cold import needs TypeScript source entrypoint support | extension:plugins/llm-trace-phoenix/index.ts |
| CRABPOT-22E35E29 | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: cold import requires isolated dependency installation | @modelcontextprotocol/sdk @ plugins/mcp-adapter/package.json |
| CRABPOT-4511EE11 | P2 | mcp-adapter | plugin | plugin-upstream-fix | open | mcp-adapter: plugin API compatibility range is missing | plugins/mcp-adapter/package.json |
| CRABPOT-6515DC5B | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: cold import needs TypeScript source entrypoint support | extension:plugins/mcp-adapter/index.ts |
| CRABPOT-B195BB7A | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: runtime tool schema needs registration capture | registerTool @ plugins/mcp-adapter/index.ts:30 |
| CRABPOT-D8910079 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: cold import requires isolated dependency installation | openclaw @ plugins/web-search-plus/package.json |
| CRABPOT-E55C4521 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: cold import needs TypeScript source entrypoint support | extension:plugins/web-search-plus/index.ts |
| CRABPOT-A3EA1186 | P2 | web-search-plus | core | core-compat-adapter | open | web-search-plus: providerAuthEnvVars legacy manifest metadata must stay covered | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng |
| CRABPOT-AF929F22 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: runtime tool schema needs registration capture | registerTool @ plugins/web-search-plus/index.ts:815, registerTool @ plugins/web-search-plus/index.ts:947 |
| CRABPOT-848F09E3 | P2 | wecom | inspector | inspector-follow-up | open | wecom: channel runtime needs envelope/config probes | registerChannel @ plugins/wecom/index.js:27 |
| CRABPOT-4734034D | P2 | wecom | inspector | inspector-follow-up | open | wecom: cold import requires isolated dependency installation | @wecom/aibot-node-sdk @ plugins/wecom/package.json, file-type @ plugins/wecom/package.json, pinyin-pro @ plugins/wecom/package.json, openclaw @ plugins/wecom/package.json, undici @ plugins/wecom/package.json |
| CRABPOT-5E53BD07 | P2 | wecom | plugin | plugin-upstream-fix | open | wecom: plugin API compatibility range is missing | plugins/wecom/package.json |
| CRABPOT-72021A36 | P2 | wecom | inspector | inspector-follow-up | open | wecom: runtime tool schema needs registration capture | registerTool @ plugins/wecom/index.js:28, registerTool @ plugins/wecom/index.js:29, registerTool @ plugins/wecom/index.js:33 |
| ID | Severity | Fixture | Owner | Decision | Status | Title | Evidence |
| ---------------- | -------- | ----------------- | --------- | ------------------- | ------ | ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CRABPOT-37E8444D | P1 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: runtime registrations need capture before contract judgment | registerGatewayMethod @ plugins/a2a-gateway/index.ts:616, registerGatewayMethod @ plugins/a2a-gateway/index.ts:622, registerGatewayMethod @ plugins/a2a-gateway/index.ts:631, registerGatewayMethod @ plugins/a2a-gateway/index.ts:657, registerGatewayMethod @ plugins/a2a-gateway/index.ts:669, registerService @ plugins/a2a-gateway/index.ts:857 |
| CRABPOT-9D5EE194 | P1 | clawmetry | inspector | inspector-follow-up | open | clawmetry: runtime registrations need capture before contract judgment | registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9 |
| CRABPOT-6D9E51D9 | P1 | codex-app-server | core | core-compat-adapter | open | codex-app-server: compat-dependent behavior lacks registry coverage | plugin-sdk-export-aliases |
| CRABPOT-45CAC152 | P1 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: runtime registrations need capture before contract judgment | registerCommand @ plugins/codex-app-server/index.ts:48, registerInteractiveHandler @ plugins/codex-app-server/index.ts:29, registerInteractiveHandler @ plugins/codex-app-server/index.ts:38, registerService @ plugins/codex-app-server/index.ts:12 |
| CRABPOT-C2331427 | P1 | codex-app-server | core | core-compat-adapter | open | codex-app-server: plugin SDK import aliases are missing from target package exports | 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 |
| CRABPOT-D71B126E | P1 | llm-trace-phoenix | core | inspector-follow-up | open | llm-trace-phoenix: conversation-access hooks need privacy-boundary probes | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 |
| CRABPOT-B91192E5 | P1 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: runtime registrations need capture before contract judgment | registerService @ plugins/mcp-adapter/index.ts:15 |
| CRABPOT-EE3B527C | P1 | opik-openclaw | inspector | inspector-follow-up | open | opik-openclaw: before_tool_call needs terminal/block/approval probes | before_tool_call @ plugins/opik-openclaw/src/service/hooks/tool.ts:34 |
| CRABPOT-6FC4ED08 | P1 | opik-openclaw | core | inspector-follow-up | open | opik-openclaw: conversation-access hooks need privacy-boundary probes | 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 |
| CRABPOT-5E85F236 | P1 | opik-openclaw | inspector | inspector-follow-up | open | opik-openclaw: runtime registrations need capture before contract judgment | registerService @ plugins/opik-openclaw/index.ts:16 |
| CRABPOT-B08DB79E | P1 | wecom | inspector | inspector-follow-up | open | wecom: before_tool_call needs terminal/block/approval probes | before_tool_call @ plugins/wecom/index.js:65 |
| CRABPOT-9428734C | P1 | wecom | inspector | inspector-follow-up | open | wecom: runtime registrations need capture before contract judgment | registerChannel @ plugins/wecom/index.js:27, registerHttpRoute @ plugins/wecom/index.js:45 |
| CRABPOT-6469330F | P2 | a2a-gateway | core | core-compat-adapter | open | a2a-gateway: root plugin SDK barrel is still used by fixtures | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 |
| CRABPOT-892CF14F | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: manifest uses unsupported top-level fields | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json |
| CRABPOT-F5185BE0 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: cold import requires isolated dependency installation | @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 |
| CRABPOT-16E892BF | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: package and manifest versions drift | package:1.4.0, manifest:1.3.0 |
| CRABPOT-FDBB1C67 | P2 | a2a-gateway | plugin | plugin-upstream-fix | open | a2a-gateway: plugin API compatibility range is missing | plugins/a2a-gateway/package.json |
| CRABPOT-96D2E9F4 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: cold import needs TypeScript source entrypoint support | extension:plugins/a2a-gateway/index.ts |
| CRABPOT-654F01E7 | P2 | a2a-gateway | inspector | inspector-follow-up | open | a2a-gateway: runtime tool schema needs registration capture | registerTool @ plugins/a2a-gateway/index.ts:777 |
| CRABPOT-74260BA0 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: channel runtime needs envelope/config probes | defineChannelPluginEntry @ plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333 |
| CRABPOT-90736EF4 | P2 | agentchat | core | core-compat-adapter | open | agentchat: channelEnvVars legacy manifest metadata must stay covered | agentchat |
| CRABPOT-BEC462A4 | P2 | agentchat | plugin | plugin-upstream-fix | open | agentchat: manifest uses unsupported top-level fields | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json |
| CRABPOT-6A790CB4 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: cold import requires package build output | extension:./dist/index.js -> plugins/agentchat/integrations/openclaw-channel/dist/index.js, setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js |
| CRABPOT-2ED34BE8 | P2 | agentchat | inspector | inspector-follow-up | open | agentchat: cold import requires isolated dependency installation | @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, openclaw @ plugins/agentchat/integrations/openclaw-channel/package.json |
| CRABPOT-0CFF8B6F | P2 | apify | core | core-compat-adapter | open | apify: root plugin SDK barrel is still used by fixtures | 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 |
| CRABPOT-74FAA2A2 | P2 | apify | inspector | inspector-follow-up | open | apify: cold import requires isolated dependency installation | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json, openclaw @ plugins/apify/package.json |
| CRABPOT-18D12186 | P2 | apify | inspector | inspector-follow-up | open | apify: cold import needs TypeScript source entrypoint support | extension:plugins/apify/src/index.ts |
| CRABPOT-93E9D53A | P2 | apify | inspector | inspector-follow-up | open | apify: runtime tool schema needs registration capture | registerTool @ plugins/apify/src/index.ts:13 |
| CRABPOT-4BCB1F63 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import requires package build output | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js |
| CRABPOT-034E5504 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import requires isolated dependency installation | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json |
| CRABPOT-EF6E7134 | P2 | clawmetry | inspector | inspector-follow-up | open | clawmetry: cold import needs TypeScript source entrypoint support | extension:plugins/clawmetry/clawhub-plugin/index.ts |
| CRABPOT-A36ECE8E | P2 | codex-app-server | core | core-compat-adapter | open | codex-app-server: root plugin SDK barrel is still used by fixtures | 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 |
| CRABPOT-DC637E99 | P2 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: cold import requires isolated dependency installation | ws @ plugins/codex-app-server/package.json, openclaw @ plugins/codex-app-server/package.json |
| CRABPOT-F8C8F1CD | P2 | codex-app-server | inspector | inspector-follow-up | open | codex-app-server: cold import needs TypeScript source entrypoint support | extension:plugins/codex-app-server/index.ts |
| CRABPOT-2C2BFD3C | P2 | hasdata | inspector | inspector-follow-up | open | hasdata: cold import requires isolated dependency installation | @sinclair/typebox @ plugins/hasdata/package.json, openclaw @ plugins/hasdata/package.json |
| CRABPOT-1853BC94 | P2 | hasdata | inspector | inspector-follow-up | open | hasdata: cold import needs TypeScript source entrypoint support | extension:plugins/hasdata/src/index.ts |
| CRABPOT-1ABECD7E | P2 | hasdata | core | core-compat-adapter | open | hasdata: providerAuthEnvVars legacy manifest metadata must stay covered | hasdata |
| CRABPOT-0853EBDC | P2 | inworld-tts | inspector | inspector-follow-up | open | inworld-tts: cold import requires isolated dependency installation | openclaw @ plugins/inworld-tts/package.json |
| CRABPOT-7C59D06F | P2 | inworld-tts | inspector | inspector-follow-up | open | inworld-tts: cold import needs TypeScript source entrypoint support | extension:plugins/inworld-tts/index.ts |
| CRABPOT-CCABE384 | P2 | inworld-tts | core | core-compat-adapter | open | inworld-tts: providerAuthEnvVars legacy manifest metadata must stay covered | inworld |
| CRABPOT-4CC6CA25 | P2 | llm-trace-phoenix | core | core-compat-adapter | open | llm-trace-phoenix: root plugin SDK barrel is still used by fixtures | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 |
| CRABPOT-15F8300A | P2 | llm-trace-phoenix | inspector | inspector-follow-up | open | llm-trace-phoenix: cold import needs TypeScript source entrypoint support | extension:plugins/llm-trace-phoenix/index.ts |
| CRABPOT-22E35E29 | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: cold import requires isolated dependency installation | @modelcontextprotocol/sdk @ plugins/mcp-adapter/package.json |
| CRABPOT-4511EE11 | P2 | mcp-adapter | plugin | plugin-upstream-fix | open | mcp-adapter: plugin API compatibility range is missing | plugins/mcp-adapter/package.json |
| CRABPOT-6515DC5B | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: cold import needs TypeScript source entrypoint support | extension:plugins/mcp-adapter/index.ts |
| CRABPOT-B195BB7A | P2 | mcp-adapter | inspector | inspector-follow-up | open | mcp-adapter: runtime tool schema needs registration capture | registerTool @ plugins/mcp-adapter/index.ts:30 |
| CRABPOT-F76EC24F | P2 | opik-openclaw | core | core-compat-adapter | open | opik-openclaw: root plugin SDK barrel is still used by fixtures | openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/cli.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/configure.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:5, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:6, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/llm.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/subagent.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/tool.ts:1 |
| CRABPOT-5D328BF6 | P2 | opik-openclaw | inspector | inspector-follow-up | open | opik-openclaw: cold import requires package build output | runtimeExtension:./dist/index.js -> plugins/opik-openclaw/dist/index.js |
| CRABPOT-32CDFD6D | P2 | opik-openclaw | inspector | inspector-follow-up | open | opik-openclaw: cold import requires isolated dependency installation | @clack/prompts @ plugins/opik-openclaw/package.json, opik @ plugins/opik-openclaw/package.json, zod @ plugins/opik-openclaw/package.json, openclaw @ plugins/opik-openclaw/package.json |
| CRABPOT-FAEC3F71 | P2 | opik-openclaw | inspector | inspector-follow-up | open | opik-openclaw: cold import needs TypeScript source entrypoint support | extension:plugins/opik-openclaw/index.ts |
| CRABPOT-D8910079 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: cold import requires isolated dependency installation | openclaw @ plugins/web-search-plus/package.json |
| CRABPOT-E55C4521 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: cold import needs TypeScript source entrypoint support | extension:plugins/web-search-plus/index.ts |
| CRABPOT-A3EA1186 | P2 | web-search-plus | core | core-compat-adapter | open | web-search-plus: providerAuthEnvVars legacy manifest metadata must stay covered | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng |
| CRABPOT-AF929F22 | P2 | web-search-plus | inspector | inspector-follow-up | open | web-search-plus: runtime tool schema needs registration capture | registerTool @ plugins/web-search-plus/index.ts:815, registerTool @ plugins/web-search-plus/index.ts:947 |
| CRABPOT-848F09E3 | P2 | wecom | inspector | inspector-follow-up | open | wecom: channel runtime needs envelope/config probes | registerChannel @ plugins/wecom/index.js:27 |
| CRABPOT-4734034D | P2 | wecom | inspector | inspector-follow-up | open | wecom: cold import requires isolated dependency installation | @wecom/aibot-node-sdk @ plugins/wecom/package.json, file-type @ plugins/wecom/package.json, pinyin-pro @ plugins/wecom/package.json, openclaw @ plugins/wecom/package.json, undici @ plugins/wecom/package.json |
| CRABPOT-5E53BD07 | P2 | wecom | plugin | plugin-upstream-fix | open | wecom: plugin API compatibility range is missing | plugins/wecom/package.json |
| CRABPOT-72021A36 | P2 | wecom | inspector | inspector-follow-up | open | wecom: runtime tool schema needs registration capture | registerTool @ plugins/wecom/index.js:28, registerTool @ plugins/wecom/index.js:29, registerTool @ plugins/wecom/index.js:33 |
## Contract Probe Backlog
| ID | Priority | Fixture | Target | Contract | Evidence |
| --------------------------------------------------------------- | -------- | ----------------- | --------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| api.capture.runtime-registrars:a2a-gateway | P1 | a2a-gateway | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerGatewayMethod @ plugins/a2a-gateway/index.ts:616, registerGatewayMethod @ plugins/a2a-gateway/index.ts:622, registerGatewayMethod @ plugins/a2a-gateway/index.ts:631, registerGatewayMethod @ plugins/a2a-gateway/index.ts:657, registerGatewayMethod @ plugins/a2a-gateway/index.ts:669, registerService @ plugins/a2a-gateway/index.ts:857 |
| api.capture.runtime-registrars:clawmetry | P1 | clawmetry | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9 |
| api.capture.runtime-registrars:codex-app-server | P1 | codex-app-server | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerCommand @ plugins/codex-app-server/index.ts:48, registerInteractiveHandler @ plugins/codex-app-server/index.ts:29, registerInteractiveHandler @ plugins/codex-app-server/index.ts:38, registerService @ plugins/codex-app-server/index.ts:12 |
| api.capture.runtime-registrars:mcp-adapter | P1 | mcp-adapter | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerService @ plugins/mcp-adapter/index.ts:15 |
| api.capture.runtime-registrars:wecom | P1 | wecom | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerChannel @ plugins/wecom/index.js:27, registerHttpRoute @ plugins/wecom/index.js:45 |
| hook.before_tool_call.terminal-block-approval:wecom | P1 | wecom | hook-runner | Hook returns preserve terminal, block, and approval semantics. | before_tool_call @ plugins/wecom/index.js:65 |
| hook.llm-observer.privacy-payload:llm-trace-phoenix | P1 | llm-trace-phoenix | hook-runner | LLM observer hooks receive documented prompt/output fields with expected redaction behavior. | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 |
| sdk.import.package-export-cold-import:codex-app-server | P1 | codex-app-server | sdk-alias | Every observed OpenClaw plugin SDK import remains 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 |
| channel.runtime.envelope-config-metadata:agentchat | P2 | agentchat | channel-runtime | Channel setup, message envelope, sender metadata, and config schema remain stable. | defineChannelPluginEntry @ plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333 |
| channel.runtime.envelope-config-metadata:wecom | P2 | wecom | channel-runtime | Channel setup, message envelope, sender metadata, and config schema remain stable. | registerChannel @ plugins/wecom/index.js:27 |
| manifest.compat.channel-env-vars:agentchat | P2 | agentchat | manifest-loader | Legacy channel env metadata continues to map into channel setup/help surfaces. | agentchat |
| manifest.compat.provider-auth-env-vars:hasdata | P2 | hasdata | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | hasdata |
| manifest.schema.top-level-fields:a2a-gateway | P2 | a2a-gateway | manifest-loader | Manifest top-level fields are represented in target OpenClaw PluginManifest. | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json |
| manifest.schema.top-level-fields:agentchat | P2 | agentchat | manifest-loader | Manifest top-level fields are represented in target OpenClaw PluginManifest. | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json |
| package.compat.plugin-api-range:a2a-gateway | P2 | a2a-gateway | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/a2a-gateway/package.json |
| package.compat.plugin-api-range:mcp-adapter | P2 | mcp-adapter | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/mcp-adapter/package.json |
| package.compat.plugin-api-range:wecom | P2 | wecom | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/wecom/package.json |
| package.entrypoint.build-before-cold-import:agentchat | P2 | agentchat | package-loader | Inspector can build or resolve source aliases before cold importing package entrypoints. | extension:./dist/index.js -> plugins/agentchat/integrations/openclaw-channel/dist/index.js, setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js |
| package.entrypoint.isolated-dependency-install:a2a-gateway | P2 | a2a-gateway | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @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 | Inspector installs package dependencies in an isolated workspace before cold import. | @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, openclaw @ plugins/agentchat/integrations/openclaw-channel/package.json |
| package.entrypoint.isolated-dependency-install:hasdata | P2 | hasdata | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @sinclair/typebox @ plugins/hasdata/package.json, openclaw @ plugins/hasdata/package.json |
| package.entrypoint.isolated-dependency-install:mcp-adapter | P2 | mcp-adapter | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @modelcontextprotocol/sdk @ plugins/mcp-adapter/package.json |
| package.entrypoint.isolated-dependency-install:wecom | P2 | wecom | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @wecom/aibot-node-sdk @ plugins/wecom/package.json, file-type @ plugins/wecom/package.json, pinyin-pro @ plugins/wecom/package.json, openclaw @ plugins/wecom/package.json, undici @ plugins/wecom/package.json |
| package.entrypoint.typescript-loader:a2a-gateway | P2 | a2a-gateway | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/a2a-gateway/index.ts |
| package.entrypoint.typescript-loader:hasdata | P2 | hasdata | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/hasdata/src/index.ts |
| package.entrypoint.typescript-loader:llm-trace-phoenix | P2 | llm-trace-phoenix | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/llm-trace-phoenix/index.ts |
| package.entrypoint.typescript-loader:mcp-adapter | P2 | mcp-adapter | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/mcp-adapter/index.ts |
| package.metadata.version-alignment:a2a-gateway | P2 | a2a-gateway | package-loader | Package and OpenClaw manifest versions stay aligned for release compatibility reporting. | package:1.4.0, manifest:1.3.0 |
| sdk.import.root-barrel-cold-import:a2a-gateway | P2 | a2a-gateway | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 |
| sdk.import.root-barrel-cold-import:llm-trace-phoenix | P2 | llm-trace-phoenix | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 |
| tool.registration.schema-capture:a2a-gateway | P2 | a2a-gateway | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/a2a-gateway/index.ts:777 |
| tool.registration.schema-capture:mcp-adapter | P2 | mcp-adapter | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/mcp-adapter/index.ts:30 |
| tool.registration.schema-capture:wecom | P2 | wecom | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/wecom/index.js:28, registerTool @ plugins/wecom/index.js:29, registerTool @ plugins/wecom/index.js:33 |
| manifest.compat.provider-auth-env-vars:inworld-tts | P3 | inworld-tts | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | inworld |
| manifest.compat.provider-auth-env-vars:web-search-plus | P3 | web-search-plus | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng |
| package.entrypoint.build-before-cold-import:clawmetry | P3 | clawmetry | package-loader | Inspector can build or resolve source aliases before cold importing package entrypoints. | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js |
| package.entrypoint.isolated-dependency-install:apify | P3 | apify | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json, openclaw @ plugins/apify/package.json |
| package.entrypoint.isolated-dependency-install:clawmetry | P3 | clawmetry | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json |
| package.entrypoint.isolated-dependency-install:codex-app-server | P3 | codex-app-server | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | ws @ plugins/codex-app-server/package.json, openclaw @ plugins/codex-app-server/package.json |
| package.entrypoint.isolated-dependency-install:inworld-tts | P3 | inworld-tts | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | openclaw @ plugins/inworld-tts/package.json |
| package.entrypoint.isolated-dependency-install:web-search-plus | P3 | web-search-plus | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | openclaw @ plugins/web-search-plus/package.json |
| package.entrypoint.typescript-loader:apify | P3 | apify | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/apify/src/index.ts |
| package.entrypoint.typescript-loader:clawmetry | P3 | clawmetry | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/clawmetry/clawhub-plugin/index.ts |
| package.entrypoint.typescript-loader:codex-app-server | P3 | codex-app-server | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/codex-app-server/index.ts |
| package.entrypoint.typescript-loader:inworld-tts | P3 | inworld-tts | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/inworld-tts/index.ts |
| package.entrypoint.typescript-loader:web-search-plus | P3 | web-search-plus | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/web-search-plus/index.ts |
| sdk.import.root-barrel-cold-import:apify | P3 | apify | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | 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 |
| sdk.import.root-barrel-cold-import:codex-app-server | P3 | codex-app-server | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | 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 |
| tool.registration.schema-capture:apify | P3 | apify | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/apify/src/index.ts:13 |
| tool.registration.schema-capture:web-search-plus | P3 | web-search-plus | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/web-search-plus/index.ts:815, registerTool @ plugins/web-search-plus/index.ts:947 |
| ID | Priority | Fixture | Target | Contract | Evidence |
| --------------------------------------------------------------- | -------- | ----------------- | --------------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| api.capture.runtime-registrars:a2a-gateway | P1 | a2a-gateway | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerGatewayMethod @ plugins/a2a-gateway/index.ts:616, registerGatewayMethod @ plugins/a2a-gateway/index.ts:622, registerGatewayMethod @ plugins/a2a-gateway/index.ts:631, registerGatewayMethod @ plugins/a2a-gateway/index.ts:657, registerGatewayMethod @ plugins/a2a-gateway/index.ts:669, registerService @ plugins/a2a-gateway/index.ts:857 |
| api.capture.runtime-registrars:clawmetry | P1 | clawmetry | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerService @ plugins/clawmetry/clawhub-plugin/index.ts:9 |
| api.capture.runtime-registrars:codex-app-server | P1 | codex-app-server | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerCommand @ plugins/codex-app-server/index.ts:48, registerInteractiveHandler @ plugins/codex-app-server/index.ts:29, registerInteractiveHandler @ plugins/codex-app-server/index.ts:38, registerService @ plugins/codex-app-server/index.ts:12 |
| api.capture.runtime-registrars:mcp-adapter | P1 | mcp-adapter | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerService @ plugins/mcp-adapter/index.ts:15 |
| api.capture.runtime-registrars:opik-openclaw | P1 | opik-openclaw | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerService @ plugins/opik-openclaw/index.ts:16 |
| api.capture.runtime-registrars:wecom | P1 | wecom | inspector-capture-api | External inspector capture records service, route, gateway, command, and interactive registrations. | registerChannel @ plugins/wecom/index.js:27, registerHttpRoute @ plugins/wecom/index.js:45 |
| hook.before_tool_call.terminal-block-approval:opik-openclaw | P1 | opik-openclaw | hook-runner | Hook returns preserve terminal, block, and approval semantics. | before_tool_call @ plugins/opik-openclaw/src/service/hooks/tool.ts:34 |
| hook.before_tool_call.terminal-block-approval:wecom | P1 | wecom | hook-runner | Hook returns preserve terminal, block, and approval semantics. | before_tool_call @ plugins/wecom/index.js:65 |
| hook.llm-observer.privacy-payload:llm-trace-phoenix | P1 | llm-trace-phoenix | hook-runner | LLM observer hooks receive documented prompt/output fields with expected redaction behavior. | llm_input @ plugins/llm-trace-phoenix/index.ts:154, llm_output @ plugins/llm-trace-phoenix/index.ts:168 |
| hook.llm-observer.privacy-payload:opik-openclaw | P1 | opik-openclaw | hook-runner | LLM observer hooks receive documented prompt/output fields with expected redaction behavior. | 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:codex-app-server | P1 | codex-app-server | sdk-alias | Every observed OpenClaw plugin SDK import remains 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 |
| channel.runtime.envelope-config-metadata:agentchat | P2 | agentchat | channel-runtime | Channel setup, message envelope, sender metadata, and config schema remain stable. | defineChannelPluginEntry @ plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333 |
| channel.runtime.envelope-config-metadata:wecom | P2 | wecom | channel-runtime | Channel setup, message envelope, sender metadata, and config schema remain stable. | registerChannel @ plugins/wecom/index.js:27 |
| manifest.compat.channel-env-vars:agentchat | P2 | agentchat | manifest-loader | Legacy channel env metadata continues to map into channel setup/help surfaces. | agentchat |
| manifest.compat.provider-auth-env-vars:hasdata | P2 | hasdata | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | hasdata |
| manifest.schema.top-level-fields:a2a-gateway | P2 | a2a-gateway | manifest-loader | Manifest top-level fields are represented in target OpenClaw PluginManifest. | defaultConfig @ plugins/a2a-gateway/openclaw.plugin.json |
| manifest.schema.top-level-fields:agentchat | P2 | agentchat | manifest-loader | Manifest top-level fields are represented in target OpenClaw PluginManifest. | displayName @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, homepage @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json, icon @ plugins/agentchat/integrations/openclaw-channel/openclaw.plugin.json |
| package.compat.plugin-api-range:a2a-gateway | P2 | a2a-gateway | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/a2a-gateway/package.json |
| package.compat.plugin-api-range:mcp-adapter | P2 | mcp-adapter | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/mcp-adapter/package.json |
| package.compat.plugin-api-range:wecom | P2 | wecom | package-loader | Package metadata declares the OpenClaw plugin API range used by the plugin. | plugins/wecom/package.json |
| package.entrypoint.build-before-cold-import:agentchat | P2 | agentchat | package-loader | Inspector can build or resolve source aliases before cold importing package entrypoints. | extension:./dist/index.js -> plugins/agentchat/integrations/openclaw-channel/dist/index.js, setupEntry:./dist/setup-entry.js -> plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js |
| package.entrypoint.build-before-cold-import:opik-openclaw | P2 | opik-openclaw | package-loader | Inspector can build or resolve source aliases before cold importing package entrypoints. | runtimeExtension:./dist/index.js -> plugins/opik-openclaw/dist/index.js |
| package.entrypoint.isolated-dependency-install:a2a-gateway | P2 | a2a-gateway | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @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 | Inspector installs package dependencies in an isolated workspace before cold import. | @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, openclaw @ plugins/agentchat/integrations/openclaw-channel/package.json |
| package.entrypoint.isolated-dependency-install:hasdata | P2 | hasdata | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @sinclair/typebox @ plugins/hasdata/package.json, openclaw @ plugins/hasdata/package.json |
| package.entrypoint.isolated-dependency-install:mcp-adapter | P2 | mcp-adapter | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @modelcontextprotocol/sdk @ plugins/mcp-adapter/package.json |
| package.entrypoint.isolated-dependency-install:opik-openclaw | P2 | opik-openclaw | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @clack/prompts @ plugins/opik-openclaw/package.json, opik @ plugins/opik-openclaw/package.json, zod @ plugins/opik-openclaw/package.json, openclaw @ plugins/opik-openclaw/package.json |
| package.entrypoint.isolated-dependency-install:wecom | P2 | wecom | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @wecom/aibot-node-sdk @ plugins/wecom/package.json, file-type @ plugins/wecom/package.json, pinyin-pro @ plugins/wecom/package.json, openclaw @ plugins/wecom/package.json, undici @ plugins/wecom/package.json |
| package.entrypoint.typescript-loader:a2a-gateway | P2 | a2a-gateway | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/a2a-gateway/index.ts |
| package.entrypoint.typescript-loader:hasdata | P2 | hasdata | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/hasdata/src/index.ts |
| package.entrypoint.typescript-loader:llm-trace-phoenix | P2 | llm-trace-phoenix | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/llm-trace-phoenix/index.ts |
| package.entrypoint.typescript-loader:mcp-adapter | P2 | mcp-adapter | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/mcp-adapter/index.ts |
| package.entrypoint.typescript-loader:opik-openclaw | P2 | opik-openclaw | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/opik-openclaw/index.ts |
| package.metadata.version-alignment:a2a-gateway | P2 | a2a-gateway | package-loader | Package and OpenClaw manifest versions stay aligned for release compatibility reporting. | package:1.4.0, manifest:1.3.0 |
| sdk.import.root-barrel-cold-import:a2a-gateway | P2 | a2a-gateway | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | openclaw/plugin-sdk @ plugins/a2a-gateway/src/types.ts:14 |
| sdk.import.root-barrel-cold-import:llm-trace-phoenix | P2 | llm-trace-phoenix | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | openclaw/plugin-sdk @ plugins/llm-trace-phoenix/index.ts:12 |
| sdk.import.root-barrel-cold-import:opik-openclaw | P2 | opik-openclaw | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/index.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/cli.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/configure.ts:2, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:5, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service.ts:6, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/llm.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/subagent.ts:1, openclaw/plugin-sdk @ plugins/opik-openclaw/src/service/hooks/tool.ts:1 |
| tool.registration.schema-capture:a2a-gateway | P2 | a2a-gateway | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/a2a-gateway/index.ts:777 |
| tool.registration.schema-capture:mcp-adapter | P2 | mcp-adapter | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/mcp-adapter/index.ts:30 |
| tool.registration.schema-capture:wecom | P2 | wecom | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/wecom/index.js:28, registerTool @ plugins/wecom/index.js:29, registerTool @ plugins/wecom/index.js:33 |
| manifest.compat.provider-auth-env-vars:inworld-tts | P3 | inworld-tts | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | inworld |
| manifest.compat.provider-auth-env-vars:web-search-plus | P3 | web-search-plus | manifest-loader | Legacy provider auth env metadata continues to map into config/help surfaces. | serper, tavily, linkup, querit, exa, firecrawl, perplexity, you, searxng |
| package.entrypoint.build-before-cold-import:clawmetry | P3 | clawmetry | package-loader | Inspector can build or resolve source aliases before cold importing package entrypoints. | runtimeExtension:./dist/index.js -> plugins/clawmetry/clawhub-plugin/dist/index.js |
| package.entrypoint.isolated-dependency-install:apify | P3 | apify | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | @sinclair/typebox @ plugins/apify/package.json, apify-client @ plugins/apify/package.json, openclaw @ plugins/apify/package.json |
| package.entrypoint.isolated-dependency-install:clawmetry | P3 | clawmetry | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | node-fetch @ plugins/clawmetry/clawhub-plugin/package.json |
| package.entrypoint.isolated-dependency-install:codex-app-server | P3 | codex-app-server | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | ws @ plugins/codex-app-server/package.json, openclaw @ plugins/codex-app-server/package.json |
| package.entrypoint.isolated-dependency-install:inworld-tts | P3 | inworld-tts | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | openclaw @ plugins/inworld-tts/package.json |
| package.entrypoint.isolated-dependency-install:web-search-plus | P3 | web-search-plus | package-loader | Inspector installs package dependencies in an isolated workspace before cold import. | openclaw @ plugins/web-search-plus/package.json |
| package.entrypoint.typescript-loader:apify | P3 | apify | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/apify/src/index.ts |
| package.entrypoint.typescript-loader:clawmetry | P3 | clawmetry | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/clawmetry/clawhub-plugin/index.ts |
| package.entrypoint.typescript-loader:codex-app-server | P3 | codex-app-server | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/codex-app-server/index.ts |
| package.entrypoint.typescript-loader:inworld-tts | P3 | inworld-tts | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/inworld-tts/index.ts |
| package.entrypoint.typescript-loader:web-search-plus | P3 | web-search-plus | package-loader | Inspector can compile or load TypeScript source entrypoints before registration capture. | extension:plugins/web-search-plus/index.ts |
| sdk.import.root-barrel-cold-import:apify | P3 | apify | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | 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 |
| sdk.import.root-barrel-cold-import:codex-app-server | P3 | codex-app-server | sdk-alias | Root plugin SDK barrel remains importable or has a machine-readable migration path. | 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 |
| tool.registration.schema-capture:apify | P3 | apify | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/apify/src/index.ts:13 |
| tool.registration.schema-capture:web-search-plus | P3 | web-search-plus | tool-runtime | Registered runtime tools expose stable names, input schemas, and result metadata. | registerTool @ plugins/web-search-plus/index.ts:815, registerTool @ plugins/web-search-plus/index.ts:947 |
## Fixture Seam Inventory
| Fixture | Priority | Seams | Hooks | Registrations | Manifest contracts |
| ----------------- | -------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | ------------------ |
| agentchat | high | channel, prompt-mutation, config-schema, websocket, backpressure | - | defineChannelPluginEntry | - |
| wecom | high | channel, streaming, dynamic-agent-routing, message-policy, media | before_prompt_build, before_tool_call, subagent_delivery_target, subagent_ended, subagent_spawned | registerChannel, registerHttpRoute, registerTool | - |
| a2a-gateway | high | gateway-service, http-routes, agent-routing, async-job, auth | - | registerGatewayMethod, registerService, registerTool | - |
| hasdata | high | tool, tool-schema, external-api, cli, config-schema | - | registerTool | tools |
| mcp-adapter | high | dynamic-tool, json-schema, stdio, http, reconnect | - | registerService, registerTool | - |
| llm-trace-phoenix | high | llm-observer, conversation-access, telemetry, external-api | llm_input, llm_output | - | - |
| clawmetry | medium | diagnostics, log-transport, gateway-service, sidecar, telemetry | - | definePluginEntry, registerService | - |
| codex-app-server | medium | process-spawn, unsafe-install, channel-bridge, interactive-ui, sdk-compat | inbound_claim | registerCommand, registerInteractiveHandler, registerService | - |
| web-search-plus | medium | tool, provider-routing, external-api, env-auth, extraction | - | registerTool | - |
| apify | medium | tool, async-job, polling, external-api, catalog-discovery | - | registerCli, registerTool | - |
| inworld-tts | medium | provider-capability, speech, tts, env-auth, runtime-overrides | - | definePluginEntry, registerSpeechProvider | speechProviders |
| Fixture | Priority | Seams | Hooks | Registrations | Manifest contracts |
| ----------------- | -------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | ------------------ |
| agentchat | high | channel, prompt-mutation, config-schema, websocket, backpressure | - | defineChannelPluginEntry | - |
| wecom | high | channel, streaming, dynamic-agent-routing, message-policy, media | before_prompt_build, before_tool_call, subagent_delivery_target, subagent_ended, subagent_spawned | registerChannel, registerHttpRoute, registerTool | - |
| a2a-gateway | high | gateway-service, http-routes, agent-routing, async-job, auth | - | registerGatewayMethod, registerService, registerTool | - |
| hasdata | high | tool, tool-schema, external-api, cli, config-schema | - | registerTool | tools |
| mcp-adapter | high | dynamic-tool, json-schema, stdio, http, reconnect | - | registerService, registerTool | - |
| llm-trace-phoenix | high | llm-observer, conversation-access, telemetry, external-api | llm_input, llm_output | - | - |
| opik-openclaw | high | llm-observer, tool-runtime, subagent-routing, diagnostics, cli | after_tool_call, agent_end, before_tool_call, llm_input, llm_output, subagent_delivery_target, subagent_ended, subagent_spawned, subagent_spawning, tool_result_persist | registerCli, registerService | - |
| clawmetry | medium | diagnostics, log-transport, gateway-service, sidecar, telemetry | - | definePluginEntry, registerService | - |
| codex-app-server | medium | process-spawn, unsafe-install, channel-bridge, interactive-ui, sdk-compat | inbound_claim | registerCommand, registerInteractiveHandler, registerService | - |
| web-search-plus | medium | tool, provider-routing, external-api, env-auth, extraction | - | registerTool | - |
| apify | medium | tool, async-job, polling, external-api, catalog-discovery | - | registerCli, registerTool | - |
| inworld-tts | medium | provider-capability, speech, tts, env-auth, runtime-overrides | - | definePluginEntry, registerSpeechProvider | speechProviders |
## Decision Matrix
@ -266,6 +288,13 @@ _none_
| llm-trace-phoenix | inspector-follow-up | cold-import | Compile TypeScript source or run a loader before cold-importing this fixture entrypoint. | plugins/llm-trace-phoenix/index.ts |
| llm-trace-phoenix | inspector-follow-up | conversation-access | Add synthetic llm_input/llm_output/agent_end probes before tightening hook payloads or redaction behavior. | llm_input, llm_output |
| llm-trace-phoenix | core-compat-adapter | sdk-import | Keep the root SDK barrel stable or expose a machine-readable migration map before removing aliases. | openclaw/plugin-sdk |
| opik-openclaw | inspector-follow-up | cold-import | Run the plugin build or resolve source entrypoint aliases before cold-importing this fixture. | ./dist/index.js |
| opik-openclaw | inspector-follow-up | cold-import | Compile TypeScript source or run a loader before cold-importing this fixture entrypoint. | plugins/opik-openclaw/index.ts |
| opik-openclaw | inspector-follow-up | cold-import | Install runtime dependencies in an isolated workspace before executing this fixture entrypoint. | @clack/prompts, opik, zod, openclaw |
| opik-openclaw | inspector-follow-up | conversation-access | Add synthetic llm_input/llm_output/agent_end probes before tightening hook payloads or redaction behavior. | agent_end, llm_input, llm_output |
| opik-openclaw | core-compat-adapter | sdk-import | Keep the root SDK barrel stable or expose a machine-readable migration map before removing aliases. | openclaw/plugin-sdk |
| opik-openclaw | inspector-follow-up | registration-capture | Expose or mirror a full public API capture shim before treating these runtime-only seams as covered. | registerService |
| opik-openclaw | inspector-follow-up | tool-policy | Probe before_tool_call return shapes before changing tool-call approval or block behavior. | before_tool_call |
| clawmetry | inspector-follow-up | cold-import | Run the plugin build or resolve source entrypoint aliases before cold-importing this fixture. | ./dist/index.js |
| 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 |
@ -291,76 +320,83 @@ _none_
## 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.1 | - |
| 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.0.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 | - |
| 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 | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/diagnostics-otel, openclaw/plugin-sdk/plugin-entry | - |
| 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.0 | - |
| 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 | channel-env-vars |
| a2a-gateway | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import | legacy-root-sdk-import |
| hasdata | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | provider-auth-env-vars | provider-auth-env-vars |
| llm-trace-phoenix | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import | legacy-root-sdk-import |
| codex-app-server | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import | legacy-root-sdk-import |
| web-search-plus | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | provider-auth-env-vars | provider-auth-env-vars |
| apify | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import | legacy-root-sdk-import |
| inworld-tts | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | provider-auth-env-vars | 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.1 | - |
| 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.0.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 | - |
| 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 | sdk-exports-present | log | all observed plugin SDK imports exist in target OpenClaw package exports | openclaw/plugin-sdk/diagnostics-otel, openclaw/plugin-sdk/plugin-entry | - |
| 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.0 | - |
| 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 | channel-env-vars |
| a2a-gateway | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import | legacy-root-sdk-import |
| hasdata | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | provider-auth-env-vars | provider-auth-env-vars |
| llm-trace-phoenix | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import | legacy-root-sdk-import |
| opik-openclaw | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import | legacy-root-sdk-import |
| codex-app-server | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import | legacy-root-sdk-import |
| web-search-plus | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | provider-auth-env-vars | provider-auth-env-vars |
| apify | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | legacy-root-sdk-import | legacy-root-sdk-import |
| inworld-tts | compat-record-present | log | target OpenClaw checkout has a matching compat registry record | provider-auth-env-vars | provider-auth-env-vars |

View File

@ -1,6 +1,6 @@
{
"generatedAt": "deterministic",
"runs": 1,
"runs": 3,
"targetOpenClaw": {
"status": "ok",
"configuredPath": "../openclaw",
@ -8,24 +8,24 @@
"hookNames": 31,
"apiRegistrars": 40,
"capturedRegistrars": 18,
"sdkExports": 306,
"sdkExports": 307,
"manifestFields": 32,
"manifestContractFields": 16
},
"fixtureInventory": {
"fixtures": 11,
"sourceFiles": 181,
"observedHooks": 8,
"observedRegistrations": 20,
"observedSdkImports": 19,
"contractProbes": 50,
"issueFindings": 51
"fixtures": 12,
"sourceFiles": 201,
"observedHooks": 18,
"observedRegistrations": 22,
"observedSdkImports": 20,
"contractProbes": 57,
"issueFindings": 58
},
"summary": {
"commandCount": 7,
"p50WallMs": 219,
"p95WallMs": 236,
"maxPeakRssMb": 66.7
"p50WallMs": 742,
"p95WallMs": 1273,
"maxPeakRssMb": 65.1
},
"commands": [
{
@ -34,22 +34,36 @@
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node -e 0",
"samples": [
{
"wallMs": 130,
"peakRssMb": 2.5,
"wallMs": 1134,
"peakRssMb": 0.4,
"exitCode": 0,
"stdoutPreview": "",
"stderrPreview": ""
},
{
"wallMs": 697,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "",
"stderrPreview": ""
},
{
"wallMs": 917,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "",
"stderrPreview": ""
}
],
"wallMs": {
"min": 130,
"median": 130,
"max": 130
"min": 697,
"median": 917,
"max": 1134
},
"peakRssMb": {
"min": 2.5,
"median": 2.5,
"max": 2.5
"min": 0,
"median": 0,
"max": 0.4
},
"exitCodes": [
0
@ -61,22 +75,36 @@
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/inspect-fixtures.mjs --check",
"samples": [
{
"wallMs": 236,
"peakRssMb": 61.8,
"wallMs": 1273,
"peakRssMb": 51.8,
"exitCode": 0,
"stdoutPreview": "│ 10 │ 'inworld-tts' │ 'ok' │ '' │ 'definePluginEntry,registerSpeechProvider' │ 'speechProviders' │\n└─────────┴─────────────────────┴────────┴─────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┴───────────────────┘",
"stdoutPreview": "│ 11 │ 'inworld-tts' │ 'ok' │ '' │ 'definePluginEntry,registerSpeechProvider' │ 'speechProviders' │\n└─────────┴─────────────────────┴────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┴───────────────────┘",
"stderrPreview": ""
},
{
"wallMs": 487,
"peakRssMb": 43.1,
"exitCode": 0,
"stdoutPreview": "│ 11 │ 'inworld-tts' │ 'ok' │ '' │ 'definePluginEntry,registerSpeechProvider' │ 'speechProviders' │\n└─────────┴─────────────────────┴────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┴───────────────────┘",
"stderrPreview": ""
},
{
"wallMs": 1397,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "│ 11 │ 'inworld-tts' │ 'ok' │ '' │ 'definePluginEntry,registerSpeechProvider' │ 'speechProviders' │\n└─────────┴─────────────────────┴────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────┴───────────────────┘",
"stderrPreview": ""
}
],
"wallMs": {
"min": 236,
"median": 236,
"max": 236
"min": 487,
"median": 1273,
"max": 1397
},
"peakRssMb": {
"min": 61.8,
"median": 61.8,
"max": 61.8
"min": 0,
"median": 43.1,
"max": 51.8
},
"exitCodes": [
0
@ -88,22 +116,36 @@
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/generate-report.mjs --check",
"samples": [
{
"wallMs": 226,
"peakRssMb": 60.5,
"wallMs": 1956,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "crabpot report check: pass; 0 breakages, 16 warnings, 35 suggestions, 51 issues\nreport targets: /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.md, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.json, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-issues.md",
"stdoutPreview": "crabpot report check: pass; 0 breakages, 18 warnings, 40 suggestions, 58 issues\nreport targets: /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.md, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.json, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-issues.md",
"stderrPreview": ""
},
{
"wallMs": 517,
"peakRssMb": 65.1,
"exitCode": 0,
"stdoutPreview": "crabpot report check: pass; 0 breakages, 18 warnings, 40 suggestions, 58 issues\nreport targets: /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.md, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.json, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-issues.md",
"stderrPreview": ""
},
{
"wallMs": 424,
"peakRssMb": 63.5,
"exitCode": 0,
"stdoutPreview": "crabpot report check: pass; 0 breakages, 18 warnings, 40 suggestions, 58 issues\nreport targets: /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.md, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-report.json, /Users/vincentkoc/GIT/_Perso/crabpot/reports/crabpot-issues.md",
"stderrPreview": ""
}
],
"wallMs": {
"min": 226,
"median": 226,
"max": 226
"min": 424,
"median": 517,
"max": 1956
},
"peakRssMb": {
"min": 60.5,
"median": 60.5,
"max": 60.5
"min": 0,
"median": 63.5,
"max": 65.1
},
"exitCodes": [
0
@ -115,22 +157,36 @@
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/capture-contracts.mjs --check",
"samples": [
{
"wallMs": 219,
"peakRssMb": 66.7,
"wallMs": 483,
"peakRssMb": 64.1,
"exitCode": 0,
"stdoutPreview": "contract capture: 28 registrations, 8 hooks, 32 sdk imports, 50 issue probes",
"stdoutPreview": "contract capture: 30 registrations, 18 hooks, 41 sdk imports, 57 issue probes",
"stderrPreview": ""
},
{
"wallMs": 522,
"peakRssMb": 63.6,
"exitCode": 0,
"stdoutPreview": "contract capture: 30 registrations, 18 hooks, 41 sdk imports, 57 issue probes",
"stderrPreview": ""
},
{
"wallMs": 471,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "contract capture: 30 registrations, 18 hooks, 41 sdk imports, 57 issue probes",
"stderrPreview": ""
}
],
"wallMs": {
"min": 219,
"median": 219,
"max": 219
"min": 471,
"median": 483,
"max": 522
},
"peakRssMb": {
"min": 66.7,
"median": 66.7,
"max": 66.7
"min": 0,
"median": 63.6,
"max": 64.1
},
"exitCodes": [
0
@ -142,22 +198,36 @@
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/synthetic-probes.mjs --check",
"samples": [
{
"wallMs": 169,
"peakRssMb": 51.1,
"wallMs": 821,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "synthetic probes: 36 ready, 0 blocked, 36 total",
"stdoutPreview": "synthetic probes: 48 ready, 0 blocked, 48 total",
"stderrPreview": ""
},
{
"wallMs": 874,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "synthetic probes: 48 ready, 0 blocked, 48 total",
"stderrPreview": ""
},
{
"wallMs": 2457,
"peakRssMb": 0,
"exitCode": 0,
"stdoutPreview": "synthetic probes: 48 ready, 0 blocked, 48 total",
"stderrPreview": ""
}
],
"wallMs": {
"min": 169,
"median": 169,
"max": 169
"min": 821,
"median": 874,
"max": 2457
},
"peakRssMb": {
"min": 51.1,
"median": 51.1,
"max": 51.1
"min": 0,
"median": 0,
"max": 0
},
"exitCodes": [
0
@ -169,22 +239,36 @@
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/cold-import-readiness.mjs --check",
"samples": [
{
"wallMs": 223,
"peakRssMb": 48,
"wallMs": 444,
"peakRssMb": 60.8,
"exitCode": 0,
"stdoutPreview": "cold import readiness: 13 entrypoints, 0 ready, 13 blocked",
"stdoutPreview": "cold import readiness: 15 entrypoints, 0 ready, 15 blocked",
"stderrPreview": ""
},
{
"wallMs": 364,
"peakRssMb": 51.4,
"exitCode": 0,
"stdoutPreview": "cold import readiness: 15 entrypoints, 0 ready, 15 blocked",
"stderrPreview": ""
},
{
"wallMs": 604,
"peakRssMb": 57.6,
"exitCode": 0,
"stdoutPreview": "cold import readiness: 15 entrypoints, 0 ready, 15 blocked",
"stderrPreview": ""
}
],
"wallMs": {
"min": 223,
"median": 223,
"max": 223
"min": 364,
"median": 444,
"max": 604
},
"peakRssMb": {
"min": 48,
"median": 48,
"max": 48
"min": 51.4,
"median": 57.6,
"max": 60.8
},
"exitCodes": [
0
@ -196,22 +280,36 @@
"command": "/opt/homebrew/Cellar/node/25.9.0_2/bin/node scripts/workspace-plan.mjs --check",
"samples": [
{
"wallMs": 184,
"peakRssMb": 66.3,
"wallMs": 369,
"peakRssMb": 0.3,
"exitCode": 0,
"stdoutPreview": "workspace plan: 13 entrypoints, 9 installs, 3 builds, 13 captures, 13 synthetic probes, 13 artifact dirs",
"stdoutPreview": "workspace plan: 15 entrypoints, 10 installs, 4 builds, 15 captures, 15 synthetic probes, 15 artifact dirs",
"stderrPreview": ""
},
{
"wallMs": 1554,
"peakRssMb": 64,
"exitCode": 0,
"stdoutPreview": "workspace plan: 15 entrypoints, 10 installs, 4 builds, 15 captures, 15 synthetic probes, 15 artifact dirs",
"stderrPreview": ""
},
{
"wallMs": 742,
"peakRssMb": 63.3,
"exitCode": 0,
"stdoutPreview": "workspace plan: 15 entrypoints, 10 installs, 4 builds, 15 captures, 15 synthetic probes, 15 artifact dirs",
"stderrPreview": ""
}
],
"wallMs": {
"min": 184,
"median": 184,
"max": 184
"min": 369,
"median": 742,
"max": 1554
},
"peakRssMb": {
"min": 66.3,
"median": 66.3,
"max": 66.3
"min": 0.3,
"median": 63.3,
"max": 64
},
"exitCodes": [
0

View File

@ -1,16 +1,16 @@
# Crabpot Runtime Profile
Generated: deterministic
Samples per command: 1
Samples per command: 3
## Summary
| Metric | Value |
| ------------- | ------- |
| Commands | 7 |
| P50 wall time | 219 ms |
| P95 wall time | 236 ms |
| Max peak RSS | 66.7 MB |
| P50 wall time | 742 ms |
| P95 wall time | 1273 ms |
| Max peak RSS | 65.1 MB |
## Target OpenClaw Registry Surface
@ -22,7 +22,7 @@ Samples per command: 1
| hookNames | 31 |
| apiRegistrars | 40 |
| capturedRegistrars | 18 |
| sdkExports | 306 |
| sdkExports | 307 |
| manifestFields | 32 |
| manifestContractFields | 16 |
@ -30,22 +30,22 @@ Samples per command: 1
| Metric | Value |
| --------------------- | ----- |
| fixtures | 11 |
| sourceFiles | 181 |
| observedHooks | 8 |
| observedRegistrations | 20 |
| observedSdkImports | 19 |
| contractProbes | 50 |
| issueFindings | 51 |
| fixtures | 12 |
| sourceFiles | 201 |
| observedHooks | 18 |
| observedRegistrations | 22 |
| observedSdkImports | 20 |
| contractProbes | 57 |
| issueFindings | 58 |
## Boot And Memory Samples
| ID | Label | Median wall | Max wall | Max peak RSS | Exit codes |
| ---------------------- | ----------------------------------------------- | ----------- | -------- | ------------ | ---------- |
| node-boot | Node boot | 130 ms | 130 ms | 2.5 MB | 0 |
| fixture-inspection | Fixture inspection | 236 ms | 236 ms | 61.8 MB | 0 |
| compat-report-registry | Compatibility report plus target registry parse | 226 ms | 226 ms | 60.5 MB | 0 |
| contract-capture | Contract capture inventory | 219 ms | 219 ms | 66.7 MB | 0 |
| synthetic-probe-plan | Synthetic probe plan | 169 ms | 169 ms | 51.1 MB | 0 |
| cold-import-readiness | Cold import readiness | 223 ms | 223 ms | 48 MB | 0 |
| workspace-plan | Workspace execution plan | 184 ms | 184 ms | 66.3 MB | 0 |
| node-boot | Node boot | 917 ms | 1134 ms | 0.4 MB | 0 |
| fixture-inspection | Fixture inspection | 1273 ms | 1397 ms | 51.8 MB | 0 |
| compat-report-registry | Compatibility report plus target registry parse | 517 ms | 1956 ms | 65.1 MB | 0 |
| contract-capture | Contract capture inventory | 483 ms | 522 ms | 64.1 MB | 0 |
| synthetic-probe-plan | Synthetic probe plan | 874 ms | 2457 ms | 0 MB | 0 |
| cold-import-readiness | Cold import readiness | 444 ms | 604 ms | 60.8 MB | 0 |
| workspace-plan | Workspace execution plan | 742 ms | 1554 ms | 64 MB | 0 |

View File

@ -1,14 +1,14 @@
{
"generatedAt": "deterministic",
"summary": {
"fixtureCount": 11,
"probeCount": 36,
"hookProbeCount": 8,
"registrationProbeCount": 28,
"readyCount": 36,
"fixtureCount": 12,
"probeCount": 48,
"hookProbeCount": 18,
"registrationProbeCount": 30,
"readyCount": 48,
"blockedCount": 0,
"directExecutionCount": 19,
"optInExecutionCount": 6,
"directExecutionCount": 20,
"optInExecutionCount": 7,
"metadataOnlyCount": 3
},
"probes": [
@ -202,6 +202,254 @@
},
"source": "plugins/llm-trace-phoenix/index.ts:168"
},
{
"id": "hook.after_tool_call:opik-openclaw:plugins-opik-openclaw-src-service-hooks-tool-ts-100",
"fixture": "opik-openclaw",
"kind": "hook",
"seam": "after_tool_call",
"status": "ready",
"blocker": null,
"assertions": [
"hook payload and return value are captured"
],
"syntheticEvent": {
"hook": "after_tool_call",
"fixture": "opik-openclaw"
},
"syntheticContext": {
"hook": "after_tool_call",
"fixture": "opik-openclaw"
},
"source": "plugins/opik-openclaw/src/service/hooks/tool.ts:100"
},
{
"id": "hook.agent_end:opik-openclaw:plugins-opik-openclaw-src-service-ts-560",
"fixture": "opik-openclaw",
"kind": "hook",
"seam": "agent_end",
"status": "ready",
"blocker": null,
"assertions": [
"final conversation payload is redacted as expected",
"agent id and run metadata are present"
],
"syntheticEvent": {
"runId": "run-fixture",
"agentId": "agent-fixture",
"conversationId": "conversation-fixture",
"status": "completed",
"transcript": [
{
"role": "assistant",
"content": "[redacted fixture output]"
}
]
},
"syntheticContext": {
"runId": "run-fixture",
"agentId": "agent-fixture",
"sessionId": "session-fixture",
"channelId": "fixture-channel"
},
"source": "plugins/opik-openclaw/src/service.ts:560"
},
{
"id": "hook.before_tool_call:opik-openclaw:plugins-opik-openclaw-src-service-hooks-tool-ts-34",
"fixture": "opik-openclaw",
"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",
"toolCallId": "call-fixture"
},
"source": "plugins/opik-openclaw/src/service/hooks/tool.ts:34"
},
{
"id": "hook.llm_input:opik-openclaw:plugins-opik-openclaw-src-service-hooks-llm-ts-39",
"fixture": "opik-openclaw",
"kind": "hook",
"seam": "llm_input",
"status": "ready",
"blocker": null,
"assertions": [
"model input payload is redacted as expected",
"model and agent metadata are present"
],
"syntheticEvent": {
"agentId": "agent-fixture",
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "[redacted fixture input]"
}
]
},
"syntheticContext": {
"runId": "run-fixture",
"agentId": "agent-fixture",
"sessionId": "session-fixture",
"channelId": "fixture-channel"
},
"source": "plugins/opik-openclaw/src/service/hooks/llm.ts:39"
},
{
"id": "hook.llm_output:opik-openclaw:plugins-opik-openclaw-src-service-hooks-llm-ts-150",
"fixture": "opik-openclaw",
"kind": "hook",
"seam": "llm_output",
"status": "ready",
"blocker": null,
"assertions": [
"model output payload is redacted as expected",
"model and agent metadata are present"
],
"syntheticEvent": {
"agentId": "agent-fixture",
"model": "gpt-5.4",
"output": {
"role": "assistant",
"content": "[redacted fixture output]"
}
},
"syntheticContext": {
"runId": "run-fixture",
"agentId": "agent-fixture",
"sessionId": "session-fixture",
"channelId": "fixture-channel"
},
"source": "plugins/opik-openclaw/src/service/hooks/llm.ts:150"
},
{
"id": "hook.subagent_delivery_target:opik-openclaw:plugins-opik-openclaw-src-service-hooks-subagent-ts-147",
"fixture": "opik-openclaw",
"kind": "hook",
"seam": "subagent_delivery_target",
"status": "ready",
"blocker": null,
"assertions": [
"target routing result is preserved",
"parent/subagent metadata are present"
],
"syntheticEvent": {
"childSessionKey": "child-session",
"agentId": "agent-child",
"label": "fixture child",
"mode": "run",
"requester": {
"channel": "fixture-channel",
"accountId": "fixture-account"
}
},
"syntheticContext": {
"runId": "run-fixture",
"childSessionKey": "child-session",
"requesterSessionKey": "parent-session"
},
"source": "plugins/opik-openclaw/src/service/hooks/subagent.ts:147"
},
{
"id": "hook.subagent_ended:opik-openclaw:plugins-opik-openclaw-src-service-hooks-subagent-ts-222",
"fixture": "opik-openclaw",
"kind": "hook",
"seam": "subagent_ended",
"status": "ready",
"blocker": null,
"assertions": [
"subagent completion payload is preserved",
"status metadata is present"
],
"syntheticEvent": {
"childSessionKey": "child-session",
"agentId": "agent-child",
"status": "completed"
},
"syntheticContext": {
"runId": "run-fixture",
"childSessionKey": "child-session",
"requesterSessionKey": "parent-session"
},
"source": "plugins/opik-openclaw/src/service/hooks/subagent.ts:222"
},
{
"id": "hook.subagent_spawned:opik-openclaw:plugins-opik-openclaw-src-service-hooks-subagent-ts-89",
"fixture": "opik-openclaw",
"kind": "hook",
"seam": "subagent_spawned",
"status": "ready",
"blocker": null,
"assertions": [
"spawn payload is preserved",
"parent/subagent metadata are present"
],
"syntheticEvent": {
"childSessionKey": "child-session",
"agentId": "agent-child",
"label": "fixture child",
"mode": "run"
},
"syntheticContext": {
"runId": "run-fixture",
"childSessionKey": "child-session",
"requesterSessionKey": "parent-session"
},
"source": "plugins/opik-openclaw/src/service/hooks/subagent.ts:89"
},
{
"id": "hook.subagent_spawning:opik-openclaw:plugins-opik-openclaw-src-service-hooks-subagent-ts-38",
"fixture": "opik-openclaw",
"kind": "hook",
"seam": "subagent_spawning",
"status": "ready",
"blocker": null,
"assertions": [
"hook payload and return value are captured"
],
"syntheticEvent": {
"hook": "subagent_spawning",
"fixture": "opik-openclaw"
},
"syntheticContext": {
"hook": "subagent_spawning",
"fixture": "opik-openclaw"
},
"source": "plugins/opik-openclaw/src/service/hooks/subagent.ts:38"
},
{
"id": "hook.tool_result_persist:opik-openclaw:plugins-opik-openclaw-src-service-ts-541",
"fixture": "opik-openclaw",
"kind": "hook",
"seam": "tool_result_persist",
"status": "ready",
"blocker": null,
"assertions": [
"hook payload and return value are captured"
],
"syntheticEvent": {
"hook": "tool_result_persist",
"fixture": "opik-openclaw"
},
"syntheticContext": {
"hook": "tool_result_persist",
"fixture": "opik-openclaw"
},
"source": "plugins/opik-openclaw/src/service.ts:541"
},
{
"id": "hook.inbound_claim:codex-app-server:plugins-codex-app-server-index-ts-25",
"fixture": "codex-app-server",
@ -711,6 +959,66 @@
},
"source": "plugins/mcp-adapter/index.ts:30"
},
{
"id": "registration.registerCli:opik-openclaw:plugins-opik-openclaw-index-ts-17",
"fixture": "opik-openclaw",
"kind": "registration",
"seam": "registerCli",
"status": "ready",
"blocker": null,
"assertions": [
"command name is stable",
"argument schema is captured"
],
"syntheticArguments": [
{
"name": "fixture-command",
"args": [
{
"name": "input",
"type": "string"
}
]
}
],
"execution": {
"mode": "direct",
"callableProperties": [
"handler",
"run",
"execute"
]
},
"source": "plugins/opik-openclaw/index.ts:17"
},
{
"id": "registration.registerService:opik-openclaw:plugins-opik-openclaw-index-ts-16",
"fixture": "opik-openclaw",
"kind": "registration",
"seam": "registerService",
"status": "ready",
"blocker": null,
"assertions": [
"service id is stable",
"start/stop lifecycle handlers are captured"
],
"syntheticArguments": [
{
"name": "fixture-service",
"start": "function",
"stop": "function"
}
],
"execution": {
"mode": "lifecycle-opt-in",
"callableProperties": [
"start",
"stop"
],
"option": "includeLifecycle"
},
"source": "plugins/opik-openclaw/index.ts:16"
},
{
"id": "registration.definePluginEntry:clawmetry:plugins-clawmetry-clawhub-plugin-index-ts-4",
"fixture": "clawmetry",

View File

@ -6,14 +6,14 @@ Generated: deterministic
| Metric | Value |
| ------------------- | ----- |
| Fixtures | 11 |
| Probes | 36 |
| Hook probes | 8 |
| Registration probes | 28 |
| Ready | 36 |
| Fixtures | 12 |
| Probes | 48 |
| Hook probes | 18 |
| Registration probes | 30 |
| Ready | 48 |
| Blocked | 0 |
| Direct execution | 19 |
| Opt-in execution | 6 |
| Direct execution | 20 |
| Opt-in execution | 7 |
| Metadata-only | 3 |
## Probe Inventory
@ -27,6 +27,16 @@ Generated: deterministic
| wecom | hook | subagent_spawned | ready | hook-direct | plugins/wecom/index.js:62 | spawn payload is preserved; parent/subagent metadata are present |
| llm-trace-phoenix | hook | llm_input | ready | hook-direct | plugins/llm-trace-phoenix/index.ts:154 | model input payload is redacted as expected; model and agent metadata are present |
| llm-trace-phoenix | hook | llm_output | ready | hook-direct | plugins/llm-trace-phoenix/index.ts:168 | model output payload is redacted as expected; model and agent metadata are present |
| opik-openclaw | hook | after_tool_call | ready | hook-direct | plugins/opik-openclaw/src/service/hooks/tool.ts:100 | hook payload and return value are captured |
| opik-openclaw | hook | agent_end | ready | hook-direct | plugins/opik-openclaw/src/service.ts:560 | final conversation payload is redacted as expected; agent id and run metadata are present |
| opik-openclaw | hook | before_tool_call | ready | hook-direct | plugins/opik-openclaw/src/service/hooks/tool.ts:34 | block/allow return shapes are preserved; terminal and approval metadata are present |
| opik-openclaw | hook | llm_input | ready | hook-direct | plugins/opik-openclaw/src/service/hooks/llm.ts:39 | model input payload is redacted as expected; model and agent metadata are present |
| opik-openclaw | hook | llm_output | ready | hook-direct | plugins/opik-openclaw/src/service/hooks/llm.ts:150 | model output payload is redacted as expected; model and agent metadata are present |
| opik-openclaw | hook | subagent_delivery_target | ready | hook-direct | plugins/opik-openclaw/src/service/hooks/subagent.ts:147 | target routing result is preserved; parent/subagent metadata are present |
| opik-openclaw | hook | subagent_ended | ready | hook-direct | plugins/opik-openclaw/src/service/hooks/subagent.ts:222 | subagent completion payload is preserved; status metadata is present |
| opik-openclaw | hook | subagent_spawned | ready | hook-direct | plugins/opik-openclaw/src/service/hooks/subagent.ts:89 | spawn payload is preserved; parent/subagent metadata are present |
| opik-openclaw | hook | subagent_spawning | ready | hook-direct | plugins/opik-openclaw/src/service/hooks/subagent.ts:38 | hook payload and return value are captured |
| opik-openclaw | hook | tool_result_persist | ready | hook-direct | plugins/opik-openclaw/src/service.ts:541 | hook payload and return value are captured |
| codex-app-server | hook | inbound_claim | ready | hook-direct | plugins/codex-app-server/index.ts:25 | claim payload preserves channel/source identity; routing metadata is present |
| agentchat | registration | defineChannelPluginEntry | ready | metadata-only | plugins/agentchat/integrations/openclaw-channel/src/channel.ts:333 | channel id is stable; setup/config schema can be read; message envelope metadata is preserved |
| wecom | registration | registerChannel | ready | channel-opt-in | plugins/wecom/index.js:27 | channel id is stable; inbound/outbound envelope shape is captured; sender metadata is preserved |
@ -44,6 +54,8 @@ Generated: deterministic
| hasdata | registration | registerTool | ready | direct | plugins/hasdata/src/index.ts:43 | tool name is stable; input schema is captured; result shape metadata is captured |
| mcp-adapter | registration | registerService | ready | lifecycle-opt-in | plugins/mcp-adapter/index.ts:15 | service id is stable; start/stop lifecycle handlers are captured |
| mcp-adapter | registration | registerTool | ready | direct | plugins/mcp-adapter/index.ts:30 | tool name is stable; input schema is captured; result shape metadata is captured |
| opik-openclaw | registration | registerCli | ready | direct | plugins/opik-openclaw/index.ts:17 | command name is stable; argument schema is captured |
| opik-openclaw | registration | registerService | ready | lifecycle-opt-in | plugins/opik-openclaw/index.ts:16 | service id is stable; start/stop lifecycle handlers are captured |
| clawmetry | registration | definePluginEntry | ready | metadata-only | plugins/clawmetry/clawhub-plugin/index.ts:4 | entrypoint register function is callable; entrypoint metadata is preserved |
| clawmetry | registration | registerService | ready | lifecycle-opt-in | plugins/clawmetry/clawhub-plugin/index.ts:9 | service id is stable; start/stop lifecycle handlers are captured |
| codex-app-server | registration | registerCommand | ready | direct | plugins/codex-app-server/index.ts:48 | command id is stable; interactive command payload is captured |

View File

@ -10,14 +10,15 @@
"configuredPath": "../openclaw"
},
"summary": {
"fixtureCount": 11,
"entrypointCount": 13,
"installStepCount": 9,
"buildStepCount": 3,
"artifactStepCount": 13,
"captureStepCount": 13,
"syntheticProbeStepCount": 13,
"targetOpenClawLinkStepCount": 8,
"fixtureCount": 12,
"entrypointCount": 15,
"installStepCount": 10,
"auditStepCount": 10,
"buildStepCount": 4,
"artifactStepCount": 15,
"captureStepCount": 15,
"syntheticProbeStepCount": 15,
"targetOpenClawLinkStepCount": 10,
"missingBuildScriptCount": 0,
"sdkAliasRequiredCount": 1
},
@ -203,6 +204,13 @@
"cwd": ".crabpot/workspaces/wecom",
"reason": "install runtime dependencies without mutating the pinned submodule"
},
{
"kind": "audit",
"command": "npm audit --json > ../../results/wecom/package-audit.json || true",
"cwd": ".crabpot/workspaces/wecom",
"artifactPath": ".crabpot/results/wecom/package-audit.json",
"reason": "capture package-manager dependency audit metadata as warning-only plugin upstream risk"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./index.js --output ../../results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.capture.json",
@ -270,6 +278,13 @@
"cwd": ".crabpot/workspaces/a2a-gateway",
"reason": "install runtime dependencies without mutating the pinned submodule"
},
{
"kind": "audit",
"command": "npm audit --json > ../../results/a2a-gateway/package-audit.json || true",
"cwd": ".crabpot/workspaces/a2a-gateway",
"artifactPath": ".crabpot/results/a2a-gateway/package-audit.json",
"reason": "capture package-manager dependency audit metadata as warning-only plugin upstream risk"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/a2a-gateway/cold-import-extension-a2a-gateway-plugins-a2a-gateway-index-ts.capture.json",
@ -350,6 +365,13 @@
"cwd": ".crabpot/workspaces/hasdata",
"reason": "install runtime dependencies without mutating the pinned submodule"
},
{
"kind": "audit",
"command": "npm audit --json > ../../results/hasdata/package-audit.json || true",
"cwd": ".crabpot/workspaces/hasdata",
"artifactPath": ".crabpot/results/hasdata/package-audit.json",
"reason": "capture package-manager dependency audit metadata as warning-only plugin upstream risk"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./src/index.ts --output ../../results/hasdata/cold-import-extension-hasdata-plugins-hasdata-src-index-ts.capture.json",
@ -417,6 +439,13 @@
"cwd": ".crabpot/workspaces/mcp-adapter",
"reason": "install runtime dependencies without mutating the pinned submodule"
},
{
"kind": "audit",
"command": "npm audit --json > ../../results/mcp-adapter/package-audit.json || true",
"cwd": ".crabpot/workspaces/mcp-adapter",
"artifactPath": ".crabpot/results/mcp-adapter/package-audit.json",
"reason": "capture package-manager dependency audit metadata as warning-only plugin upstream risk"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/mcp-adapter/cold-import-extension-mcp-adapter-plugins-mcp-adapter-index-ts.capture.json",
@ -496,6 +525,150 @@
}
]
},
{
"id": "opik-openclaw",
"entrypoints": [
{
"id": "cold-import.extension:opik-openclaw:plugins-opik-openclaw-index-ts",
"fixture": "opik-openclaw",
"packagePath": "plugins/opik-openclaw/package.json",
"packageName": "@opik/opik-openclaw",
"entrypoint": "plugins/opik-openclaw/index.ts",
"status": "ts-loader-required",
"packageManager": "npm",
"lockfile": "plugins/opik-openclaw/package-lock.json",
"requiredCapabilities": [
"capture-shim",
"dependency-install",
"synthetic-probes",
"target-openclaw-link",
"ts-loader"
],
"blockers": [
{
"code": "ts-loader-required",
"message": "entrypoint is TypeScript source and needs a loader or build step before Node cold import",
"evidence": "plugins/opik-openclaw/index.ts"
},
{
"code": "dependency-install-required",
"message": "package declares runtime dependencies that must be installed before cold import",
"evidence": "@clack/prompts, opik, zod, openclaw"
}
],
"steps": [
{
"kind": "prepare",
"command": "rsync -a --delete plugins/opik-openclaw/ .crabpot/workspaces/opik-openclaw/",
"cwd": ".",
"reason": "copy fixture package into an isolated mutable workspace"
},
{
"kind": "prepare-artifacts",
"command": "mkdir -p .crabpot/results/opik-openclaw",
"cwd": ".",
"reason": "create a stable result directory for capture and synthetic probe artifacts"
},
{
"kind": "link-openclaw",
"command": "npm pkg set dependencies.openclaw=\"file:../../../../openclaw\"",
"cwd": ".crabpot/workspaces/opik-openclaw",
"reason": "link the plugin's openclaw peer dependency to the target checkout under test"
},
{
"kind": "install",
"command": "npm install --ignore-scripts",
"cwd": ".crabpot/workspaces/opik-openclaw",
"reason": "install runtime dependencies without mutating the pinned submodule"
},
{
"kind": "audit",
"command": "npm audit --json > ../../results/opik-openclaw/package-audit.json || true",
"cwd": ".crabpot/workspaces/opik-openclaw",
"artifactPath": ".crabpot/results/opik-openclaw/package-audit.json",
"reason": "capture package-manager dependency audit metadata as warning-only plugin upstream risk"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/opik-openclaw/cold-import-extension-opik-openclaw-plugins-opik-openclaw-index-ts.capture.json",
"cwd": ".crabpot/workspaces/opik-openclaw",
"artifactPath": ".crabpot/results/opik-openclaw/cold-import-extension-opik-openclaw-plugins-opik-openclaw-index-ts.capture.json",
"reason": "cold import the entrypoint against the capture shim"
},
{
"kind": "synthetic-probe",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --output ../../results/opik-openclaw/cold-import-extension-opik-openclaw-plugins-opik-openclaw-index-ts.synthetic.json",
"cwd": ".crabpot/workspaces/opik-openclaw",
"artifactPath": ".crabpot/results/opik-openclaw/cold-import-extension-opik-openclaw-plugins-opik-openclaw-index-ts.synthetic.json",
"reason": "invoke retained hook and registration handlers with synthetic payloads"
}
]
},
{
"id": "cold-import.runtimeExtension:opik-openclaw:plugins-opik-openclaw-dist-index-js",
"fixture": "opik-openclaw",
"packagePath": "plugins/opik-openclaw/package.json",
"packageName": "@opik/opik-openclaw",
"entrypoint": "plugins/opik-openclaw/dist/index.js",
"status": "build-required",
"packageManager": "npm",
"lockfile": "plugins/opik-openclaw/package-lock.json",
"requiredCapabilities": [
"build",
"capture-shim",
"synthetic-probes",
"target-openclaw-link"
],
"blockers": [
{
"code": "build-required",
"message": "entrypoint points at build output that is absent in the fixture checkout",
"evidence": "plugins/opik-openclaw/dist/index.js"
}
],
"steps": [
{
"kind": "prepare",
"command": "rsync -a --delete plugins/opik-openclaw/ .crabpot/workspaces/opik-openclaw/",
"cwd": ".",
"reason": "copy fixture package into an isolated mutable workspace"
},
{
"kind": "prepare-artifacts",
"command": "mkdir -p .crabpot/results/opik-openclaw",
"cwd": ".",
"reason": "create a stable result directory for capture and synthetic probe artifacts"
},
{
"kind": "link-openclaw",
"command": "npm pkg set dependencies.openclaw=\"file:../../../../openclaw\"",
"cwd": ".crabpot/workspaces/opik-openclaw",
"reason": "link the plugin's openclaw peer dependency to the target checkout under test"
},
{
"kind": "build",
"command": "npm run build",
"cwd": ".crabpot/workspaces/opik-openclaw",
"reason": "produce missing OpenClaw build entrypoint"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/index.js --output ../../results/opik-openclaw/cold-import-runtimeExtension-opik-openclaw-plugins-opik-openclaw-dist-index-js.capture.json",
"cwd": ".crabpot/workspaces/opik-openclaw",
"artifactPath": ".crabpot/results/opik-openclaw/cold-import-runtimeExtension-opik-openclaw-plugins-opik-openclaw-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 --output ../../results/opik-openclaw/cold-import-runtimeExtension-opik-openclaw-plugins-opik-openclaw-dist-index-js.synthetic.json",
"cwd": ".crabpot/workspaces/opik-openclaw",
"artifactPath": ".crabpot/results/opik-openclaw/cold-import-runtimeExtension-opik-openclaw-plugins-opik-openclaw-dist-index-js.synthetic.json",
"reason": "invoke retained hook and registration handlers with synthetic payloads"
}
]
}
]
},
{
"id": "clawmetry",
"entrypoints": [
@ -545,6 +718,13 @@
"cwd": ".crabpot/workspaces/clawmetry",
"reason": "install runtime dependencies without mutating the pinned submodule"
},
{
"kind": "audit",
"command": "npm audit --json > ../../results/clawmetry/package-audit.json || true",
"cwd": ".crabpot/workspaces/clawmetry",
"artifactPath": ".crabpot/results/clawmetry/package-audit.json",
"reason": "capture package-manager dependency audit metadata as warning-only plugin upstream risk"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/clawmetry/cold-import-extension-clawmetry-plugins-clawmetry-clawhub-plugin-index-ts.capture.json",
@ -691,6 +871,13 @@
"cwd": ".crabpot/workspaces/codex-app-server",
"reason": "install runtime dependencies without mutating the pinned submodule"
},
{
"kind": "audit",
"command": "pnpm audit --json > ../../results/codex-app-server/package-audit.json || true",
"cwd": ".crabpot/workspaces/codex-app-server",
"artifactPath": ".crabpot/results/codex-app-server/package-audit.json",
"reason": "capture package-manager dependency audit metadata as warning-only plugin upstream risk"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/codex-app-server/cold-import-extension-codex-app-server-plugins-codex-app-server-index-ts.capture.json",
@ -771,6 +958,13 @@
"cwd": ".crabpot/workspaces/web-search-plus",
"reason": "install runtime dependencies without mutating the pinned submodule"
},
{
"kind": "audit",
"command": "npm audit --json > ../../results/web-search-plus/package-audit.json || true",
"cwd": ".crabpot/workspaces/web-search-plus",
"artifactPath": ".crabpot/results/web-search-plus/package-audit.json",
"reason": "capture package-manager dependency audit metadata as warning-only plugin upstream risk"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/web-search-plus/cold-import-extension-web-search-plus-plugins-web-search-plus-index-ts.capture.json",
@ -845,6 +1039,13 @@
"cwd": ".crabpot/workspaces/apify",
"reason": "install runtime dependencies without mutating the pinned submodule"
},
{
"kind": "audit",
"command": "npm audit --json > ../../results/apify/package-audit.json || true",
"cwd": ".crabpot/workspaces/apify",
"artifactPath": ".crabpot/results/apify/package-audit.json",
"reason": "capture package-manager dependency audit metadata as warning-only plugin upstream risk"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./src/index.ts --output ../../results/apify/cold-import-extension-apify-plugins-apify-src-index-ts.capture.json",
@ -919,6 +1120,13 @@
"cwd": ".crabpot/workspaces/inworld-tts",
"reason": "install runtime dependencies without mutating the pinned submodule"
},
{
"kind": "audit",
"command": "pnpm audit --json > ../../results/inworld-tts/package-audit.json || true",
"cwd": ".crabpot/workspaces/inworld-tts",
"artifactPath": ".crabpot/results/inworld-tts/package-audit.json",
"reason": "capture package-manager dependency audit metadata as warning-only plugin upstream risk"
},
{
"kind": "capture",
"command": "CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/inworld-tts/cold-import-extension-inworld-tts-plugins-inworld-tts-index-ts.capture.json",

View File

@ -8,31 +8,34 @@ Opt-in: CRABPOT_EXECUTE_ISOLATED=1
| Metric | Value |
| -------------------------- | ----- |
| Fixtures | 11 |
| Entrypoints | 13 |
| Artifact dirs | 13 |
| Install steps | 9 |
| Build steps | 3 |
| Capture steps | 13 |
| Synthetic probe steps | 13 |
| Target OpenClaw link steps | 8 |
| Fixtures | 12 |
| Entrypoints | 15 |
| Artifact dirs | 15 |
| Install steps | 10 |
| Audit steps | 10 |
| Build steps | 4 |
| Capture steps | 15 |
| Synthetic probe steps | 15 |
| Target OpenClaw link steps | 10 |
| Missing build scripts | 0 |
| SDK alias required | 1 |
## Entrypoint Workspaces
| Fixture | PM | Status | Entrypoint | Capabilities | Steps |
| ----------------- | ---- | --------------------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| agentchat | pnpm | build-required | plugins/agentchat/integrations/openclaw-channel/dist/index.js | build, capture-shim, synthetic-probes, target-openclaw-link | prepare: rsync -a --delete plugins/agentchat/integrations/openclaw-channel/ .crabpot/workspaces/agentchat/; prepare-artifacts: mkdir -p .crabpot/results/agentchat; link-openclaw: pnpm pkg set dependencies.openclaw="file:../../../../openclaw"; build: pnpm run build; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/index.js --output ../../results/agentchat/cold-import-extension-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-index-js.capture.json -> .crabpot/results/agentchat/cold-import-extension-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-index-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/index.js --output ../../results/agentchat/cold-import-extension-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-index-js.synthetic.json -> .crabpot/results/agentchat/cold-import-extension-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-index-js.synthetic.json |
| agentchat | pnpm | build-required | plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js | build, capture-shim, synthetic-probes, target-openclaw-link | prepare: rsync -a --delete plugins/agentchat/integrations/openclaw-channel/ .crabpot/workspaces/agentchat/; prepare-artifacts: mkdir -p .crabpot/results/agentchat; link-openclaw: pnpm pkg set dependencies.openclaw="file:../../../../openclaw"; build: pnpm run build; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/setup-entry.js --output ../../results/agentchat/cold-import-setupEntry-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-setup-entry-js.capture.json -> .crabpot/results/agentchat/cold-import-setupEntry-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-setup-entry-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/setup-entry.js --output ../../results/agentchat/cold-import-setupEntry-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-setup-entry-js.synthetic.json -> .crabpot/results/agentchat/cold-import-setupEntry-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-setup-entry-js.synthetic.json |
| wecom | npm | dependency-install-required | plugins/wecom/index.js | capture-shim, dependency-install, synthetic-probes, target-openclaw-link | prepare: rsync -a --delete plugins/wecom/ .crabpot/workspaces/wecom/; prepare-artifacts: mkdir -p .crabpot/results/wecom; link-openclaw: npm pkg set dependencies.openclaw="file:../../../../openclaw"; install: npm install --ignore-scripts; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./index.js --output ../../results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.capture.json -> .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./index.js --output ../../results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json -> .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json |
| a2a-gateway | npm | ts-loader-required | plugins/a2a-gateway/index.ts | capture-shim, dependency-install, synthetic-probes, ts-loader | prepare: rsync -a --delete plugins/a2a-gateway/ .crabpot/workspaces/a2a-gateway/; prepare-artifacts: mkdir -p .crabpot/results/a2a-gateway; install: npm install --ignore-scripts; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/a2a-gateway/cold-import-extension-a2a-gateway-plugins-a2a-gateway-index-ts.capture.json -> .crabpot/results/a2a-gateway/cold-import-extension-a2a-gateway-plugins-a2a-gateway-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --output ../../results/a2a-gateway/cold-import-extension-a2a-gateway-plugins-a2a-gateway-index-ts.synthetic.json -> .crabpot/results/a2a-gateway/cold-import-extension-a2a-gateway-plugins-a2a-gateway-index-ts.synthetic.json |
| hasdata | npm | ts-loader-required | plugins/hasdata/src/index.ts | capture-shim, dependency-install, side-effect-sandbox, synthetic-probes, target-openclaw-link, ts-loader | prepare: rsync -a --delete plugins/hasdata/ .crabpot/workspaces/hasdata/; prepare-artifacts: mkdir -p .crabpot/results/hasdata; link-openclaw: npm pkg set dependencies.openclaw="file:../../../../openclaw"; install: npm install --ignore-scripts; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./src/index.ts --output ../../results/hasdata/cold-import-extension-hasdata-plugins-hasdata-src-index-ts.capture.json -> .crabpot/results/hasdata/cold-import-extension-hasdata-plugins-hasdata-src-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./src/index.ts --output ../../results/hasdata/cold-import-extension-hasdata-plugins-hasdata-src-index-ts.synthetic.json -> .crabpot/results/hasdata/cold-import-extension-hasdata-plugins-hasdata-src-index-ts.synthetic.json |
| mcp-adapter | npm | ts-loader-required | plugins/mcp-adapter/index.ts | capture-shim, dependency-install, synthetic-probes, ts-loader | prepare: rsync -a --delete plugins/mcp-adapter/ .crabpot/workspaces/mcp-adapter/; prepare-artifacts: mkdir -p .crabpot/results/mcp-adapter; install: npm install --ignore-scripts; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/mcp-adapter/cold-import-extension-mcp-adapter-plugins-mcp-adapter-index-ts.capture.json -> .crabpot/results/mcp-adapter/cold-import-extension-mcp-adapter-plugins-mcp-adapter-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --output ../../results/mcp-adapter/cold-import-extension-mcp-adapter-plugins-mcp-adapter-index-ts.synthetic.json -> .crabpot/results/mcp-adapter/cold-import-extension-mcp-adapter-plugins-mcp-adapter-index-ts.synthetic.json |
| llm-trace-phoenix | npm | ts-loader-required | plugins/llm-trace-phoenix/index.ts | capture-shim, side-effect-sandbox, synthetic-probes, ts-loader | prepare: rsync -a --delete plugins/llm-trace-phoenix/ .crabpot/workspaces/llm-trace-phoenix/; prepare-artifacts: mkdir -p .crabpot/results/llm-trace-phoenix; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/llm-trace-phoenix/cold-import-extension-llm-trace-phoenix-plugins-llm-trace-phoenix-index-ts.capture.json -> .crabpot/results/llm-trace-phoenix/cold-import-extension-llm-trace-phoenix-plugins-llm-trace-phoenix-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --output ../../results/llm-trace-phoenix/cold-import-extension-llm-trace-phoenix-plugins-llm-trace-phoenix-index-ts.synthetic.json -> .crabpot/results/llm-trace-phoenix/cold-import-extension-llm-trace-phoenix-plugins-llm-trace-phoenix-index-ts.synthetic.json |
| clawmetry | npm | ts-loader-required | plugins/clawmetry/clawhub-plugin/index.ts | capture-shim, dependency-install, synthetic-probes, ts-loader | prepare: rsync -a --delete plugins/clawmetry/clawhub-plugin/ .crabpot/workspaces/clawmetry/; prepare-artifacts: mkdir -p .crabpot/results/clawmetry; install: npm install --ignore-scripts; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --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 --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 | build-required | plugins/clawmetry/clawhub-plugin/dist/index.js | build, capture-shim, synthetic-probes | prepare: 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 --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 --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 | plugins/codex-app-server/index.ts | capture-shim, dependency-install, sdk-alias-compat, synthetic-probes, target-openclaw-link, ts-loader | prepare: 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; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --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 --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 | plugins/web-search-plus/index.ts | capture-shim, dependency-install, side-effect-sandbox, synthetic-probes, target-openclaw-link, ts-loader | prepare: 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"; install: npm install --ignore-scripts; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --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 --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 | plugins/apify/src/index.ts | capture-shim, dependency-install, synthetic-probes, target-openclaw-link, ts-loader | prepare: 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; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./src/index.ts --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 --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 | plugins/inworld-tts/index.ts | capture-shim, dependency-install, synthetic-probes, target-openclaw-link, ts-loader | prepare: 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"; install: pnpm install --ignore-scripts; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --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 --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 |
| Fixture | PM | Status | Entrypoint | Capabilities | Steps |
| ----------------- | ---- | --------------------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| agentchat | pnpm | build-required | plugins/agentchat/integrations/openclaw-channel/dist/index.js | build, capture-shim, synthetic-probes, target-openclaw-link | prepare: rsync -a --delete plugins/agentchat/integrations/openclaw-channel/ .crabpot/workspaces/agentchat/; prepare-artifacts: mkdir -p .crabpot/results/agentchat; link-openclaw: pnpm pkg set dependencies.openclaw="file:../../../../openclaw"; build: pnpm run build; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/index.js --output ../../results/agentchat/cold-import-extension-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-index-js.capture.json -> .crabpot/results/agentchat/cold-import-extension-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-index-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/index.js --output ../../results/agentchat/cold-import-extension-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-index-js.synthetic.json -> .crabpot/results/agentchat/cold-import-extension-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-index-js.synthetic.json |
| agentchat | pnpm | build-required | plugins/agentchat/integrations/openclaw-channel/dist/setup-entry.js | build, capture-shim, synthetic-probes, target-openclaw-link | prepare: rsync -a --delete plugins/agentchat/integrations/openclaw-channel/ .crabpot/workspaces/agentchat/; prepare-artifacts: mkdir -p .crabpot/results/agentchat; link-openclaw: pnpm pkg set dependencies.openclaw="file:../../../../openclaw"; build: pnpm run build; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./dist/setup-entry.js --output ../../results/agentchat/cold-import-setupEntry-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-setup-entry-js.capture.json -> .crabpot/results/agentchat/cold-import-setupEntry-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-setup-entry-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/setup-entry.js --output ../../results/agentchat/cold-import-setupEntry-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-setup-entry-js.synthetic.json -> .crabpot/results/agentchat/cold-import-setupEntry-agentchat-plugins-agentchat-integrations-openclaw-channel-dist-setup-entry-js.synthetic.json |
| wecom | npm | dependency-install-required | plugins/wecom/index.js | capture-shim, dependency-install, synthetic-probes, target-openclaw-link | prepare: rsync -a --delete plugins/wecom/ .crabpot/workspaces/wecom/; prepare-artifacts: mkdir -p .crabpot/results/wecom; link-openclaw: npm pkg set dependencies.openclaw="file:../../../../openclaw"; install: npm install --ignore-scripts; audit: npm audit --json > ../../results/wecom/package-audit.json || true -> .crabpot/results/wecom/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/run-cold-import-capture.mjs ./index.js --output ../../results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.capture.json -> .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./index.js --output ../../results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json -> .crabpot/results/wecom/cold-import-extension-wecom-plugins-wecom-index-js.synthetic.json |
| a2a-gateway | npm | ts-loader-required | plugins/a2a-gateway/index.ts | capture-shim, dependency-install, synthetic-probes, ts-loader | prepare: rsync -a --delete plugins/a2a-gateway/ .crabpot/workspaces/a2a-gateway/; prepare-artifacts: mkdir -p .crabpot/results/a2a-gateway; install: npm install --ignore-scripts; audit: npm audit --json > ../../results/a2a-gateway/package-audit.json || true -> .crabpot/results/a2a-gateway/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/a2a-gateway/cold-import-extension-a2a-gateway-plugins-a2a-gateway-index-ts.capture.json -> .crabpot/results/a2a-gateway/cold-import-extension-a2a-gateway-plugins-a2a-gateway-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --output ../../results/a2a-gateway/cold-import-extension-a2a-gateway-plugins-a2a-gateway-index-ts.synthetic.json -> .crabpot/results/a2a-gateway/cold-import-extension-a2a-gateway-plugins-a2a-gateway-index-ts.synthetic.json |
| hasdata | npm | ts-loader-required | plugins/hasdata/src/index.ts | capture-shim, dependency-install, side-effect-sandbox, synthetic-probes, target-openclaw-link, ts-loader | prepare: rsync -a --delete plugins/hasdata/ .crabpot/workspaces/hasdata/; prepare-artifacts: mkdir -p .crabpot/results/hasdata; link-openclaw: npm pkg set dependencies.openclaw="file:../../../../openclaw"; install: npm install --ignore-scripts; audit: npm audit --json > ../../results/hasdata/package-audit.json || true -> .crabpot/results/hasdata/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./src/index.ts --output ../../results/hasdata/cold-import-extension-hasdata-plugins-hasdata-src-index-ts.capture.json -> .crabpot/results/hasdata/cold-import-extension-hasdata-plugins-hasdata-src-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./src/index.ts --output ../../results/hasdata/cold-import-extension-hasdata-plugins-hasdata-src-index-ts.synthetic.json -> .crabpot/results/hasdata/cold-import-extension-hasdata-plugins-hasdata-src-index-ts.synthetic.json |
| mcp-adapter | npm | ts-loader-required | plugins/mcp-adapter/index.ts | capture-shim, dependency-install, synthetic-probes, ts-loader | prepare: rsync -a --delete plugins/mcp-adapter/ .crabpot/workspaces/mcp-adapter/; prepare-artifacts: mkdir -p .crabpot/results/mcp-adapter; install: npm install --ignore-scripts; audit: npm audit --json > ../../results/mcp-adapter/package-audit.json || true -> .crabpot/results/mcp-adapter/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/mcp-adapter/cold-import-extension-mcp-adapter-plugins-mcp-adapter-index-ts.capture.json -> .crabpot/results/mcp-adapter/cold-import-extension-mcp-adapter-plugins-mcp-adapter-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --output ../../results/mcp-adapter/cold-import-extension-mcp-adapter-plugins-mcp-adapter-index-ts.synthetic.json -> .crabpot/results/mcp-adapter/cold-import-extension-mcp-adapter-plugins-mcp-adapter-index-ts.synthetic.json |
| llm-trace-phoenix | npm | ts-loader-required | plugins/llm-trace-phoenix/index.ts | capture-shim, side-effect-sandbox, synthetic-probes, ts-loader | prepare: rsync -a --delete plugins/llm-trace-phoenix/ .crabpot/workspaces/llm-trace-phoenix/; prepare-artifacts: mkdir -p .crabpot/results/llm-trace-phoenix; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/llm-trace-phoenix/cold-import-extension-llm-trace-phoenix-plugins-llm-trace-phoenix-index-ts.capture.json -> .crabpot/results/llm-trace-phoenix/cold-import-extension-llm-trace-phoenix-plugins-llm-trace-phoenix-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --output ../../results/llm-trace-phoenix/cold-import-extension-llm-trace-phoenix-plugins-llm-trace-phoenix-index-ts.synthetic.json -> .crabpot/results/llm-trace-phoenix/cold-import-extension-llm-trace-phoenix-plugins-llm-trace-phoenix-index-ts.synthetic.json |
| opik-openclaw | npm | ts-loader-required | plugins/opik-openclaw/index.ts | capture-shim, dependency-install, synthetic-probes, target-openclaw-link, ts-loader | prepare: rsync -a --delete plugins/opik-openclaw/ .crabpot/workspaces/opik-openclaw/; prepare-artifacts: mkdir -p .crabpot/results/opik-openclaw; link-openclaw: npm pkg set dependencies.openclaw="file:../../../../openclaw"; install: npm install --ignore-scripts; audit: npm audit --json > ../../results/opik-openclaw/package-audit.json || true -> .crabpot/results/opik-openclaw/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --output ../../results/opik-openclaw/cold-import-extension-opik-openclaw-plugins-opik-openclaw-index-ts.capture.json -> .crabpot/results/opik-openclaw/cold-import-extension-opik-openclaw-plugins-opik-openclaw-index-ts.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/synthetic-probes.mjs --entrypoint ./index.ts --output ../../results/opik-openclaw/cold-import-extension-opik-openclaw-plugins-opik-openclaw-index-ts.synthetic.json -> .crabpot/results/opik-openclaw/cold-import-extension-opik-openclaw-plugins-opik-openclaw-index-ts.synthetic.json |
| opik-openclaw | npm | build-required | plugins/opik-openclaw/dist/index.js | build, capture-shim, synthetic-probes, target-openclaw-link | prepare: rsync -a --delete plugins/opik-openclaw/ .crabpot/workspaces/opik-openclaw/; prepare-artifacts: mkdir -p .crabpot/results/opik-openclaw; 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.js --output ../../results/opik-openclaw/cold-import-runtimeExtension-opik-openclaw-plugins-opik-openclaw-dist-index-js.capture.json -> .crabpot/results/opik-openclaw/cold-import-runtimeExtension-opik-openclaw-plugins-opik-openclaw-dist-index-js.capture.json; synthetic-probe: CRABPOT_EXECUTE_ISOLATED=1 node ../../../scripts/synthetic-probes.mjs --entrypoint ./dist/index.js --output ../../results/opik-openclaw/cold-import-runtimeExtension-opik-openclaw-plugins-opik-openclaw-dist-index-js.synthetic.json -> .crabpot/results/opik-openclaw/cold-import-runtimeExtension-opik-openclaw-plugins-opik-openclaw-dist-index-js.synthetic.json |
| clawmetry | npm | ts-loader-required | plugins/clawmetry/clawhub-plugin/index.ts | capture-shim, dependency-install, synthetic-probes, ts-loader | prepare: 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 --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 --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 | build-required | plugins/clawmetry/clawhub-plugin/dist/index.js | build, capture-shim, synthetic-probes | prepare: 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 --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 --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 | plugins/codex-app-server/index.ts | capture-shim, dependency-install, sdk-alias-compat, synthetic-probes, target-openclaw-link, ts-loader | prepare: 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 --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 --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 | plugins/web-search-plus/index.ts | capture-shim, dependency-install, side-effect-sandbox, synthetic-probes, target-openclaw-link, ts-loader | prepare: 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"; install: npm install --ignore-scripts; audit: npm audit --json > ../../results/web-search-plus/package-audit.json || true -> .crabpot/results/web-search-plus/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --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 --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 | plugins/apify/src/index.ts | capture-shim, dependency-install, synthetic-probes, target-openclaw-link, ts-loader | prepare: 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 --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 --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 | plugins/inworld-tts/index.ts | capture-shim, dependency-install, synthetic-probes, target-openclaw-link, ts-loader | prepare: 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"; install: pnpm install --ignore-scripts; audit: pnpm audit --json > ../../results/inworld-tts/package-audit.json || true -> .crabpot/results/inworld-tts/package-audit.json; capture: CRABPOT_EXECUTE_ISOLATED=1 node --import tsx ../../../scripts/run-cold-import-capture.mjs ./index.ts --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 --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 |

View File

@ -27,7 +27,7 @@ async function main() {
console.log(JSON.stringify(plan, null, 2));
} else {
console.log(
`workspace plan: ${plan.summary.entrypointCount} entrypoints, ${plan.summary.installStepCount} installs, ${plan.summary.buildStepCount} builds, ${plan.summary.captureStepCount} captures, ${plan.summary.syntheticProbeStepCount} synthetic probes, ${plan.summary.artifactStepCount} artifact dirs`,
`workspace plan: ${plan.summary.entrypointCount} entrypoints, ${plan.summary.installStepCount} installs, ${plan.summary.auditStepCount} audits, ${plan.summary.buildStepCount} builds, ${plan.summary.captureStepCount} captures, ${plan.summary.syntheticProbeStepCount} synthetic probes, ${plan.summary.artifactStepCount} artifact dirs`,
);
}