{
  "run_id": "Ablation-Tool--kevlar-claude-haiku-5-5-1792968489567784365",
  "date": "2026-10-25T22:53:18.164611+00:00",
  "repo": "Ablation-Tool/kevlar",
  "kind": "mcp",
  "source": "https://github.com/Ablation-Tool/kevlar",
  "commit": "78b786e1447aeece0561c3c044ac53f4c7d954c5",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-ca496ea10bb07418d1d8f1c256c2433a55547acc0fb62d8b6d86ae33c976fbfa",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 278.2465693471022,
  "total_s": 308.5967969894409,
  "steps": [
    "cd <guest-path> && pwd && ls -la && id -u && python3 --version && git status 2>&1 | head -3; cat README.md 2>/dev/null | head -150",
    "cd <guest-path> && tail -c 1200 README.md; echo ---; cat pyproject.toml requirements.txt requirements-dev.txt; ls docs tests .coldpass; echo; curl -s -m 10 -o /dev/null -w \"%{http_code}\\n\" $CDP_URL/json/version; echo \"cdp_exit=$?\"",
    "cd /tmp && (python3 -m venv <guest-path> 2>&1 || (sudo -n apt-get -o DPkg::Lock::Timeout=300 install -y python3-venv >/tmp/apt.log 2>&1 && python3 -m venv <guest-path>)); <guest-path> --version && <guest-path> --version",
    "cd <guest-path> && <guest-path> install -e \".[dev]\" 2>&1 | tail -5; ls <guest-path> | grep -i kevlar",
    "cd <guest-path> && <guest-path> install -e \".[dev]\" 2>&1 | head -30; <guest-path> show setuptools 2>/dev/null | head -2",
    "cd <guest-path> && grep -n \"__main__\\|^def main\\|argparse\\|add_argument\" kevlar.py | head -30; <guest-path> install \"pytest>=8.0\" 2>&1 | tail -1",
    "cd <guest-path> && timeout 600 <guest-path> -q 2>&1 | tail -8",
    "which node npm npx uvx; node --version 2>&1; npm --version 2>&1; cat <guest-path> | head -5; sed -n 515,560p <guest-path>",
    "cd /tmp && export NODE_USE_ENV_PROXY=1 && printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"t\",\"version\":\"1\"}}}' '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}' '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"}' | timeout 180 <guest-path> <guest-path> --mode strict -- npx -y @modelcontextprotocol/server-filesystem /tmp 2>/tmp/kerr.txt | cut -c1-400; echo \"rc=${PIPESTATUS[1]}\"; tail -5 /tmp/kerr.txt",
    "cd <guest-path> && grep -n -i \"nesting\\|MAX_DEPTH\\|depth\" kevlar.py policy.py | head -30",
    "cd /tmp && printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"t\",\"version\":\"1\"}}}' '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}' '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"}' | timeout 240 <guest-path> <guest-path> --mode strict -- uvx mcp-server-git 2>/tmp/kerr2.txt | cut -c1-300; echo \"rc=${PIPESTATUS[1]}\"; tail -4 /tmp/kerr2.txt",
    "cd <guest-path> && sed -n 85,105p kevlar.py",
    "mkdir -p <guest-path> && cd <guest-path> && git init -q -b main . && git -c <email> -c user.name=t commit -q --allow-empty -m init && cd /tmp && printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"t\",\"version\":\"1\"}}}' '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}' '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"git_status\",\"arguments\":{\"repo_path\":\"<guest-path>\"}}}' | timeout 240 <guest-path> <guest-path> --mode strict -- uvx mcp-server-git 2>/dev/null | tail -1 | cut -c1-400",
    "cd /tmp && printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"t\",\"version\":\"1\"}}}' '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}' '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"}' '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"git_status\",\"arguments\":{\"repo_path\":\"<guest-path>\"}}}' | timeout 240 <guest-path> <guest-path> --mode strict -- uvx mcp-server-git 2>/tmp/kerr3.txt | grep '\"id\": 3' | cut -c1-400; tail -3 /tmp/kerr3.txt",
    "cd /tmp && ( printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"t\",\"version\":\"1\"}}}' '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}' '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"}'; sleep 6; printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"git_status\",\"arguments\":{\"repo_path\":\"<guest-path>\"}}}'; sleep 3 ) | timeout 240 <guest-path> <guest-path> --mode strict -- uvx mcp-server-git 2>/tmp/kerr4.txt | grep '\"id\": 3' | cut -c1-400",
    "cd <guest-path> && cat > probe.json <<'EOF'\n{\"kind\":\"mcp\",\"argv\":[\"<guest-path>\",\"<guest-path>\",\"--mode\",\"strict\",\"--\",\"uvx\",\"mcp-server-git\"],\"cwd\":\"<guest-path>\",\"tool\":\"git_status\",\"arguments\":{\"repo_path\":\"<guest-path>\"},\"expected_text\":\"On branch main\"}\nEOF\ncat > claims.json <<'EOF'\n[\n{\"kind\":\"claim\",\"claim\":\"Tool call results pass through the proxy to the client\",\"source\":\"Tool call results cannot be stripped without breaking functionality.\",\"input\":\"git_status on <guest-path> via kevlar strict mode\",\"expected\":\"status text returned intact\",\"probe_kind\":\"mcp\",\"argv\":[\"<guest-path>\",\"<guest-path>\",\"--mode\",\"strict\",\"--\",\"uvx\",\"mcp-server-git\"],\"tool\":\"git_status\",\"arguments\":{\"repo_path\":\"<guest-path>\"},\"expected_text\":\"On branch main\",\"cwd\":\"<guest-path>\"},\n{\"kind\":\"claim\",\"claim\":\"Calls to tools outside the sanitized set are blocked\",\"source\":\"Any call to a tool not in the CDR-sanitized set is blocked with a synthetic `isError` response regardless of call content.\",\"input\":\"git_status call sent without a prior tools/list\",\"expected\":\"synthetic block message\",\"probe_kind\":\"mcp\",\"argv\":[\"<guest-path>\",\"<guest-path>\",\"--mode\",\"strict\",\"--\",\"uvx\",\"mcp-server-git\"],\"tool\":\"git_status\",\"arguments\":{\"repo_path\":\"<guest-path>\"},\"expected_text\":\"was not in CDR-sanitized set\",\"cwd\":\"<guest-path>\"}\n]\nEOF\necho '{\"detected\":false,\"reason\":\"kevlar is a stdio proxy (policy.py pure engine, kevlar.py async stdio proxy per README Architecture); no cron, scheduler, loop, webhook, --once or --now entry points were found in README or kevlar.py main(). Each proxied session runs once per invocation.\",\"checks\":[]}' > cycles.json\necho '[{\"kind\":\"example\",\"claim\":\"Repository test suite runs (README Tests section)\",\"source\":\"README.md Tests section\",\"input\":\"pytest\",\"expected\":\"149 passed\",\"argv\":[\"<guest-path>\",\"-q\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"149 passed\"}]' > examples.json\nfor f in probe.json claims.json cycles.json examples.json; do <guest-path> -m json.tool $f >/dev/null -I 2>/dev/null || python3 -c \"import json,sys;json.load(open('$f'))\" && echo \"$f ok\"; done",
    "ls -la <guest-path> /inputs/ 2>&1 | head; cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -60",
    "cd <guest-path> && python3 - <<'EOF'\nimport json\np='claims.json'\nc=json.load(open(p))\nc[1]['tool']='git_delete_everything'\nc[1]['arguments']={}\nc[1]['input']='call to unlisted tool git_delete_everything'\njson.dump(c,open(p,'w'),indent=1)\nEOF\ncd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | python3 -c \"import json,sys; d=json.load(sys.stdin); print(d['valid']); print(d['problems']); print([ (c['verdict'],c['outcome'][:120]) for c in d['replay']['details']['claims']]); print(d['replay']['status'], d['replay']['details'].get('evidence_strength'))\"",
    "cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > /tmp/chk.json 2>&1; python3 -c \"\nimport json; d=json.load(open('/tmp/chk.json'))\nprint(d['valid']); print(d['problems'])\nfor c in d['replay']['details']['claims']: print(json.dumps(c)[:900]); print()\n\"; grep -n \"isError\\|was not in\\|expected_returncode\" <guest-path> | head -30",
    "cd <guest-path> && python3 - <<'EOF'\nimport json\nc=json.load(open('claims.json'))\njson.dump([c[0]],open('claims.json','w'),indent=1)\nex=[{\"kind\":\"example\",\"claim\":\"Calls to tools outside the sanitized set are blocked\",\"source\":\"README.md\",\"input\":\"tools/call git_delete_everything sent without tools/list\",\"expected\":\"synthetic block message from kevlar\",\"argv\":[\"<guest-path>\",\"<guest-path>\",\"--mode\",\"strict\",\"--\",\"uvx\",\"mcp-server-git\"],\"stdin\":\"{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"id\\\":1,\\\"method\\\":\\\"initialize\\\",\\\"params\\\":{\\\"protocolVersion\\\":\\\"2024-11-05\\\",\\\"capabilities\\\":{},\\\"clientInfo\\\":{\\\"name\\\":\\\"t\\\",\\\"version\\\":\\\"1\\\"}}}\\n{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"method\\\":\\\"notifications/initialized\\\"}\\n{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"id\\\":3,\\\"method\\\":\\\"tools/call\\\",\\\"params\\\":{\\\"name\\\":\\\"git_delete_everything\\\",\\\"arguments\\\":{}}}\\n\",\"cwd\":\"<guest-path>\",\"expected_text\":\"was not in CDR-sanitized set\"},\n{\"kind\":\"example\",\"claim\":\"Repository test suite runs (README Tests section)\",\"source\":\"README.md Tests section\",\"input\":\"pytest\",\"expected\":\"149 passed\",\"argv\":[\"<guest-path>\",\"-q\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"149 passed\"}]\njson.dump(ex,open('examples.json','w'),indent=1)\nEOF\ncd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > /tmp/chk.json 2>&1; python3 -c \"\nimport json; d=json.load(open('/tmp/chk.json'))\nprint(d.get('valid')); print(d.get('problems'))\nr=d.get('replay',{}); print(r.get('status'))\ndet=r.get('details',{})\nfor e in det.get('example_checks',[]): print(e['verdict'], e['outcome'][:150])\nfor c in det.get('claims',[]): print(c['verdict'], c['outcome'][:150])\n\" ; sed -n 1,5p /tmp/chk.json | cut -c1-300",
    "python3 -c \"\nimport json; d=json.load(open('/tmp/chk.json'))['replay']['details']\nprint(d.get('evidence_strength'))\nfor e in d.get('example_checks',[]): print(e.get('verdict'), e.get('returncode'), str(e.get('outcome'))[:120])\nfor c in d.get('claims',[]): print('claim', c.get('verdict'))\n\"; pgrep -af \"kevlar.py|mcp-server-git|server-filesystem\" | grep -v pgrep || echo \"no leftover servers\"",
    "cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/report.json <<'EOF'\n{\"outcome\":\"blocked\",\"fault_owner\":\"repo\",\"operation\":\"Run Kevlar as a stdio firewall proxy in front of an MCP server and get a real tool result back (README Quickstart / Setup)\",\"operation_scope\":\"Linux, Python 3.12.3 venv at <guest-path>, Node 22 / npx present. Tested against mcp-server-git via uvx and a local git repo at <guest-path> README's npx filesystem quickstart was also tried.\",\"steps\":[\"python3 -m venv <guest-path> (Python 3.12.3, README requires 3.10+)\",\"cd <guest-path> && <guest-path> install -e \\\".[dev]\\\" (README Install / Tests) -> FAILED\",\"<guest-path> install \\\"pytest>=8.0\\\"\",\"<guest-path> -q (README Tests) -> 149 passed\",\"python kevlar.py --mode strict -- uvx mcp-server-git (proxy, tools/list and tools/call OK)\",\"python kevlar.py --mode strict -- npx -y @modelcontextprotocol/server-filesystem /tmp (README Quickstart) -> tools/list rejected\"],\"deviations\":[\"README 'pip install .' / 'pip install -e \\\".[dev]\\\"' fails: pyproject.toml sets build-backend 'setuptools.backends.legacy:build', which does not exist (ModuleNotFoundError: setuptools.backends). The 'kevlar' console script was therefore never installed; I ran the same entry point through kevlar.py's own __main__ (main()) with the venv python instead. Source was not edited.\",\"Installed pytest directly (requirements-dev.txt) because the editable install failed.\",\"Filesystem quickstart (kevlar --mode strict -- npx ... server-filesystem /tmp) could not complete: its tools/list response was rejected with 'JSON rejected: nesting depth pre-screen exceeded' (kevlar.py _parse_strict counts all '[' and '{' bytes in the message against 200, not nesting depth), so the proxy returned an internal error.\",\"Strict mode blocks tools/call unless the tool appeared in a prior tools/list response; sending tools/call before tools/list gets 'was not in CDR-sanitized set'. This matches the README, but it means the quickstart requires a handshake order.\",\"Browser/CDP endpoint was checked (GET $CDP_URL/json/version -> HTTP 200) but not used; Kevlar does not need a browser.\",\"No cron/scheduler/webhook entry point exists, so cycles.json has detected:false.\"],\"stuck_step\":\"pip install -e \\\".[dev]\\\" (README Install/Tests): pyproject.toml build-backend 'setuptools.backends.legacy:build' is missing\",\"main_blocker\":\"The documented install command fails, so the 'kevlar' command is not installed; the README's npx filesystem quickstart also fails because of a 200-bracket pre-screen that rejects valid MCP tools/list responses.\",\"plain_failure\":\"Installing Kevlar with the README's pip command fails because its packaging config points at a build tool that does not exist. The proxy itself works: its test suite passes (149 tests), and it correctly relays a git server's status and tool list. But the README's filesystem example fails, because the proxy wrongly rejects any server reply with more than about 200 curly or square brackets, even when the nesting is shallow.\",\"suggested_fix\":\"In pyproject.toml, use a real backend (for example build-backend = \\\"setuptools.build_meta\\\"). In kevlar.py _parse_strict, replace the total-bracket count with a real nesting-depth check, or raise the limit so normal tools/list responses pass.\"}\nEOF\npython3 -c \"import json;json.load(open('.coldpass/report.json'));print('report ok')\"; ls -la .coldpass; ls <guest-path> | head -30",
    "cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | python3 -c \"import json,sys; d=json.load(sys.stdin); print('valid',d['valid'],'problems',d['problems'],'replay',d['replay']['status'])\""
  ],
  "stuck_step": "pip install -e \".[dev]\" (README Install/Tests): pyproject.toml build-backend 'setuptools.backends.legacy:build' is missing",
  "error_excerpt": null,
  "what_it_did": "Run Kevlar as a stdio firewall proxy in front of an MCP server and get a real tool result back (README Quickstart / Setup)",
  "suggested_fix": null,
  "tokens_in": 475901,
  "tokens_out": 16692,
  "cost_usd": 0.01998127,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "<guest-path>",
          "<guest-path>",
          "--mode",
          "strict",
          "--",
          "uvx",
          "mcp-server-git"
        ],
        "kind": "mcp",
        "serverInfo": {
          "name": "mcp-git",
          "version": "2026.10.19"
        },
        "tools": [
          "git_status",
          "git_diff_unstaged",
          "git_diff_staged",
          "git_diff",
          "git_commit",
          "git_add",
          "git_reset",
          "git_log",
          "git_create_branch",
          "git_checkout",
          "git_show",
          "git_branch"
        ],
        "tool_schema_bytes": 2263,
        "tool_result": {
          "content": [
            {
              "type": "text",
              "text": "Repository status:\nOn branch main\nnothing to commit, working tree clean"
            }
          ],
          "isError": false
        },
        "tool_result_checked": true,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 2 known vulnerability.",
    "expected": "Reviewed as expected for a test run: attempted writes that failed, so nothing was written.",
    "findings": [
      {
        "kind": "known-vulnerability",
        "count": 2,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 1,
        "path": "pytest"
      }
    ],
    "context": [],
    "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=Ablation-Tool--kevlar-claude-haiku-5-5-1792968489567784365",
    "evidence_file": "/data/safety/Ablation-Tool--kevlar-claude-haiku-5-5-1792968489567784365.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": 23,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "78b786e1447aeece0561c3c044ac53f4c7d954c5",
    "url": "https://github.com/Ablation-Tool/kevlar"
  },
  "purpose": "initial",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": "repo",
    "status": "diagnosed",
    "reason": "The documented install command fails, so the 'kevlar' command is not installed; the README's npx filesystem quickstart also fails because of a 200-bracket pre-screen that rejects valid MCP tools/list responses."
  },
  "fix_id": null,
  "verifies_run_id": null,
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 23,
  "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": "local",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "mcp"
  ],
  "license": "MIT",
  "repo_url": "https://github.com/Ablation-Tool/kevlar",
  "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": "kevlar is a stdio proxy (policy.py pure engine, kevlar.py async stdio proxy per README Architecture); no cron, scheduler, loop, webhook, --once or --now entry points were found in README or kevlar.py main(). Each proxied session runs once per invocation.",
      "evidence": "kevlar is a stdio proxy (policy.py pure engine, kevlar.py async stdio proxy per README Architecture); no cron, scheduler, loop, webhook, --once or --now entry points were found in README or kevlar.py main(). Each proxied session runs once per invocation.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "Tool call results pass through the proxy to the client",
      "source": "Tool call results cannot be stripped without breaking functionality.",
      "input": "{\"tool\": \"git_status\", \"arguments\": {\"repo_path\": \"<guest-path>\"}}",
      "expected": "status text returned intact",
      "command": "<guest-path> <guest-path> --mode strict -- uvx mcp-server-git tools/call {\"tool\": \"git_status\", \"arguments\": {\"repo_path\": \"<guest-path>\"}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: On branch main",
      "evidence": "On branch main\\nnothing to commit, working tree clean\"}], \"isError\": false}",
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Calls to tools outside the sanitized set are blocked",
      "source": "README.md",
      "input": "tools/call git_delete_everything sent without tools/list",
      "command": "<guest-path> <guest-path> --mode strict -- uvx mcp-server-git",
      "evidence": ": 3, \"result\": {\"content\": [{\"type\": \"text\", \"text\": \"kevlar: tool 'git_delete_everything' was not in CDR-sanitized set\"}], \"isError\": true}}\n{\"jsonrpc\": \"2.0\", \"id\": 1, \"result\": {\"protocolVersion\": \"2024-11-05\", \"capabilities\": {\"prompts\": {\"listChanged\": false}, \"resources\": {\"listChanged\": false, \"subscribe\": false}, \"tools\": {\"listChanged\": false}}, \"serverInfo\": {\"name\": \"mcp-git\", \"version\": \"2026.10.19\"}}}\n2026-10-25 22:52:53,911 INFO kevlar spawned server pid=4167 cmd=uvx mode=strict\n2026-10-25 22:52:53,912 WARNING kevlar tools/call blocked for unsanitized tool 'git_delete_everything'",
      "deferred": false,
      "expected": "synthetic block message from kevlar",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Repository test suite runs (README Tests section)",
      "source": "README.md Tests section",
      "input": "pytest",
      "command": "<guest-path> -q",
      "evidence": "........................................................................ [ 48%]\n........................................................................ [ 96%]\n.....                                                                    [100%]\n149 passed in 8.78s",
      "deferred": false,
      "expected": "149 passed",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "last_commit_at": "2026-10-24T21:35:17Z",
    "commits_90d": 33,
    "merged_prs_90d": 0,
    "open_issues": 0,
    "open_prs": 0,
    "reply_share": null,
    "reply_threads": 0,
    "median_reply_hours": null,
    "last_release_at": null,
    "archived": false,
    "verdict": "maintained",
    "note": "actively maintained: last commit 1 days ago; 33 commits and 0 merged PRs in 90 days; 0 open issues, 0 open PRs; no releases"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 1 days ago; 33 commits and 0 merged PRs in 90 days; 0 open issues, 0 open PRs; no releases",
  "maintained": "active",
  "maintained_note": "last commit 1 days ago",
  "last_commit_at": "2026-10-24T21:35:17Z",
  "last_release_at": null,
  "open_issues": null,
  "answered_issues": null,
  "platforms_claimed": [
    "linux",
    "mac"
  ],
  "topic": "mcp-server",
  "agent_interfaces": [
    {
      "interface": "mcp",
      "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": {
    "tool_count": 12,
    "schema_bytes": 2263,
    "tokens_approx": 566,
    "estimate_method": "ceil(compact UTF-8 tools/list JSON bytes / 4)",
    "scope": "returned tools/list page only; excludes client framing and tool results"
  },
  "tested_at": "2026-10-25T22:53:18.164611+00:00",
  "tested_commit": "78b786e1447aeece0561c3c044ac53f4c7d954c5",
  "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": "Ablation-Tool/kevlar",
    "source": "https://github.com/Ablation-Tool/kevlar",
    "commit": "78b786e1447aeece0561c3c044ac53f4c7d954c5",
    "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": "78b786e1447aeece0561c3c044ac53f4c7d954c5",
      "url": "https://github.com/Ablation-Tool/kevlar"
    },
    "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 Kevlar as a stdio firewall proxy in front of an MCP server and get a real tool result back (README Quickstart / Setup)",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "mcp",
    "test_version": "readme-ca496ea10bb07418d1d8f1c256c2433a55547acc0fb62d8b6d86ae33c976fbfa",
    "evidence_version": null
  },
  "other_model": null,
  "other_run_id": null,
  "models_agree": null,
  "furthest_model": null,
  "transcript_url": "/transcripts/Ablation-Tool--kevlar-claude-haiku-5-5-1792968489567784365.txt",
  "report_url": "/reports/Ablation-Tool--kevlar-claude-haiku-5-5-1792968489567784365.json"
}
