AllDayOccurrence

AllDayOccurrence(id) :: # (opaque)

An identified civil-day selection, including occurrences with empty coverage. Pair an application series ID with the original date for recurrence identity. Duration counts civil days, never fixed 24-hour elapsed quantities.

cursor : id, CalendarDate, U64, ZoneRules -> Try(Cursor(id), [InvalidDuration, OutOfRange, OutsideValidity, ..])

Constant calendar work; zone interpretation is deferred to the cursor. Both the source and exclusive end must fit the source calendar and rules.

id : AllDayOccurrence(id) -> id
date : AllDayOccurrence(id) -> CalendarDate
days : AllDayOccurrence(id) -> U64
selection : AllDayOccurrence(id) -> ResolvedSelection
coverage : AllDayOccurrence(id) -> Coverage
Batch : {
    segments : U64,
    buffered : U64,
    status : [Complete(AllDayOccurrence(id)), Limited({ cursor : Cursor(id), reason : [WorkLimit, BufferLimit] })],
}

Cursor

AllDayOccurrence.Cursor(id) :: # (opaque)
collect : Cursor(id), SelectionLimits -> Try(Batch(id), [OutOfRange, ..])