Deterministic Calendar Resolution
Deterministic conflict resolution rules prioritizing feast occurrences.
Calendar resolution must be deterministic. OLS v1.0 MUST NOT rely on JSON object key order or file-loading order to resolve liturgical conflicts.
{
"conflictRules": [
{
"id": "cr-timkat-overrides-weekday-fast",
"winner": "proper-timkat",
"overrides": ["proper-wednesday-fast", "proper-friday-fast"]
}
]
}
Resolution Order
For the same package set, profile, and date, every conforming resolver should produce the same ordered result:
- Calculate the liturgical date and season.
- Collect every feast, fast, commemoration, and lectionary rule whose conditions match.
- Apply explicit
overridesrules. - Compare remaining candidates by
priorityClassand numeric priority. - Apply the profile’s canonical fallback for any unresolved tie.
- Record winners, suppressed candidates, and the rule used for each decision.
{
"slot": "gospel-of-the-day",
"winner": "proper-timkat",
"suppressed": ["proper-wednesday-fast"],
"rule": "cr-timkat-overrides-weekday-fast"
}
The result above is an explanatory resolution trace. Keeping a trace makes calendar behavior testable and prevents a UI from hiding unresolved conflicts.