{
  "schema_version": "1.0",
  "description": "Baseline performance thresholds for scale testing. Values are in milliseconds unless noted otherwise.",
  "indexing": {
    "1000_files": {
      "p50_ms": 2000,
      "p95_ms": 5000,
      "p99_ms": 8000,
      "max_ms": 12000,
      "notes": "Small repo: single microservice scale"
    },
    "5000_files": {
      "p50_ms": 10000,
      "p95_ms": 25000,
      "p99_ms": 40000,
      "max_ms": 60000,
      "notes": "Medium repo: multi-service monorepo scale"
    },
    "10000_files": {
      "p50_ms": 18000,
      "p95_ms": 45000,
      "p99_ms": 72000,
      "max_ms": 110000,
      "notes": "Large repo: enterprise monorepo scale; sub-linear scaling expected"
    },
    "50000_files": {
      "p50_ms": 75000,
      "p95_ms": 180000,
      "p99_ms": 290000,
      "max_ms": 450000,
      "notes": "XLarge repo: multi-team enterprise monorepo; sub-linear scaling expected"
    },
    "100000_files": {
      "p50_ms": 140000,
      "p95_ms": 340000,
      "p99_ms": 550000,
      "max_ms": 850000,
      "notes": "XXLarge repo: maximum production scale; sub-linear scaling expected"
    }
  },
  "decomposition": {
    "1000_files": {
      "p50_ms": 4000,
      "p95_ms": 10000,
      "p99_ms": 16000,
      "max_ms": 24000,
      "notes": "Decomposition typically 2x indexing time"
    },
    "5000_files": {
      "p50_ms": 20000,
      "p95_ms": 50000,
      "p99_ms": 80000,
      "max_ms": 120000,
      "notes": "Decomposition typically 2x indexing time"
    },
    "10000_files": {
      "p50_ms": 40000,
      "p95_ms": 100000,
      "p99_ms": 160000,
      "max_ms": 240000,
      "notes": "Decomposition typically 2x indexing time"
    },
    "50000_files": {
      "p50_ms": 160000,
      "p95_ms": 400000,
      "p99_ms": 640000,
      "max_ms": 960000,
      "notes": "Decomposition typically 2x indexing time; sub-linear scaling"
    },
    "100000_files": {
      "p50_ms": 300000,
      "p95_ms": 750000,
      "p99_ms": 1200000,
      "max_ms": 1800000,
      "notes": "Decomposition typically 2x indexing time; sub-linear scaling"
    }
  },
  "memory_usage_mb": {
    "1000_files": {
      "peak_mb": 256,
      "steady_state_mb": 128
    },
    "5000_files": {
      "peak_mb": 768,
      "steady_state_mb": 384
    },
    "10000_files": {
      "peak_mb": 1536,
      "steady_state_mb": 768
    },
    "50000_files": {
      "peak_mb": 6144,
      "steady_state_mb": 3072
    },
    "100000_files": {
      "peak_mb": 12288,
      "steady_state_mb": 6144
    }
  },
  "context_assembly": {
    "100_fragments": {
      "p50_ms": 50,
      "p95_ms": 150,
      "p99_ms": 300,
      "notes": "Baseline context assembly at small scale"
    },
    "1000_fragments": {
      "p50_ms": 500,
      "p95_ms": 1500,
      "p99_ms": 3000,
      "notes": "Medium context assembly scale"
    },
    "5000_fragments": {
      "p50_ms": 2500,
      "p95_ms": 7500,
      "p99_ms": 15000,
      "notes": "Large context assembly; linear scaling expected"
    },
    "10000_fragments": {
      "p50_ms": 5000,
      "p95_ms": 15000,
      "p99_ms": 30000,
      "notes": "Maximum context assembly scale"
    }
  },
  "execution_throughput": {
    "10_plans": {
      "p50_ms": 200,
      "p95_ms": 500,
      "p99_ms": 1000,
      "notes": "Light execution workload"
    },
    "50_plans": {
      "p50_ms": 1000,
      "p95_ms": 2500,
      "p99_ms": 5000,
      "notes": "Medium execution workload"
    },
    "100_plans": {
      "p50_ms": 2000,
      "p95_ms": 5000,
      "p99_ms": 10000,
      "notes": "Heavy execution workload"
    }
  },
  "scaling_expectations": {
    "indexing_complexity": "O(n log n)",
    "decomposition_complexity": "O(n log n)",
    "context_assembly_complexity": "O(n log n)",
    "execution_complexity": "O(n)",
    "memory_complexity": "O(n)",
    "notes": "Thresholds assume local SSD storage and 8+ GB RAM available"
  }
}
