Not always a math bug. Sometimes a human bug. Tzdata can have errors (it's crowdsourced after all) that cause past UTC stamps to be incorrect because that incorrect tzdata was used at conversion time. And since most people aren't storing the tzdata version they're using with the stamp, it would be very difficult to make corrections without also corrupting other stamps.
The bottom line is, if wall time is important, past or present, wall time needs to be stored.
The only thing that can be guaranteed about a UTC timestamp is it's a UTC timestamp.
Seems like for airtightness you'd store utc alongside utc of when timestamp was stored alongside timezone
When was the last time tzdata was wrong about a period that already passed?
Most of my career I’ve seen problems where it’s out of date, never where it’s up to date and wrong.