By: Tom Sydney Kerckhove <syd@cs-syd.eu>
ical-recurrence: record how colliding observances are resolved If two observances of one time zone put a transition at the same local time, timeZoneRuleOccurrences can only keep one, and M.unions keeps the leftmost of the maps it is given. Those arrive in Ord TimeZoneObservance order, which compares DTSTART first and the offsets after it, so the smaller TZOFFSETTO wins and the order the calendar listed them in has no say in it. Checked with a time zone holding two STANDARD observances that both start at 20200101T000000, one going to +0200 and the other to +0500. An event in June resolves to 10:00 UTC either way round, so the +0200 one wins whichever order the file lists them in. Worth saying that it is deterministic: the answer does not depend on the order the observances happened to be parsed in, which is the failure this looked like it might be. It is only arbitrary. Recorded rather than changed. The spec does not say what a time zone whose observances disagree about one instant means, so there is nothing to be faithful to, and "last one listed wins" or "latest DTSTART wins" would be no less arbitrary. Rejecting it would turn input that resolves today into an unfixable error.