# RECENT_VIOLET_34C_a632c59 ## What This Work Was This change completed the first V3.4c VIOLET-side mirror for BLUE live-factor inputs. The goal was not to modify BLUE. The goal was to make VIOLET read the same live, published BLUE surfaces and reconstruct the same intermediate factors BLUE would see, without changing BLUE code, schemas, or state layout. ## Scope This work stayed inside VIOLET and added a read-only live-source adapter plus tests: - `prod/clean_arch/violet/live_blue_source.py` - `prod/clean_arch/violet/test_violet_live_blue_source.py` It also reused the existing V3.4b live-factor helpers: - `prod/clean_arch/violet/live_factor_source.py` - `prod/clean_arch/violet/live_factors.py` - `prod/clean_arch/violet/alpha_wrappers.py` ## Why This Was Needed The earlier V3.4b adapter could source only the BLUE-published pieces that were already directly available in Hazelcast: - `posture` - `esof_score` The remaining sizing inputs were not flat HZ scalars. They had to be mirrored from the same BLUE inputs and kernels that generate them: - `boost` / `beta` from the ACB output - `mc_scale` from MC-Forewarner status - `ob_median_imbalance` / `ob_agreement_pct` from live OB data - `dc_status` from the signal generator The V3.4c step is the read-only, VIOLET-side reconstruction of those live factors. ## What Was Added ### 1. Live BLUE source adapter `live_blue_source.py` now: - reads `DOLPHIN_STATE_BLUE.latest_nautilus` / `engine_snapshot` - reads `DOLPHIN_FEATURES.esof_latest` / `esof_advisor_latest` - reads `DOLPHIN_FEATURES.acb_boost` - reads `DOLPHIN_FEATURES.mc_forewarner_latest` - reads live OB shard maps from `DOLPHIN_FEATURES.asset_*_ob` - reconstructs `dc_status` from the published scan stream The module stays read-only. It does not write Hazelcast. It does not call BLUE internals for mutation. It only mirrors what BLUE already published. ### 2. Stateful scan replay for DC `LiveBlueScanHistory` was added to keep a per-asset price history on the VIOLET side. This is needed because BLUE’s `dc_status` is derived from the live scan sequence and a short price history, not from a single HZ scalar. The adapter now: - ingests each `latest_eigen_scan` - keeps the asset histories in memory - uses BLUE’s own `AlphaSignalGenerator` - produces the same DC status labels that BLUE would emit ### 3. Read-only OB mirror `HazelcastOBProvider` was added so VIOLET can feed BLUE’s own `OBFeatureEngine` from the live `asset_*_ob` entries already published in HZ. That lets the VIOLET path derive: - `ob_median_imbalance` - `ob_agreement_pct` without inventing a new OB schema or mutating BLUE. ### 4. Asset selection parity The adapter now uses `VioletAssetSelector` on the replayed scan history so the selected asset is not guessed from the current scan payload alone. That matters because the exact factor sequence must track the same information BLUE would have at that point in the scan stream. ## Exactness Rules Followed The implementation was kept conservative: - no BLUE file edits - no BLUE schema changes - no new HZ writers - no invented factor names - no silent fallback to fake live values when the live source exists If input is malformed, the adapter rejects or neutralizes it instead of poisoning the history. Examples of handled anomalies: - missing `assets` - non-finite prices - negative prices - malformed JSON payloads - missing `posture` - missing `esof` payloads - broken OB payloads ## Tests Added The new test file covers three layers: ### Unit tests - OB shard parsing from HZ payloads - neutral handling for malformed ACB / ESOF / MC payloads - scan replay ingestion - DC preservation for `CONFIRM` - DC preservation for `SKIP_CONTRADICT` ### Sequence parity tests The new sequence test walks multiple scan events and checks that VIOLET tracks: - the BLUE asset selector output - the BLUE signal-generator `dc_status` at each step in the replayed scan history. ### End-to-end smoke A live Hazelcast smoke test reads the current cluster state and verifies the adapter can build a typed `SizingFactors` object from the live BLUE surfaces. ## Result The V3.4c mirror now reconstructs the full live factor plane on the VIOLET side, read-only, with parity-style coverage around the intermediate factor computation. ## Verification Commit: - `a632c59` — `VIOLET V3.4c: read-only BLUE live source parity` Tests run: - `prod/clean_arch/violet/test_violet_live_blue_source.py` - `prod/clean_arch/violet/test_violet_live_factor_source.py` - `prod/clean_arch/violet/test_violet_live_factors.py` Observed result: - V3.4c source tests passed - existing V3.4b live-factor tests passed