=== GearScope functional log: graphify (host-based, macOS aarch64) === === Run C — Functional verification === Corpus: 2-file Python project (src/app.py: UserStore, AuthModule, make_token; src/models.py: User). $ graphify . --code-only [graphify extract] scanning /private/tmp/gf-func-test [graphify extract] --code-only: skipping 1 non-code file(s) [graphify extract] found 2 code, 0 docs, 0 papers, 0 images [graphify extract] AST extraction on 2 code files... [graphify extract] wrote graphify-out/graph.json: 14 nodes, 15 edges, 4 communities PASS (deterministic local AST graph build, no LLM key, 0 token cost) $ graphify explain "AuthModule" Node: AuthModule ID: src_app_authmodule Source: src/app.py L12 Type: code Community: 2 Degree: 4 Connections (4): --> .login() [method] [EXTRACTED] <-- app.py [contains] [EXTRACTED] --> .__init__() [method] [EXTRACTED] <-- Handles login using a UserStore. [rationale_for] [EXTRACTED] PASS (explain returns source location, community, degree, EXTRACTED-tagged edges) $ graphify query "how does login work" Traversal: BFS depth=2 | Start: ['.login()'] | 8 nodes found EDGE .login() --calls [EXTRACTED context=call]--> .get() EDGE .login() --calls [EXTRACTED context=call]--> make_token() PASS (query traces call flow with EXTRACTED context tags) $ graphify path "AuthModule" "User" No path found between 'AuthModule' and 'User'. FAIL (type-hint dependency AuthModule(store: UserStore) was NOT extracted as a graph edge; path cannot traverse a relationship the AST extractor does not capture) $ graphify cluster-only . --no-label Loading existing graph... Graph: 14 nodes, 15 edges Re-clustering... Done - 4 communities. GRAPH_REPORT.md, graph.json and graph.html updated. PASS (graph.html 21KB + GRAPH_REPORT.md generated; report shows 100% EXTRACTED, 0 token cost, god nodes: UserStore 6, AuthModule 4, make_token 2) $ graphify update . Re-extracting code files in . (no LLM needed)... [graphify watch] Rebuilt: 16 nodes, 16 edges, 5 communities [graphify watch] graph.json, graph.html and GRAPH_REPORT.md updated PASS (incremental rebuild picks up file change; nodes 14->16) $ graphify diagnose multigraph nodes: 14 raw_edges: 15 missing_endpoint_edges: 0 dangling_endpoint_edges: 0 self_loop_edges: 0 PASS (graph integrity check: no dangling/self-loop/missing-endpoint edges) === MCP server (graphify-mcp, requires graphifyy[mcp] extra) === $ graphify-mcp (without mcp extra) ModuleNotFoundError: No module named 'mcp' ImportError: mcp not installed. Run: pip install "graphifyy[mcp]" FAIL->PASS after: uv tool install graphifyy --with "graphifyy[mcp]" --force $ {initialize + tools/list} | graphify-mcp {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"resources":{...},"tools":{...}},"serverInfo":{"name":"graphify","version":"1.28.1"}}} {"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"query_graph",...},{"name":"get_node",...},{"name":"get_neighbors",...},{"name":"get_community",...},{"name":"god_nodes",...},{"name":"graph_stats",...},{"name":"shortest_path",...},{"name":"list_prs",...},{"name":"get_pr_impact",...},{"name":"triage_prs",...}]}} PASS (MCP server exposes 10 tools: 7 graph-query tools + 3 PR-impact tools) $ {tools/call graph_stats} | graphify-mcp {"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"Nodes: 16\nEdges: 16\nCommunities: 5\nEXTRACTED: 100%\nINFERRED: 0%\nAMBIGUOUS: 0%\n"}],"isError":false}} PASS (MCP tool returns real graph data) === Test suite (uv run pytest) === 3341 passed, 16 failed, 33 skipped in 45.89s Of 16 failures: 14 in test_skillgen.py (require full git history absent in --depth 1 clone; reference commit 47042be via `git show`), 1 test_labeling (needs LLM backend for batch naming), 1 test_ollama_retry_cap x4 grouped (needs ollama SDK installed). All environment-specific, not code defects. Functional pass rate: 9 of 10. (1 fail: path query on an unextracted type-hint edge)