new : Source -> Explanation
Explanation
Explanation :: # (opaque)
Bounded explanation of descriptions and already-bound interpretation results. Typed facts come directly from the source; rendering never resolves zones, lowers calendar selections, invents tolerances or parses diagnostic text. Semantic status is carried by the facts; Report.status describes rendering completeness only. Caller limits bound visited facts and UTF-8 output bytes. Fact budgets count indexed fact accesses. A snapshot presentation fact may inspect at most 32 source annotations; no fact access traverses zone rules. Coverage and complete selections expose cached counts and indexed members; fact access never scans earlier members or computes total width. A selection batch exposes its reported evaluation status/counts separately from rendering status. Limited batches describe the request and context without presenting partial work as complete or empty coverage. Recurrence facts describe stored rules and effective selectors without generating candidates. COUNT is a rule limit before exclusions, not an emitted-result count. Clock selector facts include normalized defaults; they do not reconstruct which fields appeared in the source text. Each embedded text field is previewed to 256 bytes before formatting, using UTF-8 boundaries and a visible ellipsis. TextLimit reports such previews.
Zero fact/byte budgets visit no facts. A line that exceeds the remaining byte budget emits a UTF-8 prefix plus "..." when at least three bytes remain, then reports ByteLimit. ByteLimit takes precedence over field-preview truncation; TextLimit takes precedence over FactLimit when both affected the report.
fact_count : Explanation -> U64
plain : Explanation, Budget -> Report
to_inspect : Explanation -> Str
Source : [DateRecurrence(DateRecurrence), TimedRecurrence(TimedRecurrence), RfcTimedRule(RfcTimedRule), Coverage(Coverage), ResolvedBoundary(ResolvedBoundary), ResolvedSelection(ResolvedSelection), SelectionBatch(Batch), CalendarValue(CalendarValue), QualifiedCalendarValue(QualifiedCalendarValue), EdtfDate(EdtfDate), OffsetTimestamp(OffsetTimestamp), Ixdtf(Ixdtf), Snapshot(Snapshot), ExactInterval(ExactInterval), RfcDateTime(RfcDateTime), RfcDuration(RfcDuration), RfcPeriod(RfcPeriod)]