Skip to content

fix: preserve daily timestamp declarations through gap and backfill workflows - #104

Merged
stefan-jansen merged 17 commits into
mainfrom
fix/daily-timestamp-declarations
Oct 17, 2026
Merged

stefan-jansen merged 17 commits into
mainfrom
fix/daily-timestamp-declarations

Conversation

@stefan-jansen

@stefan-jansen stefan-jansen commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

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

  • Basef57c8d91fd5dbada151fb4dfe8325bda8268b954, regression-only4c1c0db41a9bb3cdca0787e159dea9092b965820:10 failures/4 controls in1.34s. Real SyntheticProvider labels -> Flat/Hive -> canonical UTC read -> DataManager metadata -> daily gap utility falsely loses Tokyo dates and reports missing Friday. The existing range planner is a passing timezone control. Explicit instant rejections are capability failures, not10 historical numerical bugs.
  • Current a78036e includes main 1501f00 through normal expected-head-guarded GitHub Update branch. All six owned files are unchanged from c9b39dd. Before the strict local hold, 6e56b18 passed 176 focused daily/gap/range/update/session cases in 15.83s with ResourceWarning as an error and native thread caps of one. Those historical results do not replace new-head hosted qualification; no local tests or hooks have run during the hold.
  • Current-head hosted coverage run 39059906046 passed 3,950 tests, 292 deselected, with 86.24% coverage against the required 85%. Strict documentation run 39059906071 passed its build, rendered identity checks and artifact upload. Remaining supported native/ecosystem platform checks must pass before merge.
  • Includes actual Flat/Hive backfill for event/close and Tokyo labels, preserved provider timestamps, continuous midnight sides, actual missing session, disabled calendar, outside-session rejection, custom timestamp column and conflicting frequency. The previous unsupported-event guard is replaced by public session-mapping expectations rather than retained as an obsolete rejection.
  • Ruff lint/format, ty, diff checks, normal commit hooks and strict MkDocs pass. Full applicable hosted CI/docs/package/resource/platform gates remain required after prerequisite/retarget; focused evidence alone is not full qualification.

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.

Copilot AI balanced review requested due to automatic review settings October 17, 2026 15:52

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Base automatically changed from fix/session-calendar-contract to main October 17, 2026 17:16
Stefan Jansen and others added 3 commits October 17, 2026 13:19
…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
@stefan-jansen
stefan-jansen merged commit 721adee into main Oct 17, 2026
27 checks passed
@stefan-jansen
stefan-jansen deleted the fix/daily-timestamp-declarations branch October 17, 2026 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: preserve daily timestamp declarations across gap consumers

2 participants