{
  "run_id": "hashgraph-online--hol-guard-claude-haiku-5-5-1792883075126268563",
  "date": "2026-10-24T23:16:41.243225+00:00",
  "repo": "hashgraph-online/hol-guard",
  "kind": "repo",
  "source": "https://github.com/hashgraph-online/hol-guard",
  "commit": "85e723f6c520952cbe6f394c8585fc451c5eda04",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-c934555f51e3c2082ecd575e014a061355a62257bc1c10cc514c27dbff1bec7d",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 291.45650735206436,
  "total_s": 726.1169378757477,
  "steps": [
    "cd <guest-path> && pwd && ls -la && id -u && python3 --version && git status 2>&1 | head -3; echo \"---\"; ls /inputs 2>&1; echo \"CDP=$CDP_URL\"",
    "cd <guest-path> && cat README.md 2>/dev/null | head -c 7000",
    "cd <guest-path> && sed -n '1,400p' README.md | tail -c +7000 | head -c 7500",
    "which pipx uv pip3 2>&1; python3 -m pipx --version 2>&1 | head -2; python3 -m pip --version 2>&1; cat /etc/os-release | head -2; sudo -n true && echo SUDO_OK",
    "sudo -n DEBIAN_FRONTEND=noninteractive apt-get update -qq 2>&1 | tail -3; sudo -n DEBIAN_FRONTEND=noninteractive apt-get install -y -qq pipx python3-pip python3-venv >/tmp/apt.log 2>&1; echo \"rc=$?\"; tail -3 /tmp/apt.log; pipx --version",
    "cd /tmp && export PIPX_HOME=/tmp/pipx/home PIPX_BIN_DIR=/tmp/pipx/bin && pipx install hol-guard 2>&1 | tail -15; echo \"rc=${PIPESTATUS[0]}\"; ls /tmp/pipx/bin 2>&1",
    "export PATH=/tmp/pipx/bin:$PATH; hol-guard --version; grep -m2 '^version' <guest-path>; hol-guard --help 2>&1 | head -60",
    "export PATH=/tmp/pipx/bin:$PATH; hol-guard status 2>&1 | head -30; echo \"rc=$?\"; hol-guard command test 'rm -rf ./build' 2>&1 | head -40",
    "export PATH=/tmp/pipx/bin:$PATH; cd <guest-path>; ls examples; find . -name plugin.json -path '*claude*' -not -path './node_modules/*' | head; find . -name '.claude-plugin' -type d | head -5; which plugin-guard; plugin-scanner --help 2>&1 | head -5",
    "export PIPX_HOME=/tmp/pipx/home PIPX_BIN_DIR=/tmp/pipx/bin; cd /tmp && pipx install plugin-scanner 2>&1 | tail -4; /tmp/pipx/bin/plugin-scanner --version 2>&1 | head -2; /tmp/pipx/bin/plugin-scanner --help 2>&1 | head -30",
    "cd <guest-path> && /tmp/pipx/bin/plugin-scanner scan tests/fixtures/claude-plugin-good 2>&1 | head -60; echo \"rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && grep -n -i -E 'cron|schedul|--once|--now|webhook|daemon|interval|loop' README.md | head -20; echo ---; grep -n 'inspect the command without executing' README.md; grep -n 'Ecosystems\\|detects Codex, Claude Code' README.md | head; echo ---; grep -n -F 'Run it locally without an account.' README.md",
    "cd <guest-path> && grep -rn -E 'while True|sched|cron|setInterval|--once' src --include=*.py 2>/dev/null | grep -v test | head -15; echo \"---\"; mkdir -p .coldpass/scan-json && /tmp/pipx/bin/plugin-scanner scan tests/fixtures/claude-plugin-good --format json --output .coldpass/scan-json/report.json; echo \"rc=$?\"; ls -la .coldpass/scan-json; head -c 400 .coldpass/scan-json/report.json",
    "cd <guest-path> && rm -rf .coldpass/scan-json && mkdir -p .coldpass/scan-example && ls -la .coldpass/ && ls -la <guest-path> 2>&1 | head -5",
    "cd <guest-path> && cat > .coldpass/claims.json <<'EOF'\n[\n  {\"kind\":\"claim\",\"claim\":\"command test inspects a command without executing it or creating an approval\",\"source\":\"README.md\",\"source_file\":\"README.md\",\"quote\":\"`command test` and `command explain` inspect the command without executing it or creating an approval.\",\"input\":\"rm -rf ./build\",\"expected\":\"REVIEW verdict classified as recursive-delete, no approval created\",\"probe_kind\":\"cli\",\"argv\":[\"/tmp/pipx/bin/hol-guard\",\"command\",\"test\",\"rm -rf ./build\"],\"expected_text\":\"command.filesystem.recursive-delete\",\"cwd\":\"<guest-path>\"},\n  {\"kind\":\"claim\",\"claim\":\"plugin-scanner detects Claude Code package formats\",\"source\":\"README.md\",\"source_file\":\"README.md\",\"quote\":\"The scanner detects Codex, Claude Code, DeepSeek Harness, Gemini CLI, Kimi Code, and OpenCode package formats.\",\"input\":\"tests/fixtures/claude-plugin-good\",\"expected\":\"Claude ecosystem detected and scanned\",\"probe_kind\":\"cli\",\"argv\":[\"/tmp/pipx/bin/plugin-scanner\",\"scan\",\"tests/fixtures/claude-plugin-good\"],\"expected_text\":\"Ecosystems: claude\",\"cwd\":\"<guest-path>\"}\n]\nEOF\npython3 -I -c 'import json;print(len(json.load(open(\".coldpass/claims.json\"))))'",
    "cd <guest-path> && cat > .coldpass/probe.json <<'EOF'\n{\"kind\":\"cli\",\"argv\":[\"/tmp/pipx/bin/hol-guard\",\"command\",\"test\",\"rm -rf ./build\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"command.filesystem.recursive-delete\"}\nEOF\ncat > .coldpass/examples.json <<'EOF'\n[\n  {\"kind\":\"example\",\"claim\":\"plugin-scanner scans a Claude Code plugin and reports a score\",\"source\":\"README.md\",\"input\":\"tests/fixtures/claude-plugin-good\",\"expected\":\"Claude ecosystem scanned with 100/100 score\",\"argv\":[\"/tmp/pipx/bin/plugin-scanner\",\"scan\",\"tests/fixtures/claude-plugin-good\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"Final Score: 100/100\"},\n  {\"kind\":\"example\",\"claim\":\"plugin-scanner writes a JSON report to --output\",\"source\":\"README.md\",\"input\":\"scan tests/fixtures/claude-plugin-good --format json --output .coldpass/scan-example/report.json\",\"expected\":\"JSON file with scan-result.v1 schema\",\"argv\":[\"/tmp/pipx/bin/plugin-scanner\",\"scan\",\"tests/fixtures/claude-plugin-good\",\"--format\",\"json\",\"--output\",\".coldpass/scan-example/report.json\"],\"cwd\":\"<guest-path>\",\"expected_file\":\".coldpass/scan-example/report.json\",\"expected_text\":\"scan-result.v1\"}\n]\nEOF\ncat > .coldpass/cycles.json <<'EOF'\n{\"detected\":false,\"reason\":\"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).\",\"checks\":[]}\nEOF\nfor f in probe claims examples cycles; do python3 -I -m json.tool .coldpass/$f.json >/dev/null && echo \"$f ok\"; done",
    "cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -60; echo \"rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && cat > .coldpass/report.json <<'EOF'\n{\"outcome\":\"working\",\"fault_owner\":null,\"operation\":\"Run HOL Guard's local command inspection (hol-guard command test) and the plugin-scanner scan on a Claude plugin fixture, both from the README, and get real results.\",\"operation_scope\":\"Local CLI only, Linux Ubuntu 24.04 guest, Python 3.12.3. No Guard Cloud, no account, no browser or CDP needed. Installed from PyPI as the README documents, not built from the pinned source snapshot.\",\"steps\":[\"sudo apt-get install -y pipx python3-pip python3-venv (README requires pipx)\",\"pipx install hol-guard (installed 3.56.0)\",\"hol-guard --version; hol-guard status (setup check, rc 0)\",\"hol-guard command test 'rm -rf ./build' (REVIEW, rule command.filesystem.recursive-delete)\",\"pipx install plugin-scanner (README Plugin Scanner section; installed 3.56.0)\",\"plugin-scanner scan tests/fixtures/claude-plugin-good (Ecosystems: claude, Final Score 100/100)\",\"plugin-scanner scan tests/fixtures/claude-plugin-good --format json --output .coldpass/scan-example/report.json (scan-result.v1 file written)\",\"<env-var>=<guest-path> python3 -I <guest-path> --validate --replay (valid true, replay PASS)\"],\"deviations\":[\"Installed hol-guard and plugin-scanner from PyPI via pipx per README; installed version 3.56.0 differs from pyproject.toml version 3.55.1 of the pinned snapshot. The snapshot was not installed from source.\",\"Installed pipx/pip with apt because they were missing (sudo apt-get, Ubuntu 24.04). Install succeeded.\",\"Did not run interactive 'hol-guard init' first-run wizard or 'hol-guard connect' (consent/cloud steps); used the non-interactive commands above instead.\",\"/inputs/coldpass-preflight.py does not exist in this guest; ran <guest-path> with the same flags instead.\",\"No browser or CDP endpoint used: the operations here are local CLI and do not need a browser.\"],\"stuck_step\":null,\"main_blocker\":null,\"plain_failure\":null,\"suggested_fix\":\"None needed for this run. Optional: build and test from the pinned commit source to confirm the 3.55.1 snapshot matches the 3.56.0 PyPI release.\"}\nEOF\npython3 -I -m json.tool .coldpass/report.json >/dev/null && echo report ok; ls -la .coldpass; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -I -c 'import json,sys;d=json.load(sys.stdin);print(\"valid\",d[\"valid\"],\"problems\",d[\"problems\"],\"replay\",d[\"replay\"][\"status\"])'"
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Run HOL Guard's local command inspection (hol-guard command test) and the plugin-scanner scan on a Claude plugin fixture, both from the README, and get real results.",
  "suggested_fix": null,
  "tokens_in": 420228,
  "tokens_out": 11677,
  "cost_usd": 0.01841943,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "/tmp/pipx/bin/hol-guard",
          "command",
          "test",
          "rm -rf ./build"
        ],
        "kind": "cli",
        "returncode": 0,
        "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]",
        "stderr": "",
        "needs_credentials": false,
        "needs_browser": false,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 connection review, 2 download and execute, 5 encoded execution, 537 hardcoded secret, 46 known vulnerability, 1 sensitive read. 115 static matches retained as context.",
    "expected": "Reviewed as expected for a test run: attempted writes that failed, so nothing was written.",
    "findings": [
      {
        "kind": "connection-review",
        "count": 1,
        "note": "Repository processes attempted these non-loopback connections; proxies can hide the final hostname.",
        "location_count": 11,
        "process_count": 1,
        "processes": [
          {
            "address": "2600:1901:0:3235:::443",
            "executable": "/tmp/pipx<host-path>",
            "owner": "repo",
            "pid": "3850",
            "source": "hol-guard"
          }
        ]
      },
      {
        "kind": "download-and-execute",
        "count": 2,
        "note": "Source contains download and execute; review its purpose.",
        "location_count": 2
      },
      {
        "kind": "encoded-execution",
        "count": 5,
        "note": "Source contains encoded execution; review its purpose.",
        "location_count": 3
      },
      {
        "kind": "hardcoded-secret",
        "count": 190,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 17
      },
      {
        "kind": "known-vulnerability",
        "count": 33,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 13
      },
      {
        "kind": "sensitive-read",
        "count": 1,
        "note": "A repository process attempted to read this sensitive path.",
        "location_count": 1,
        "path": "<guest-path> Support/Antigravity/User/settings.json",
        "process_count": 2
      }
    ],
    "context": [
      {
        "kind": "download-and-execute",
        "count": 1,
        "note": "Source contains download and execute; review its purpose.",
        "location_count": 1,
        "path": "tests/fixtures/hermes-plugin-evil/skills/stealth/sneaky/scripts/deploy.sh"
      },
      {
        "kind": "encoded-execution",
        "count": 37,
        "note": "Source contains encoded execution; review its purpose.",
        "location_count": 7
      },
      {
        "kind": "hardcoded-secret",
        "count": 77,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 17
      }
    ],
    "limitations": [
      "A short run cannot establish that code is safe.",
      "Connections show IP addresses; proxies can hide the final hostname.",
      "Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing."
    ],
    "static": {
      "dependency_note": "OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check."
    },
    "evidence_url": "/safety/?run=hashgraph-online--hol-guard-claude-haiku-5-5-1792883075126268563",
    "evidence_file": "/data/safety/hashgraph-online--hol-guard-claude-haiku-5-5-1792883075126268563.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.300 (Claude Code)",
  "tool_transport": "mcp-assigned-vm",
  "platform": "linux",
  "reasoning": "low",
  "service_tier": null,
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "native_tool_calls": 18,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "85e723f6c520952cbe6f394c8585fc451c5eda04",
    "url": "https://github.com/hashgraph-online/hol-guard"
  },
  "purpose": "test_rerun",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": "hashgraph-online--hol-guard-claude-haiku-5-5-1792812453266752710",
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 18,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "readme_checked",
  "works": "yes",
  "install_s": null,
  "first_use_s": null,
  "mcp": "none",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "cli"
  ],
  "license": "Apache-2.0",
  "repo_url": "https://github.com/hashgraph-online/hol-guard",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "local",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Scheduled or looping main behavior",
      "source": "repository entry points",
      "input": "source inspection",
      "expected": "identify the product trigger",
      "verdict": "yes",
      "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).",
      "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).",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "command test inspects a command without executing it or creating an approval",
      "source": "README.md",
      "input": "rm -rf ./build",
      "expected": "REVIEW verdict classified as recursive-delete, no approval created",
      "command": "/tmp/pipx/bin/hol-guard command test 'rm -rf ./build'",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: command.filesystem.recursive-delete",
      "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",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "plugin-scanner detects Claude Code package formats",
      "source": "README.md",
      "input": "tests/fixtures/claude-plugin-good",
      "expected": "Claude ecosystem detected and scanned",
      "command": "/tmp/pipx/bin/plugin-scanner scan tests/fixtures/claude-plugin-good",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Ecosystems: claude",
      "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",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "plugin-scanner scans a Claude Code plugin and reports a score",
      "source": "README.md",
      "input": "tests/fixtures/claude-plugin-good",
      "command": "/tmp/pipx/bin/plugin-scanner scan tests/fixtures/claude-plugin-good",
      "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",
      "deferred": false,
      "expected": "Claude ecosystem scanned with 100/100 score",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "plugin-scanner writes a JSON report to --output",
      "source": "README.md",
      "input": "scan tests/fixtures/claude-plugin-good --format json --output .coldpass/scan-example/report.json",
      "command": "/tmp/pipx/bin/plugin-scanner scan tests/fixtures/claude-plugin-good --format json --output .coldpass/scan-example/report.json-checker-14461792bd82443099b38d0d37883a08",
      "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}",
      "deferred": false,
      "expected": "JSON file with scan-result.v1 schema",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "archived": false,
    "commits_90d": 4230,
    "last_commit_at": "2026-10-24T03:22:10Z",
    "last_release_at": "2026-10-22T18:35:14Z",
    "median_reply_hours": null,
    "merged_prs_90d": 3415,
    "note": "actively maintained: last commit 0 days ago; 4230 commits and 3415 merged PRs in 90 days; 29 open issues, 67 open PRs; latest release 2026-10-22",
    "open_issues": 29,
    "open_prs": 67,
    "reply_share": null,
    "reply_threads": 0,
    "verdict": "maintained"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 0 days ago; 4230 commits and 3415 merged PRs in 90 days; 29 open issues, 67 open PRs; latest release 2026-10-22",
  "maintained": "active",
  "maintained_note": "last commit 0 days ago",
  "last_commit_at": "2026-10-24T03:23:02Z",
  "last_release_at": "2026-10-22T18:35:14Z",
  "open_issues": null,
  "answered_issues": null,
  "platforms_claimed": [
    "linux",
    "windows"
  ],
  "topic": "mcp-server",
  "agent_interfaces": [
    {
      "interface": "mcp",
      "evidence": "README metadata",
      "observed": false,
      "operation_checked": false
    },
    {
      "interface": "cli",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": true
    }
  ],
  "agent_interfaces_note": "README metadata is a discovery hint, not pinned documentation proof. Observed interfaces were exercised in this run. An empty list means unknown.",
  "mcp_context": null,
  "tested_at": "2026-10-24T23:16:41.243225+00:00",
  "tested_commit": "85e723f6c520952cbe6f394c8585fc451c5eda04",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.300 (Claude Code)",
    "model": "claude-haiku-5-5",
    "model_route": "claude-haiku-5-5",
    "reasoning": "low",
    "os": "linux",
    "backend": "hyperv",
    "transport": "mcp-assigned-vm"
  },
  "setup_identity": {
    "repo": "hashgraph-online/hol-guard",
    "source": "https://github.com/hashgraph-online/hol-guard",
    "commit": "85e723f6c520952cbe6f394c8585fc451c5eda04",
    "source_revision": null,
    "os": "linux",
    "architecture": null,
    "backend": "hyperv",
    "model": "claude-haiku-5-5",
    "model_version": "claude-haiku-5-5",
    "agent_execution": "native_agent",
    "agent_runtime": "claude-code",
    "agent_runtime_version": "2.1.300 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "85e723f6c520952cbe6f394c8585fc451c5eda04",
      "url": "https://github.com/hashgraph-online/hol-guard"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Run HOL Guard's local command inspection (hol-guard command test) and the plugin-scanner scan on a Claude plugin fixture, both from the README, and get real results.",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "repo",
    "test_version": "readme-c934555f51e3c2082ecd575e014a061355a62257bc1c10cc514c27dbff1bec7d",
    "evidence_version": null
  },
  "transcript_url": null,
  "report_url": "/reports/hashgraph-online--hol-guard-claude-haiku-5-5-1792883075126268563.json"
}
