0013d520

ical-recurrence: test that a UTC Until includes the instance that falls on it

UNTIL bounds a recurrence rule inclusively, but lessThanUntil compares
the instance's local time against the UNTIL instant read as a UTC wall
clock, without ever converting between the two.  The comparison is
therefore off by the event time zone's offset from UTC.

recurRecurrenceRuleLocalTimes cannot fix this on its own because it is
handed a bare LocalTime and knows nothing about the time zone; the
DateTimeStart is still available one level up, in
recurRecurrenceRuleDateTimeStarts.

For a zone east of UTC the last instance is dropped, as here.  West of
UTC the same comparison over-generates instead.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 7s 3s 3s 10s 7s
Eval 1m03s 12s 12s 1m16s 53s
Build 1m15s 2m19s - - 11m46s
Suite 7s 2m35s - - 1h28m13s

Timeline

0s10s1m10s12m40s12m50s13m13m10s13m20s