Opus finding
preprocess_signals catches ValueError but not TypeError on numeric coercion
lowbugmedium
- agent/signals.py:148-153
row.get returns the string from CSV (or None, coerced to 0 by `or 0`), so in normal CSV ingestion only ValueError is realistic. However, if upstream ever passes a dict with non-string/non-numeric values (e.g. lists from a different ingestion path), float() raises TypeError, which is uncaught. Minor robustness gap.
Recommendation
Catch `(TypeError, ValueError)` for symmetry with settlement.py's coercion in redemption_price_per_share.