Per-node execution statistics tracked by the Adaptive scheduler.
Uses exponential moving average (EMA) for duration tracking and a running count for error rate calculation.
Summary
Types
@type t() :: %Runic.Runner.Scheduler.Adaptive.NodeProfile{ avg_duration_ms: float(), error_count: non_neg_integer(), last_seen: integer(), sample_count: non_neg_integer() }