{
  "env": {
    "date": "2026-06-23T21:22:29",
    "endpoint": "https://obsidian.example.com",
    "commit": "af16598",
    "echo_workers": 8,
    "echo_timeout": 30,
    "python": "3.10.12",
    "iterations": 3,
    "count_k": 50
  },
  "run_id": "20260623-212229-8c3ce2",
  "metrics": {
    "expand-graph": {
      "result": {
        "subjects": [
          {
            "label": "hub-echo",
            "query": "echo",
            "neighbours": 120,
            "serial_ms": 2227.67,
            "concurrent_ms": 642.2,
            "speedup": 3.47,
            "ranking_identical": true,
            "scores_identical": true
          },
          {
            "label": "hub-prefs",
            "query": "operator preferences",
            "neighbours": 126,
            "serial_ms": 2910.46,
            "concurrent_ms": 698.8,
            "speedup": 4.16,
            "ranking_identical": true,
            "scores_identical": true
          }
        ],
        "min_speedup": 3.47,
        "all_ranking_identical": true,
        "all_scores_identical": true
      },
      "gates": [
        {
          "rule": {
            "field": "min_speedup",
            "op": ">=",
            "min": 2.0,
            "why": "recall()'s graph layer must fetch each BFS hop concurrently (read_many), not serially per node; <2x means expand_graph regressed to the pre-fix serial walk"
          },
          "value": 3.47,
          "pass": true
        },
        {
          "rule": {
            "field": "all_ranking_identical",
            "op": ">=",
            "min": 1,
            "why": "the concurrent expansion must return the same ranked neighbours as the serial reference"
          },
          "value": true,
          "pass": true
        },
        {
          "rule": {
            "field": "all_scores_identical",
            "op": ">=",
            "min": 1,
            "why": "decayed scores must match the serial reference to within float tolerance"
          },
          "value": true,
          "pass": true
        }
      ]
    }
  }
}