Vigil
← All news

v0.30.0 — ### Added — T-303 M-MIT mitigation audit

- `analysis/mit_audit.py::mit_audit_for_fight()` — for each raidwide cast in a fight, joins `strat_config.mit_plan` (T-301) and checks whether each planned mit ability fired withi…

  • analysis/mit_audit.py::mit_audit_for_fight() — for each raidwide cast in a fight, joins strat_config.mit_plan (T-301) and checks whether each planned mit ability fired within [cast_ts - 15s, cast_ts + 3s] (cast or applybuff/refreshbuff event suffices). Outputs per-raidwide planned-slot list with fired bool + fired_at_ts + fired_source_id.
  • mit_audit_summary() rolls up to fight-level stats: raidwide_count, with_plan / missing_plan, planned_slots_total, missed_mits_total, mit_hit_rate.
  • API: GET /api/fights/{id}/mit-audit (full) + GET /api/fights/{id}/mit-audit/summary.
  • React MitAudit panel in PullDetail — per-raidwide row showing planned slots colored green (✓) or red (✗) by fire status, "no plan" greyed out when strat_config doesn't cover that mechanic-occurrence.
  • 7 new tests (covers mit-fired-in-window / missed / no-plan / no-raidwides / summary). 253 tests total.
  • Will feed T-304 fault disambiguation: a raidwide death with mits down = mit-failure root; mits up = cascade from earlier death.