using Marathon.Domain.AnomalyDetection; using Marathon.Domain.Entities; using Marathon.Domain.ValueObjects; namespace Marathon.Domain.Backtesting; /// /// Input row for — one anomaly fully resolved /// against its event metadata and result. The use case constructs these once /// per simulation run and feeds them to the pure simulator in chronological /// order. /// /// The flagged anomaly being simulated. /// /// Parsed evidence payload (pre- and post-suspension snapshots). The simulator /// reads the post-suspension favourite and rate from here. /// /// Final event result — drives the win/loss verdict. /// Sport metadata, optional, surfaced into the trace row. public sealed record BacktestCandidate( Anomaly Anomaly, AnomalyEvidenceData Evidence, EventResult Result, SportCode? Sport);