events: iCal coverage for southern-hemisphere VTIMEZONE (+7) — 391/391
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s

The previous commit asserted southern zones round-trip through iCal unchanged
but verified it only by reasoning. Close that gap with explicit tests:

- A Sydney VTIMEZONE export block: TZID:Australia/Sydney, DAYLIGHT->+1100
  (AEDT) / STANDARD->+1000 (AEST), first-Sunday rules (BYMONTH=10/4 BYDAY=1SU),
  and DAYLIGHT DTSTART:19701004T020000 — confirming the -480 rule time folds
  the from-offset back to the correct local 02:00 AEST transition.
- A southern-zone DTSTART;TZID export -> import round-trip preserving :dtstart.

+7 ical tests (now 63).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-10 22:04:04 +00:00
parent 78b45a331e
commit 6716af69dc
2 changed files with 26 additions and 2 deletions

View File

@@ -18,7 +18,7 @@ capacity rules, transactional booking, and a flow-driven notification dispatcher
## Status (rolling)
`bash lib/events/conformance.sh`**384/384** (Phases 1-4 + 14 ext + tz iCal export via TZID + VTIMEZONE + southern-hemisphere DST)
`bash lib/events/conformance.sh`**391/391** (Phases 1-4 + 14 ext + tz iCal export via TZID + VTIMEZONE + southern-hemisphere DST incl. iCal round-trip)
## Ground rules
@@ -88,6 +88,13 @@ lib/events/api.sx ── (events/schedule) (events/book) (events/agenda) ──
## Progress log
- 2026-06-10 — Harden southern-hemisphere DST: explicit iCal coverage for the
previous commit's unverified claim that "southern zones round-trip through
iCal unchanged". Added a Sydney VTIMEZONE export block (TZID:Australia/Sydney,
DAYLIGHT→+1100/STANDARD→+1000, first-Sunday rules BYMONTH=10/4 BYDAY=1SU, and
DAYLIGHT DTSTART:19701004T020000 — proving the 480 rule time folds back to
local 02:00 AEST) and a southern-zone DTSTART;TZID export→import round-trip.
+7 tests (ical 63). 391/391 green.
- 2026-06-10 — Southern-hemisphere DST. The `:dst` zone model assumed northern
ordering (dst-start < dst-end, DST = [start, end)); southern zones (DST begins
~Oct, ends ~Apr) have dst-start > dst-end and so silently never entered DST —