fix(smoke,argo): multi_fold_convergence forwards mbp10/trades flags + Argo wires env vars
Per feedback_mbp10_mandatory.md, MBP-10 + trades are mandatory inputs.
multi_fold_convergence now reads FOXHUNT_MBP10_DATA / FOXHUNT_TRADES_DATA
env vars, forwards them to train_baseline_rl as --mbp10-data-dir /
--trades-data-dir, and hard-fails if either path is missing.
Argo sanitizer-test + nsys-test templates set the env vars to PVC paths
/data/test-data/{mbp10,trades} and FOXHUNT_TEST_DATA points at
/data/test-data/ohlcv (PVC layout has lost+found/trades/mbp10/ohlcv as
top-level subdirs; the symbol ES.FUT lives under ohlcv/).
Without this, the smoke would silently fall back to tick-rule proxy
classification and validate a degraded model variant (no real OFI),
defeating the purpose of L40S validation. Audit doc updated per
Invariant 7.
This commit is contained in:
@@ -50,6 +50,40 @@ fn test_multi_fold_convergence() -> Result<()> {
|
||||
// the 6/2/2 (step 2) walk-forward actually yields 3 folds on the baseline
|
||||
// dataset (vs production 12/3/3 step 3 which only fits 2), and 5 epochs
|
||||
// is ample to save a best-sharpe checkpoint per fold.
|
||||
//
|
||||
// MBP-10 + trades data are mandatory per `feedback_mbp10_mandatory.md` —
|
||||
// OFI features are part of the production state vector. Pull paths from
|
||||
// FOXHUNT_MBP10_DATA / FOXHUNT_TRADES_DATA env vars (set by the
|
||||
// sanitizer-test / nsys-test Argo templates and locally by the smoke
|
||||
// helper); fall back to `<data_dir>/../futures-baseline-mbp10` and
|
||||
// `<data_dir>/../futures-baseline-trades` for the local repo layout.
|
||||
let mbp10_dir = std::env::var("FOXHUNT_MBP10_DATA").unwrap_or_else(|_| {
|
||||
let p = std::path::Path::new(&data_dir).parent()
|
||||
.map(|p| p.join("futures-baseline-mbp10"))
|
||||
.unwrap_or_else(|| PathBuf::from("test_data/futures-baseline-mbp10"));
|
||||
p.to_string_lossy().into_owned()
|
||||
});
|
||||
let trades_dir = std::env::var("FOXHUNT_TRADES_DATA").unwrap_or_else(|_| {
|
||||
let p = std::path::Path::new(&data_dir).parent()
|
||||
.map(|p| p.join("futures-baseline-trades"))
|
||||
.unwrap_or_else(|| PathBuf::from("test_data/futures-baseline-trades"));
|
||||
p.to_string_lossy().into_owned()
|
||||
});
|
||||
if !std::path::Path::new(&mbp10_dir).exists() {
|
||||
return Err(anyhow!(
|
||||
"MBP-10 data directory not found at {} (set FOXHUNT_MBP10_DATA to override). \
|
||||
OFI features are mandatory per feedback_mbp10_mandatory.md.",
|
||||
mbp10_dir
|
||||
));
|
||||
}
|
||||
if !std::path::Path::new(&trades_dir).exists() {
|
||||
return Err(anyhow!(
|
||||
"Trades data directory not found at {} (set FOXHUNT_TRADES_DATA to override). \
|
||||
Trade-classified VPIN/Kyle's λ are mandatory per feedback_mbp10_mandatory.md.",
|
||||
trades_dir
|
||||
));
|
||||
}
|
||||
|
||||
let status = std::process::Command::new("cargo")
|
||||
.current_dir(&workspace)
|
||||
.env("SQLX_OFFLINE", "true")
|
||||
@@ -62,6 +96,8 @@ fn test_multi_fold_convergence() -> Result<()> {
|
||||
"--",
|
||||
"--model", "dqn",
|
||||
"--data-dir", &data_dir,
|
||||
"--mbp10-data-dir", &mbp10_dir,
|
||||
"--trades-data-dir", &trades_dir,
|
||||
"--symbol", "ES.FUT",
|
||||
"--epochs", "5",
|
||||
"--max-folds", "3",
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
**Status:** Populated during Plan 1 Task 6 (A.5 orphan audit). Updated on every commit per Invariant 7.
|
||||
|
||||
multi_fold_convergence smoke MBP-10 wiring (2026-04-28): the test now forwards `--mbp10-data-dir` and `--trades-data-dir` to its spawned `train_baseline_rl` subprocess, reading paths from `FOXHUNT_MBP10_DATA` / `FOXHUNT_TRADES_DATA` env vars (set by the L40S sanitizer-test + nsys-test Argo templates to `/data/test-data/{mbp10,trades}`) with fallback to `<data_dir>/../futures-baseline-{mbp10,trades}` for local repo runs. The test hard-fails fast if either path is missing, citing `feedback_mbp10_mandatory.md`. Without this, OFI features (state slots [18..26)) silently fell back to tick-rule proxy and the smoke validated a degraded model variant — a `feedback_no_partial_refactor.md` violation now closed.
|
||||
|
||||
|
||||
Q-drift production-safety kill criterion (2026-04-28): The
|
||||
`train-multi-seed-p526h` repro (5ep×3fold, MSE-clamp + PopArt-carry
|
||||
landed) reproduced a geometric Q-divergence in fold 1 that we can no
|
||||
|
||||
@@ -98,9 +98,15 @@ spec:
|
||||
- name: CUBLAS_WORKSPACE_CONFIG
|
||||
value: ":4096:8"
|
||||
- name: FOXHUNT_TEST_DATA
|
||||
value: /data/test-data
|
||||
value: /data/test-data/ohlcv
|
||||
- name: TEST_DATA_DIR
|
||||
value: /data/test-data
|
||||
value: /data/test-data/ohlcv
|
||||
# MBP-10 + trades are mandatory per feedback_mbp10_mandatory.md
|
||||
# (OFI features are part of the production state vector).
|
||||
- name: FOXHUNT_MBP10_DATA
|
||||
value: /data/test-data/mbp10
|
||||
- name: FOXHUNT_TRADES_DATA
|
||||
value: /data/test-data/trades
|
||||
- name: RUST_LOG
|
||||
value: info
|
||||
- name: LD_LIBRARY_PATH
|
||||
|
||||
@@ -95,9 +95,15 @@ spec:
|
||||
- name: CUBLAS_WORKSPACE_CONFIG
|
||||
value: ":4096:8"
|
||||
- name: FOXHUNT_TEST_DATA
|
||||
value: /data/test-data
|
||||
value: /data/test-data/ohlcv
|
||||
- name: TEST_DATA_DIR
|
||||
value: /data/test-data
|
||||
value: /data/test-data/ohlcv
|
||||
# MBP-10 + trades are mandatory per feedback_mbp10_mandatory.md
|
||||
# (OFI features are part of the production state vector).
|
||||
- name: FOXHUNT_MBP10_DATA
|
||||
value: /data/test-data/mbp10
|
||||
- name: FOXHUNT_TRADES_DATA
|
||||
value: /data/test-data/trades
|
||||
- name: RUST_LOG
|
||||
value: info
|
||||
- name: LD_LIBRARY_PATH
|
||||
|
||||
Reference in New Issue
Block a user