{
  "run_id": "awlevin--typesafe-computer-use-claude-haiku-5-5-1792806725799643543",
  "date": "2026-10-24T01:59:44.341425+00:00",
  "repo": "awlevin/typesafe-computer-use",
  "kind": "repo",
  "source": "https://github.com/awlevin/typesafe-computer-use",
  "commit": "44ca11f0935b021b73020825da054b5c92cc1288",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
  "pass": null,
  "outcome": "needs_credentials",
  "time_to_working_s": null,
  "total_s": 458.541757106781,
  "steps": [
    "cd <guest-path> && pwd && ls -la && id -u && python3 --version && cat README.md 2>/dev/null | head -200; ls /inputs 2>/dev/null; ls <guest-path> 2>/dev/null",
    "cd <guest-path> && git status 2>&1 | head -3; cat .coldpass/* 2>/dev/null | head -5; ls .coldpass; sed -n 1,80p docs/sandbox.md; echo ----; sed -n 1,60p docs/browser-backend.md; echo ----; grep -n \"requires-python\" pyproject.toml; grep -n -i \"platform\\|darwin\\|linux\" pyproject.toml | head; which uv; uv --version 2>&1",
    "cd <guest-path> && git init -q && git remote add origin https://github.com/awlevin/typesafe-computer-use && timeout 120 git fetch --depth 1 origin 44ca11f0935b021b73020825da054b5c92cc1288 2>&1 | tail -5; git reset --mixed FETCH_HEAD 2>&1 | tail -3; git log --oneline -1 2>&1; git status --short 2>&1 | head -20",
    "cd <guest-path> && (curl -LsSf https://astral.sh/uv/install.sh | sh) 2>&1 | tail -5; export PATH=\"$HOME/.local/bin:$PATH\"; uv --version && uv sync 2>&1 | tail -15",
    "cd <guest-path> && export PATH=\"$HOME/.local/bin:$PATH\" && cat .env.example; echo ----; timeout 120 uv run clicker \"open the Playground\" 2>&1 | tail -30; echo \"rc=$?\"",
    "cd <guest-path> && env | grep -i -E \"cdp|chrome|browser|typesafe|anthropic\" | sed 's/=.*/=<set>/'; grep -rn -i \"CDP\\|remote-debugging\\|CLICKER_BROWSER_CDP\\|debug\" typesafe_computer_use/*.py 2>/dev/null | grep -i \"environ\\|getenv\\|cdp_url\\|endpoint\" | head; grep -n \"clicker-bench\" pyproject.toml; ls typesafe_computer_use",
    "cd <guest-path> && export PATH=\"$HOME/.local/bin:$PATH\" && timeout 120 uv run clicker-bench perception --url https://news.ycombinator.com > /tmp/bench.out 2>&1; echo \"rc=$?\"; tail -25 /tmp/bench.out; which google-chrome chromium chromium-browser 2>&1 | head -3",
    "cd <guest-path> && export PATH=\"$HOME/.local/bin:$PATH\" && uv run ruff check . 2>&1 | tail -3; echo \"ruff-check rc=${PIPESTATUS[0]}\"; uv run ruff format --check . 2>&1 | tail -2; timeout 600 uv run pytest -q > /tmp/pytest.out 2>&1; echo \"pytest rc=$?\"; tail -8 /tmp/pytest.out",
    "cd <guest-path> && export PATH=\"$HOME/.local/bin:$PATH\" && env -u TYPESAFE_API_KEY uv run clicker \"open the Playground\" > /tmp/clicker.out 2>&1; echo \"rc=$?\"; cat /tmp/clicker.out; ls <guest-path>; sed -n 1,60p <guest-path> | head -80",
    "cd <guest-path> && grep -n \"credentials_error\\|def check_\\|'checks'\\|expected_returncode\\|'kind'\\|stays_running\\|cycles\\|def main\\|--validate\\|--replay\\|argv\\[0\\]\\|def validate_\" check.py | head -120",
    "cd <guest-path> && sed -n 700,725p check.py; sed -n 1225,1260p check.py",
    "cd <guest-path> && grep -rn -i \"cron\\|schedul\\|--once\\|--now\\|webhook\\|while True\\|sleep(\" typesafe_computer_use/cli.py typesafe_computer_use/runner.py typesafe_computer_use/browser/bench.py pyproject.toml 2>/dev/null | head -15; grep -n \"Clear the terminal\\|uv run ruff check\\|Ctrl-C\" README.md | head",
    "cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'\n{\"checks\":[{\"check\":\"credentials_error\",\"kind\":\"cli\",\"argv\":[\"uv\",\"run\",\"clicker\",\"open the Playground\"],\"cwd\":\"<guest-path>\",\"expected_returncode\":1,\"expected_text\":\"TYPESAFE_API_KEY is not set\"}]}\nEOF\ncat > .coldpass/claims.json <<'EOF'\n[\n{\"kind\":\"claim\",\"claim\":\"Before a pull request, ruff and tests must pass\",\"source\":\"README.md\",\"input\":\"repository checkout\",\"expected\":\"ruff check passes\",\"probe_kind\":\"cli\",\"argv\":[\"uv\",\"run\",\"ruff\",\"check\",\".\"],\"expected_text\":\"All checks passed!\",\"cwd\":\"<guest-path>\"},\n{\"kind\":\"claim\",\"claim\":\"The dry run must be started with a dry run before acting on the real mouse and keyboard\",\"source\":\"It drives your real mouse and keyboard, so start with a dry run.\",\"testable\":false,\"reason\":\"The clicker drives macOS only (macos.py, Screen Recording and Accessibility permissions). Its dry run also needs TYPESAFE_API_KEY, which is not available in this Linux guest; the run stopped with 'TYPESAFE_API_KEY is not set'.\"}\n]\nEOF\ncat > .coldpass/examples.json <<'EOF'\n[\n{\"kind\":\"example\",\"claim\":\"Contributor test suite passes\",\"source\":\"README.md Contributing: uv run pytest -q must pass\",\"input\":\"repository checkout\",\"expected\":\"all offline tests pass\",\"argv\":[\"uv\",\"run\",\"pytest\",\"-q\"],\"cwd\":\"<guest-path>\",\"env\":{},\"expected_text\":\"passed\"},\n{\"kind\":\"example\",\"claim\":\"Contributor lint check passes\",\"source\":\"README.md Contributing: uv run ruff check . must pass\",\"input\":\"repository checkout\",\"expected\":\"All checks passed!\",\"argv\":[\"uv\",\"run\",\"ruff\",\"check\",\".\"],\"cwd\":\"<guest-path>\",\"env\":{},\"expected_text\":\"All checks passed!\"}\n]\nEOF\ncat > .coldpass/cycles.json <<'EOF'\n{\"detected\":false,\"reason\":\"Entry points inspected (typesafe_computer_use/cli.py, runner.py, browser/bench.py, pyproject.toml scripts). clicker runs one goal per invocation; the only while-True loop (runner.py:182) is the step loop inside a single run, not a scheduler. No cron, --once/--now, or webhook entry point. Trigger is a manual invocation, which cannot run here without TYPESAFE_API_KEY and macOS.\",\"checks\":[]}\nEOF\nmkdir -p .coldpass/out && export PATH=\"$HOME/.local/bin:$PATH\" && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -c 3000",
    "cd <guest-path> && rmdir .coldpass/out 2>/dev/null; python3 - <<'EOF'\nimport json\np='<guest-path>'\nc=json.load(open(p))\nc[0]['source']=\"Before a pull request, `uv run ruff check . && uv run ruff format --check .` and `uv run pytest -q` must pass.\"\njson.dump(c,open(p,'w'),indent=1)\nEOF\nexport PATH=\"$HOME/.local/bin:$PATH\" && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -c 4000",
    "cd <guest-path> && python3 - <<'EOF'\nimport json\np='<guest-path>'\nc=json.load(open(p))\nc[0]['source']=\"`uv run ruff check . && uv run ruff format --check .` and `uv run pytest -q` must pass.\"\nc[0]['claim']=\"Contributor checks (ruff and pytest) must pass\"\njson.dump(c,open(p,'w'),indent=1)\nEOF\ngrep -c \"must pass\" README.md; export PATH=\"$HOME/.local/bin:$PATH\" && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -c 4000",
    "cd <guest-path> && export PATH=\"$HOME/.local/bin:$PATH\" && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay > /tmp/val.json 2>&1; echo rc=$?; python3 -I -c \"import json;d=json.load(open('/tmp/val.json'));print(d['valid'],d['problems'])\"",
    "cd <guest-path> && python3 - <<'EOF'\nimport json\nr={\n\"outcome\":\"needs_credentials\",\n\"fault_owner\":\"prerequisite\",\n\"operation\":\"Run the README's first-run dry run: uv run clicker \\\"open the Playground\\\"\",\n\"operation_scope\":\"Linux guest (Ubuntu, Python 3.12.3, uv 0.13.5). The README targets macOS 14+ only; the desktop clicker needs a TYPESAFE_API_KEY and macOS Screen Recording/Accessibility. Only the offline contributor checks (ruff, pytest) and the credential-error path of the documented clicker command were exercised.\",\n\"steps\":[\n\"git init; git remote add origin https://github.com/awlevin/typesafe-computer-use; git fetch --depth 1 origin 44ca11f0935b021b73020825da054b5c92cc1288; git reset --mixed FETCH_HEAD\",\n\"curl -LsSf https://astral.sh/uv/install.sh | sh  (installed uv 0.13.5 to ~/.local/bin)\",\n\"uv sync  (Python 3.12.3 satisfies requires-python >=3.12; installed typesafe-computer-use 0.2.0)\",\n\"uv run clicker \\\"open the Playground\\\"  -> exit 1: 'TYPESAFE_API_KEY is not set (export it or put it in .env)'\",\n\"uv run clicker-bench perception --url https://news.ycombinator.com  -> CDPError: no Chrome/Chromium binary found\",\n\"uv run ruff check .  -> All checks passed!\",\n\"uv run ruff format --check .  -> 89 files already formatted\",\n\"uv run pytest -q  -> 729 passed, 3 skipped, 1 xfailed\"\n],\n\"deviations\":[\n\"Workspace was not a git checkout; ran the pinned git init/fetch/reset setup from the task.\",\n\"uv was not installed; installed it with the official curl | sh installer.\",\n\"Could not run the product's real desktop step: no TYPESAFE_API_KEY (not supplied; not obtained) and the clicker is macOS-only, so no live dry run or --act run happened. The probe records the documented command's credential error instead.\",\n\"clicker-bench browser backend could not start: no Chrome/Chromium binary in the guest and no shared CDP endpoint is set in the environment. Chrome was not downloaded, per instructions.\",\n\"Offline contributor checks (ruff, pytest) were run as the documented substitute for a product operation; they do not exercise the product's behavior.\"\n],\n\"stuck_step\":\"uv run clicker \\\"open the Playground\\\" (README First run, dry run)\",\n\"main_blocker\":\"The clicker needs a TYPESAFE_API_KEY that was not provided, and its desktop adapter only runs on macOS (the guest is Linux).\",\n\"plain_failure\":\"The app could not be run for real here. It stops at start-up asking for a TypeSafe API key, and its desktop mode only works on a Mac with screen and keyboard permissions. The Linux browser mode also needs a Chrome install and a shared Chrome debugging address, neither of which this guest has. The project's own offline tests pass (729 passed), but that does not prove the app works.\",\n\"suggested_fix\":\"Provide a TYPESAFE_API_KEY in .env and run the dry run on macOS 14+ with Screen Recording and Accessibility granted. For Linux, supply a Chrome binary and a shared CDP endpoint, then run clicker-bench perception against it. Alternatively, document that the desktop clicker is macOS-only.\"\n}\nimport os\nos.makedirs('<guest-path>',exist_ok=True)\njson.dump(r,open('<guest-path>','w'),indent=1)\nprint(\"ok\")\nEOF\nexport PATH=\"$HOME/.local/bin:$PATH\" && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay > /tmp/val2.json 2>&1; python3 -I -c \"import json;d=json.load(open('/tmp/val2.json'));print(d['valid'],d['problems'])\"; ls -la .coldpass; ps aux | grep -i -E \"chrome|clicker\" | grep -v grep | head -3"
  ],
  "stuck_step": "uv run clicker \"open the Playground\" (README First run, dry run)",
  "error_excerpt": "The clicker needs a TYPESAFE_API_KEY that was not provided, and its desktop adapter only runs on macOS (the guest is Linux).",
  "what_it_did": "Run the README's first-run dry run: uv run clicker \"open the Playground\"",
  "suggested_fix": "Provide a TYPESAFE_API_KEY in .env and run the dry run on macOS 14+ with Screen Recording and Accessibility granted. For Linux, supply a Chrome binary and a shared CDP endpoint, then run clicker-bench perception against it. Alternatively, document that the desktop clicker is macOS-only.",
  "tokens_in": 372272,
  "tokens_out": 11835,
  "cost_usd": 0.015708259999999998,
  "usage_complete": true,
  "checks": [
    {
      "status": "PASS",
      "details": {
        "working": false,
        "argv": [
          "uv",
          "run",
          "clicker",
          "open the Playground"
        ],
        "kind": "cli",
        "returncode": 1,
        "stdout": "",
        "stderr": "TYPESAFE_API_KEY is not set (export it or put it in .env)",
        "needs_credentials": true,
        "needs_browser": false,
        "scope": "partial: missing credentials"
      },
      "check": "credentials_error",
      "optional": false
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 download and execute, 43 known vulnerability.",
    "findings": [
      {
        "kind": "download-and-execute",
        "count": 1,
        "note": "Source contains download and execute; review its purpose.",
        "location_count": 1,
        "path": "infra/gcp/startup.sh"
      },
      {
        "kind": "known-vulnerability",
        "count": 43,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 2
      }
    ],
    "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=awlevin--typesafe-computer-use-claude-haiku-5-5-1792806725799643543",
    "evidence_file": "/data/safety/awlevin--typesafe-computer-use-claude-haiku-5-5-1792806725799643543.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": 17,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "44ca11f0935b021b73020825da054b5c92cc1288",
    "url": "https://github.com/awlevin/typesafe-computer-use"
  },
  "purpose": "test_rerun",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": "prerequisite",
    "status": "diagnosed",
    "reason": "The clicker needs a TYPESAFE_API_KEY that was not provided, and its desktop adapter only runs on macOS (the guest is Linux)."
  },
  "fix_id": null,
  "verifies_run_id": "awlevin--typesafe-computer-use-claude-haiku-5-5-1792805045198799479",
  "hosting": null,
  "operation_scope": "partial checks",
  "tool_calls": 17,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "partly_checked",
  "works": "partly",
  "install_s": null,
  "first_use_s": null,
  "mcp": "none",
  "needs": [
    "credentials"
  ],
  "needs_which": "TYPESAFE_API_KEY",
  "agent_interface": [],
  "license": "MIT",
  "repo_url": "https://github.com/awlevin/typesafe-computer-use",
  "cost_to_try": "needs an account or key",
  "hardware": null,
  "what_failed": "The clicker needs a TYPESAFE_API_KEY that was not provided, and its desktop adapter only runs on macOS (the guest is Linux).",
  "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 (typesafe_computer_use/cli.py, runner.py, browser/bench.py, pyproject.toml scripts). clicker runs one goal per invocation; the only while-True loop (runner.py:182) is the step loop inside a single run, not a scheduler. No cron, --once/--now, or webhook entry point. Trigger is a manual invocation, which cannot run here without TYPESAFE_API_KEY and macOS.",
      "evidence": "Entry points inspected (typesafe_computer_use/cli.py, runner.py, browser/bench.py, pyproject.toml scripts). clicker runs one goal per invocation; the only while-True loop (runner.py:182) is the step loop inside a single run, not a scheduler. No cron, --once/--now, or webhook entry point. Trigger is a manual invocation, which cannot run here without TYPESAFE_API_KEY and macOS.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "Contributor checks (ruff and pytest) must pass",
      "source": "`uv run ruff check . && uv run ruff format --check .` and `uv run pytest -q` must pass.",
      "input": "repository checkout",
      "expected": "ruff check passes",
      "command": "uv run ruff check .",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: All checks passed!",
      "evidence": "All checks passed!\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "The dry run must be started with a dry run before acting on the real mouse and keyboard",
      "source": "It drives your real mouse and keyboard, so start with a dry run.",
      "input": "",
      "expected": "",
      "command": "",
      "verdict": "blocked",
      "outcome": "The clicker drives macOS only (macos.py, Screen Recording and Accessibility permissions). Its dry run also needs TYPESAFE_API_KEY, which is not available in this Linux guest; the run stopped with 'TYPESAFE_API_KEY is not set'.",
      "evidence": "The clicker drives macOS only (macos.py, Screen Recording and Accessibility permissions). Its dry run also needs TYPESAFE_API_KEY, which is not available in this Linux guest; the run stopped with 'TYPESAFE_API_KEY is not set'.",
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Contributor test suite passes",
      "source": "README.md Contributing: uv run pytest -q must pass",
      "input": "repository checkout",
      "command": "uv run pytest -q",
      "evidence": "s............s........................................................ [ 49%]\n.........................................................s.............. [ 58%]\n........................................................................ [ 68%]\n........................................................................ [ 78%]\n........................................................................ [ 88%]\n..................x..................................................... [ 98%]\n.............                                                            [100%]\n729 passed, 3 skipped, 1 xfailed in 47.31s",
      "deferred": false,
      "expected": "all offline tests pass",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Contributor lint check passes",
      "source": "README.md Contributing: uv run ruff check . must pass",
      "input": "repository checkout",
      "command": "uv run ruff check .",
      "evidence": "All checks passed!",
      "deferred": false,
      "expected": "All checks passed!",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "partly",
  "maintenance": {
    "archived": false,
    "commits_90d": 116,
    "last_commit_at": "2026-09-29T22:47:14Z",
    "last_release_at": null,
    "median_reply_hours": 113.5,
    "merged_prs_90d": 27,
    "note": "actively maintained: last commit 24 days ago; 116 commits and 27 merged PRs in 90 days; 15 open issues, 26 open PRs; 1 of 30 recent threads got a maintainer reply, median first reply 113.5h; no releases",
    "open_issues": 15,
    "open_prs": 26,
    "reply_share": 0.03,
    "reply_threads": 30,
    "verdict": "maintained"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 24 days ago; 116 commits and 27 merged PRs in 90 days; 15 open issues, 26 open PRs; 1 of 30 recent threads got a maintainer reply, median first reply 113.5h; no releases",
  "maintained": "active",
  "maintained_note": "last commit 24 days ago; 4 open issues, 1 answered or closed",
  "last_commit_at": "2026-09-29T23:33:46Z",
  "last_release_at": null,
  "open_issues": 4,
  "answered_issues": 1,
  "platforms_claimed": [
    "linux",
    "mac",
    "windows"
  ],
  "topic": "agent-harness",
  "agent_interfaces": [
    {
      "interface": "cli",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": false
    }
  ],
  "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-24T01:59:44.341425+00:00",
  "tested_commit": "44ca11f0935b021b73020825da054b5c92cc1288",
  "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": "awlevin/typesafe-computer-use",
    "source": "https://github.com/awlevin/typesafe-computer-use",
    "commit": "44ca11f0935b021b73020825da054b5c92cc1288",
    "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": "44ca11f0935b021b73020825da054b5c92cc1288",
      "url": "https://github.com/awlevin/typesafe-computer-use"
    },
    "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 README's first-run dry run: uv run clicker \"open the Playground\"",
    "operation_scope": "partial checks",
    "hosting": null,
    "kind": "repo",
    "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
    "evidence_version": null
  },
  "transcript_url": null,
  "report_url": "/reports/awlevin--typesafe-computer-use-claude-haiku-5-5-1792806725799643543.json"
}
