By: Tom Sydney Kerckhove <syd@cs-syd.eu>
ical-recurrence: record what an event without a DTSTART does An event with no DTSTART is conforming input when the calendar carries a METHOD: @ ; The following is REQUIRED if the component ; appears in an iCalendar object that doesn't ; specify the "METHOD" property; otherwise, it ; is OPTIONAL; in any case, it MUST NOT occur ; more than once. ; dtstart / @ recurEvents returns early for one, so its RDATEs are dropped and its EXDATEs go unapplied. With METHOD:REQUEST, a DURATION and two RDATEs, the recurrence set comes back as a single occurrence with no start and neither RDATE in it. This records that rather than changing it, because the spec does not say what the recurrence set of such an event is. Every definition of one is phrased in terms of DTSTART, down to "The DTSTART property defines the first instance in the recurrence set", and there is no way to work out where an instance an RDATE adds should end when the DTSTART and DTEND pair that the duration would come from is what is missing. A period-valued RDATE carries its own end and a DURATION would carry over, but a DTEND without a DTSTART would not, so a fix would have to invent an answer for that case. Applying the EXDATEs alone would change nothing: the single occurrence has no start, and an exception date cannot match that. No behaviour changes here. Worth a decision rather than a silent gap.
| Time to Start | Worker time | Duration | Time to finish | Idle | |
| Config | 0s | 1s | 1s | 1s | 0s |
| Eval | 1s | 10s | 10s | 11s | 0s |
| Build | 10s | 1m10s | 1m10s | 1m21s | 0s |
| Suite | 0s | 1m21s | 1m20s | 1m21s | 0s |