81680bbb4b
A tick that jumped across one or more empty buckets previously opened the next non-empty bar directly, so the candle series silently grew time holes — downstream indicators (EMA, ATR, ...) computed over such a series drift from one computed over an unbroken series. Add an opt-in gap-fill mode: with_gap_fill(true) makes push emit a flat placeholder candle (open == high == low == close = the pre-gap close, volume = 0) for every skipped bucket. push now returns Result<Vec<Candle>> so a single tick can yield the closed bar plus its trailing fillers; the empty vector replaces the former Ok(None). Timestamp overflow while filling is reported as Error::Malformed. Default behaviour is unchanged (gaps skipped) and is now documented on the type and on push.