{
  "checker": {
    "claims": [
      {
        "claim": "search_existing discovers existing public GitHub projects and returns a ranked shortlist with a verdict for an idea",
        "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}}",
        "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",
        "expected": "JSON containing a verdict and candidates ranked from GitHub search, including TayHCode/cdpidletabs",
        "input": "{\"tool\": \"search_existing\", \"arguments\": {\"idea\": \"a terminal tool that closes idle browser tabs automatically\", \"queries\": [\"chrome idle tabs\", \"close inactive tabs\"], \"limit\": 3}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: TayHCode/cdpidletabs",
        "source": "An MCP server that discovers existing public projects, explains a ranked shortlist,",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "inspect_repo returns the SPDX license and name of a public repository",
        "command": "<guest-path> --python 3.12 --from <guest-path> search-first tools/call {\"tool\": \"inspect_repo\", \"arguments\": {\"repo\": \"TayHCode/search-first\"}}",
        "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 ",
        "expected": "JSON with license_name MIT License for TayHCode/search-first",
        "input": "{\"tool\": \"inspect_repo\", \"arguments\": {\"repo\": \"TayHCode/search-first\"}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: MIT License",
        "source": "README excerpt, SPDX license/name, size in KB, up to five last commits, open issue",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "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.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "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.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "--python",
        "3.12",
        "--from",
        "<guest-path>",
        "search-first"
      ],
      "kind": "mcp",
      "scope": "product operation",
      "serverInfo": {
        "name": "search-first",
        "version": "0.1.0"
      },
      "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": {
          "candidates": [
            {
              "idea_term_coverage": 1.0,
              "last_push": "2026-10-15T16:44:40Z",
              "license": "MIT",
              "missing_constraints": [
                "terminal"
              ],
              "missing_key_terms": [],
              "name": "TayHCode/cdpidletabs",
              "relevance_score": 0.54,
              "stars": 0,
              "url": "https://github.com/TayHCode/cdpidletabs",
              "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"
            },
            {
              "idea_term_coverage": 1.0,
              "last_push": "2026-09-28T10:41:29Z",
              "license": "MIT",
              "missing_constraints": [
                "terminal"
              ],
              "missing_key_terms": [],
              "name": "RealUnfazed/Chrome-TabTidy",
              "relevance_score": 0.54,
              "stars": 0,
              "url": "https://github.com/RealUnfazed/Chrome-TabTidy",
              "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"
            },
            {
              "idea_term_coverage": 1.0,
              "last_push": "2026-09-06T19:31:45Z",
              "license": "MPL-2.0",
              "missing_constraints": [
                "terminal"
              ],
              "missing_key_terms": [],
              "name": "vladbulyukhin/tab-reaper",
              "relevance_score": 0.54,
              "stars": 2,
              "url": "https://github.com/vladbulyukhin/tab-reaper",
              "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"
            }
          ],
          "coverage": {
            "bounded": true,
            "bounded_plan_complete": true,
            "note": "Counts refer to deduplicated retrieved projects, not all of GitHub. Metadata-only lexical ranking; no candidate has been run or tested.",
            "queries_completed": 2,
            "queries_failed": 0,
            "queries_skipped": 1,
            "query_budget": 2,
            "repositories_per_query": 30,
            "results_skipped": 57,
            "truncated": true,
            "unretrieved_results": null
          },
          "errors": [],
          "message": null,
          "notes": [
            "Unauthenticated mode: at most 2 search variants per call; set GITHUB_TOKEN for complete searches. Shared-IP quota still applies."
          ],
          "retry_after_seconds": null,
          "unique_candidates_evaluated": 60,
          "verdict": {
            "adjacent_candidates": 60,
            "closest_match": {
              "name": "TayHCode/cdpidletabs",
              "url": "https://github.com/TayHCode/cdpidletabs"
            },
            "plausible_candidates": 0,
            "provisional": true,
            "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.",
            "recommendation": "inconclusive",
            "search_complete": true
          },
          "warnings": []
        }
      },
      "tool_result_checked": true,
      "tool_schema_bytes": 4129,
      "tools": [
        "search_existing",
        "inspect_repo",
        "compare_candidates"
      ],
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Automated test suite passes using the documented locked dev environment",
        "command": "<guest-path> run --locked pytest -q",
        "deferred": false,
        "evidence": "........................................................................ [ 35%]\n........................................................................ [ 71%]\n.........................................................                [100%]\n201 passed in 1.60s",
        "expected": "all tests pass",
        "input": "uv run --locked pytest -q",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md#proof-and-development",
        "verdict": "yes"
      },
      {
        "claim": "Ruff lint check passes on the repository",
        "command": "<guest-path> run --locked ruff check .",
        "deferred": false,
        "evidence": "All checks passed!",
        "expected": "no lint findings",
        "input": "uv run --locked ruff check .",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md#proof-and-development",
        "verdict": "yes"
      },
      {
        "claim": "Type check passes on the source",
        "command": "<guest-path> run --locked mypy",
        "deferred": false,
        "evidence": "Success: no issues found in 7 source files",
        "expected": "no type errors",
        "input": "uv run --locked mypy",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md#proof-and-development",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "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)."
  ],
  "fault_owner": null,
  "main_blocker": 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.",
  "outcome": "working",
  "plain_failure": null,
  "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)"
  ],
  "stuck_step": 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."
}
