Repository navigation
Description
Adopt the current Backtest 0.2.0 / Specs 0.2.0 dependency cohort and the accepted shared calendar contract in Live as one runtime compatibility change. Keep this separate from CI/development maintenance PR #144.
Current status - November 1, 2026:
The source integration is merged through PR #146, with the subsequent msgpack security repair in PR #148. Current main is 95c7b2e. All 28 supported/main qualification checks and all 16 protected context/app pairs pass. The main qualification run retains the exact 0.2.0 candidate wheel/sdist; all six installed-artifact profiles pass. This is source/candidate qualification, not publication.
Python 3.15 remains unsupported under Decision 0018. The November three-OS canary has three genuine failed jobs. Public Backtest 0.2.0 HKEX calls with NumPy 2.5.4, pandas 3.0.5 and the new pandas-market-calendars 5.6.0 still fail at exchange-calendars 4.13.2 generic-year arithmetic under warnings-as-errors. Windows also retains the known NumPy 2.4.6 datetime C-extension import failure during source-test collection. Linux and macOS each pass 83 selected unsupported source tests; those results do not qualify an installed Python 3.15 wheel. The existing Requires-Python <3.15, NumPy <2.5, pandas <3.1 and November 26 exception expiry remain unchanged.
This issue remains open because Stefan has deferred provider acceptance and release. Fresh current-candidate short IB/Alpaca compatibility and reviewed source/runtime/artifact evidence binding remain missing. The bounded proposal selects those two short checks with run-soak=false and publish-evidence=false only if separately resumed and authorized. No provider connection, order, short/soak dispatch, release or deployment is authorized by this status update. Published Live 0.1.3 remains unchanged.
The published Live 0.1.3 release is qualified with Backtest 0.1.12 and Specs 0.1.5. Its restrictive dependency bounds are intentional safety constraints, not evidence of current-cohort integration. An actual isolated public installation requiring Live 0.1.3, Backtest 0.2.0 and Specs 0.2.0 fails resolution because Live requires Specs <0.2 and Backtest <0.2. Simply widening those bounds is insufficient. Both current packages still use lifecycle version 1; lifecycle version must not be confused with the dependency cohort or temporal contract version.
Actual published-package offline reproduction through LiveEngine.runtime_status also reports session_state="open" for SPY at both 2025-07-04 15:00 UTC (NYSE holiday) and 2025-07-03 18:00 UTC (after the NYSE early close). The probe records Python 3.12.11 / Live 0.1.3 / Backtest 0.1.12 / Specs 0.1.5 in the same process, uses an offline equity feed and explicit clock, and makes no provider connection or order. Current source uses weekday/fixed-clock session lookup and civil-date comparisons for effective sessions.
Accepted work:
- Verify a real shared strategy/lifecycle/canonical-intent workflow through the current public Engine and LiveEngine with matching data and feed/config metadata. Preserve valid causal initialization and execution-policy boundaries.
- Apply explicit calendar argument, then declared feed metadata, then NYSE; explicit calendar=None disables calendar handling. Preserve omitted, named and explicitly disabled declarations through runtime/config/serialized handoffs using the current Specs contract.
- Carry the resolved calendar into session health, freshness/recovery and scheduled intents using shared Backtest/Specs session semantics. Cover holidays, early closes, overnight sessions, intraday breaks, timezone/DST boundaries, calendar-free row behavior and invalid-input atomicity with offline feeds and clock fixtures. Do not substitute timestamp.date() or weekdays for exchange sessions.
- Adapt runtime APIs, dependency policy and lock together only after the behavior is established. Keep existing supported behavior and provider SDK controls; explicitly document any changed compatibility boundary.
- Retain public-workflow failing-base/passing-fix evidence, installed wheel/source qualification, every applicable supported-platform/Python gate and real provider evidence for changed contracts. Do not relabel earlier provider reports when their actual inputs change.
- Update the executable Backtest-to-Live guide with the actual tested versions and conventions. Do not claim all seven libraries coinstall or universal execution parity from this three-library workflow.
Related shared work: ml4t/specs#34 and ml4t/backtest#151 / ml4t/backtest#152. The calendar migration is accepted work; no final v1-only/separate-environment exemption has been established.
Completion requires implemented, qualified and ordinarily merged runtime integration. A runtime release remains a separate decision: prepare the concrete qualified version/source/artifact/provider proposal for maintainer review before publishing. No new release, credential change or denied-action reroute is authorized by this issue. AI assistance: Codex reproduced the public failures and prepared this maintainer-owned task.
Activity
feat: adopt current cohort calendars and qualify provider stages (#146)