{
  "run_id": "Ablation-Tool--kevlar-gpt-6-luna-1792968610517967072",
  "checker": {
    "claims": [
      {
        "claim": "Kevlar removes tool description fields from tools/list results",
        "command": "/tmp/kevlar-venv/bin/kevlar --mode strict -- /tmp/kevlar-venv/bin/python tests/hostile_server.py clean",
        "evidence": "\"name\": \"format_text\", \"inputSchema\": {\"type\": \"object\", \"properties\": {\"text\": {\"type\": \"string\"}}}}]}}\n2026-10-25 22:52:10,701 INFO kevlar spawned server pid=3390 cmd=/tmp/kevlar-venv/bin/python mode=strict\n2026-10-25 22:52:10,803 INFO kevlar tools/list CDR: 1 tools, 0 indicators, score=0 disposition=allow\n",
        "expected": "forwarded tool result has no description field",
        "input": "clean tools/list JSON-RPC request",
        "kind": "claim",
        "outcome": "Real input produced the expected result: \"name\": \"format_text\"",
        "returncode": 0,
        "source": "Kevlar strips every `description` field to `\"\"` unconditionally on every `tools/list` response, before the message reaches the client.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "README and product entry point describe a stdio proxy that handles messages per client/server session; no scheduler, cron trigger, webhook, or cycle mechanism is documented.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "README and product entry point describe a stdio proxy that handles messages per client/server session; no scheduler, cron trigger, webhook, or cycle mechanism is documented.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "/tmp/kevlar-venv/bin/kevlar",
        "--mode",
        "strict",
        "--",
        "/tmp/kevlar-venv/bin/python",
        "tests/hostile_server.py",
        "clean"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "2026-10-25 22:52:10,304 INFO kevlar spawned server pid=3388 cmd=/tmp/kevlar-venv/bin/python mode=strict\n2026-10-25 22:52:10,407 INFO kevlar tools/list CDR: 1 tools, 0 indicators, score=0 disposition=allow",
      "stdout": "{\"jsonrpc\": \"2.0\", \"id\": 1, \"result\": {\"tools\": [{\"name\": \"format_text\", \"inputSchema\": {\"type\": \"object\", \"properties\": {\"text\": {\"type\": \"string\"}}}}]}}",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Exercise strict mode CDR on tools/list",
        "command": "/tmp/kevlar-venv/bin/kevlar --mode strict -- /tmp/kevlar-venv/bin/python tests/hostile_server.py clean",
        "deferred": false,
        "evidence": "{\"jsonrpc\": \"2.0\", \"id\": 1, \"result\": {\"tools\": [{\"name\": \"format_text\", \"inputSchema\": {\"type\": \"object\", \"properties\": {\"text\": {\"type\": \"string\"}}}}]}}\n2026-10-25 22:52:11,087 INFO kevlar spawned server pid=3392 cmd=/tmp/kevlar-venv/bin/python mode=strict\n2026-10-25 22:52:11,189 INFO kevlar tools/list CDR: 1 tools, 0 indicators, score=0 disposition=allow",
        "expected": "sanitized tool is forwarded without description",
        "input": "tools/list request",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md / Quickstart, using tests/hostile_server.py clean fixture",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
