Vigil
← All news

v0.31.0 — ### Added — T-304 fault disambiguation via mit audit

- `analysis/fault_disambiguation.py::disambiguate_for_fight()` reads existing `fault_scores` (T-302) + the T-303 mit-audit, walks each cascade death whose killing ability is a rai…

  • analysis/fault_disambiguation.py::disambiguate_for_fight() reads existing fault_scores (T-302) + the T-303 mit-audit, walks each cascade death whose killing ability is a raidwide, looks up which occurrence of that raidwide killed them, and checks if its planned mits were missed. If yes: reclassify cascademit_failure. score recomputes with mit_failure counted at 1.0 (same as root) instead of 0.1 (cascade).
  • API: POST /api/fights/{id}/fault-scores/disambiguate. The PullDetail compute button auto-runs disambiguation right after compute — single click does both passes.
  • React FaultScores table grows a mit fail column (red when >0).
  • 4 new tests covering reclassification, no-upgrade-when-mit-fired, missing-rows edge case, and score recomputation. 257 tests total.
  • Doesn't try to assign mit_failure to a specific player (role→member resolution is ambiguous without strict roster locking). The M-MIT panel below already surfaces which ability was missed — the human reads it and assigns blame. T-309 polish could add explicit member-locked roles later.