diff --git a/docs/superpowers/VRP-REMOVAL-TODO.md b/docs/superpowers/VRP-REMOVAL-TODO.md new file mode 100644 index 0000000..5ce89e6 --- /dev/null +++ b/docs/superpowers/VRP-REMOVAL-TODO.md @@ -0,0 +1,30 @@ +# VRP full removal — TODO (fresh session, subagent-driven + review) + +**Decision (2026-07-20):** remove the VRP code entirely (revival not planned); KEEP the 13yr OPRA data +(`xsp_option_bars` table + OPRA .dbn) — it's expensive, separable, and not in the way. + +**Why a fresh session:** the removal is cross-cutting (~7 modules + 11 test files + orchestration/CLI/ +persistence/vendor/registry refs + the `vrp_nav` Dagster asset). Too big to do safely at low context; a +half-done removal risks broken imports in the nightly pipeline. Do it subagent-driven with review, like the +positioning-cap work. + +**The coupling that made a shim-free registry-removal impossible (must be resolved by removing the code):** +- `vrp_exec_record.py` reads `STRATEGY_REGISTRY["vrp"].definition.params.ladder` (line ~225) and + `run_track("vrp_exec")` needs the `vrp_exec` definition. Once the code is gone, nothing reads the registry + entries, so `"vrp"`/`"vrp_exec"` come out cleanly. + +**Files to DELETE:** `src/fxhnt/application/vrp_book.py, vrp_eval.py, vrp_exec_record.py, vrp_marking.py, +vrp_pricing.py, vrp_defined_risk_eval.py`; tests `tests/**/*vrp*.py` (11 files); the `vrp_nav` asset. + +**Refs to CLEAN (grep `vrp` in each):** `registry.py` (del `vrp`+`vrp_exec` entries), `cli.py` (vrp commands), +`adapters/orchestration/assets.py` + `migration_builders.py` (`vrp_nav`), `dashboard_service.py` +(`_IBKR_ACCOUNT_SIDS` drop "vrp"), `sim_curves.py` (`SIM_BOOKS`), `forward_ingest.py` (`_REF_ALIAS`), +`adapters/persistence/xsp_option_bars.py` (KEEP the table/repo — it's the OPRA data store — but drop any +vrp-strategy coupling), `vendor/surfer/__init__.py` (check if vrp import). + +**KEEP:** `xsp_option_bars` table + repo (13yr OPRA data), the OPRA .dbn archive. + +**Also fixes:** the false VRP `STALE` health alarm disappears for free (no registry entry -> health-loop +doesn't iterate it). No `forward_health.py` change needed once the entry is gone. + +**Cockpit already excludes VRP** (archived:True filter) — so the UI is already clean; this is code hygiene.