Problem
One bad turn kills the whole suite load: start_s: "soon" raises bare ValueError, a missing key raises bare KeyError "start_s".
Where
voiceeval/turns.py (from_dict: float(t["start_s"])).
Acceptance
Add a failing test first asserting from_dict with a malformed turn raises a single descriptive ValueError naming turn index/field (never bare KeyError). Then fix.
Problem
One bad turn kills the whole suite load:
start_s: "soon"raises bareValueError, a missing key raises bareKeyError "start_s".Where
voiceeval/turns.py(from_dict:float(t["start_s"])).Acceptance
Add a failing test first asserting
from_dictwith a malformed turn raises a single descriptiveValueErrornaming turn index/field (never bareKeyError). Then fix.