- Add warning logging for unexpected errors (not missing prerequisites) - Use CalendarCycles.interval() type instead of generic atom() - Update moduledoc to reflect actual usage (no where clause needed)
- Add CycleGenerator module with advisory lock mechanism - Add SetMembershipFeeStartDate change for auto-calculation - Extend Settings with include_joining_cycle and default_membership_fee_type_id - Add scheduled job skeleton for future Oban integration