Vigil
← All news

v0.16.0 — ### Added

- **T-106** M-PARSE per-phase damage trajectory. `analysis/parse_trajectory.py::parse_per_phase_for_fight(session, fight_id)` consumes T-103 phase boundaries and aggregates per-pl…

  • T-106 M-PARSE per-phase damage trajectory. analysis/parse_trajectory.py::parse_per_phase_for_fight(session, fight_id) consumes T-103 phase boundaries and aggregates per-player damage events within each phase, normalized to phase-duration seconds for DPS. Mode-1 metric (raw DPS) — true aDPS (FFLogs raid-buff-shared credit) is M-PARSE mode-2 work, deferred until the damage-attribution model is needed for M-GATE (T-207).
  • GET /api/fights/{id}/parse returns {phases: [{phase_index, start_offset_ms, end_offset_ms, duration_ms, players: [{player_id, name, job, damage_total, dps}]}]}, players sorted by damage desc within each phase.
  • React ParseTable component in PullDetail — per-player rows × per-phase columns matrix, DPS values formatted as 27.3k; players ordered by total damage across the fight.
  • 6 unit + 2 API tests. 145 tests total.
  • Live AC on FRU kill #163: P0 Fatebreaker top SAM 28.6k DPS; P2 Adds intermission spikes to 35.7k (cleave); P5 Fatebound peaks at 33.3k (burst CDs popping). Per-phase DPS curve matches real FRU optimization expectations — adds phases have visible damage spikes, final phase shows the burst climax.