{
  "run_id": "Coolhand-Labs--coolhand-python-claude-haiku-5-5-1793148580078383447",
  "date": "2026-10-28T00:55:54.013057+00:00",
  "repo": "Coolhand-Labs/coolhand-python",
  "kind": "repo",
  "source": "https://github.com/Coolhand-Labs/coolhand-python",
  "commit": "d0136ad4eab2d0577b60afd02f49d7b62e1851cf",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-d5b140d3c0f8b95c2dd6fe6fc381a303cacb92679582c22317d8e78b572f0cf2",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 345.4278666809987,
  "total_s": 373.93450260162354,
  "steps": [
    "cd <guest-path> && pwd && ls -la && git status 2>&1 | head -3; id -u; python3 --version; echo \"CDP_URL=$CDP_URL\"; test -f README.md && wc -c README.md",
    "cd <guest-path> && cat README.md | head -c 7900",
    "cd <guest-path> && tail -c +7900 README.md | head -c 7500; echo; echo ---; cat .python-version; grep -n \"requires-python\\|scripts\\|\\[project\" pyproject.toml; echo ---; cat Makefile | head -80",
    "cd <guest-path> && python3 -m venv --help >/dev/null 2>&1 && echo venv_ok || echo venv_missing; python3 -m pip --version 2>&1; which uv; curl -sS -m 10 -o /dev/null -w \"%{http_code}\\n\" https://coolhandlabs.com/ 2>&1; curl -sS -m 10 -w \"\\n%{http_code}\\n\" $CDP_URL/json/version 2>&1 | head -c 600",
    "mkdir -p <guest-path> && python3 -m venv <guest-path> && <guest-path> -m pip install -q --upgrade pip 2>&1 | tail -3; <guest-path> --version",
    "cd <guest-path> && <guest-path> -m pip install -q <guest-path> 2>&1 | tail -5; echo \"rc=$?\"; <guest-path> -m pip show coolhand 2>&1 | head -3",
    "cd <guest-path> && find examples scripts -type f | head -50; echo ---; cat examples/README.md | head -c 4000",
    "cd <guest-path> && head -c 3500 docs/help-center.md; echo; echo ---; grep -n \"scripts\" -A4 pyproject.toml | head; echo ---; cat scripts/live-examples.sh | head -30",
    "cd <guest-path> && timeout 120 <guest-path> examples/streaming_capture.py; echo \"rc=$?\"",
    "cd <guest-path> && timeout 120 <guest-path> examples/auto_monitor_example.py 2>&1 | tail -30; echo \"rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && sed -n 1,68p pyproject.toml | grep -v \"^$\" | head -70",
    "cd <guest-path> && timeout 900 make install 2>&1 | tail -15; echo \"rc=${PIPESTATUS[0]}\"; ls -d .venv 2>/dev/null && .venv/bin/python --version",
    "cd <guest-path> && timeout 300 uv run python examples/streaming_capture.py; echo \"rc=$?\"",
    "cd <guest-path> && timeout 900 make test 2>&1 | tail -8; echo \"rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && cat README.md | head -c 3500; echo ---; cat requirements.txt; cat .env.example",
    "cd <guest-path> && grep -rn \"Thread(\\|while True\\|schedule\\|heartbeat\\|--once\\|--now\\|webhook\" src/coolhand/*.py | grep -v \"^\\s*#\" | head -30; ls src/coolhand; cat .coldpass/* 2>/dev/null | head -5; ls -la .coldpass",
    "cd <guest-path> && sed -n 606,680p src/coolhand/client.py",
    "cd <guest-path> && PY=<guest-path> && cat > probe.json <<EOF\n{\"kind\":\"cli\",\"argv\":[\"$PY\",\"examples/streaming_capture.py\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"PASS streaming_capture: 5 sync streams captured with token metadata\"}\nEOF\ncat > claims.json <<EOF\n[\n{\"kind\":\"claim\",\"claim\":\"Streamed responses are automatically logged to Coolhand\",\"source\":\"Complete streamed response automatically logged to Coolhand!\",\"input\":\"sync SSE streams from anthropic and openai shapes via httpx\",\"expected\":\"streams captured with message id and token counts\",\"probe_kind\":\"cli\",\"argv\":[\"$PY\",\"examples/streaming_capture.py\"],\"expected_text\":\"PASS streaming_capture: 5 sync streams captured with token metadata\",\"cwd\":\"<guest-path>\"},\n{\"kind\":\"claim\",\"claim\":\"Importing coolhand auto-initializes monitoring\",\"source\":\"Auto-initializes and starts monitoring\",\"input\":\"import coolhand via auto_monitor_example.py\",\"expected\":\"monitoring reports active\",\"probe_kind\":\"cli\",\"argv\":[\"$PY\",\"examples/auto_monitor_example.py\"],\"expected_text\":\"Monitoring active: True\",\"cwd\":\"<guest-path>\"}\n]\nEOF\npython3 -I -c 'import json;[json.load(open(f)) for f in [\"probe.json\",\"claims.json\"]];print(\"json ok\")'",
    "cd <guest-path> && PY=<guest-path> && cat > examples.json <<EOF\n[\n{\"kind\":\"example\",\"claim\":\"Offline streaming capture check passes without keys\",\"source\":\"examples/README.md Streaming capture check\",\"input\":\"streaming_capture.py\",\"expected\":\"PASS lines and exit 0\",\"argv\":[\"$PY\",\"examples/streaming_capture.py\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"PASS streaming_capture: 5 sync streams captured with token metadata\"},\n{\"kind\":\"example\",\"claim\":\"Zero-config monitoring example runs end to end\",\"source\":\"examples/README.md table row auto_monitor_example.py\",\"input\":\"auto_monitor_example.py\",\"expected\":\"example completes and reports delivery attempted\",\"argv\":[\"$PY\",\"examples/auto_monitor_example.py\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"Auto-monitor example completed!\"},\n{\"kind\":\"example\",\"claim\":\"Repo test suite passes offline\",\"source\":\"Makefile test target\",\"input\":\"make test\",\"expected\":\"pytest summary with passed tests\",\"argv\":[\"make\",\"test\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"passed\"}\n]\nEOF\ncat > cycles.json <<EOF\n{\"detected\":true,\"checks\":[{\"claim\":\"Queued interactions are delivered by a background worker loop and drained on shutdown\",\"source\":\"src/coolhand/client.py\",\"quote\":\"item = self._dispatch_queue.get()\",\"schedule\":\"queue-driven, no timer: worker blocks on the dispatch queue and drains on shutdown\",\"method\":\"run-once: auto_monitor_example.py enqueues interactions then calls shutdown/flush\",\"input\":\"auto_monitor_example.py with no COOLHAND_API_KEY\",\"expected\":\"example reports data flushed and delivery attempted\",\"kind\":\"cli\",\"argv\":[\"$PY\",\"examples/auto_monitor_example.py\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"Data flushed and delivery attempted\"}]}\nEOF\npython3 -I -c 'import json;[json.load(open(f)) for f in [\"examples.json\",\"cycles.json\"]];print(\"json ok\")'",
    "cd <guest-path> && ls -la <guest-path> 2>&1 | head; <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -c 6000; echo \"rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo \"rc=$?\"; grep -o '\"valid\": [a-z]*' <guest-path> | sort | uniq -c; grep -o '\"verdict\": \"[a-z]*\"' <guest-path> | sort | uniq -c; grep -o '\"claim_checks[^[]*' <guest-path> | head -c 300; echo; grep -o '\"error[^,]*' <guest-path> | head -5",
    "cd <guest-path> && cat > report.json <<'EOF'\n{\"outcome\":\"working\",\"fault_owner\":null,\"operation\":\"Run the coolhand Python SDK's offline monitoring examples and repo test suite: HTTP stream capture (examples/streaming_capture.py) and zero-config auto-monitoring (examples/auto_monitor_example.py)\",\"operation_scope\":\"Local source snapshot at pinned tree, Python 3.12.3, Linux guest, no COOLHAND_API_KEY and no provider keys. Covers SDK interception of httpx streams and auto-init, not live delivery to Coolhand servers or provider calls.\",\"steps\":[\"python3 -m venv <guest-path> && pip install <guest-path> (coolhand 0.11.1 installed from source)\",\"make install (uv sync --all-extras, creates .venv on Python 3.12.3)\",\"uv run python examples/streaming_capture.py (PASS x5, exit 0)\",\"examples/auto_monitor_example.py (completed, exit 0)\",\"make test (1413 passed, 3 skipped)\",\"COOLHAND_WORKSPACE=... check.py --validate --replay (valid=true)\"],\"deviations\":[\"README says 'pip install coolhand'; installed the snapshot source instead to test the pinned code.\",\"The library has no console script or CLI; the documented runnable entry points are the examples/ scripts, which were used as the probe entry points.\",\"First run of examples/streaming_capture.py failed with ModuleNotFoundError: httpx (httpx is only in the 'test' extra); fixed by running the README-documented make install.\",\"HelpCenterDocs and Coolhand API calls were not exercised: no product CLI and no COOLHAND_API_KEY. Feedback during auto_monitor_example returns HTTP 401 without a key, which is expected for an unkeyed run.\",\"Git pin not applied: the workspace has no git metadata and I did not run the git init/fetch steps, so the snapshot was used as delivered.\",\"CDP endpoint: GET http://<internal-ip>:9226/json/version returned HTTP 200 with Chrome/155 JSON; no browser was needed by this SDK.\"],\"stuck_step\":null,\"main_blocker\":null,\"plain_failure\":null,\"suggested_fix\":null}\nEOF\npython3 -I -c 'import json;d=json.load(open(\"report.json\"));print(d[\"outcome\"], d[\"fault_owner\"])'; ls -la <guest-path>",
    "cd <guest-path> && sed -i 's/COOLHAND_WORKSPACE=\\.\\.\\. check\\.py/<env-var>=<guest-path> python3 -I <guest-path>' report.json && python3 -I -c 'import json;d=json.load(open(\"report.json\"));print([s for s in d[\"steps\"] if \"check\" in s])'"
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Run the coolhand Python SDK's offline monitoring examples and repo test suite: HTTP stream capture (examples/streaming_capture.py) and zero-config auto-monitoring (examples/auto_monitor_example.py)",
  "suggested_fix": null,
  "tokens_in": 564699,
  "tokens_out": 15024,
  "cost_usd": 0.02152488,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "<guest-path>",
          "examples/streaming_capture.py"
        ],
        "kind": "cli",
        "returncode": 0,
        "stdout": "PASS anthropic via iter_bytes: id and token counts captured\nPASS anthropic via iter_lines: id and token counts captured\nPASS openai via iter_lines: id and token counts captured\nPASS openai via iter_bytes: id and token counts captured\nPASS openai stopping at [DONE]: id and token counts captured\nPASS streaming_capture: 5 sync streams captured with token metadata",
        "stderr": "",
        "needs_credentials": false,
        "needs_browser": false,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 connection review, 8 known vulnerability. 8 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": 1,
        "path": "35.241.4.177:443",
        "process_count": 10
      },
      {
        "kind": "known-vulnerability",
        "count": 8,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 5
      }
    ],
    "context": [
      {
        "kind": "hardcoded-secret",
        "count": 8,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 4
      }
    ],
    "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=Coolhand-Labs--coolhand-python-claude-haiku-5-5-1793148580078383447",
    "evidence_file": "/data/safety/Coolhand-Labs--coolhand-python-claude-haiku-5-5-1793148580078383447.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.310 (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": "d0136ad4eab2d0577b60afd02f49d7b62e1851cf",
    "url": "https://github.com/Coolhand-Labs/coolhand-python"
  },
  "purpose": "test_rerun",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": "Coolhand-Labs--coolhand-python-claude-haiku-5-5-1793140674691279498",
  "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": "none",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "cli"
  ],
  "license": "Apache-2.0",
  "repo_url": "https://github.com/Coolhand-Labs/coolhand-python",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "both",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Queued interactions are delivered by a background worker loop and drained on shutdown",
      "source": "src/coolhand/client.py",
      "input": "auto_monitor_example.py with no COOLHAND_API_KEY",
      "expected": "example reports data flushed and delivery attempted",
      "command": "<guest-path> examples/auto_monitor_example.py",
      "schedule": "queue-driven, no timer: worker blocks on the dispatch queue and drains on shutdown",
      "method": "run-once: auto_monitor_example.py enqueues interactions then calls shutdown/flush",
      "verdict": "yes",
      "outcome": "Triggered one cycle by hand (run-once: auto_monitor_example.py enqueues interactions then calls shutdown/flush; normal trigger: queue-driven, no timer: worker blocks on the dispatch queue and drains on shutdown): Setting up demonstration environment...\n\nCoolhand Python SDK - Auto-Monitor Example\n=======================================================\nAuto-Initialization Example\n==================================================\n\u2713 Coolhand was automatically initialized!\n  Session ID: session_1793148889232\n  Monitoring enabled: True\n  Config source: Environment variables and auto-detection\n  Has API key: False\n\nZero-Configuration Usage\n------------------------------\nUsing Coolhand with zero configuration...\n\u2713 Submitted positive feedback\n\u2713 Submitted feedback with explanation\nMaking simulated OpenAI API request...\n\u2713 Request completed and automatically logged\nMaking simulated Anthropic API request...\n\u2713 Request completed and automatically logged\n\u2713 All requests automatically monitored and logged\n\nDifferent Setup Modes\n-------------------------\n\n1. Notebook Setup (interactive, verbose):\n   \u2713 silent: False\n\n2. Production Setup (silent):\n   \u2713 silent: True\n\n3. Self-Hosted Setup (custom base_url):\n   \u2713 base_url: https://coolhandlabs.com\n\nEnvironment Detection\n--------------------\nAuto-initialization activates when it detects:\n\u2713 AI API keys found: OPENAI_API_KEY\n\u25cb No AI/ML packages detected\n\u25cb Not in interactive session\n\nTo control auto-initialization:\n  - Set COOLHAND_AUTO_INIT=false to disable\n  - Set COOLHAND_ENABLED=true to force enable\n  - Set COOLHAND_API_KEY to enable with your API key\n\nMonitoring Context Manager\n-------------------------\nCurrent monitoring status: True\n\nTemporarily stopping and restarting monitoring:\n  Monitoring stopped \u2014 HTTP requests will pass through unlogged\n  Monitoring restored: True\n\nCollecting User Feedback\n-----------------------\n\u2713 Collected feedback on auto-monitoring experience\n\nFinal Status\n------------\nSession ID: session_1793148889232\nTotal interactions logged: 2\nMonitoring active: True\n\nCleaning up...\nData flushed and delivery attempted\n\n=======================================================\nAuto-monitor example completed!\n\nKey takeaways:\n1. Just 'import coolhand' can be enough to get started\n2. Auto-initialization detects AI/ML environments\n3. Zero configuration needed in many cases\n4. Pass silent=True/False and base_url to Coolhand() for environment-specific setups\n5. Environment variables control auto-initialization\nNo matching field provided. Feedback may not be linked to an LLM request. Consider providing one of: llm_request_log_id, llm_provider_unique_id, original_output, or client_unique_id\nFailed to submit feedback: HTTP 401 - Unauthorized\nNo matching field provided. Feedback may not be linked to an LLM request. Consider providing one of: llm_request_log_id, llm_provider_unique_id, original_output, or client_unique_id\nFailed to submit feedback: HTTP 401 - Unauthorized\nINFO:coolhand:HTTP monitoring started\nINFO:coolhand:Coolhand initialized (session: session_1793148890106)\nINFO:coolhand:HTTP monitoring started\nINFO:coolhand:Coolhand initialized (session: session_1793148890110)\nINFO:coolhand:HTTP monitoring started\nINFO:coolhand:Coolhand initialized (session: session_1793148890114)\nINFO:coolhand.httpx_interceptor:Global HTTP monitoring disabled\nINFO:coolhand:HTTP monitoring stopped\nINFO:coolhand.httpx_interceptor:Global HTTP monitoring enabled\nINFO:coolhand:HTTP monitoring started\nWARNING:coolhand.feedback_service:No matching field provided. Feedback may not be linked to an LLM request. Consider providing one of: llm_request_log_id, llm_provider_unique_id, original_output, or client_unique_id\nWARNING:coolhand.feedback_service:Failed to submit feedback: HTTP 401 - Unauthorized\nWARNING:coolhand.feedback_service:No matching field provided. Feedback may not be linked to an LLM request. Consider providing one of: llm_request_log_id, llm_provider_unique_id, original_output, or client_unique_id\nWARNING:coolhand.feedback_service:Failed to submit feedback: HTTP 401 - Unauthorized\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete",
      "evidence": "Setting up demonstration environment...\n\nCoolhand Python SDK - Auto-Monitor Example\n=======================================================\nAuto-Initialization Example\n==================================================\n\u2713 Coolhand was automatically initialized!\n  Session ID: session_1793148889232\n  Monitoring enabled: True\n  Config source: Environment variables and auto-detection\n  Has API key: False\n\nZero-Configuration Usage\n------------------------------\nUsing Coolhand with zero configuration...\n\u2713 Submitted positive feedback\n\u2713 Submitted feedback with explanation\nMaking simulated OpenAI API request...\n\u2713 Request completed and automatically logged\nMaking simulated Anthropic API request...\n\u2713 Request completed and automatically logged\n\u2713 All requests automatically monitored and logged\n\nDifferent Setup Modes\n-------------------------\n\n1. Notebook Setup (interactive, verbose):\n   \u2713 silent: False\n\n2. Production Setup (silent):\n   \u2713 silent: True\n\n3. Self-Hosted Setup (custom base_url):\n   \u2713 base_url: https://coolhandlabs.com\n\nEnvironment Detection\n--------------------\nAuto-initialization activates when it detects:\n\u2713 AI API keys found: OPENAI_API_KEY\n\u25cb No AI/ML packages detected\n\u25cb Not in interactive session\n\nTo control auto-initialization:\n  - Set COOLHAND_AUTO_INIT=false to disable\n  - Set COOLHAND_ENABLED=true to force enable\n  - Set COOLHAND_API_KEY to enable with your API key\n\nMonitoring Context Manager\n-------------------------\nCurrent monitoring status: True\n\nTemporarily stopping and restarting monitoring:\n  Monitoring stopped \u2014 HTTP requests will pass through unlogged\n  Monitoring restored: True\n\nCollecting User Feedback\n-----------------------\n\u2713 Collected feedback on auto-monitoring experience\n\nFinal Status\n------------\nSession ID: session_1793148889232\nTotal interactions logged: 2\nMonitoring active: True\n\nCleaning up...\nData flushed and delivery attempted\n\n=======================================================\nAuto-monitor example completed!\n\nKey takeaways:\n1. Just 'import coolhand' can be enough to get started\n2. Auto-initialization detects AI/ML environments\n3. Zero configuration needed in many cases\n4. Pass silent=True/False and base_url to Coolhand() for environment-specific setups\n5. Environment variables control auto-initialization\nNo matching field provided. Feedback may not be linked to an LLM request. Consider providing one of: llm_request_log_id, llm_provider_unique_id, original_output, or client_unique_id\nFailed to submit feedback: HTTP 401 - Unauthorized\nNo matching field provided. Feedback may not be linked to an LLM request. Consider providing one of: llm_request_log_id, llm_provider_unique_id, original_output, or client_unique_id\nFailed to submit feedback: HTTP 401 - Unauthorized\nINFO:coolhand:HTTP monitoring started\nINFO:coolhand:Coolhand initialized (session: session_1793148890106)\nINFO:coolhand:HTTP monitoring started\nINFO:coolhand:Coolhand initialized (session: session_1793148890110)\nINFO:coolhand:HTTP monitoring started\nINFO:coolhand:Coolhand initialized (session: session_1793148890114)\nINFO:coolhand.httpx_interceptor:Global HTTP monitoring disabled\nINFO:coolhand:HTTP monitoring stopped\nINFO:coolhand.httpx_interceptor:Global HTTP monitoring enabled\nINFO:coolhand:HTTP monitoring started\nWARNING:coolhand.feedback_service:No matching field provided. Feedback may not be linked to an LLM request. Consider providing one of: llm_request_log_id, llm_provider_unique_id, original_output, or client_unique_id\nWARNING:coolhand.feedback_service:Failed to submit feedback: HTTP 401 - Unauthorized\nWARNING:coolhand.feedback_service:No matching field provided. Feedback may not be linked to an LLM request. Consider providing one of: llm_request_log_id, llm_provider_unique_id, original_output, or client_unique_id\nWARNING:coolhand.feedback_service:Failed to submit feedback: HTTP 401 - Unauthorized\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete",
      "returncode": 0
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "Streamed responses are automatically logged to Coolhand",
      "source": "Complete streamed response automatically logged to Coolhand!",
      "input": "sync SSE streams from anthropic and openai shapes via httpx",
      "expected": "streams captured with message id and token counts",
      "command": "<guest-path> examples/streaming_capture.py",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: PASS streaming_capture: 5 sync streams captured with token metadata",
      "evidence": "PASS streaming_capture: 5 sync streams captured with token metadata\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "Importing coolhand auto-initializes monitoring",
      "source": "Auto-initializes and starts monitoring",
      "input": "import coolhand via auto_monitor_example.py",
      "expected": "monitoring reports active",
      "command": "<guest-path> examples/auto_monitor_example.py",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Monitoring active: True",
      "evidence": "Monitoring active: True\n\nCleaning up...\nData flushed and delivery attempted\n\n=======================================================\nAuto-monitor example completed!\n\nKey takeaways:\n1. Just 'import coolhand' can be enough to get started\n2. Auto-initialization detects AI/ML environments\n3. Zero configuration needed in many cases\n4. Pass silent=True/False and base_url to Coolhand() for environment-specific setups\n5. Environment variables control auto-initialization\nNo matching field provided. Feedback may not be linked to an LLM request. Consider providing one of: llm_request_log_id, llm_provider",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Offline streaming capture check passes without keys",
      "source": "examples/README.md Streaming capture check",
      "input": "streaming_capture.py",
      "command": "<guest-path> examples/streaming_capture.py",
      "evidence": "PASS anthropic via iter_bytes: id and token counts captured\nPASS anthropic via iter_lines: id and token counts captured\nPASS openai via iter_lines: id and token counts captured\nPASS openai via iter_bytes: id and token counts captured\nPASS openai stopping at [DONE]: id and token counts captured\nPASS streaming_capture: 5 sync streams captured with token metadata",
      "deferred": false,
      "expected": "PASS lines and exit 0",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Zero-config monitoring example runs end to end",
      "source": "examples/README.md table row auto_monitor_example.py",
      "input": "auto_monitor_example.py",
      "command": "<guest-path> examples/auto_monitor_example.py",
      "evidence": "id, original_output, or client_unique_id\nWARNING:coolhand.feedback_service:Failed to submit feedback: HTTP 401 - Unauthorized\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete\nINFO:coolhand.client:Shutting down Coolhand...\nINFO:coolhand.client:Coolhand shutdown complete",
      "deferred": false,
      "expected": "example completes and reports delivery attempted",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Repo test suite passes offline",
      "source": "Makefile test target",
      "input": "make test",
      "command": "make test",
      "evidence": "omDramatiqThread::test_pydantic_ai_multiple_tasks\n  <guest-path> DeprecationWarning: The model 'claude-3-5-haiku-20241022' is deprecated and will reach end-of-life on February 19th, 2026.\n  Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.\n    return cast(BetaMessage, await send(False))\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n================= 1413 passed, 3 skipped, 3 warnings in 45.97s =================",
      "deferred": false,
      "expected": "pytest summary with passed tests",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "archived": false,
    "commits_90d": 96,
    "last_commit_at": "2026-10-27T19:34:06Z",
    "last_release_at": "2026-10-27T19:34:41Z",
    "median_reply_hours": null,
    "merged_prs_90d": 97,
    "note": "slow: last commit 0 days ago; 96 commits and 97 merged PRs in 90 days; 17 open issues, 2 open PRs; 0 of 19 recent threads got a maintainer reply; latest release 2026-10-27",
    "open_issues": 17,
    "open_prs": 2,
    "reply_share": 0.0,
    "reply_threads": 19,
    "verdict": "slow"
  },
  "maintenance_verdict": "slow",
  "maintenance_note": "slow: last commit 0 days ago; 96 commits and 97 merged PRs in 90 days; 17 open issues, 2 open PRs; 0 of 19 recent threads got a maintainer reply; latest release 2026-10-27",
  "maintained": "active",
  "maintained_note": "last commit 0 days ago; 10 open issues, 3 answered or closed",
  "last_commit_at": "2026-10-27T19:36:39Z",
  "last_release_at": "2026-10-27T19:34:41Z",
  "open_issues": 10,
  "answered_issues": 3,
  "platforms_claimed": [
    "linux"
  ],
  "topic": "agent-harness",
  "agent_interfaces": [
    {
      "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-28T00:55:54.013057+00:00",
  "tested_commit": "d0136ad4eab2d0577b60afd02f49d7b62e1851cf",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.310 (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": "Coolhand-Labs/coolhand-python",
    "source": "https://github.com/Coolhand-Labs/coolhand-python",
    "commit": "d0136ad4eab2d0577b60afd02f49d7b62e1851cf",
    "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.310 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "d0136ad4eab2d0577b60afd02f49d7b62e1851cf",
      "url": "https://github.com/Coolhand-Labs/coolhand-python"
    },
    "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 the coolhand Python SDK's offline monitoring examples and repo test suite: HTTP stream capture (examples/streaming_capture.py) and zero-config auto-monitoring (examples/auto_monitor_example.py)",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "repo",
    "test_version": "readme-d5b140d3c0f8b95c2dd6fe6fc381a303cacb92679582c22317d8e78b572f0cf2",
    "evidence_version": null
  },
  "transcript_url": "/transcripts/Coolhand-Labs--coolhand-python-claude-haiku-5-5-1793148580078383447.txt",
  "report_url": "/reports/Coolhand-Labs--coolhand-python-claude-haiku-5-5-1793148580078383447.json"
}
