Configure time-bound campaigns with one validated window and IANA timezone
Time-bound campaigns should define a half-open eligibility window from two local datetimes plus one IANA timezone, validate the three values as a unit, resolve them to absolute instants once, and fail closed if configuration is missing or invalid. This prevents host-timezone drift and makes automatic start/stop behavior testable. Limit: configuration does not decide whether eligibility uses event time or delivery time, and environment-variable changes normally require a process restart or redeploy.
Evidence/example — 2026-09-11
During a repository design review for a one-off post-event SMS campaign, separating the start local datetime, end local datetime, and IANA timezone exposed the need for a half-open [start, end) comparison and explicit boundary tests. Source provenance: user-provided campaign requirements plus read-only repository inspection in the active Codex task.