{
  "run_id": "TayHCode--search-first-claude-haiku-5-5-1792607402277902526",
  "date": "2026-10-21T18:33:24.562693+00:00",
  "repo": "TayHCode/search-first",
  "kind": "mcp",
  "source": "https://github.com/TayHCode/search-first",
  "commit": "2b7c5fd54b96bdd2a736eb2ae25db35d2cb71d7d",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-b08aaa568d9005099b995fc51d01450b15d399d9445aa4d6f554b73c4f2218b9",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 149.528951151995,
  "total_s": 202.28470849990845,
  "steps": [
    "uname -a; id -u; cat /etc/os-release 2>/dev/null | head -3; cd <guest-path> && pwd && ls -la && git status 2>&1 | head -2",
    "cd <guest-path> && cat README.md 2>/dev/null | head -300",
    "cd <guest-path> && sed -n 300,600p README.md | grep -v '^$' | head -220; echo ---; ls .coldpass; cat AGENTS.md; echo ---; /opt/homebrew/bin/python3 --version; which uv uvx; ls scripts; cat scripts/check_python.py | head -40",
    "cd <guest-path> && git init -q && git remote add origin https://github.com/TayHCode/search-first.git && (git fetch --depth 1 origin 2b7c5fd54b96bdd2a736eb2ae25db35d2cb71d7d 2>&1 | tail -3); git reset --mixed FETCH_HEAD 2>&1 | tail -2; git log --oneline -1 2>&1; echo ---; mkdir -p \"$HOME/uv-bin\" && curl -LsSf https://astral.sh/uv/install.sh | UV_INSTALL_DIR=\"$HOME/uv-bin\" UV_NO_MODIFY_PATH=1 sh 2>&1 | tail -3; \"$HOME/uv-bin/uv\" --version",
    "cd <guest-path> && echo $HOME && UVX=\"$HOME/uv-bin/uvx\"; \"$UVX\" --python 3.12 --from . search-first --help 2>&1 | tail -40; echo \"rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && grep -n '^#' README.md; echo ---; sed -n '/^## Proof and development/,/^## [A-Z]/p' README.md | head -80; echo ---; env | grep -i -E 'token|proxy' | sed 's/=.*/=<set>/'; curl -sS -m 10 -o /dev/null -w '%{http_code}\\n' https://api.github.com/rate_limit",
    "cd <guest-path> && UV=\"$HOME/uv-bin/uv\"; \"$UV\" sync --locked --extra dev --python 3.12 2>&1 | tail -5; echo \"sync rc=${PIPESTATUS[0]}\"; timeout 600 \"$UV\" run --locked pytest -q 2>&1 | tail -8; echo \"pytest rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && UV=\"$HOME/uv-bin/uv\"; \"$UV\" run --locked pytest -q 2>&1 | tail -8; echo \"pytest rc=${PIPESTATUS[0]}\"; \"$UV\" run --locked ruff check . 2>&1 | tail -2; echo \"ruff rc=${PIPESTATUS[0]}\"",
    "mkdir -p <guest-path> && cat > <guest-path> <<'EOF'\nimport asyncio, json, sys\nfrom mcp import ClientSession, StdioServerParameters\nfrom mcp.client.stdio import stdio_client\nUVX = \"<guest-path>\"\nasync def main():\n    params = StdioServerParameters(command=sys.argv[1], args=sys.argv[2:])\n    async with stdio_client(params) as (r, w):\n        async with ClientSession(r, w) as s:\n            await s.initialize()\n            tools = await s.list_tools()\n            print(\"TOOLS:\", [t.name for t in tools.tools])\n            res = await s.call_tool(\"search_existing\", {\n                \"idea\": \"a terminal tool that closes idle browser tabs automatically\",\n                \"queries\": [\"chrome idle tabs\", \"close inactive tabs\"],\n                \"limit\": 3})\n            for c in res.content:\n                print(c.text[:1500])\nasyncio.run(main())\nEOF\nln -sf \"$HOME/uv-bin/uvx\" <guest-path>; cd <guest-path> && <guest-path> -I <guest-path> <guest-path> --python 3.12 --from <guest-path> search-first 2>&1 | tail -60",
    "rm -f <guest-path>; cd <guest-path> && <guest-path> -I <guest-path> <guest-path> --python 3.12 --from <guest-path> search-first 2>&1 | tail -40",
    "ls -la <guest-path>; cd <guest-path> && <guest-path> -I <guest-path> <guest-path> --python 3.12 --from <guest-path> search-first 2>&1 | tail -40",
    "cd <guest-path> && grep -rn -i -E 'cron|schedul|--once|--now|while True|sleep\\(|webhook' src pyproject.toml | head; echo \"grep rc=$?\"; UV=\"<guest-path>\"; \"$UV\" run --locked mypy 2>&1 | tail -2; echo \"mypy rc=${PIPESTATUS[0]}\"; \"$UV\" run --locked ruff format --check . 2>&1 | tail -1; echo \"fmt rc=${PIPESTATUS[0]}\"; \"$UV\" run --locked python -m build --outdir <guest-path> 2>&1 | tail -2; echo \"build rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && sed -n 40,60p src/search_first/discovery.py; grep -n 'def main\\|add_argument' src/search_first/*.py | head -30",
    "cat > <guest-path> <<'EOF'\nimport asyncio, sys\nfrom mcp import ClientSession, StdioServerParameters\nfrom mcp.client.stdio import stdio_client\nasync def main():\n    async with stdio_client(StdioServerParameters(command=sys.argv[1], args=sys.argv[2:])) as (r, w):\n        async with ClientSession(r, w) as s:\n            await s.initialize()\n            res = await s.call_tool(\"inspect_repo\", {\"repo\": \"TayHCode/search-first\"})\n            for c in res.content:\n                print(c.text[:700])\nasyncio.run(main())\nEOF\ncd <guest-path> && <guest-path> -I <guest-path> <guest-path> --python 3.12 --from <guest-path> search-first 2>&1 | grep -v '^HTTP' | tail -30",
    "cd <guest-path> && grep -c \"An MCP server that discovers existing public projects, explains a ranked shortlist,\" README.md; grep -c \"README excerpt, SPDX license/name, size in KB, up to five last commits, open issue\" README.md; grep -c \"Accepts \\`owner/repo\\` or\" README.md; grep -c \"All automated tests use recorded public fixtures\" README.md; grep -c \"uv run --locked pytest -q\" README.md\ncat > .coldpass/probe.json <<'EOF'\n{\"kind\":\"mcp\",\"argv\":[\"<guest-path>\",\"--python\",\"3.12\",\"--from\",\"<guest-path>\",\"search-first\"],\"cwd\":\"<guest-path>\",\"tool\":\"search_existing\",\"arguments\":{\"idea\":\"a terminal tool that closes idle browser tabs automatically\",\"queries\":[\"chrome idle tabs\",\"close inactive tabs\"],\"limit\":3},\"expected_text\":\"TayHCode/cdpidletabs\"}\nEOF\ncat > .coldpass/claims.json <<'EOF'\n[\n {\"kind\":\"claim\",\"claim\":\"search_existing discovers existing public GitHub projects and returns a ranked shortlist with a verdict for an idea\",\"source\":\"An MCP server that discovers existing public projects, explains a ranked shortlist,\",\"input\":\"idea: a terminal tool that closes idle browser tabs automatically; queries chrome idle tabs and close inactive tabs; limit 3\",\"expected\":\"JSON containing a verdict and candidates ranked from GitHub search, including TayHCode/cdpidletabs\",\"probe_kind\":\"mcp\",\"argv\":[\"<guest-path>\",\"--python\",\"3.12\",\"--from\",\"<guest-path>\",\"search-first\"],\"tool\":\"search_existing\",\"arguments\":{\"idea\":\"a terminal tool that closes idle browser tabs automatically\",\"queries\":[\"chrome idle tabs\",\"close inactive tabs\"],\"limit\":3},\"expected_text\":\"TayHCode/cdpidletabs\",\"cwd\":\"<guest-path>\"},\n {\"kind\":\"claim\",\"claim\":\"inspect_repo returns the SPDX license and name of a public repository\",\"source\":\"README excerpt, SPDX license/name, size in KB, up to five last commits, open issue\",\"input\":\"repo: TayHCode/search-first\",\"expected\":\"JSON with license_name MIT License for TayHCode/search-first\",\"probe_kind\":\"mcp\",\"argv\":[\"<guest-path>\",\"--python\",\"3.12\",\"--from\",\"<guest-path>\",\"search-first\"],\"tool\":\"inspect_repo\",\"arguments\":{\"repo\":\"TayHCode/search-first\"},\"expected_text\":\"MIT License\",\"cwd\":\"<guest-path>\"}\n]\nEOF\ncat > .coldpass/examples.json <<'EOF'\n[\n {\"kind\":\"example\",\"claim\":\"Automated test suite passes using the documented locked dev environment\",\"source\":\"README.md#proof-and-development\",\"input\":\"uv run --locked pytest -q\",\"expected\":\"all tests pass\",\"argv\":[\"<guest-path>\",\"run\",\"--locked\",\"pytest\",\"-q\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"201 passed\"},\n {\"kind\":\"example\",\"claim\":\"Ruff lint check passes on the repository\",\"source\":\"README.md#proof-and-development\",\"input\":\"uv run --locked ruff check .\",\"expected\":\"no lint findings\",\"argv\":[\"<guest-path>\",\"run\",\"--locked\",\"ruff\",\"check\",\".\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"All checks passed!\"},\n {\"kind\":\"example\",\"claim\":\"Type check passes on the source\",\"source\":\"README.md#proof-and-development\",\"input\":\"uv run --locked mypy\",\"expected\":\"no type errors\",\"argv\":[\"<guest-path>\",\"run\",\"--locked\",\"mypy\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"Success: no issues found in 7 source files\"}\n]\nEOF\ncat > .coldpass/cycles.json <<'EOF'\n{\"detected\":false,\"reason\":\"Entry points inspected: src/search_first/server.py main() runs a stdio or streamable-http MCP server on demand with no cron, scheduler, --once/--now, or webhook; the only while True loop (discovery.py clean_untrusted_text) strips HTML comments; ranking.py mentions 'schedule' only as a search keyword. The product runs as a request-driven MCP server, so there is no product cycle.\",\"checks\":[]}\nEOF\nfor f in probe claims examples cycles; do <guest-path> -I -c \"import json,sys;json.load(open('.coldpass/$f.json'));print('$f ok')\"; done; ls -la .coldpass",
    "cd <guest-path> && COLDPASS_WORKSPACE=<guest-path> /opt/homebrew/bin/python3 -I <guest-path> --validate --replay 2>&1 | tail -80; echo \"rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && rm -rf <guest-path> && cat > .coldpass/report.json <<'EOF'\n{\"outcome\":\"working\",\"fault_owner\":null,\"operation\":\"Start the search-first MCP server over stdio with the README uvx command and call search_existing (and inspect_repo) to get a real ranked GitHub shortlist for an idea\",\"operation_scope\":\"Unauthenticated (no GITHUB_TOKEN): 2 search variants per call, public GitHub only, live network to api.github.com; Python 3.12 downloaded by uv; macOS arm64 guest. Not tested: Streamable HTTP with auth, Claude Desktop/Code, and token-authenticated searches.\",\"steps\":[\"git init; git remote add origin https://github.com/TayHCode/search-first.git; git fetch --depth 1 origin 2b7c5fd54b96bdd2a736eb2ae25db35d2cb71d7d; git reset --mixed FETCH_HEAD\",\"curl -LsSf https://astral.sh/uv/install.sh | UV_INSTALL_DIR=\\\"$HOME/uv-bin\\\" UV_NO_MODIFY_PATH=1 sh\",\"uvx --python 3.12 --from . search-first --help\",\"uv sync --locked --extra dev --python 3.12\",\"uv run --locked pytest -q\",\"uv run --locked ruff check .\",\"uv run --locked ruff format --check .\",\"uv run --locked mypy\",\"uv run --locked python -m build\",\"uvx --python 3.12 --from . search-first (stdio MCP server, exercised via an MCP client calling search_existing and inspect_repo)\"],\"deviations\":[\"Guest is macOS arm64 (Darwin), not Linux; the README's macOS uvx route was used.\",\"uv was not installed in the guest, so the README's official uv installer was run with UV_INSTALL_DIR in a user-local folder ($HOME/uv-bin, which is <guest-path>) and UV_NO_MODIFY_PATH=1. uv 0.13.4 installed.\",\"Workspace was not a git repo; git init and the pinned fetch/reset were run as the task instructed. The fetch succeeded.\",\"The Homebrew python3 is 3.14.8 (meets the 3.11 minimum), so the pip/venv route was not needed; uv used its own downloaded Python 3.12.\",\"First attempt to run the MCP client failed because I symlinked uvx to another folder (uv could not find its sibling uv binary). Fixed by using the real absolute uvx path. This was my setup error, not a product fault.\",\"Shell 'timeout' command is absent on this macOS guest; the pytest run was done without it.\",\"The uv sync created a .venv inside the checkout (documented development install).\"],\"stuck_step\":null,\"main_blocker\":null,\"plain_failure\":null,\"suggested_fix\":\"None needed for this guest. For more complete searches, set GITHUB_TOKEN (README 'GitHub limits and authentication'); unauthenticated results can be marked inconclusive because of the 2-variant budget and the verdict's terminal-tool constraint, which is the product working as documented.\"}\nEOF\n<guest-path> -I -c \"import json;json.load(open('.coldpass/report.json'));print('report ok')\"; ls -la <guest-path> | head -30; ls <guest-path>; ps aux | grep -c '[s]earch-first'",
    "ps aux | grep '[s]earch-first' | cut -c1-200"
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Start the search-first MCP server over stdio with the README uvx command and call search_existing (and inspect_repo) to get a real ranked GitHub shortlist for an idea",
  "suggested_fix": null,
  "tokens_in": 526031,
  "tokens_out": 14557,
  "cost_usd": 0.0219081,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "<guest-path>",
          "--python",
          "3.12",
          "--from",
          "<guest-path>",
          "search-first"
        ],
        "kind": "mcp",
        "serverInfo": {
          "name": "search-first",
          "version": "0.1.0"
        },
        "tools": [
          "search_existing",
          "inspect_repo",
          "compare_candidates"
        ],
        "tool_schema_bytes": 4129,
        "tool_result": {
          "content": [
            {
              "text": "{\n  \"verdict\": {\n    \"closest_match\": {\n      \"name\": \"TayHCode/cdpidletabs\",\n      \"url\": \"https://github.com/TayHCode/cdpidletabs\"\n    },\n    \"plausible_candidates\": 0,\n    \"adjacent_candidates\": 60,\n    \"recommendation\": \"inconclusive\",\n    \"reasoning\": \"Required behavior or constraints are unverified: terminal. Inspect README and test those requirements; broaden queries before choosing a base. None of these is a terminal tool according to retrieved metadata in the top relevance group; terminal/CLI support is unverified. tied with 18 <email>; TayHCode/cdpidletabs wins by more recent push.\",\n    \"provisional\": true,\n    \"search_complete\": true\n  },\n  \"warnings\": [],\n  \"candidates\": [\n    {\n      \"name\": \"TayHCode/cdpidletabs\",\n      \"url\": \"https://github.com/TayHCode/cdpidletabs\",\n      \"stars\": 0,\n      \"last_push\": \"2026-10-15T16:44:40Z\",\n      \"license\": \"MIT\",\n      \"relevance_score\": 0.54,\n      \"idea_term_coverage\": 1.0,\n      \"missing_key_terms\": [],\n      \"missing_constraints\": [\n        \"terminal\"\n      ],\n      \"why_it_matched\": \"Strong core match; Core terms: 4/4 (browser, close, idle, tab); 0 stars, push 6 days ago; returned by 1 query variant(s), best GitHub rank 27. Cautions: reuse floor unverified: needs at least 25 stars and a push within 365 days; hard constraints unverified: terminal. tied with 18 <email>; Ta\"\n    },\n    {\n      \"name\": \"RealUnfazed/Chrome-TabTidy\",\n      \"url\": \"https://github.com/RealUnfazed/Chrome-TabTidy\",\n      \"stars\": 0,\n      \"last_push\": \"2026-09-28T10:41:29Z\",\n      \"license\": \"MIT\",\n      \"relevance_score\": 0.54,\n      \"idea_term_coverage\": 1.0,\n      \"missing_key_terms\": [],\n      \"missing_constraints\": [\n        \"terminal\"\n      ],\n      \"why_it_matched\": \"Strong core match; Core terms: 4/4 (browser, close, idle, tab); 0 stars, push 23 days ago; returned by 1 query variant(s), best GitHub rank 20. Cautions: reuse floor unverified: needs at least 25 stars and a push within 365 days; hard constraints unverified: terminal. tied with 18 <email>; T\"\n    },\n    {\n      \"name\": \"vladbulyukhin/tab-reaper\",\n      \"url\": \"https://github.com/vladbulyukhin/tab-reaper\",\n      \"stars\": 2,\n      \"last_push\": \"2026-09-06T19:31:45Z\",\n      \"license\": \"MPL-2.0\",\n      \"relevance_score\": 0.54,\n      \"idea_term_coverage\": 1.0,\n      \"missing_key_terms\": [],\n      \"missing_constraints\": [\n        \"terminal\"\n      ],\n      \"why_it_matched\": \"Strong core match; Core terms: 4/4 (browser, close, idle, tab); 2 stars, push 44 days ago; returned by 1 query variant(s), best GitHub rank 24. Cautions: reuse floor unverified: needs at least 25 stars and a push within 365 days; hard constraints unverified: terminal. tied with 18 <email>; T\"\n    }\n  ],\n  \"unique_candidates_evaluated\": 60,\n  \"errors\": [],\n  \"message\": null,\n  \"retry_after_seconds\": null,\n  \"coverage\": {\n    \"bounded\": true,\n    \"truncated\": true,\n    \"repositories_per_query\": 30,\n    \"queries_completed\": 2,\n    \"queries_failed\": 0,\n    \"queries_skipped\": 1,\n    \"query_budget\": 2,\n    \"bounded_plan_complete\": true,\n    \"results_skipped\": 57,\n    \"unretrieved_results\": null,\n    \"note\": \"Counts refer to deduplicated retrieved projects, not all of GitHub. Metadata-only lexical ranking; no candidate has been run or tested.\"\n  },\n  \"notes\": [\n    \"Unauthenticated mode: at most 2 search variants per call; set GITHUB_TOKEN for complete searches. Shared-IP quota still applies.\"\n  ]\n}",
              "type": "text"
            }
          ],
          "isError": false,
          "structuredContent": {
            "verdict": {
              "closest_match": {
                "name": "TayHCode/cdpidletabs",
                "url": "https://github.com/TayHCode/cdpidletabs"
              },
              "plausible_candidates": 0,
              "adjacent_candidates": 60,
              "recommendation": "inconclusive",
              "reasoning": "Required behavior or constraints are unverified: terminal. Inspect README and test those requirements; broaden queries before choosing a base. None of these is a terminal tool according to retrieved metadata in the top relevance group; terminal/CLI support is unverified. tied with 18 <email>; TayHCode/cdpidletabs wins by more recent push.",
              "provisional": true,
              "search_complete": true
            },
            "warnings": [],
            "candidates": [
              {
                "name": "TayHCode/cdpidletabs",
                "url": "https://github.com/TayHCode/cdpidletabs",
                "stars": 0,
                "last_push": "2026-10-15T16:44:40Z",
                "license": "MIT",
                "relevance_score": 0.54,
                "idea_term_coverage": 1.0,
                "missing_key_terms": [],
                "missing_constraints": [
                  "terminal"
                ],
                "why_it_matched": "Strong core match; Core terms: 4/4 (browser, close, idle, tab); 0 stars, push 6 days ago; returned by 1 query variant(s), best GitHub rank 27. Cautions: reuse floor unverified: needs at least 25 stars and a push within 365 days; hard constraints unverified: terminal. tied with 18 <email>; Ta"
              },
              {
                "name": "RealUnfazed/Chrome-TabTidy",
                "url": "https://github.com/RealUnfazed/Chrome-TabTidy",
                "stars": 0,
                "last_push": "2026-09-28T10:41:29Z",
                "license": "MIT",
                "relevance_score": 0.54,
                "idea_term_coverage": 1.0,
                "missing_key_terms": [],
                "missing_constraints": [
                  "terminal"
                ],
                "why_it_matched": "Strong core match; Core terms: 4/4 (browser, close, idle, tab); 0 stars, push 23 days ago; returned by 1 query variant(s), best GitHub rank 20. Cautions: reuse floor unverified: needs at least 25 stars and a push within 365 days; hard constraints unverified: terminal. tied with 18 <email>; T"
              },
              {
                "name": "vladbulyukhin/tab-reaper",
                "url": "https://github.com/vladbulyukhin/tab-reaper",
                "stars": 2,
                "last_push": "2026-09-06T19:31:45Z",
                "license": "MPL-2.0",
                "relevance_score": 0.54,
                "idea_term_coverage": 1.0,
                "missing_key_terms": [],
                "missing_constraints": [
                  "terminal"
                ],
                "why_it_matched": "Strong core match; Core terms: 4/4 (browser, close, idle, tab); 2 stars, push 44 days ago; returned by 1 query variant(s), best GitHub rank 24. Cautions: reuse floor unverified: needs at least 25 stars and a push within 365 days; hard constraints unverified: terminal. tied with 18 <email>; T"
              }
            ],
            "unique_candidates_evaluated": 60,
            "errors": [],
            "message": null,
            "retry_after_seconds": null,
            "coverage": {
              "bounded": true,
              "truncated": true,
              "repositories_per_query": 30,
              "queries_completed": 2,
              "queries_failed": 0,
              "queries_skipped": 1,
              "query_budget": 2,
              "bounded_plan_complete": true,
              "results_skipped": 57,
              "unretrieved_results": null,
              "note": "Counts refer to deduplicated retrieved projects, not all of GitHub. Metadata-only lexical ranking; no candidate has been run or tested."
            },
            "notes": [
              "Unauthenticated mode: at most 2 search variants per call; set GITHUB_TOKEN for complete searches. Shared-IP quota still applies."
            ]
          }
        },
        "tool_result_checked": true,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 2 known vulnerability.",
    "findings": [
      {
        "kind": "known-vulnerability",
        "count": 2,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 1,
        "path": "certifi"
      }
    ],
    "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.",
      "macos behavior observation needs an OS-native file/network/process collector; only the static scan ran.",
      "No Linux syscall trace was collected."
    ],
    "static": {
      "dependency_note": "OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check."
    },
    "evidence_url": "/safety/?run=TayHCode--search-first-claude-haiku-5-5-1792607402277902526",
    "evidence_file": "/data/safety/TayHCode--search-first-claude-haiku-5-5-1792607402277902526.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.300 (Claude Code)",
  "tool_transport": "mcp-assigned-vm",
  "platform": "macos",
  "reasoning": "low",
  "service_tier": null,
  "resources": {
    "cpus": null,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "native_tool_calls": 18,
  "native_bundle": null,
  "architecture": null,
  "backend": "tart",
  "platform_details": {
    "backend": "tart",
    "os": "macos"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "2b7c5fd54b96bdd2a736eb2ae25db35d2cb71d7d",
    "url": "https://github.com/TayHCode/search-first"
  },
  "purpose": "initial",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": null,
  "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": "local",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "mcp"
  ],
  "license": "MIT",
  "repo_url": "https://github.com/TayHCode/search-first",
  "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: src/search_first/server.py main() runs a stdio or streamable-http MCP server on demand with no cron, scheduler, --once/--now, or webhook; the only while True loop (discovery.py clean_untrusted_text) strips HTML comments; ranking.py mentions 'schedule' only as a search keyword. The product runs as a request-driven MCP server, so there is no product cycle.",
      "evidence": "Entry points inspected: src/search_first/server.py main() runs a stdio or streamable-http MCP server on demand with no cron, scheduler, --once/--now, or webhook; the only while True loop (discovery.py clean_untrusted_text) strips HTML comments; ranking.py mentions 'schedule' only as a search keyword. The product runs as a request-driven MCP server, so there is no product cycle.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "search_existing discovers existing public GitHub projects and returns a ranked shortlist with a verdict for an idea",
      "source": "An MCP server that discovers existing public projects, explains a ranked shortlist,",
      "input": "{\"tool\": \"search_existing\", \"arguments\": {\"idea\": \"a terminal tool that closes idle browser tabs automatically\", \"queries\": [\"chrome idle tabs\", \"close inactive tabs\"], \"limit\": 3}}",
      "expected": "JSON containing a verdict and candidates ranked from GitHub search, including TayHCode/cdpidletabs",
      "command": "<guest-path> --python 3.12 --from <guest-path> search-first tools/call {\"tool\": \"search_existing\", \"arguments\": {\"idea\": \"a terminal tool that closes idle browser tabs automatically\", \"queries\": [\"chrome idle tabs\", \"close inactive tabs\"], \"limit\": 3}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: TayHCode/cdpidletabs",
      "evidence": "TayHCode/cdpidletabs\\\",\\n      \\\"url\\\": \\\"https://github.com/TayHCode/cdpidletabs\\\"\\n    },\\n    \\\"plausible_candidates\\\": 0,\\n    \\\"adjacent_candidates\\\": 60,\\n    \\\"recommendation\\\": \\\"inconclusive\\\",\\n    \\\"reasoning\\\": \\\"Required behavior or constraints are unverified: terminal. Inspect README and test those requirements; broaden queries before choosing a base. None of these is a terminal tool according to retrieved metadata in the top relevance group; terminal/CLI support is unverified. tied with 18 <email>; TayHCode/cdpidletabs wins by more recent push.\\\",\\n    \\\"provisional\\\": t",
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "inspect_repo returns the SPDX license and name of a public repository",
      "source": "README excerpt, SPDX license/name, size in KB, up to five last commits, open issue",
      "input": "{\"tool\": \"inspect_repo\", \"arguments\": {\"repo\": \"TayHCode/search-first\"}}",
      "expected": "JSON with license_name MIT License for TayHCode/search-first",
      "command": "<guest-path> --python 3.12 --from <guest-path> search-first tools/call {\"tool\": \"inspect_repo\", \"arguments\": {\"repo\": \"TayHCode/search-first\"}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: MIT License",
      "evidence": "MIT License\\\",\\n  \\\"language\\\": \\\"Python\\\",\\n  \\\"topics\\\": [\\n    \\\"mcp\\\",\\n    \\\"python\\\"\\n  ],\\n  \\\"size_kb\\\": 222,\\n  \\\"notes\\\": [\\n    \\\"Unauthenticated mode: at most 2 search variants per call; set GITHUB_TOKEN for complete searches. Shared-IP quota still applies.\\\"\\n  ],\\n  \\\"readme_excerpt\\\": \\\"# search-first\\\\n\\\\n**Before you build this, here is what already exists on GitHub.**\\\\n\\\\nAn MCP server that discovers existing public projects, explains a ranked shortlist,\\\\ninspects maintenance and reuse signals, and compares candidates. Search first,\\\\ninspect and test a candidate, then use ",
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Automated test suite passes using the documented locked dev environment",
      "source": "README.md#proof-and-development",
      "input": "uv run --locked pytest -q",
      "command": "<guest-path> run --locked pytest -q",
      "evidence": "........................................................................ [ 35%]\n........................................................................ [ 71%]\n.........................................................                [100%]\n201 passed in 1.60s",
      "deferred": false,
      "expected": "all tests pass",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Ruff lint check passes on the repository",
      "source": "README.md#proof-and-development",
      "input": "uv run --locked ruff check .",
      "command": "<guest-path> run --locked ruff check .",
      "evidence": "All checks passed!",
      "deferred": false,
      "expected": "no lint findings",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Type check passes on the source",
      "source": "README.md#proof-and-development",
      "input": "uv run --locked mypy",
      "command": "<guest-path> run --locked mypy",
      "evidence": "Success: no issues found in 7 source files",
      "deferred": false,
      "expected": "no type errors",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "archived": false,
    "commits_90d": 9,
    "last_commit_at": "2026-10-15T16:25:15Z",
    "last_release_at": null,
    "median_reply_hours": null,
    "merged_prs_90d": 2,
    "note": "actively maintained: last commit 6 days ago; 9 commits and 2 merged PRs in 90 days; 0 open issues, 0 open PRs; no releases",
    "open_issues": 0,
    "open_prs": 0,
    "reply_share": null,
    "reply_threads": 0,
    "verdict": "maintained"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 6 days ago; 9 commits and 2 merged PRs in 90 days; 0 open issues, 0 open PRs; no releases",
  "maintained": "active",
  "maintained_note": "last commit 6 days ago",
  "last_commit_at": "2026-10-15T16:44:45Z",
  "last_release_at": null,
  "open_issues": null,
  "answered_issues": null,
  "platforms_claimed": [
    "linux",
    "mac",
    "windows"
  ],
  "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": 3,
    "schema_bytes": 4129,
    "tokens_approx": 1033,
    "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-21T18:33:24.562693+00:00",
  "tested_commit": "2b7c5fd54b96bdd2a736eb2ae25db35d2cb71d7d",
  "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": "macos",
    "backend": "tart",
    "transport": "mcp-assigned-vm"
  },
  "setup_identity": {
    "repo": "TayHCode/search-first",
    "source": "https://github.com/TayHCode/search-first",
    "commit": "2b7c5fd54b96bdd2a736eb2ae25db35d2cb71d7d",
    "source_revision": null,
    "os": "mac",
    "architecture": null,
    "backend": "tart",
    "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": "2b7c5fd54b96bdd2a736eb2ae25db35d2cb71d7d",
      "url": "https://github.com/TayHCode/search-first"
    },
    "platform_details": {
      "os": "macos",
      "backend": "tart"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": null,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Start the search-first MCP server over stdio with the README uvx command and call search_existing (and inspect_repo) to get a real ranked GitHub shortlist for an idea",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "mcp",
    "test_version": "readme-b08aaa568d9005099b995fc51d01450b15d399d9445aa4d6f554b73c4f2218b9",
    "evidence_version": null
  },
  "other_model": null,
  "other_run_id": null,
  "models_agree": null,
  "furthest_model": null,
  "transcript_url": "/transcripts/TayHCode--search-first-claude-haiku-5-5-1792607402277902526.txt",
  "report_url": "/reports/TayHCode--search-first-claude-haiku-5-5-1792607402277902526.json"
}
