Moda Result DTO
Wire-safe MODA scoring result for a continuous fit, capturing the FULL multi-objective decision analysis (metrics, raw scores, transformed values, ranks, rank frequencies).
The member DTOs mirror, field for field, the record classes the engine's AdditiveMODAModel already emits (MetricData, ScoreData, ValueData, AlternativeRankFrequencyData) — minus their DbTableData baggage (the non-deterministic global-counter id and the repeated modaName). The result extractor populates these by calling the model's own producers and copying the primitive fields, so the mapping is lossless.
Lists are flat/normalized and keyed by alternative, which equals the displayName of the corresponding DistributionFitDTO. The overall weighted value / first-rank count / average ranking (the engine's OverallValueData) are intentionally NOT duplicated here — they are the headline fields on each DistributionFitDTO.
Populated in a later phase; null on the result until then.