Converts a boolean series to a range series, where each contiguous run of true values becomes a
half-open range [start, end). The boolean series is treated as forward-filled: a value holds until the
next sample. For example, given timestamps [0, 1, 2, 3, 4] and values [true, true, true, false, false],
the result is a single range [0, 3). When openEnded is false and the series ends with true, the last
range is closed at the final timestamp, producing a zero-duration range (moment) for isolated true values.