Problem
Real calls die when the caller repeats an intent three times while the agent says "sorry, I didn't catch that". Each turn looks benign; the loop is the failure.
Pattern
Add a check in voiceeval/checks.py (sibling: check_dead_air, adjacent-turn scan with threshold). Normalize user turns; fire repeat_loop (medium) on 3+ near-identical user turns, or 2+ agent no-catch phrasings.
Acceptance
New check repeat_loop. Fixture repeat_loop_call.json (user repeats address 3x) flagged; good_call.json clean.
Problem
Real calls die when the caller repeats an intent three times while the agent says "sorry, I didn't catch that". Each turn looks benign; the loop is the failure.
Pattern
Add a check in
voiceeval/checks.py(sibling:check_dead_air, adjacent-turn scan with threshold). Normalize user turns; firerepeat_loop(medium) on 3+ near-identical user turns, or 2+ agent no-catch phrasings.Acceptance
New check
repeat_loop. Fixturerepeat_loop_call.json(user repeats address 3x) flagged; good_call.json clean.