Implement monthly nth-weekday recurrence #29

4 Commits
Author SHA1 Message Date
Joshua King b7c1c7c206 test: replace the unreachable day+7 guard with a full trailing-day sweep 2026-09-14 14:34:46 -04:00
Joshua King c9c738582a test: sweep trailing days after each fifth-Monday hit; hard-code second-Friday occurrences_between expectations 2026-09-14 14:33:35 -04:00
Joshua King 7be4aa5679 test: independent 2026 calendar fixtures replace helper-derived expectations; exact final-occurrence proofs for n=5
- twelve-month tests use hard-coded, independently verified (month,
  first, second, third, fourth, last) fixtures with weekday assertions
- n=5 tests assert exact hit months {3, 6, 8, 11}, that each hit is the
  month's FINAL Monday (no later Monday fires, prior Monday doesn't),
  and four-occurrence months never fire on any day
- helper last() facts corrected: Feb 2028 last Saturday is the 26th
  (Feb 29 is a Tuesday), verified via plain datetime arithmetic
- March 1 2026 corrected to Sunday; weekday-code naming fixed
  (2 = Wednesday)
2026-09-14 14:31:16 -04:00
Joshua King 883723a365 feat: add monthly nth-weekday recurrence (#29) 2026-09-14 11:18:17 -04:00