{
  "run_id": "Graphify-Labs--graphify-claude-haiku-5-5-1792774248067187317",
  "checker": {
    "claims": [
      {
        "claim": "Explain one concept from the graph",
        "command": "<guest-path> explain graphify/build.py::build_from_json",
        "evidence": "Node: build_from_json()\n  ID:        graphify_build_build_from_json\n  Source:    graphify/build.py L1153\n  Type:      code\n  Community: 11\n  Degree:    294\n\nConnections (294):\n  <-- test_languages.py [imports] [EXTRACTED] tests/test_languages.py:L1593\n  <-- test_extract.py [imports] [EXTRACTED] tests/test_extract.py:L9\n  <-- _rebuild_code() [calls] [EXTRACTED] graphify/watch.py:L2355\n  --> networkx [calls] [EXTRACTED] graphify/build.py:L1319\n  --> re [calls] [EXTRACTED] graphify/build.py:L1249\n  <-- cli.py [imports] [EXTRACTED] graphify/cli.py:L2437\n  <-- dispatch_command() [calls] [EXTRACTED]",
        "expected": "Node explanation with source location and connections",
        "input": "graphify/build.py::build_from_json",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Node: build_from_json()",
        "returncode": 0,
        "source": "Ask a question, trace the path between two things, or explain one concept.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Query returns a scoped subgraph for a plain-language question",
        "command": "<guest-path> query 'what connects extract to the graph?' --budget 800",
        "evidence": "NODE extract() [src=graphify/extract.py loc=L9219 community=12]\nNODE Graph [src= loc= community=85]\nNODE graph() [src=tests/test_cache_stale_import_target.py loc=L89 community=35]\nNODE test_cpp_cross_file_member_call_connects_with_relative_paths() [src=tests/test_cpp_objc_cross_file_calls.py loc=L45 community=306]\nNODE extract.py [src=graphify/extract.py loc=L1 community=2]\nNODE test_languages.py [src=tests/test_languages.py loc=L1 community=3]\nNODE test_extract.py [src=tests/test_extract.py loc=L1 community=4]\nNODE _rebuild_code() [src=graphify/watch.py loc=L1677 community=19]\nNODE _make_id()",
        "expected": "Subgraph listing the extract() node",
        "input": "what connects extract to the graph?",
        "kind": "claim",
        "outcome": "Real input produced the expected result: NODE extract()",
        "returncode": 0,
        "source": "returns a scoped subgraph for a plain-language question",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Watch loop rebuilds the graph on code changes; one rebuild run by hand",
        "command": "<guest-path> update <guest-path> --no-cluster",
        "evidence": "Re-extracting code files in <guest-path> (no LLM needed)...\n[graphify watch] 13 file(s) not classified (no supported extension or shebang), skipped: .dockerignore, .gitattributes, .gitignore, .gitkeep, CODEOWNERS, Dockerfile (+7 more)\n  AST extraction: 28/28 uncached files (100%) [2 workers]\n[graphify watch] Rebuilt (no clustering): 22253 nodes, 47412 edges\n[graphify watch] graph.json updated in <guest-path>\nCode graph updated. For doc/paper/image changes run /graphify --update in your AI assistant.\nTip: set GEMINI_API_KEY or GOOGLE_API_KEY to use Gemini for semantic extraction.\n  warning: 7 .sql file(s) contributed nothing to the graph because a dependency is missing: tree_sitter_sql not installed. Install it with: pip install \"graphifyy[sql]\" (#1745)\n  warning: 1 .dm file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-dm not installed. Install it with: pip install \"graphifyy[dm]\" (#1745)\n  warning: 1 .erl file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-language-pack not installed. Install it with: pip install \"graphifyy[erlang]\" (#1745)\n  warning: 1 .lisp file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-commonlisp not installed. Install it with: pip install \"graphifyy[commonlisp]\" (#1745)\n  warning: 1 .r file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-language-pack not installed. Install it with: pip install \"graphifyy[r]\" (#1745)\n  warning: 1 .resource file(s) contributed nothing to the graph because a dependency is missing: robotframework not installed. Install it with: pip install \"graphifyy[robot]\" (#1745)\n  warning: 1 .robot file(s) contributed nothing to the graph because a dependency is missing: robotframework not installed. Install it with: pip install \"graphifyy[robot]\" (#1745)\n  warning: 1 .sol file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-solidity not installed. Install it with: pip install \"graphifyy[solidity]\" (#1745)\n  warning: 1 .vb file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-vb-dotnet not installed. Install it with: pip install \"graphifyy[vbnet]\" (#1745)\n  warning: 1 file(s) had syntax errors and may be partially extracted: tests/fixtures/sample.luau (first error at line 8, 4 symbol(s) extracted)\n  warning: 26 code file(s) yielded no symbols (0.03 MB) \u2014 a data file, or source this extractor models no symbols for: graphify/exporters/__init__.py, graphify/manifest.py, pyproject.toml, tests/fixtures/cpp_samedir/plain.h, tests/fixtures/crate_a/Cargo.toml (+21 more)",
        "expected": "one rebuild pass writes graph.json",
        "input": "<guest-path> --no-cluster",
        "kind": "cycle",
        "method": "run-once: graphify update on the same tree with no source edits (watch loop not started)",
        "outcome": "Triggered one cycle by hand (run-once: graphify update on the same tree with no source edits (watch loop not started); normal trigger: watch loop (debounced rebuild when files change)): Re-extracting code files in <guest-path> (no LLM needed)...\n[graphify watch] 13 file(s) not classified (no supported extension or shebang), skipped: .dockerignore, .gitattributes, .gitignore, .gitkeep, CODEOWNERS, Dockerfile (+7 more)\n  AST extraction: 28/28 uncached files (100%) [2 workers]\n[graphify watch] Rebuilt (no clustering): 22253 nodes, 47412 edges\n[graphify watch] graph.json updated in <guest-path>\nCode graph updated. For doc/paper/image changes run /graphify --update in your AI assistant.\nTip: set GEMINI_API_KEY or GOOGLE_API_KEY to use Gemini for semantic extraction.\n  warning: 7 .sql file(s) contributed nothing to the graph because a dependency is missing: tree_sitter_sql not installed. Install it with: pip install \"graphifyy[sql]\" (#1745)\n  warning: 1 .dm file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-dm not installed. Install it with: pip install \"graphifyy[dm]\" (#1745)\n  warning: 1 .erl file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-language-pack not installed. Install it with: pip install \"graphifyy[erlang]\" (#1745)\n  warning: 1 .lisp file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-commonlisp not installed. Install it with: pip install \"graphifyy[commonlisp]\" (#1745)\n  warning: 1 .r file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-language-pack not installed. Install it with: pip install \"graphifyy[r]\" (#1745)\n  warning: 1 .resource file(s) contributed nothing to the graph because a dependency is missing: robotframework not installed. Install it with: pip install \"graphifyy[robot]\" (#1745)\n  warning: 1 .robot file(s) contributed nothing to the graph because a dependency is missing: robotframework not installed. Install it with: pip install \"graphifyy[robot]\" (#1745)\n  warning: 1 .sol file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-solidity not installed. Install it with: pip install \"graphifyy[solidity]\" (#1745)\n  warning: 1 .vb file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-vb-dotnet not installed. Install it with: pip install \"graphifyy[vbnet]\" (#1745)\n  warning: 1 file(s) had syntax errors and may be partially extracted: tests/fixtures/sample.luau (first error at line 8, 4 symbol(s) extracted)\n  warning: 26 code file(s) yielded no symbols (0.03 MB) \u2014 a data file, or source this extractor models no symbols for: graphify/exporters/__init__.py, graphify/manifest.py, pyproject.toml, tests/fixtures/cpp_samedir/plain.h, tests/fixtures/crate_a/Cargo.toml (+21 more)",
        "returncode": 0,
        "schedule": "watch loop (debounced rebuild when files change)",
        "source": "graphify/watch.py",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "explain",
        "graphify/build.py::build_from_json"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "Node: build_from_json()\n  ID:        graphify_build_build_from_json\n  Source:    graphify/build.py L1153\n  Type:      code\n  Community: 11\n  Degree:    294\n\nConnections (294):\n  <-- test_languages.py [imports] [EXTRACTED] tests/test_languages.py:L1593\n  <-- test_extract.py [imports] [EXTRACTED] tests/test_extract.py:L9\n  <-- _rebuild_code() [calls] [EXTRACTED] graphify/watch.py:L2355\n  --> networkx [calls] [EXTRACTED] graphify/build.py:L1319\n[excerpt truncated]",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Offline code-only extraction builds the graph without an LLM",
        "command": "<guest-path> extract . --code-only",
        "deferred": false,
        "evidence": "ile(s) contributed nothing to the graph because a dependency is missing: robotframework not installed. Install it with: pip install \"graphifyy[robot]\" (#1745)\n  warning: 1 .sol file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-solidity not installed. Install it with: pip install \"graphifyy[solidity]\" (#1745)\n  warning: 1 .vb file(s) contributed nothing to the graph because a dependency is missing: tree-sitter-vb-dotnet not installed. Install it with: pip install \"graphifyy[vbnet]\" (#1745)\n[graphify] Pruned 8 node(s) from 8 deleted or excluded source file(s).",
        "expected": "graph.json written with no LLM",
        "input": ". --code-only",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Privacy: graphify extract runs fully offline with --code-only",
        "verdict": "yes"
      },
      {
        "claim": "Path between two nodes (README common commands; undirected because no directed path exists)",
        "command": "<guest-path> path graphify/build.py::build_from_json graphify/cli.py::dispatch_command --undirected",
        "deferred": false,
        "evidence": "Shortest path (1 hops):\n  build_from_json() <--calls [EXTRACTED]-- dispatch_command()",
        "expected": "Shortest path of 1 hop",
        "input": "build_from_json to dispatch_command, undirected",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Common commands: graphify path",
        "verdict": "yes"
      },
      {
        "claim": "Repository test suite (CONTRIBUTING.md) run with the documented command",
        "command": "",
        "deferred": false,
        "evidence": "Ran uv run --frozen pytest tests/ -q: 8240 passed, 213 skipped, 18 failed. 15 test_skillgen failures need git history blobs (not in depth-1 pinned fetch); 3 test_ext_tagged_id_clash failures need the optional sql extra (passes with --extra sql). Not replayed as an example.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Ran uv run --frozen pytest tests/ -q: 8240 passed, 213 skipped, 18 failed. 15 test_skillgen failures need git history blobs (not in depth-1 pinned fetch); 3 test_ext_tagged_id_clash failures need the optional sql extra (passes with --extra sql). Not replayed as an example.",
        "source": "CONTRIBUTING.md: uv run pytest tests/ -q",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
