{
  "summary": {
    "timestamp": "2026-02-09 20:48:55",
    "source": "src",
    "k": 10,
    "coarse_k": 100,
    "query_count": 7,
    "avg_jaccard_topk": 0.11418494830148965,
    "avg_rbo_topk": 0.08910725003591835,
    "staged": {
      "success": 7,
      "avg_latency_ms": 16443.109000005894
    },
    "dense_rerank": {
      "success": 7,
      "avg_latency_ms": 2919.481471432107
    }
  },
  "comparisons": [
    {
      "query": "class Config",
      "staged": {
        "strategy": "staged",
        "query": "class Config",
        "latency_ms": 6056.956700026989,
        "num_results": 10,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\path_mapper.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\api\\references.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\index_tree.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\api\\semantic.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\lsp\\server.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\parsers\\factory.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\__init__.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\chain_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\watcher\\file_watcher.py"
        ],
        "stage_stats": {
          "stage_times": {
            "stage1_binary_ms": 113.12270164489746,
            "stage1_fallback_search_ms": 262.55249977111816,
            "stage2_expand_ms": 3022.8426456451416,
            "stage3_cluster_ms": 1.155853271484375,
            "stage4_rerank_ms": 2554.953098297119
          },
          "stage_counts": {
            "stage1_candidates": 37,
            "stage1_fallback_used": 1,
            "stage2_expanded": 86,
            "stage2_unique_paths": 53,
            "stage2_duplicate_paths": 33,
            "stage3_clustered": 20,
            "stage3_strategy": "dir_rr",
            "stage4_reranked": 20
          }
        },
        "error": null
      },
      "dense_rerank": {
        "strategy": "dense_rerank",
        "query": "class Config",
        "latency_ms": 2788.0383999943733,
        "num_results": 10,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\dir_index.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\chunker.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\vector_store.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\query_parser.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\code_extractor.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\embedding_manager.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\migration_manager.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\registry.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\sqlite_store.py"
        ],
        "stage_stats": null,
        "error": null
      },
      "jaccard_topk": 0.05263157894736842,
      "rbo_topk": 0.014635885139999999,
      "staged_unique_files_topk": 10,
      "dense_unique_files_topk": 10,
      "staged_unique_dirs_topk": 8,
      "dense_unique_dirs_topk": 4
    },
    {
      "query": "def search",
      "staged": {
        "strategy": "staged",
        "query": "def search",
        "latency_ms": 12229.477500021458,
        "num_results": 3,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\entities.py"
        ],
        "stage_stats": {
          "stage_times": {
            "stage1_binary_ms": 108.82282257080078,
            "stage2_expand_ms": 9422.304153442383,
            "stage3_cluster_ms": 0.001430511474609375,
            "stage4_rerank_ms": 2611.234664916992
          },
          "stage_counts": {
            "stage1_candidates": 3,
            "stage2_expanded": 4,
            "stage2_unique_paths": 3,
            "stage2_duplicate_paths": 1,
            "stage3_clustered": 4,
            "stage3_strategy": "dir_rr",
            "stage4_reranked": 4
          }
        },
        "error": null
      },
      "dense_rerank": {
        "strategy": "dense_rerank",
        "query": "def search",
        "latency_ms": 2823.377499997616,
        "num_results": 10,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\query_parser.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\vector_store.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\hybrid_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\index_tree.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\registry.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\dir_index.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\code_extractor.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\chain_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\chunker.py"
        ],
        "stage_stats": null,
        "error": null
      },
      "jaccard_topk": 0.09090909090909091,
      "rbo_topk": 0.23541639942571424,
      "staged_unique_files_topk": 2,
      "dense_unique_files_topk": 10,
      "staged_unique_dirs_topk": 2,
      "dense_unique_dirs_topk": 4
    },
    {
      "query": "LspBridge",
      "staged": {
        "strategy": "staged",
        "query": "LspBridge",
        "latency_ms": 33805.434699982405,
        "num_results": 5,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\hybrid_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\lsp\\__init__.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\lsp\\lsp_bridge.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\lsp\\lsp_graph_builder.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\lsp\\standalone_manager.py"
        ],
        "stage_stats": {
          "stage_times": {
            "stage1_binary_ms": 100.5556583404541,
            "stage1_fallback_search_ms": 176.71489715576172,
            "stage2_expand_ms": 31017.661809921265,
            "stage3_cluster_ms": 0.001430511474609375,
            "stage4_rerank_ms": 2403.3148288726807
          },
          "stage_counts": {
            "stage1_candidates": 5,
            "stage1_fallback_used": 1,
            "stage2_expanded": 5,
            "stage2_unique_paths": 5,
            "stage2_duplicate_paths": 0,
            "stage3_clustered": 5,
            "stage3_strategy": "dir_rr",
            "stage4_reranked": 5
          }
        },
        "error": null
      },
      "dense_rerank": {
        "strategy": "dense_rerank",
        "query": "LspBridge",
        "latency_ms": 2906.127400010824,
        "num_results": 10,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\vector_meta_store.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\graph_expander.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\registry.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\hybrid_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\dir_index.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\index_tree.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\sqlite_store.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\code_extractor.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\chunker.py"
        ],
        "stage_stats": null,
        "error": null
      },
      "jaccard_topk": 0.07142857142857142,
      "rbo_topk": 0.045191399425714276,
      "staged_unique_files_topk": 5,
      "dense_unique_files_topk": 10,
      "staged_unique_dirs_topk": 2,
      "dense_unique_dirs_topk": 4
    },
    {
      "query": "graph expansion",
      "staged": {
        "strategy": "staged",
        "query": "graph expansion",
        "latency_ms": 16790.213800013065,
        "num_results": 10,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\migrations\\migration_007_add_graph_neighbors.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\dir_index.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\lsp\\lsp_graph_builder.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\ann_index.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\config.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\hybrid_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\hybrid_search\\__init__.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\enrichment.py"
        ],
        "stage_stats": {
          "stage_times": {
            "stage1_binary_ms": 110.00967025756836,
            "stage1_fallback_search_ms": 176.9556999206543,
            "stage2_expand_ms": 13929.782629013062,
            "stage3_cluster_ms": 0.45800209045410156,
            "stage4_rerank_ms": 2486.6883754730225
          },
          "stage_counts": {
            "stage1_candidates": 11,
            "stage1_fallback_used": 1,
            "stage2_expanded": 29,
            "stage2_unique_paths": 14,
            "stage2_duplicate_paths": 15,
            "stage3_clustered": 20,
            "stage3_strategy": "dir_rr",
            "stage4_reranked": 20
          }
        },
        "error": null
      },
      "dense_rerank": {
        "strategy": "dense_rerank",
        "query": "graph expansion",
        "latency_ms": 2866.819000005722,
        "num_results": 10,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\index_tree.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\migration_manager.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\hybrid_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\chain_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\global_index.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\dir_index.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\registry.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\sqlite_store.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\vector_store.py"
        ],
        "stage_stats": null,
        "error": null
      },
      "jaccard_topk": 0.1875,
      "rbo_topk": 0.06893318399142857,
      "staged_unique_files_topk": 9,
      "dense_unique_files_topk": 10,
      "staged_unique_dirs_topk": 8,
      "dense_unique_dirs_topk": 4
    },
    {
      "query": "clustering strategy",
      "staged": {
        "strategy": "staged",
        "query": "clustering strategy",
        "latency_ms": 9090.759900003672,
        "num_results": 10,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\config.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\__init__.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\chain_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\clustering\\dbscan_strategy.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\clustering\\noop_strategy.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\clustering\\base.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\clustering\\hdbscan_strategy.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\clustering\\frequency_strategy.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\clustering\\factory.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\clustering\\__init__.py"
        ],
        "stage_stats": {
          "stage_times": {
            "stage1_binary_ms": 85.28780937194824,
            "stage1_fallback_search_ms": 183.7012767791748,
            "stage2_expand_ms": 5557.527780532837,
            "stage3_cluster_ms": 0.001430511474609375,
            "stage4_rerank_ms": 3164.6268367767334
          },
          "stage_counts": {
            "stage1_candidates": 10,
            "stage1_fallback_used": 1,
            "stage2_expanded": 10,
            "stage2_unique_paths": 10,
            "stage2_duplicate_paths": 0,
            "stage3_clustered": 10,
            "stage3_strategy": "dir_rr",
            "stage4_reranked": 10
          }
        },
        "error": null
      },
      "dense_rerank": {
        "strategy": "dense_rerank",
        "query": "clustering strategy",
        "latency_ms": 3062.4616000056267,
        "num_results": 10,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\index_tree.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\hybrid_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\code_extractor.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\vector_store.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\__init__.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\gpu_support.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\chain_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\enrichment.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\chunker.py"
        ],
        "stage_stats": null,
        "error": null
      },
      "jaccard_topk": 0.1111111111111111,
      "rbo_topk": 0.04670528456571428,
      "staged_unique_files_topk": 10,
      "dense_unique_files_topk": 10,
      "staged_unique_dirs_topk": 3,
      "dense_unique_dirs_topk": 4
    },
    {
      "query": "error handling",
      "staged": {
        "strategy": "staged",
        "query": "error handling",
        "latency_ms": 19777.87659996748,
        "num_results": 6,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\lsp\\lsp_bridge.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\gpu_support.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\rotational_embedder.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\watcher\\manager.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py"
        ],
        "stage_stats": {
          "stage_times": {
            "stage1_binary_ms": 65.9482479095459,
            "stage1_fallback_search_ms": 181.9770336151123,
            "stage2_expand_ms": 16960.813760757446,
            "stage3_cluster_ms": 0.00095367431640625,
            "stage4_rerank_ms": 2472.1477031707764
          },
          "stage_counts": {
            "stage1_candidates": 5,
            "stage1_fallback_used": 1,
            "stage2_expanded": 13,
            "stage2_unique_paths": 6,
            "stage2_duplicate_paths": 7,
            "stage3_clustered": 13,
            "stage3_strategy": "dir_rr",
            "stage4_reranked": 13
          }
        },
        "error": null
      },
      "dense_rerank": {
        "strategy": "dense_rerank",
        "query": "error handling",
        "latency_ms": 2854.169200003147,
        "num_results": 10,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\__init__.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\registry.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\hybrid_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\index_tree.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\dir_index.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\chain_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\chunker.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\code_extractor.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\embedding_manager.py"
        ],
        "stage_stats": null,
        "error": null
      },
      "jaccard_topk": 0.07142857142857142,
      "rbo_topk": 0.045191399425714276,
      "staged_unique_files_topk": 5,
      "dense_unique_files_topk": 10,
      "staged_unique_dirs_topk": 4,
      "dense_unique_dirs_topk": 4
    },
    {
      "query": "how to parse json",
      "staged": {
        "strategy": "staged",
        "query": "how to parse json",
        "latency_ms": 17351.04380002618,
        "num_results": 7,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\lsp\\standalone_manager.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\hybrid_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\chain_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\parsers\\factory.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\indexing\\symbol_extractor.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\parsers\\treesitter_parser.py"
        ],
        "stage_stats": {
          "stage_times": {
            "stage1_binary_ms": 119.1408634185791,
            "stage1_fallback_search_ms": 246.2625503540039,
            "stage2_expand_ms": 14137.234449386597,
            "stage3_cluster_ms": 0.0011920928955078125,
            "stage4_rerank_ms": 2750.417470932007
          },
          "stage_counts": {
            "stage1_candidates": 4,
            "stage1_fallback_used": 1,
            "stage2_expanded": 11,
            "stage2_unique_paths": 7,
            "stage2_duplicate_paths": 4,
            "stage3_clustered": 11,
            "stage3_strategy": "dir_rr",
            "stage4_reranked": 11
          }
        },
        "error": null
      },
      "dense_rerank": {
        "strategy": "dense_rerank",
        "query": "how to parse json",
        "latency_ms": 3135.3772000074387,
        "num_results": 10,
        "topk_paths": [
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\cli\\commands.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\chain_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\index_tree.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\code_extractor.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\dir_index.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\hybrid_search.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\search\\ranking.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\chunker.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\storage\\sqlite_store.py",
          "d:\\claude_dms3\\codex-lens\\src\\codexlens\\semantic\\ann_index.py"
        ],
        "stage_stats": null,
        "error": null
      },
      "jaccard_topk": 0.21428571428571427,
      "rbo_topk": 0.16767719827714284,
      "staged_unique_files_topk": 7,
      "dense_unique_files_topk": 10,
      "staged_unique_dirs_topk": 5,
      "dense_unique_dirs_topk": 4
    }
  ]
}