69 lines
2.3 KiB
Markdown
69 lines
2.3 KiB
Markdown
|
|
# VIOLET OA Dev Status
|
||
|
|
|
||
|
|
Date: 2026-06-16
|
||
|
|
|
||
|
|
## Current position
|
||
|
|
|
||
|
|
The master Violet plan is [VIOLET_DEV_SPEC_AND_PLAN.md](VIOLET_DEV_SPEC_AND_PLAN.md).
|
||
|
|
Current stage is effectively V3.6-ish:
|
||
|
|
|
||
|
|
- V3.4 is done engine-side.
|
||
|
|
- V3.4b is still the remaining launcher-side gap.
|
||
|
|
- V3.5 is already scoped as a parallelizable L3 wrapper.
|
||
|
|
- V4 is still blocked on keys plus V3.4/3.5 completion.
|
||
|
|
|
||
|
|
## What I built
|
||
|
|
|
||
|
|
I took a standalone slice of V3.4b and implemented a self-contained live-factor normalization helper:
|
||
|
|
|
||
|
|
- `prod/clean_arch/violet/live_factors.py`
|
||
|
|
- `prod/clean_arch/violet/test_violet_live_factors.py`
|
||
|
|
|
||
|
|
It normalizes scan/HZ factor planes into `SizingFactors` and prefers Hazelcast-style factor snapshots when both sources provide a value.
|
||
|
|
|
||
|
|
Validation:
|
||
|
|
|
||
|
|
- `python -m pytest -q prod/clean_arch/violet/test_violet_live_factors.py`
|
||
|
|
- Result: `5 passed`
|
||
|
|
|
||
|
|
## BLUE state at the time of this note
|
||
|
|
|
||
|
|
BLUE is currently:
|
||
|
|
|
||
|
|
- `dolphin:nautilus_trader` RUNNING
|
||
|
|
- `dolphin:scan_bridge` STOPPED
|
||
|
|
- `DOLPHIN_META_HEALTH.latest.status` = `GREEN`
|
||
|
|
- `DOLPHIN_META_HEALTH.latest.rm_meta` = `0.873`
|
||
|
|
- `DOLPHIN_SAFETY.latest.posture` = `HIBERNATE`
|
||
|
|
- `DOLPHIN_STATE_BLUE.engine_snapshot.posture` = `HIBERNATE`
|
||
|
|
- `DOLPHIN_STATE_BLUE.latest_nautilus.posture` = `HIBERNATE`
|
||
|
|
- `DOLPHIN_STATE_BLUE.open_positions` = `[]`
|
||
|
|
- `DOLPHIN_CONTROL_PLANE.blue_runtime_commands` = `[]`
|
||
|
|
- `DOLPHIN_STATE_BLUE.capital_checkpoint.capital` = `71591.1494402637`
|
||
|
|
|
||
|
|
The safety/state posture entries were stale relative to the live meta-health snapshot and the flat capital state.
|
||
|
|
|
||
|
|
## Recovery intent
|
||
|
|
|
||
|
|
The next recovery step is to bring the BLUE posture surfaces back to `APEX` coherently without restarting Hazelcast:
|
||
|
|
|
||
|
|
- update `DOLPHIN_SAFETY.latest.posture`
|
||
|
|
- update `DOLPHIN_STATE_BLUE.engine_snapshot.posture`
|
||
|
|
- update `DOLPHIN_STATE_BLUE.latest_nautilus.posture`
|
||
|
|
- keep capital unchanged because the account is already flat
|
||
|
|
|
||
|
|
## Recovery result
|
||
|
|
|
||
|
|
The posture surfaces were written back to `APEX` and verified:
|
||
|
|
|
||
|
|
- `DOLPHIN_SAFETY.latest.posture` = `APEX`
|
||
|
|
- `DOLPHIN_STATE_BLUE.engine_snapshot.posture` = `APEX`
|
||
|
|
- `DOLPHIN_STATE_BLUE.latest_nautilus.posture` = `APEX`
|
||
|
|
- `DOLPHIN_STATE_BLUE.capital_checkpoint.capital` remained `71591.1494402637`
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
|
||
|
|
- `scan_bridge` being stopped is an ingestion issue, not proof of a live slot.
|
||
|
|
- I did not touch `PROGREEN`.
|
||
|
|
- I did not restart Hazelcast.
|