v0.13.0 — ### Added
- **T-107** Combatant → member resolution. `analysis/resolve_members.py::resolve_combatants_for_report` joins `combatants` to `character_aliases` by `(name, server)`, falls back t…
- T-107 Combatant → member resolution.
analysis/resolve_members.py::resolve_combatants_for_reportjoinscombatantstocharacter_aliasesby(name, server), falls back to name-only when server is NULL — but only if a single alias claims that name (ambiguity leaves it unresolved instead of guessing).coverage_summaryreturns{total_characters, resolved, unresolved[…]}and filters FFLogs pseudo-actors (Multiple Players,Limit Break, empty-name,Environment). GET /api/reports/{code}/roster-resolutionreturns the per-fight combatant → member mapping + coverage in one payload.ReportDetail.jsx: roster-coverage banner (green when fully resolved, amber otherwise, listing the unresolved character names), and the pull-detail tables now display member name alongside character name (e.g. "Alice (Alice Tankerton)").- 9 new tests (7 resolver: known alias / server-null fallback / unknown combatant / per-fight job differs / coverage / unknown-report / ambiguous-name; 2 API smoke). 116 tests total.