{
  "run_id": "hashgraph-online--hol-guard-claude-haiku-5-5-1792883075126268563",
  "checker": {
    "claims": [
      {
        "claim": "command test inspects a command without executing it or creating an approval",
        "command": "/tmp/pipx/bin/hol-guard command test 'rm -rf ./build'",
        "evidence": "command.filesystem.recursive-delete                             \u2502\n\u2502 Risk classes destructive_shell                                               \u2502\n\u2502 Policy       Not evaluated; this inspection creates no approvals or receipts \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Command \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 rm -rf ./build                                                               \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Why \u2500\u2500\u2500\u2500\u2500\u2500",
        "expected": "REVIEW verdict classified as recursive-delete, no approval created",
        "input": "rm -rf ./build",
        "kind": "claim",
        "outcome": "Real input produced the expected result: command.filesystem.recursive-delete",
        "returncode": 0,
        "source": "README.md",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "plugin-scanner detects Claude Code package formats",
        "command": "/tmp/pipx/bin/plugin-scanner scan tests/fixtures/claude-plugin-good",
        "evidence": "Ecosystems: claude\nDetected packages: 1\n\n\u2500\u2500 Claude Plugin (18/18) \u2500\u2500\n  \u2705 Claude manifest exists                     +4\n\n  \u2705 Claude required fields and semver          +5\n\n  \u2705 Claude marketplace structure               +0\n\n  \u2705 Claude custom paths are relative           +4\n\n  \u2705 Claude hooks and skills are parseable      +5\n\n\u2500\u2500 Security (16/16) \u2500\u2500\n  \u2705 SECURITY.md found                          +3\n\n  \u2705 LICENSE found                              +3\n\n  \u2705 No hardcoded secrets                       +7\n\n  \u2705 Runtime credential access                  +0\n\n  \u2705 No dangerous MCP commands                  +0",
        "expected": "Claude ecosystem detected and scanned",
        "input": "tests/fixtures/claude-plugin-good",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Ecosystems: claude",
        "returncode": 0,
        "source": "README.md",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: README.md has no cron, schedule, loop, webhook, --once or --now wording; plugin-scanner and hol-guard CLIs are one-shot commands. src/ contains a guard daemon and internal while-loops, but no documented recurring product cycle. Guard runs on demand per README (hol-guard run/command test).",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: README.md has no cron, schedule, loop, webhook, --once or --now wording; plugin-scanner and hol-guard CLIs are one-shot commands. src/ contains a guard daemon and internal while-loops, but no documented recurring product cycle. Guard runs on demand per README (hol-guard run/command test).",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "/tmp/pipx/bin/hol-guard",
        "command",
        "test",
        "rm -rf ./build"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 HOL Guard command inspection \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 Result       REVIEW                                                          \u2502\n\u2502 Action class filesystem destructive command                                  \u2502\n\u2502 Extension    command.filesystem                                              \u2502\n\u2502 Rule         command.filesystem.recursive-delete                             \u2502\n\u2502 Risk classes destructive_shell                                               \u2502\n\u2502 Policy       Not evaluated; this inspection creates no approvals or receipts \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Command \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 rm -rf ./build                                                               \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Why \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n[excerpt truncated]",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "plugin-scanner scans a Claude Code plugin and reports a score",
        "command": "/tmp/pipx/bin/plugin-scanner scan tests/fixtures/claude-plugin-good",
        "deferred": false,
        "evidence": "nal Security (0/0) \u2500\u2500\n  \u2705 Third-party GitHub Actions pinned to SHAs  +0\n\n  \u2705 No write-all GitHub Actions permissions    +0\n\n  \u2705 No privileged untrusted checkout patterns  +0\n\n  \u2705 Dependabot configured for automation surfaces +0\n\n  \u2705 Dependency manifests have lockfiles        +0\n\n\u2500\u2500 Code Quality (10/10) \u2500\u2500\n  \u2705 No eval or Function constructor            +5\n\n  \u2705 No shell injection patterns                +5\n\nFindings: critical:0, high:0, medium:0, low:0, info:0\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nFinal Score: 100/100 (A - Excellent)\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nPolicy profile: default",
        "expected": "Claude ecosystem scanned with 100/100 score",
        "input": "tests/fixtures/claude-plugin-good",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "plugin-scanner writes a JSON report to --output",
        "command": "/tmp/pipx/bin/plugin-scanner scan tests/fixtures/claude-plugin-good --format json --output .coldpass/scan-example/report.json-checker-14461792bd82443099b38d0d37883a08",
        "deferred": false,
        "evidence": "l or Function constructor\",\n          \"passed\": true,\n          \"points\": 5,\n          \"maxPoints\": 5,\n          \"message\": \"No eval() or new Function() usage detected\",\n          \"findings\": []\n        },\n        {\n          \"name\": \"No shell injection patterns\",\n          \"passed\": true,\n          \"points\": 5,\n          \"maxPoints\": 5,\n          \"message\": \"No shell injection patterns detected\",\n          \"findings\": []\n        }\n      ]\n    }\n  ],\n  \"findings\": [],\n  \"timestamp\": \"2026-10-24T23:16:28.219748+00:00\",\n  \"pluginDir\": \"<guest-path>\"\n}",
        "expected": "JSON file with scan-result.v1 schema",
        "input": "scan tests/fixtures/claude-plugin-good --format json --output .coldpass/scan-example/report.json",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
