1.5 KiB
1.5 KiB
VIOLET Multi-Exchange OB Seam
Date: 2026-06-16
Scope
This note describes the new read-only OB provider seam added on the VIOLET side:
prod/clean_arch/violet/venue_ob_provider.pyprod/clean_arch/violet/test_violet_venue_ob_provider.py
The seam exists so VIOLET can later consume a venue-specific OB feed without changing BLUE or wiring any live exchange connection into the current shadow path.
What the seam does
- normalizes venue ticks into BLUE-shaped
OBSnapshotrecords - keeps the provider read-only and in-memory
- validates poison values at ingress with V-TYPES
- supports either an injected callable tick source or a preloaded buffer
- exposes the exact
OBProviderinterface thatOBFeatureEngineexpects
What it does not do
- no live BingX connection
- no Hazelcast writes
- no BLUE code changes
- no live wiring into
live_blue_source.pyorshadow_live_factors.py
Future adapter shape
A venue-specific live adapter can later be layered on top of this seam by
feeding VenueOBTick records into VioletVenueOBProvider.refresh() from any
normalized feed source. The only contract is the canonical OBSnapshot shape
that OBFeatureEngine already consumes.
Validation
The companion test file checks:
VioletVenueOBProviderimplements theOBProvidersurface- malformed values are rejected at construction
OBFeatureEngine(provider)can runstep_live()and read back finite OB features- the callable-source path loads as expected