V3 QA — Scenario 6: Market Selector (Task 7)
===============================================

Test file: experiments/v3/tests/test_market_selector.py
Result: 14/14 PASSED

Stratum Classification:
  - Difficulty: contested (0.20 ≤ yes ≤ 0.80), blowout (<0.20 or >0.80)
  - Strike types: less, greater, between
  - Lead time: short (≤2 days), medium (2-7 days), long (>7 days)
  - 2 × 3 × 2 = 12 possible strata

Stratified Sampling:
  - Returns 12 strata with markets_per_cell=2 (24+ markets)
  - Same seed produces identical results (determinism)
  - Different seed produces different selection
  - Undersampled stratum returns min(n, markets_per_cell)
  - Markets without settlement_result are excluded
  - Contested vs blowout correctly classified at boundaries

EDGE CASE: Empty DB → returns empty dict (no crash)
EDGE CASE: Single market in one stratum → returns only that market (min of requested and available)
EDGE CASE: Boundary 0.20 and 0.80 → correctly classified as contested

Reproducibility: seed=42 always produces identical selections.

VERDICT: PASS
