Problem
Corrupt fixtures pass silently: an agent turn starting before the user turn ends (negative gap) yields zero findings instead of flagging bad timing data.
Where
voiceeval/checks.py (check_latency: gap = agent.start_s - user.end_s, only gap > budget flagged).
Acceptance
Add a failing test first with overlapping/out-of-order timestamps, asserting a finding (or explicit invalid-timing error) rather than silence. Then fix.
Problem
Corrupt fixtures pass silently: an agent turn starting before the user turn ends (negative gap) yields zero findings instead of flagging bad timing data.
Where
voiceeval/checks.py(check_latency:gap = agent.start_s - user.end_s, onlygap > budgetflagged).Acceptance
Add a failing test first with overlapping/out-of-order timestamps, asserting a finding (or explicit invalid-timing error) rather than silence. Then fix.