{
  "schema": "dsh.plugin.report.v1",
  "reportId": "npm:@wxg-prc-cpg/browser-skill-dsh-plugin@0.3.2",
  "generatedAt": "2026-10-03T16:51:03.913Z",
  "verifier": {
    "name": "dsh-verified",
    "version": "0.1.0",
    "commit": "b737da1e4edd069bd6d914820d1fee86faf27e83"
  },
  "subject": {
    "spec": "@wxg-prc-cpg/browser-skill-dsh-plugin@0.3.2",
    "name": "@wxg-prc-cpg/browser-skill-dsh-plugin",
    "version": "0.3.2",
    "registry": "https://registry.npmjs.org",
    "tarball": "https://registry.npmjs.org/@wxg-prc-cpg/browser-skill-dsh-plugin/-/browser-skill-dsh-plugin-0.3.2.tgz",
    "integrity": "sha512-Z8m5KmNzCqc83M99q6pSPUwzFYr+RI4F1pQNCHp56rL/97Ogz7Z/YcWGEwYlvfSMWePjcib8aUQNpSVInW35AA==",
    "shasum": "905bd54cf1d90099f6c9f137a992cd88424fb20f",
    "repository": "git+https://github.com/Tencent/BrowserSkill.git",
    "license": "MIT",
    "publishedAt": "2026-09-30T04:23:21.178Z",
    "dshBundlePatch": "./cordis.patch.yml"
  },
  "runtime": {
    "dshVersion": "0.2.0-rc.2",
    "nodeVersion": "v24.21.0",
    "os": "linux 6.17.0-1022-azure",
    "arch": "x64"
  },
  "container": {
    "image": "none",
    "imageDigest": null,
    "notes": "executed in a one-off container; the subject was installed, booted and removed there"
  },
  "verdict": "partial",
  "dimensions": {
    "L0_qualification": {
      "id": "L0",
      "status": "pass",
      "summary": "declares dsh.bundle.patch and every declared patch path exists (13 files, 441760 bytes unpacked)",
      "metrics": {
        "fileCount": 13,
        "unpackedBytes": 441760,
        "patchPaths": [
          "./cordis.patch.yml"
        ],
        "declaredEnginesDsh": null,
        "shipsSource": false
      },
      "evidenceRefs": [
        "e-resolve",
        "e-tarball",
        "e-l0"
      ],
      "notes": [
        "dsh.manifestVersion is not declared; the reader does not infer a default",
        "tarball ships no src/ paths, so capability findings are limited to build output"
      ]
    },
    "L1_install": {
      "id": "L1",
      "status": "pass",
      "summary": "installed",
      "metrics": {
        "durationMs": 1907,
        "exitCode": 0,
        "declaredPeers": null,
        "bundlesAfterInstall": [
          "@deepseek-ai/dsh-base",
          "@wxg-prc-cpg/browser-skill-dsh-plugin"
        ],
        "pendingBuildScripts": [],
        "buildScriptsApproved": 0,
        "diagnosticsLog": null
      },
      "evidenceRefs": [
        "e-l1-install"
      ],
      "notes": [
        "the CLI completed the install with exit code 0",
        "no dependency build script was approved by the verifier; approval permits commands with the host user permissions"
      ]
    },
    "L2_load": {
      "id": "L2",
      "status": "fail",
      "summary": "the composition reported a failure",
      "metrics": {
        "bootBoundMs": 25000,
        "durationMs": 25068,
        "signal": null
      },
      "evidenceRefs": [
        "e-l2-boot"
      ],
      "notes": [
        "1 failure-shaped diagnostic line(s); the composition names what it could not load",
        "the fiber phase is not read directly: an early exit with diagnostics is the load-failure signal, and a boot that settles and waits is the success signal"
      ]
    },
    "L3_run": {
      "id": "L3",
      "status": "pass",
      "summary": "a session completed with no credential",
      "metrics": {
        "replayAdapter": "@deepseek-ai/dsh-llm-replay@0.2.0-rc.2",
        "probeTask": "reply with any text",
        "events": {
          "session": "session-09510b07-9fa8-47bf-a8b1-74692b45a530",
          "turnEndReason": {
            "kind": "completed"
          },
          "finalText": "Replay fixture: no provider was called.",
          "textEventCount": 1,
          "error": null,
          "exitCode": 0,
          "durationMs": 1270,
          "eventCount": 7
        }
      },
      "evidenceRefs": [
        "e-l3-session"
      ],
      "notes": [
        "the model call was served by the official replay adapter from a fixture authored in this repository; no provider was contacted and no credential was present",
        "probe task, stated verbatim: \"reply with any text\""
      ]
    },
    "L4_capability": {
      "id": "L4",
      "status": "pass",
      "summary": "2 capability signal(s) present across 3 scanned file(s)",
      "metrics": {
        "scannedFiles": 3,
        "scannedBytes": 405568,
        "skippedFiles": 0
      },
      "evidenceRefs": [
        "e-l4",
        "e-patch"
      ],
      "notes": [
        "the package ships build output; code inside a bundle cannot be reliably attributed to the author or to an inlined dependency",
        "static analysis cannot see dynamically constructed code or prove intent"
      ]
    },
    "L5_overhead": {
      "id": "L5",
      "status": "pass",
      "summary": "no significant delta across 6 sampled run(s)",
      "metrics": {
        "samples": 6,
        "baseline": {
          "atMs": 8041,
          "rss": 199516160,
          "heapUsed": 68350544,
          "external": 5188103,
          "activeTotal": 10,
          "watchers": 7,
          "timers": 0,
          "libuvHandles": 22,
          "libuvActiveHandles": 17,
          "fds": 20
        },
        "activated": {
          "atMs": 8039,
          "rss": 200278016,
          "heapUsed": 70829032,
          "external": 5189831,
          "activeTotal": 11,
          "watchers": 8,
          "timers": 0,
          "libuvHandles": 23,
          "libuvActiveHandles": 19,
          "fds": 20
        },
        "delta": {
          "atMs": -2,
          "rss": 761856,
          "heapUsed": 2478488,
          "external": 1728,
          "activeTotal": 1,
          "watchers": 1,
          "timers": 0,
          "libuvHandles": 1,
          "libuvActiveHandles": 2,
          "fds": 0
        }
      },
      "evidenceRefs": [
        "e-l5-overhead"
      ],
      "notes": [
        "no metric moved beyond the significance thresholds; that is the finding",
        "differential attribution: baseline profile first, then the subject activated, same container and order",
        "thresholds are coarse on purpose — order-of-magnitude watcher changes, RSS growth beyond 100 MiB, steady state more than 2 s later"
      ]
    },
    "L6_uninstall": {
      "id": "L6",
      "status": "pass",
      "summary": "removed without residue",
      "metrics": {
        "residue": [],
        "durationMs": 261
      },
      "evidenceRefs": [
        "e-l6-remove"
      ],
      "notes": [
        "the profile retains no bundle selection, dependency entry or files for the subject"
      ]
    }
  },
  "capabilities": [
    {
      "id": "network_egress",
      "present": true,
      "confidence": "low",
      "attribution": "build-output",
      "notes": "can make outbound network requests",
      "evidence": [
        {
          "file": "package/lib/client.cjs",
          "line": 5192,
          "snippet": "const res = await fetch(`/bsk-observation/thumbnail/${encodeURIComponent(attachmentId)}`);"
        }
      ]
    },
    {
      "id": "spawns_process",
      "present": true,
      "confidence": "medium",
      "attribution": "unknown",
      "notes": "spawns or would spawn an operating-system process",
      "evidence": [
        {
          "file": "package/lib/index.d.mts",
          "line": 3,
          "snippet": "import { ChildProcess, SpawnOptionsWithoutStdio } from \"node:child_process\";"
        },
        {
          "file": "package/lib/index.mjs",
          "line": 7,
          "snippet": "import { spawn } from \"node:child_process\";"
        }
      ]
    },
    {
      "id": "eval_or_dynamic_code",
      "present": false,
      "confidence": "medium",
      "attribution": "unknown",
      "notes": "eval or synthesised code; common and often benign, and frequently bundler output",
      "evidence": []
    },
    {
      "id": "hooks_api_gate",
      "present": false,
      "confidence": "medium",
      "attribution": "unknown",
      "notes": "hooks the API/LLM path, so it can observe or alter provider traffic",
      "evidence": []
    },
    {
      "id": "hooks_system_prompt",
      "present": false,
      "confidence": "medium",
      "attribution": "unknown",
      "notes": "hooks system-prompt assembly, so it can influence what the model is told",
      "evidence": []
    },
    {
      "id": "listens_on_port",
      "present": false,
      "confidence": "high",
      "attribution": "unknown",
      "notes": "opens a listening socket",
      "evidence": []
    },
    {
      "id": "reads_secret_env",
      "present": false,
      "confidence": "high",
      "attribution": "unknown",
      "notes": "reads an environment variable whose name looks credential-shaped",
      "evidence": []
    },
    {
      "id": "runtime_patch",
      "present": false,
      "confidence": "medium",
      "attribution": "unknown",
      "notes": "patches runtime objects rather than only registering its own services",
      "evidence": []
    },
    {
      "id": "watches_filesystem",
      "present": false,
      "confidence": "high",
      "attribution": "unknown",
      "notes": "watches the filesystem; a recursive workspace watch is the documented cause of host stalls",
      "evidence": []
    },
    {
      "id": "writes_outside_workspace",
      "present": false,
      "confidence": "low",
      "attribution": "unknown",
      "notes": "resolves a path outside the workspace (e.g. os.homedir(), DSH_HOME), which is normal for DSH profile handling; static analysis cannot determine whether it also writes there",
      "evidence": []
    }
  ],
  "evidence": [
    {
      "id": "e-resolve",
      "kind": "command",
      "command": "resolve @wxg-prc-cpg/browser-skill-dsh-plugin@0.3.2 -> @wxg-prc-cpg/browser-skill-dsh-plugin@0.3.2",
      "exitCode": 0,
      "durationMs": 263,
      "excerpt": "{\n  \"name\": \"@wxg-prc-cpg/browser-skill-dsh-plugin\",\n  \"version\": \"0.3.2\",\n  \"registry\": \"https://registry.npmjs.org\",\n  \"tarball\": \"https://registry.npmjs.org/@wxg-prc-cpg/browser-skill-dsh-plugin/-/browser-skill-dsh-plugin-0.3.2.tgz\",\n  \"advertisedIntegrity\": \"sha512-Z8m5KmNzCqc83M99q6pSPUwzFYr+RI4F1pQNCHp56rL/97Ogz7Z/YcWGEwYlvfSMWePjcib8aUQNpSVInW35AA==\",\n  \"publishedAt\": \"2026-09-30T04:23:21.178Z\"\n}"
    },
    {
      "id": "e-tarball",
      "kind": "artifact",
      "command": "fetch https://registry.npmjs.org/@wxg-prc-cpg/browser-skill-dsh-plugin/-/browser-skill-dsh-plugin-0.3.2.tgz",
      "exitCode": 0,
      "durationMs": 62,
      "excerpt": "{\n  \"bytes\": 107246,\n  \"resolvedIntegrity\": \"sha512-Z8m5KmNzCqc83M99q6pSPUwzFYr+RI4F1pQNCHp56rL/97Ogz7Z/YcWGEwYlvfSMWePjcib8aUQNpSVInW35AA==\",\n  \"advertisedIntegrity\": \"sha512-Z8m5KmNzCqc83M99q6pSPUwzFYr+RI4F1pQNCHp56rL/97Ogz7Z/YcWGEwYlvfSMWePjcib8aUQNpSVInW35AA==\",\n  \"integrityMatchesRegistry\": true,\n  \"sha256\": \"3d466b7ad76a981930a2934a1f0d49e8c7e7317ef86c58831ca9aea45df9420d\"\n}",
      "excerptBytes": 383,
      "sha256": "3d466b7ad76a981930a2934a1f0d49e8c7e7317ef86c58831ca9aea45df9420d"
    },
    {
      "id": "e-l0",
      "kind": "static",
      "command": "read published package.json and verify declared dsh.bundle.patch paths exist",
      "excerpt": "{\n  \"status\": \"pass\",\n  \"reasons\": [],\n  \"declared\": {\n    \"manifestVersion\": null,\n    \"bundlePatch\": [\n      \"./cordis.patch.yml\"\n    ],\n    \"clientPlatform\": \"web\",\n    \"enginesDsh\": null,\n    \"enginesNode\": null\n  },\n  \"missingPatchPaths\": [],\n  \"fileCount\": 13,\n  \"unpackedBytes\": 441760,\n  \"shipsSource\": false\n}",
      "excerptBytes": 318
    },
    {
      "id": "e-patch",
      "kind": "static",
      "command": "read cordis.patch.yml",
      "excerpt": "- insert:\n    - id: browserskill\n      # Must be the published package name — the loader imports this specifier.\n      # Quoted because YAML reserves a leading '@' in plain scalars.\n      name: \"@wxg-prc-cpg/browser-skill-dsh-plugin\"\n",
      "excerptBytes": 236,
      "sha256": "db6134cede550afdadc2e3e026eaee8ea506058d546f2c863906f2a51c1a706a"
    },
    {
      "id": "e-l4",
      "kind": "static",
      "command": "scan 3 shipped source file(s) for capability signatures",
      "excerpt": "{\n  \"present\": [\n    {\n      \"id\": \"network_egress\",\n      \"confidence\": \"low\",\n      \"attribution\": \"build-output\",\n      \"firstEvidence\": {\n        \"file\": \"package/lib/client.cjs\",\n        \"line\": 5192,\n        \"snippet\": \"const res = await fetch(`/bsk-observation/thumbnail/${encodeURIComponent(attachmentId)}`);\"\n      }\n    },\n    {\n      \"id\": \"spawns_process\",\n      \"confidence\": \"medium\",\n      \"attribution\": \"unknown\",\n      \"firstEvidence\": {\n        \"file\": \"package/lib/index.d.mts\",\n        \"line\": 3,\n        \"snippet\": \"import { ChildProcess, SpawnOptionsWithoutStdio } from \\\"node:child_process\\\";\"\n      }\n    }\n  ],\n  \"scannedFiles\": 3,\n  \"skippedFiles\": 0,\n  \"limits\": [\n    \"the package ships build output; code inside a bundle cannot be reliably attributed to the author or to an inlined dependency\",\n    \"static analysis cannot see dynamically constructed code or prove intent\"\n  ]\n}",
      "excerptBytes": 908
    },
    {
      "id": "e-l1-install",
      "kind": "command",
      "command": "dsh plugin --profile verify add @wxg-prc-cpg/browser-skill-dsh-plugin@0.3.2",
      "exitCode": 0,
      "durationMs": 1907,
      "excerpt": "Progress: resolved 1, reused 0, downloaded 0, added 0\nPackages are hard linked from the content-addressable store to the virtual store.\n  Content-addressable store is at: /home/verifier/.local/share/pnpm/store/v11\n  Virtual store is at:             node_modules/.pnpm\nPackages: +1\n+\nProgress: resolved 1, reused 0, downloaded 1, added 1, done\n[WARN] Issues with peer dependencies found. Run \"pnpm peers check\" to list them.\n\ndependencies:\n+ @wxg-prc-cpg/browser-skill-dsh-plugin 0.3.2\n\nDone in 212ms using pnpm v12.8.1\ndsh: initialized profile verify at /work/dsh-home/profiles/verify\n",
      "excerptBytes": 585,
      "truncated": false,
      "sha256": "976df0fd9f6892f01e10ca1ce4a124a6ce7c417d54727323c8b9d281f9375b6a"
    },
    {
      "id": "e-l2-boot",
      "kind": "command",
      "command": "dsh --profile verify",
      "exitCode": 0,
      "durationMs": 25068,
      "excerpt": "[@wxg-prc-cpg/browser-skill-dsh-plugin] bsk probe failed (spawn bsk ENOENT); browser tools will report install guidance until the bsk CLI is available\n",
      "excerptBytes": 151,
      "truncated": false,
      "sha256": "4aefc86fdc5eae50d1973fee921b7b2fa45f53b5409a3aba67580b0d3bb7692b"
    },
    {
      "id": "e-l6-remove",
      "kind": "command",
      "command": "dsh plugin --profile verify remove @wxg-prc-cpg/browser-skill-dsh-plugin",
      "exitCode": 0,
      "durationMs": 261,
      "excerpt": "Packages: -1\n-\n\ndependencies:\n- @wxg-prc-cpg/browser-skill-dsh-plugin 0.3.2\n\nDone in 10ms using pnpm v12.8.1\n",
      "excerptBytes": 109,
      "truncated": false,
      "sha256": "963954cc30610aaabdbbcf7d980067045e558767b747d577928c58062289f514"
    },
    {
      "id": "e-l5-overhead",
      "kind": "sample",
      "command": "dsh --profile <baseline|activated> with the host sampler injected via NODE_OPTIONS=--import",
      "excerpt": "{\n  \"method\": \"differential\",\n  \"status\": \"no-significant-delta\",\n  \"samples\": 6,\n  \"baselineMedian\": {\n    \"atMs\": 8041,\n    \"rss\": 199516160,\n    \"heapUsed\": 68350544,\n    \"external\": 5188103,\n    \"activeTotal\": 10,\n    \"watchers\": 7,\n    \"timers\": 0,\n    \"libuvHandles\": 22,\n    \"libuvActiveHandles\": 17,\n    \"fds\": 20\n  },\n  \"activatedMedian\": {\n    \"atMs\": 8039,\n    \"rss\": 200278016,\n    \"heapUsed\": 70829032,\n    \"external\": 5189831,\n    \"activeTotal\": 11,\n    \"watchers\": 8,\n    \"timers\": 0,\n    \"libuvHandles\": 23,\n    \"libuvActiveHandles\": 19,\n    \"fds\": 20\n  },\n  \"delta\": {\n    \"atMs\": -2,\n    \"rss\": 761856,\n    \"heapUsed\": 2478488,\n    \"external\": 1728,\n    \"activeTotal\": 1,\n    \"watchers\": 1,\n    \"timers\": 0,\n    \"libuvHandles\": 1,\n    \"libuvActiveHandles\": 2,\n    \"fds\": 0\n  },\n  \"significant\": []\n}"
    },
    {
      "id": "e-l3-session",
      "kind": "command",
      "command": "dsh --profile l3 --patch /work/fixtures/replay/l3-overlay.yml --json reply with any text",
      "exitCode": 0,
      "durationMs": 1270,
      "excerpt": "{\"type\":\"session\",\"sessionId\":\"session-09510b07-9fa8-47bf-a8b1-74692b45a530\",\"cwd\":\"/work\"}\n{\"type\":\"status\",\"phase\":\"turn_start\",\"turn\":1}\n{\"type\":\"status\",\"phase\":\"step_start\",\"turn\":1,\"step\":1}\n{\"type\":\"text\",\"text\":\"Replay fixture: no provider was called.\"}\n{\"type\":\"status\",\"phase\":\"step_end\",\"turn\":1,\"step\":1}\n{\"type\":\"status\",\"phase\":\"turn_end\",\"turn\":1,\"reason\":{\"kind\":\"completed\"}}\n{\"type\":\"final\",\"text\":\"Replay fixture: no provider was called.\"}\n[@wxg-prc-cpg/browser-skill-dsh-plugin] bsk probe failed (spawn bsk ENOENT); browser tools will report install guidance until the bsk CLI is available\n",
      "excerptBytes": 610,
      "truncated": false,
      "sha256": "2451871312193f111919e325ac5af400a142a7bd384041525c1a9bf86ed7f5f5"
    }
  ],
  "redactions": [],
  "disclaimers": [
    "Verification is not a security audit and not an endorsement. It records what was executed and observed on one machine at one time. Absence of a finding is not a finding of absence."
  ],
  "limits": [
    "the artifact ships no source paths, so capability findings describe build output only; code-level attribution between the author and inlined dependencies is not resolvable from this artifact",
    "the package ships build output; code inside a bundle cannot be reliably attributed to the author or to an inlined dependency",
    "static analysis cannot see dynamically constructed code or prove intent",
    "L3 ran against a replayed transcript from a fixture authored by the verifier, not against a provider: it establishes that a session completes without a credential, not that the plugin behaves correctly against a live model",
    "the load result is inferred from exit behaviour and diagnostics rather than a directly read fiber phase",
    "no dependency build script was approved by this executor",
    "overhead is reported only where a delta cleared the significance thresholds; otherwise the result is no-significant-delta",
    "sampling happens inside the host process via NODE_OPTIONS=--import, so process.getActiveResourcesInfo() and process.report.getReport() describe the process under test"
  ],
  "bundlePatch": {
    "path": "cordis.patch.yml",
    "present": true,
    "bytes": 236,
    "entryCount": 2,
    "disablesHostEntries": false,
    "overridesConfig": false,
    "usesJsExpressions": false,
    "findings": [
      {
        "kind": "inserts-entry",
        "line": 1,
        "snippet": "- insert:"
      },
      {
        "kind": "inserts-entry",
        "line": 2,
        "snippet": "- id: browserskill"
      }
    ],
    "notes": [
      "textual analysis: a line number is provided for review, not a YAML object model"
    ]
  },
  "overhead": {
    "method": "differential",
    "status": "no-significant-delta",
    "samples": 6,
    "baseline": {
      "atMs": 8041,
      "rss": 199516160,
      "heapUsed": 68350544,
      "external": 5188103,
      "activeTotal": 10,
      "watchers": 7,
      "timers": 0,
      "libuvHandles": 22,
      "libuvActiveHandles": 17,
      "fds": 20
    },
    "activated": {
      "atMs": 8039,
      "rss": 200278016,
      "heapUsed": 70829032,
      "external": 5189831,
      "activeTotal": 11,
      "watchers": 8,
      "timers": 0,
      "libuvHandles": 23,
      "libuvActiveHandles": 19,
      "fds": 20
    },
    "delta": {
      "atMs": -2,
      "rss": 761856,
      "heapUsed": 2478488,
      "external": 1728,
      "activeTotal": 1,
      "watchers": 1,
      "timers": 0,
      "libuvHandles": 1,
      "libuvActiveHandles": 2,
      "fds": 0
    },
    "significant": [],
    "resourceKinds": {
      "baseline": {
        "PipeWrap": 3,
        "FSEventWrap": 7,
        "async": 3,
        "timer": 2,
        "check": 2,
        "idle": 1,
        "prepare": 1,
        "pipe": 3,
        "signal": 2,
        "fs_event": 7,
        "loop": 1
      },
      "activated": {
        "PipeWrap": 3,
        "FSEventWrap": 8,
        "async": 3,
        "timer": 2,
        "check": 2,
        "idle": 1,
        "prepare": 1,
        "pipe": 3,
        "signal": 2,
        "fs_event": 8,
        "loop": 1
      }
    }
  }
}
