Retain validated date descriptions without requiring exclusive upper bounds to fit a provider. Julian and Gregorian provider limits remain unchanged.
CalendarInterval
CalendarInterval :: # (opaque)
A description of when something began and ended, before timeline interpretation. Known endpoints retain their own calendar, year/month/day resolution and scoped qualifications. Unknown means missing knowledge; Open explicitly has no bound. Neither is an integer sentinel. Both endpoints may be Unknown or Open.
This is not an exact half-open appointment or the coverage of every date between two labels. Equal and overlapping civil domains are allowed. Only unqualified endpoints with the entire start domain after the entire end domain are rejected. Qualifications supply no tolerance, so their apparent order cannot establish a contradiction. No zone or satisfiability solver runs. Construction and facts visit at most two bounded qualified descriptions.
endpoints : CalendarInterval -> { start : Endpoint, end : Endpoint }
Return the retained endpoint declarations, never inferred exact boundaries.
interpretation_support : CalendarInterval -> [UnsupportedCivilEndpointModel]
Report this description type's interpretation capability. This is not a resolver: civil endpoint materialization is currently unsupported.
Description equality includes endpoint knowledge, calendar, resolution and qualifiers.
Hash the same declarations used by description equality.
fact_count : CalendarInterval -> U64
Summary, endpoint knowledge, then each known endpoint's own facts.
Constant bounded indexing. A knowledge fact precedes each known endpoint's date and qualification facts, so mixed resolutions remain independently visible.
to_inspect : CalendarInterval -> Str
Bounded semantic inspection; canonical text belongs to an explicit adapter.
Endpoint : [Known(QualifiedCalendarValue), Unknown, Open]
Each side's knowledge, independent of the other side's resolution.
Error : [Start([UnsupportedResolution]), End([UnsupportedResolution]), ReversedBounds]
A date-only profile failure or an intrinsically reversed unqualified domain.