QualifiedCalendarValue

QualifiedCalendarValue :: # (opaque)

A finite calendar description with explicitly scoped qualifications. Uncertain and approximate are independent flags, not numerical tolerances. A month qualification does not qualify the year/day or the whole value. This is a native description type, not an EDTF parser or reasoning model.

At most one qualification per supplied component and one for the whole value. Construction validates and canonicalizes at most eight entries; input order has no semantic meaning. Whole and component qualifications may coexist and are retained independently, without inferring redundancy or contradiction.

new : CalendarValue, List(Qualification) -> Try(QualifiedCalendarValue, [TooManyQualifications, DuplicateScope(Scope), UnsuppliedComponent(Scope), ..])
described_value : QualifiedCalendarValue -> CalendarValue

The named value alone is descriptive evidence, not an interpretation of its qualifiers. Extracting it does not establish an admissible tolerance.

selection_cursor : QualifiedCalendarValue, ZoneRules -> Try(SelectionCursor, [NeedsModel, OutOfRange, EmptySelection, ReversedSelection, OutsideValidity, ..])

Only an unqualified description has an unconditional certain selection. Qualified descriptions require an explicit admissible model; CalendarEvidence provides finite-alternative point queries. NeedsModel is checked here before any zone work or range lowering.

is_eq : QualifiedCalendarValue, QualifiedCalendarValue -> Bool
fact_count : QualifiedCalendarValue -> U64

Summary, zone requirement, optional model requirement, then scoped facts. Indexing does not enumerate qualifications or interpret their meaning.

fact_at : QualifiedCalendarValue, U64 -> [End, Item(SemanticFact)]
Scope : [Whole, Year, Month, Day, Hour, Minute, Second, Fraction]
Qualifier : [Uncertain, Approximate, UncertainApproximate]