CalDAV: range queries omit events that start before the requested range #1435

Closed
opened 2026-10-08 03:33:08 +00:00 by kayg · 2 comments
Owner

Severity: major.

Steps:

  1. Create a Journal VEVENT with DTSTART 20261007T090000Z and DTEND 20261007T110000Z through CalDAV PUT. The local server returns 201.
  2. REPORT the untagged calendar with a VEVENT time-range of 20261007T100000Z through 20261007T103000Z.

Expected: the event is returned because it overlaps the query. RFC 4791 section 9.9 uses DTSTART < range end and DTEND > range start for a positive-duration VEVENT.
Actual: HTTP 207 contains an empty multistatus. The adapter compares DTSTART only, so overlapping and overnight events disappear from partial client syncs.

Evidence: artifacts/bash3-interop/overlap-response.xml and results.json in job/bash3-interop. Real local shared server REV d395b6e25; fixture was written through the real API. No production data used.

Fix scope: crates/calternal-dav, shared Journal range matching for the area and legacy collection handlers. Regression must cover overlap, boundary exclusion, overnight and zone conversion.

Severity: major. Steps: 1. Create a Journal VEVENT with DTSTART 20261007T090000Z and DTEND 20261007T110000Z through CalDAV PUT. The local server returns 201. 2. REPORT the untagged calendar with a VEVENT time-range of 20261007T100000Z through 20261007T103000Z. Expected: the event is returned because it overlaps the query. RFC 4791 section 9.9 uses DTSTART < range end and DTEND > range start for a positive-duration VEVENT. Actual: HTTP 207 contains an empty multistatus. The adapter compares DTSTART only, so overlapping and overnight events disappear from partial client syncs. Evidence: artifacts/bash3-interop/overlap-response.xml and results.json in job/bash3-interop. Real local shared server REV d395b6e25; fixture was written through the real API. No production data used. Fix scope: crates/calternal-dav, shared Journal range matching for the area and legacy collection handlers. Regression must cover overlap, boundary exclusion, overnight and zone conversion.
Author
Owner

Fixed on job/bash3-interop in 6529c449d. The focused replay regression failed before the change and passed after it. The adapter now matches positive-duration overlap and excludes exact range endpoints, with a regression for an overnight DST change and point events. Current worktree has merged origin/dev d395b6e25. Final live verification and gates are running; no push or merge to dev.

Fixed on job/bash3-interop in 6529c449d. The focused replay regression failed before the change and passed after it. The adapter now matches positive-duration overlap and excludes exact range endpoints, with a regression for an overnight DST change and point events. Current worktree has merged origin/dev d395b6e25. Final live verification and gates are running; no push or merge to dev.
Author
Owner

Deployed to calternal.cloud in merge round 35a (build cc1af3c12, live 2026-10-09 00:12 IST). Closing.

Deployed to calternal.cloud in merge round 35a (build cc1af3c12, live 2026-10-09 00:12 IST). Closing.
kayg closed this issue 2026-10-08 18:41:26 +00:00
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal-v0#1435
No description provided.