AllDayRecurrence
AllDayRecurrence(id) :: # (opaque)
Stream identified all-day occurrences in source-date order. The window selects source dates, not timeline overlaps. Duration may extend beyond it. IDs pair the supplied series identity with each original Gregorian date.
collect : AllDayRecurrence(id), { work : Limits, max_occurrences : U64 } -> Try(Batch(id), [OutOfRange, OutsideValidity, ..])
Materialize at most max_occurrences. Work budgets apply to the whole call, not separately to each emitted occurrence. Reaching output capacity returns Limited without looking ahead to prove End. Resume its cursor.
At most one date-cursor advance and one bounded zone-cursor advance. A pending occurrence resumes before any new date is consumed. Empty coverage still emits an occurrence; skipped civil days do not erase IDs.
Every advancement exposes its outcome. End, errors and Limited are terminal items; resume a Limited cursor explicitly with chosen budgets.
to_inspect : AllDayRecurrence(id) -> Str
Limit : [DateWorkLimit, DateBufferLimit, ZoneWorkLimit, ZoneBufferLimit, OutputLimit]