Exp 3 — cycle_check text-similarity threshold sweep
Synthetic corpus, 6 fault-mode cases. We sweep min_text_sim 0.05 → 0.50 in 0.05 steps and report whether each case's expected segment is selected.
| case | expected | t=0.05 | t=0.10 | t=0.15 | t=0.20 | t=0.25 | t=0.30 | t=0.35 | t=0.40 | t=0.45 | t=0.50 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| perfect_match_no_drift | S1 | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ |
| perfect_match_with_drift | S1 | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ |
| partial_paraphrase | S1 | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ |
| garbled_stt_must_fall_back_to_time | S1 | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ | S1✅ |
| two_correct_candidates_pick_best_text | S2 | S2✅ | S2✅ | S2✅ | S2✅ | S2✅ | S2✅ | S2✅ | S2✅ | S2✅ | S2✅ |
| all_misses_returns_none_with_high_threshold | None | ∅✅ | ∅✅ | ∅✅ | ∅✅ | ∅✅ | ∅✅ | ∅✅ | ∅✅ | ∅✅ | ∅✅ |
Accuracy per threshold
| threshold | correct | accuracy |
|---|---|---|
| 0.05 | 6/6 | 100% |
| 0.10 | 6/6 | 100% |
| 0.15 | 6/6 | 100% |
| 0.20 | 6/6 | 100% |
| 0.25 | 6/6 | 100% |
| 0.30 | 6/6 | 100% |
| 0.35 | 6/6 | 100% |
| 0.40 | 6/6 | 100% |
| 0.45 | 6/6 | 100% |
| 0.50 | 6/6 | 100% |
Best threshold: 0.05 (6/6 correct).
Default in cycle_check._best_segment_for_line is 0.15. Reconsider.
Method breakdown at default threshold (0.15)
| case | method used |
|---|---|
| perfect_match_no_drift | text |
| perfect_match_with_drift | text |
| partial_paraphrase | text |
| garbled_stt_must_fall_back_to_time | time |
| two_correct_candidates_pick_best_text | text |
| all_misses_returns_none_with_high_threshold | none |