ResolvedSelection

ResolvedSelection :: # (opaque)

Complete local-selection coverage retaining its exact interpretation inputs.

resolve : ZoneRules, LocalDateTime, LocalDateTime -> Try(ResolvedSelection, [EmptySelection, ReversedSelection, OutsideValidity, OutOfRange])

Resolve the full half-open civil range and retain its inputs with complete coverage, including disconnected fold components. Reject empty/reversed labels and incomplete validity or numeric range; scan the finite rules. For explicit work and storage budgets, use a selection cursor with collect.

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

Return the stored complete canonical coverage without reevaluating rules.

start : ResolvedSelection -> LocalDateTime

Return the original inclusive civil start label.

end : ResolvedSelection -> LocalDateTime

Return the original exclusive civil end label.

rules : ResolvedSelection -> ZoneRules

Return the exact immutable rules retained by the selection.

reresolve : ResolvedSelection, ZoneRules -> Try(ResolvedSelection, [EmptySelection, ReversedSelection, OutsideValidity, OutOfRange])

Interpret the original civil range under another explicit rules snapshot. This can change the coverage or return a validity/range error.

same_extent : ResolvedSelection, ResolvedSelection -> Bool

Compare only the resulting POSIX coverage, ignoring source labels and rule provenance.

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.

to_hash : ResolvedSelection, Hasher -> Hasher

Hash the source labels, complete coverage and retained rules consistently with is_eq. Work includes coverage members and rule transitions.

fact_count : ResolvedSelection -> U64

Complete snapshots expose stored canonical members without reevaluation.

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

Read the selection summary, context, then indexed coverage members. Return End beyond fact_count; stored coverage is not recomputed.

batch_fact_count : Batch -> U64

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

batch_fact_at : Batch, U64 -> [End, Item(SemanticFact)]

Read evaluation status followed by the snapshot facts when complete, or source/context facts when limited. Return End beyond batch_fact_count.

to_inspect : ResolvedSelection -> Str

Summarize source bounds and member count without traversing the coverage.

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

Per-call segment work, retained member count, and either a complete snapshot or a cursor plus the limiting reason. Limited exposes no partial coverage.