Why is the full presentation non-ephemerally stored instead of (timestamp, timezoe)?
Is the use-case strictly limited to checking the validity of a future date that was generated with assumptions based on current tzdata info? That's valid, but quite niche I would argue.
And one can adjust the wrapper to have (timestamp, timezone, assumed_offset_at_ts). But yes, it can be argued that it's not idiomatic/automatic/antecedently obvious anymore.