Trailing window backed by SyncRecordStore dedup is strictly better than
a single-day window — a single missed cron run with Last Business Day
loses that day's activity permanently. SyncRecordStore is keyed by
ibkr:trade:<tradeID> / ibkr:cash:<transactionID>, so overlapping pulls
are no-ops.
Caught during the brainstorming review.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adds a daily IBKR Flex Web Service → Wealthfolio ingestion path alongside
the existing T212 / IE / Fidelity providers. Uses the ibflex library;
mandatory broker-vs-WF position reconciliation built in from day one to
prevent the silent-drift class of bug we hit with InvestEngine on 2026-05-26.
Account is currently empty so the initial backfill step is a no-op until
the first IBKR trade lands.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>