v0.5.1 — surface OB mitigation flags + per-OB touch_count Additive schema change to the order-block primitive: every OB now ships with three freshness signals so consumers can pick their criterion: - mitigated_wick : later bar's wick traversed the zone (lib loose) - mitigated_close: later bar's body broke past (lib strict) - touch_count : number of distinct touch events (trader-eye) The two lib flags fire only on INVALIDATING breaks (price went past the zone in the wrong direction). touch_count fires on ANY range intersection — captures "price visited this level" without requiring a full break. Cost: one extra smc.ob() call (mitigation_close) + a numpy edge-count per OB (touch_count). Sub-ms total. OB cap raised 20 -> 40 since we no longer pre-filter. Breaking for FE renderers that assumed every emitted OB was live. Quanthex consumer updated to gate on wick + use touch_count for graded weighting (0 fresh = full, 1 = half, 2+ = re-emit as S/R primitive). 323 unit tests pass.