80295eec87
Resampler::push previously closed the open bar and opened a new one for any candle whose bucket differed from the open bar, including buckets strictly before it — silently corrupting the output for out-of-order input. TickAggregator::push already rejects this case with an error. Change push to return Result<Option<Candle>>: candles in an earlier bucket than the open bar now yield Error::Malformed, matching the aggregator. resample_all propagates the error via `?`. The doc comment keeps the input/output multiple relationship as a documented caller responsibility, since Resampler does not know the input timeframe.