Repository navigation
fix: preserve daily timestamp declarations through gap and backfill workflows - #104
Merged
Merged
Conversation
added 14 commits
October 17, 2026 10:17
…eclarations # Conflicts: # docs/user-guide/sessions.md # src/ml4t/data/sessions/assigner.py # src/ml4t/data/sessions/completer.py # tests/test_session_calendar_contract.py
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.
Closes #103
Outcome
Use one internal daily session-label projection across gap classification, range planning and actual backfill provider-row selection. Aware labels restore declared timezone after canonical UTC storage; naive labels remain civil identifiers. Explicit event_time/bar_close/bar-side metadata uses native SessionAssigner even at midnight or daily frequency. Out-of-session instants fail clearly, while legacy daily labels retain their existing off-session policy. Explicit disabled calendars bypass schedule interpretation.
The utility preserves actual bracketing observation timestamps in DataGap. Range bounds remain inclusive session labels at UTC midnight; missing_periods/size_days count expected sessions. Backfill selects original provider rows by projected session label without retimestamping or manufacturing observations. A declared intraday frequency cannot be silently treated as daily observations. No parallel calendar resolver or event-interval implementation.
Executed evidence
Dependency and review
Targets main with merged PRs 94, 98, 102 and 106 integrated. Retargeting and non-rewriting synchronization are complete; every applicable main-target workflow must qualify this exact combined head. PR 100's separate intraday utility/docs changes still require normal conflict resolution after the hold. They are not folded into this focused review, and old stacked trigger exclusions are not counted as qualification.
AI-assisted source/tests/prose under maintainer direction. Owner reviewed actual diff, shared interpretation, old label policy, timestamp/session units, range bounds, real storage/backfill and immutable inputs. No independent reviewer claimed. No release/deploy or change to published0.2.1. Remaining validation and intraday range-grid requirements remain explicit; native interruption parity is implemented in merged PR94.