Repository navigation
Description
Reproduced defect
On session prerequisite1f979aa, real SyntheticProvider continuous one-minute SPY data for2025-07-07 filtered to13:30 and13:32UTC maps to valid NYSE July7 sessions. GapDetector.detect_gaps(frame, frequency="minute") nevertheless returns no missing observation: its fixed14UTC opening heuristic hides the missing13:31 summer-session bar. Evidence intraday-gap-public-base.log, Polars1.43.2/Python3.14.3. This is an actual old public API result, not a mock or a new-keyword TypeError.
Required behavior and compatibility choice
Replace the intraday US-clock approximation with selected authoritative tradable intervals. Use shared FeedSpec precedence, including explicitNone row mode and real24/7 schedules. Require version-2 declared frequency, timestamp semantics, session-open anchor, bar label and partial-bar policy; require timezone for naive instants. Event-count/session-label data cannot be interpreted as a fixed intraday grid. Omission of necessary grid metadata now fails clearly rather than silently retaining the inaccurate old approximation. Existing positional arguments remain readable but do not authorize inventing grid semantics. Document this intentional compatibility change; unqualified legacy intraday calls must migrate to a complete declaration or explicitNone.
Daily label classification and the separate range planner remain separate consumers. Week/month approximations are not newly claimed as exchange grids. Count missing expected bars strictly between observed boundaries, including absent full sessions and early-close sessions; breaks/closures never count. Restart grid at each tradable interval open. Left/right labels and partial include/exclude follow immutable Specs701bde6. Reject off-grid observations rather than infer a grid from prices; do not fill or mutate observations. Caller partitions assets so an all-asset outage cannot redefine the schedule.
Regression scope includes summer/winter US hours, non-US, holiday/early-close, lunch break, overnight/CME, continuous actual gaps, missing full sessions across assets, explicitNone, invalid metadata/timezone atomicity and a registered custom schedule. Use real provider rows. Depend on PR94 only, keep one focused issue/PR, and require all main-target full gates after the prerequisite lands. No release/deploy; no heavy local suites during reservation. AI-assisted maintenance under owner direction.
Activity
fix: classify intraday gaps on declared exchange bar grids