Vigil
← All news

v1.5.4 — phase-index alignment between T-103 and cactbot

- New helper `_align_phases(fight_phase_count, cactbot_phase_count)` in [analysis/timeline_diff.py](analysis/timeline_diff.py) maps each fight phase index to a cactbot phase index…

Changed — timeline diff aligns phases proportionally instead of by strict equality

  • New helper _align_phases(fight_phase_count, cactbot_phase_count) in analysis/timeline_diff.py maps each fight phase index to a cactbot phase index by proportional interpolation. 1:1 when counts match; collapse-to-0 when cactbot has one phase; proportional otherwise.
  • Used in timeline_diff_for_fight to look up cactbot entries per fight phase. Previously the lookup was a strict equality on phase_index — when T-103 detected 2 phases on a pull but cactbot only had 1 (M9S-style), fight phase 1 silently received zero cactbot entries.
  • After alignment, any cactbot phase that didn't get mapped to (case where fight has fewer phases than cactbot) is folded into the nearest aligned fight phase, so no cactbot entry is dropped from the diff.
  • 4 new tests: end-to-end "1 cactbot + 2 fight phases" case showing both fight phases get matches, plus 3 unit tests for _align_phases covering identity / collapse-to-1 / proportional. 350 tests passing (346 → 350).