ResolvedSelection

ResolvedSelection :: # (opaque)

Complete local-selection coverage retaining its exact interpretation inputs.

resolve : ZoneRules, LocalDateTime, LocalDateTime -> Try(ResolvedSelection, [EmptySelection, ReversedSelection, OutsideValidity, OutOfRange, ..])
collect : SelectionCursor, SelectionLimits -> Try(Batch, [OutOfRange, ..])

Continue a validated zone-selection cursor under explicit work/storage limits. Only complete interpretation becomes a snapshot. The cursor retains the exact rules and civil inputs across all resumptions.

coverage : ResolvedSelection -> Coverage
start : ResolvedSelection -> LocalDateTime
end : ResolvedSelection -> LocalDateTime
rules : ResolvedSelection -> ZoneRules
reresolve : ResolvedSelection, ZoneRules -> Try(ResolvedSelection, [EmptySelection, ReversedSelection, OutsideValidity, OutOfRange, ..])
is_eq : ResolvedSelection, ResolvedSelection -> Bool

Equality/hashing preserve civil source identity and complete rule evidence. same_extent instead compares only the resulting compatible-axis coverage.

fact_count : ResolvedSelection -> U64

Complete snapshots expose stored canonical members without reevaluation.

fact_at : ResolvedSelection, U64 -> [End, Item(SemanticFact)]
batch_fact_count : Batch -> U64

Limited batches explain inputs and work state, not partial coverage.

Batch : {
    segments : U64,
    buffered : U64,
    status : [Complete(ResolvedSelection), Limited({ cursor : SelectionCursor, reason : [WorkLimit, BufferLimit] })],
}