Merge loops/events into architecture: VTIMEZONE iCal export (DST-correct tz recurrence, 376 tests)

This commit is contained in:
2026-06-07 20:03:34 +00:00
5 changed files with 273 additions and 74 deletions

View File

@@ -18,7 +18,7 @@ capacity rules, transactional booking, and a flow-driven notification dispatcher
## Status (rolling)
`bash lib/events/conformance.sh`**366/366** (Phases 1-4 + 13 ext + tz-aware iCal export fix)
`bash lib/events/conformance.sh`**376/376** (Phases 1-4 + 13 ext + tz iCal export via TZID + VTIMEZONE)
## Ground rules
@@ -88,6 +88,15 @@ lib/events/api.sx ── (events/schedule) (events/book) (events/agenda) ──
## Progress log
- 2026-06-07 — VTIMEZONE iCal export (supersedes the UTC-Z tz fix — full DST
fidelity). A tz event now exports DTSTART;TZID=<name>:<local> (+ EXDATE/RDATE
in the same TZID-local form; UNTIL stays UTC per RFC), and the VCALENDAR emits
a VTIMEZONE per distinct zone with DAYLIGHT/STANDARD sub-components generated
from the zone's transition rules (offsets + FREQ=YEARLY;BYMONTH;BYDAY) — the
London/Paris blocks match real-world definitions exactly. So a client recurs
the event at a fixed WALL-CLOCK time, DST-correct (the prior caveat is gone).
`ev-ical-vtimezone`, `ev-ical-offset`, distinct-zone collection; importer now
tolerates the ;TZID= parameter. +16 tests (ical 56), 376/376 green.
- 2026-06-07 — Fix: timezone-aware iCal export. Bug — tz events store wall-clock
LOCAL times, but export stamped them with a `Z` (UTC) suffix, so a London
18:00 event falsely read as 18:00 UTC. `ev-ical-conv` now converts a tz