Skip to content

Fix V2 recurrence instants across host timezones - #195

Merged
thedhanawada merged 2 commits into
masterfrom
fix/recurrence-event-timezone
Oct 2, 2026
Merged

thedhanawada merged 2 commits into
masterfrom
fix/recurrence-event-timezone

Conversation

@thedhanawada

Copy link
Copy Markdown
Collaborator

A UTC daily series starting at 09:00Z changes to 10:00Z after a host DST transition in core 2.5.6 when run in America/Los_Angeles. The 365-day reproducer has 59 wrong-hour results. V2 now performs calendar steps, arithmetic seeks, floating rule dates and date-based exception matching in the selected recurrence zone. Bounds and iterators use the resulting instants without a second DST adjustment.

Compatibility scope: native Date gap/fold calendar-setter behavior is retained in the event zone, and duration stays end minus start. handleDST remains accepted but true/false converge because stepping already resolves transitions. Legacy Event wall-clock conversions and V2 startUTC/endUTC metadata are unchanged and may remain host-dependent; use start/end for the corrected occurrence instants. The complete contract and limitations are documented in docs/recurrence-timezones.md.

Validation: UTC and Melbourne full suites 26/26 plus declaration checks; 174 independent native-Date fixtures on four hosts (696 combinations) across six event zones; interface 291 tests; 40 independent benchmark timestamp-parity checks; quality/formatting pass with four pre-existing lint warnings. LA and Kolkata full suites each pass 25/26; the sole remaining failures reproduce on unmodified 2.5.6 (LA legacy timezone conversions; Kolkata V1 ancient-series transition handling). Tests replace legacy-engine or host-local expected values with independent oracles where those expectations conflict with explicit event-zone behavior.

No version change or release in this draft. Proposed patch release after exact-head CI and review; docs-only PR193 remains held.

@thedhanawada
thedhanawada marked this pull request as ready for review October 2, 2026 11:51
@thedhanawada
thedhanawada merged commit ec4e772 into master Oct 2, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant