ical-recurrence: keep the week day of a numeric BYDAY `FREQ=DAILY;BYDAY=2MO` matched **every day** instead of Mondays. `filterEvery` dropped the whole rule part for a frequency where a numeric `BYDAY` is not allowed. That left the day filter empty, and an empty day filter means "no restriction", so forbidden input widened the recurrence set instead of narrowing it. The opposite of conservative. ## Which repair, and why RFC 5545 ยง3.3.10: > If an integer > modifier is not present, it means all days of this type within the > specified frequency. For example, within a MONTHLY rule, MO > represents all Mondays within the month. The BYDAY rule part MUST > NOT be specified with a numeric value when the FREQ rule part is > not set to MONTHLY or YEARLY. So the input is forbidden, and the spec does not say what to do with it anyway. Errata 1913 and 3779 both amend this paragraph and neither addresses the question. The quote is what settles it: the unnumbered form already means every day of that type within the frequency, so keeping the week day and discarding only the number says what the rule nearly said. It is also what `byEveryWeekDayWeek` already does for the same shape (#19). `RecurrenceByDayNumeric` is still emitted, so a conforming run still refuses the rule; only a lenient run gets the repaired week day. ## Two commits 1. **Red.** The regression test, with the justification quoted verbatim. `recurs this event leniently` fails: the lenient run yields 2020-01-06, -07 and -08 where the golden demands -06, -13 and -20. The Haddock quote on `filterEvery` previously stopped mid-sentence on "Furthermore,", cutting off the half of the paragraph that matters here; extended, comment only. 2. **Green.** Five lines. ## New scenario dir, because nothing covered this shape A fixable error has to fail a conforming parse and succeed a lenient one. The existing recurrence scenario dirs run under `shouldConform`, which halts on any fixable error, so a calendar that needs fixing could not live in one โ which is why no recurrence-time fixable error had scenario coverage at all. `test_resources/event/fixable` fixes that, with two tests per file: `runConform` must halt on the fixable error, and the lenient run must match the golden. `scenarioDir` does not recur into subdirectories, so these are not also picked up by `test_resources/event`. Worth reusing for the `RECURRENCE-ID` fixable errors later. ## Goldens The `.occ` is derived by hand, not by `--golden-start`, because the code that would generate it is the code under test. (Four of the eleven goldens in #25 would have been wrong that way.) Suite goes 297 โ 299 passing, 0 failing, and no existing test moved. `nix flake check` passes.