Repository navigation
fix: preserve calendar declarations through ingestion and updates - #98
Merged
Merged
Conversation
added 13 commits
October 17, 2026 10:17
…r-declarations # Conflicts: # docs/user-guide/sessions.md # src/ml4t/data/core/models.py # src/ml4t/data/managers/storage_manager.py # 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 #97
Outcome
Carry canonical calendar and shared FeedSpec declarations through DataManager load, import, initial update and incremental update. Explicit selection overrides supplied/stored declarations, then NYSE. Version-2 omission stays absent, explicit null disables downstream detection, and a legacy version-1 null remains inheritance unless explicitly overridden. Persist supported timezone, timestamp and grid fields without inventing another resolver.
Incremental gap detection receives the effective stored/feed declaration rather than an asset-class switch. Disabled calendars cannot trigger filling of an old outage. Frequency/bar-type contradictions, invalid calendars and invalid stored temporal declarations fail before publishing a replacement generation. Exchange remains descriptive. Model-to-FeedSpec projection uses a physical frequency instead of legacy unknown/event-count labels.
This PR targets main after session/Metadata PR94 merged atda7d259. Currentcf8b559cba4d560b650deaa8c2f412300e9472b3 integrates that qualified source without rewriting published history and includes provider-reuse PR96. Review the focused six-file ingestion diff against main. Every applicable main-target workflow must qualify this exact combined head; old stacked-base trigger exclusions are not full qualification.
Executed evidence
Compatibility and remaining scope
Continuous data must declare24/7 rather than rely on asset-class inference. Explicit None is row mode, not a continuous schedule. Non-null session-start overrides are rejected by the native adapter. Intraday expected-grid and explicit daily event/close interpretation remain unsupported pending separate repairs; use fill_gaps=False for those updates. Detection and filling remain distinct: enabled general forward fill still uses the legacy elapsed grid and can insert closed dates around a real gap. This PR does not claim calendar-aware imputation or complete harmonization.
AI-assisted code/tests/prose under maintainer direction. Owner reviewed actual diff, old positional signatures, shared version semantics, both storage backends, atomic failures, metadata projection, precedence and legacy preservation. No independent reviewer claimed. Published0.2.1 unchanged; no release/deploy.