{
  "checker": {
    "claims": [
      {
        "claim": "Status command reports DSH_HOME and the patch list",
        "command": "node bin/dsh-purge.js --status",
        "evidence": "DSH_HOME      <guest-path>\n  \u63d2\u4ef6\u6839 / root  \u63d2\u4ef6\u6839\u672a\u627e\u5230 / set DSH_BASE\n  shim \u76ee\u5f55      \u672a\u5b9a\u4f4d / not found\n  \u5907\u4efd / backup  \u65e0 / no\n  \u6ce8\u5165\u6587\u4ef6       <guest-path>\n  \u6ce8\u5165\u72b6\u6001       default\n\n  \u8865\u4e01 0/82 \u5df2\u6e05\u6d17, 0 \u5f85\u6e05\u6d17\n    \u00b7 [#1 ] WORKSPACE_CONTEXT_INTRO        \u63d0\u793a\u8bcd/Prompt \u2014 undefined\n    \u00b7 [#2 ] REPLACEMENT_WORKSPACE_CONTEXT_INTRO \u63d0\u793a\u8bcd/Prompt \u2014 undefined\n    \u00b7 [#3 ] SCOPE_INTRO                    \u63d0\u793a\u8bcd/Prompt \u2014 undefined\n    \u00b7 [#4 ] SYSTEM_PROMPT_PERSONA          \u63d0\u793a\u8bcd/Prompt \u2014 undefined\n    \u00b7 [#43] WEB_PRESET_IDENTITY_STRIP      \u63d0\u793a\u8bcd/Prompt \u2014 undefined\n    \u00b7 [#76] PRESET_UNRESTRICTED_IDENTITY_STRIP \u63d0\u793a\u8bcd/",
        "expected": "status output with DSH_HOME and patch count",
        "input": "--status",
        "kind": "claim",
        "outcome": "Real input produced the expected result: DSH_HOME",
        "returncode": 0,
        "source": "dsh-purge --status",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected (bin/dsh-purge.js, lib/*.js, scripts/*). No cron, --once, --now or scheduler in the CLI. The only setInterval (lib/index.js:816, 400ms) runs inside the plugin runtime injected into an installed DSH host and needs an official DSH install, which is absent in this guest. Not run.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected (bin/dsh-purge.js, lib/*.js, scripts/*). No cron, --once, --now or scheduler in the CLI. The only setInterval (lib/index.js:816, 400ms) runs inside the plugin runtime injected into an installed DSH host and needs an official DSH install, which is absent in this guest. Not run.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "node",
        "bin/dsh-purge.js",
        "--status"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "dsh-purge \u72b6\u6001 / Status\n  \u5bbf\u4e3b / surface web\n  DSH_HOME      <guest-path>\n  \u63d2\u4ef6\u6839 / root  \u63d2\u4ef6\u6839\u672a\u627e\u5230 / set DSH_BASE\n  shim \u76ee\u5f55      \u672a\u5b9a\u4f4d / not found\n  \u5907\u4efd / backup  \u65e0 / no\n  \u6ce8\u5165\u6587\u4ef6       <guest-path>\n  \u6ce8\u5165\u72b6\u6001       default\n\n  \u8865\u4e01 0/82 \u5df2\u6e05\u6d17, 0 \u5f85\u6e05\u6d17\n    \u00b7 [#1 ] WORKSPACE_CONTEXT_INTRO        \u63d0\u793a\u8bcd/Prompt \u2014 undefined\n    \u00b7 [#2 ] REPLACEMENT_WORKSPACE_CONTEXT_INTRO \u63d0\u793a\u8bcd/Prompt \u2014 undefined\n[excerpt truncated]",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Read-only status check of the plugin against a DSH home",
        "command": "node bin/dsh-purge.js --status",
        "deferred": false,
        "evidence": "mpt \u2014 undefined\n    \u00b7 [#64] HOOKS_STOP_STEER_NEUTRAL       \u5de5\u5177/Tools \u2014 undefined\n    \u00b7 [#65] HOOKS_PRESTEP_REJECT_NEUTRAL   \u5de5\u5177/Tools \u2014 undefined\n    \u00b7 [#78] OVERLAY_RESTORE_FROM_BAK       \u4ee3\u7801/Code \u2014 undefined\n    \u00b7 [#82] DESKTOP_SHELL_PROFILE_FALLBACK \u4ee3\u7801/Code \u2014 undefined\n    \u00b7 [#85] SESSION_PROMPT_ALWAYS_FOLLOWUP \u4ee3\u7801/Code \u2014 undefined\n    \u00b7 [#86] SESSION_STEER_ALWAYS_FOLLOWUP  \u4ee3\u7801/Code \u2014 undefined\n    \u00b7 [#87] HUNG_PROMPT_LF_NEEDLE          \u4ee3\u7801/Code \u2014 undefined\n    \u00b7 [#88] HUNG_PROMPT_STRICT_NEEDLE      \u4ee3\u7801/Code \u2014 undefined\n\n  shim: dsh.cmd=missing  dsh.ps1=missing  dsh=missing\n\n\u9ed8\u8ba4\u4e0d\u6e05\u6d17\uff0c\u4f7f\u7528 --apply \u5e94\u7528\u6e05\u6d17\u3002",
        "expected": "prints status and patch list without applying anything",
        "input": "--status",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Usage",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "npm registry returned 404 for dsh-purge@1.1.71, so the checkout's bin/dsh-purge.js was run directly instead of the installed dsh-purge command",
    "dsh launcher not on PATH; README install step 'dsh plugin --profile web add dsh-purge' not run",
    "Did not run --apply, --revert, --uninstall, Drill or /purge commands. --apply writes safety, approval and sandbox bypass patches into the DSH harness, and no DSH install was present to receive them. Nothing was modified on disk.",
    "Browser CDP endpoint checked: GET $CDP_URL/json/version returned HTTP 200 (Chrome/155.0.8059.84). Not needed for this CLI operation."
  ],
  "fault_owner": "prerequisite",
  "main_blocker": null,
  "operation": "Install dsh-purge into the official DeepSeek Harness and Apply the Clean patches",
  "operation_scope": "Requires the official dsh launcher (dsh plugin --profile web|desktop add dsh-purge) and an installed DSH home. Neither exists in this guest. Only the read-only --status check was run.",
  "outcome": "working",
  "plain_failure": "The plugin cannot be installed or applied here because the DeepSeek Harness app it patches is not present. Only the status check ran.",
  "steps": [
    "node --version (v22.23.4) and npm --version (10.9.9) present",
    "which dsh: not found",
    "npm install dsh-purge@1.1.71: 404 not in registry",
    "node bin/dsh-purge.js --status: ran, exit 0, DSH_HOME <guest-path>, 0/82 patches cleaned, no plugin root, shim missing"
  ],
  "stuck_step": "Install dsh launcher / dsh plugin add (README Install section)",
  "suggested_fix": "Install the official DSH in the guest and make the dsh launcher available, or provide a registry mirror that has dsh-purge. Then run the README Install commands and the --status check. Consider a reviewed decision before running Apply, since it patches the harness's safety policies."
}
