Optionalexchange?: stringOptionalcurrency?: stringProvenance is mandatory: a report must always be able to say where each datum came from.
Optionalidentifiers?: { isin?: string; cusip?: string; figi?: string }Optionaldividends?: {Optionalsplits?: { exDate: string; numerator: number; denominator: number }[]Optionalfundamentals?: {
Returns one finding per occurrence. The engine collapses them into a single report entry with
occurrences— rules should NOT self-collapse.Findings normally carry
context.config.severity. A rule MAY deliberately emit a lower severity for a lighter sub-case (e.g. CURRENCY_SUSPECT degrades "currency absent" to info): the engine preserves that choice unless the user overrides the rule's severity in the config.