fix(atif): emit real UTC step timestamps instead of local time - #59
Merged
Conversation
_iso8601_utc() formatted whatever tzinfo it was handed and appended "Z" unconditionally, never converting. Event timestamps arrive naive (local) while the no-argument default is already UTC-aware, so a single trajectory mixed both and its steps came out non-monotonic — off by the local UTC offset. Invisible in UTC, a silent multi-hour skew everywhere else. Normalise to UTC first; a naive value is interpreted as local time, matching what the event system produces. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
_iso8601_utc()formatted whatever tzinfo it was handed and appendedZunconditionally, never converting. Event timestamps arrive naive (local); the no-argument default is already UTC-aware. A single trajectory therefore mixed both and its steps were not in chronological order.Observed on a CEST (UTC+2) host — note the hour field, all suffixed
Z:Invisible when running in UTC, a silent multi-hour skew everywhere else — it breaks sorting, plotting, and correlation with OTel spans or NeMo Relay trajectories.
Change
Normalise to UTC before formatting; a naive value is interpreted as local time, matching what the event system produces.
Tests
6 new; 4 fail without the fix. Full suite 6489 passed.
🤖 Generated with Claude Code