@@ -55,7 +55,7 @@ fn fresh_project() -> (&'static PathBuf, (RunsCleanup, MutexGuard<'static, ()>))
#[ test ]
fn sweep_outside_project_refuses_and_leaves_no_store ( ) {
let cwd = temp_cwd ( " sweep-outside-project-refuses " ) ;
let bp = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " sweep " , & bp , " --real " , " GER40 " , " --axis " , " sma_signal.fast.length=2,4 " ] )
. current_dir ( & cwd )
@@ -72,7 +72,7 @@ fn sweep_outside_project_refuses_and_leaves_no_store() {
#[ test ]
fn generalize_outside_project_refuses_and_leaves_no_store ( ) {
let cwd = temp_cwd ( " generalize-outside-project-refuses " ) ;
let bp = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " generalize " , & bp , " --real " , " GER40,USDJPY " , " --axis " , " sma_signal.fast.length=2 " ] )
. current_dir ( & cwd )
@@ -89,7 +89,7 @@ fn generalize_outside_project_refuses_and_leaves_no_store() {
#[ test ]
fn walkforward_outside_project_refuses_and_leaves_no_store ( ) {
let cwd = temp_cwd ( " walkforward-outside-project-refuses " ) ;
let bp = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " walkforward " , & bp , " --real " , " GER40 " , " --axis " , " sma_signal.fast.length=2,4 " ] )
. current_dir ( & cwd )
@@ -106,7 +106,7 @@ fn walkforward_outside_project_refuses_and_leaves_no_store() {
#[ test ]
fn mc_outside_project_refuses_and_leaves_no_store ( ) {
let cwd = temp_cwd ( " mc-outside-project-refuses " ) ;
let bp = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " mc " , & bp , " --real " , " GER40 " , " --axis " , " sma_signal.fast.length=2,4 " ] )
. current_dir ( & cwd )
@@ -1055,7 +1055,7 @@ fn runs_families_list_and_per_family_rank_across_invocations() {
// each a related set of 4 records (C18/C21 lineage), in the sibling family
// store. `sweep` is blueprint-only now (#159 cut 4); the shipped open r-sma
// example over a 2x2 axis grid stands in for the retired built-in default.
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
for _ in 0 .. 2 {
let out = Command ::new ( BIN )
. args ( [
@@ -1175,7 +1175,7 @@ fn local_data_present() -> bool {
fn sweep_real_no_geometry_symbol_refuses_with_exit_1 ( ) {
// not gated: the pip refusal happens before any data access.
let ( dir , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( BIN )
. args ( [ " sweep " , & fixture , " --axis " , " sma_signal.fast.length=2,4 " , " --real " , " NONEXISTENT " ] )
. current_dir ( dir ) . output ( ) . unwrap ( ) ;
@@ -1253,7 +1253,7 @@ fn sweep_real_blueprint_member_manifest_stamps_the_default_stop() {
return ;
}
let ( dir , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -1300,7 +1300,7 @@ fn sweep_real_blueprint_member_manifest_stamps_project_provenance() {
return ;
}
let ( dir , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -1394,7 +1394,7 @@ fn sweep_real_ohlc_channel_members_run_and_reproduce() {
return ;
}
let ( dir , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /exampl es/r_channel_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /tests/fixtur es/r_channel_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let axes = std ::process ::Command ::new ( BIN )
. args ( [ " sweep " , & fixture , " --list-axes " ] )
. current_dir ( dir )
@@ -1475,7 +1475,7 @@ fn sweep_real_blueprint_member_lines_pin_the_dissolved_contract() {
return ;
}
let ( dir , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -1713,7 +1713,7 @@ fn sweep_real_with_trace_writes_tap_series_to_disk() {
return ;
}
let ( dir , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -1771,7 +1771,7 @@ fn family_id_of_kind(dir: &Path, want: &str) -> String {
/// silently re-run every member over the built-in synthetic showcase stream,
/// which diverges from the stored real-data metrics on every member (observed:
/// `reproduced 0/N bit-identically`, exit 1). Gated on the local GER40 archive
/// (skip-on-no-data convention); uses the plain `r_sma_open .json` blueprint —
/// (skip-on-no-data convention); uses the plain `r_sma.json` blueprint —
/// no gang, no campaign-specific fixture — because the divergence is driven by
/// `--real`, not by the minting path.
#[ test ]
@@ -1781,7 +1781,7 @@ fn reproduce_real_sweep_family_re_derives_bit_identically() {
return ;
}
let ( dir , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let mint = Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -1819,9 +1819,10 @@ fn reproduce_real_sweep_family_re_derives_bit_identically() {
/// Property (C18/C1 reproduce guarantee, #246): the same reproduce guarantee holds
/// when the swept axis names a BOUND param of a CLOSED starter blueprint, not an
/// already-open one — `r_sma.json` (both `sma_signal.fast.length` and
/// `sma_signal.slow.length` bound), the closed counterpart of the OPEN
/// `r_sma_open.json` the walk-forward reproduce sibling
/// (`aura_walkforward_over_a_blueprint_reproduces_bit_identically`) sweeps.
/// `sma_signal.slow.length` bound), overriding only the `fast.length` axis and
/// leaving `slow.length` bound — unlike the walk-forward reproduce sibling
/// (`aura_walkforward_over_a_blueprint_reproduces_bit_identically`), which
/// overrides both axes over the same closed blueprint.
/// Modelled on that sibling (synthetic in-process walk-forward — no `--real`),
/// NOT on `reproduce_real_sweep_family_re_derives_bit_identically`: a real-data
/// mint routes through the campaign executor (`CliMemberRunner::run_member` +
@@ -1935,7 +1936,7 @@ fn reproduce_real_walkforward_family_does_not_panic() {
const WF_FROM_MS : & str = " 1735689600000 " ;
const WF_TO_MS : & str = " 1747353600000 " ;
let ( dir , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let mint = Command ::new ( BIN )
. args ( [
" walkforward " , & fixture ,
@@ -2139,7 +2140,7 @@ fn sweep_real_multi_column_blueprint_opens_high_and_low_columns() {
#[ test ]
fn aura_sweep_real_blueprint_refuses_a_raw_form_axis_name_before_data_access ( ) {
let dir = temp_cwd ( " sweep_real_rawname_refusal " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -2184,7 +2185,7 @@ fn aura_sweep_real_blueprint_subset_axes_refuses_without_store_litter() {
return ;
}
let ( dir , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /exampl es/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /tests/fixtur es/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -2228,9 +2229,11 @@ fn aura_sweep_real_blueprint_subset_axes_refuses_without_store_litter() {
/// comment. Modelled on `sweep_real_blueprint_member_lines_pin_the_dissolved_contract`
/// (the dissolved-sweep e2e family `walkforward_dissolved_refuses_an_unknown_axis_name`
/// belongs to): same store-reading assertions (`aura runs families`, one
/// persisted `Sweep` family, member count), but over the CLOSED `r_sma.json`
/// fixture (`sma_signal.fast.length`/ `sma_signal.slow .length` both bound)
/// instead of the OPEN `r_sma_open.json` every other real-data sweep pin uses.
/// persisted `Sweep` family, member count), over the same `r_sma.json`
/// fixture every other real-data sweep pin uses ( `sma_signal.fast .length`/
/// `sma_signal.slow.length` both bound) — the distinguishing property here
/// is that the swept axis names an already-bound param, not that the
/// fixture differs.
#[ test ]
fn sweep_dissolved_accepts_an_axis_over_a_bound_param ( ) {
if ! local_data_present ( ) {
@@ -2269,6 +2272,89 @@ fn sweep_dissolved_accepts_an_axis_over_a_bound_param() {
) ;
}
/// Property (#246 override merge, exercised at scale by #248's open-twins
/// migration): sweeping the CLOSED `examples/r_sma.json` (both SMA lengths
/// bound to defaults 2/4) with `--axis` values that override BOTH bound
/// lengths yields BIT-IDENTICAL per-member `total_pips` to sweeping the
/// historical OPEN `tests/fixtures/r_sma_open.json` (both lengths genuinely
/// unbound) over the same axis values. #248's migration replaced the "bind
/// an open param" idiom with "override a bound param" at dozens of call
/// sites across cli_run.rs/research_docs.rs/project_load.rs; if the override
/// merge ever diverged from the historical bind path (e.g. a different
/// position in the rebuilt param vector), every migrated seed/grade site
/// would silently compile a DIFFERENT graph while still exiting 0 — no other
/// test cross-checks the two idioms against each other. NOT gated — a
/// synthetic sweep, no `--real`, so it is CI-safe on every machine.
#[ test ]
fn sweep_over_a_bound_override_matches_the_historical_open_bind ( ) {
let closed_dir = temp_cwd ( " bound-override-matches-open-closed " ) ;
let closed_bp = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let closed_out = Command ::new ( BIN )
. args ( [
" sweep " , & closed_bp ,
" --axis " , " sma_signal.fast.length=2,4 " ,
" --axis " , " sma_signal.slow.length=8,16 " ,
] )
. current_dir ( & closed_dir )
. output ( )
. expect ( " spawn sweep over the closed blueprint's bound-override axes " ) ;
assert! (
closed_out . status . success ( ) ,
" closed sweep exit: {:?}; stderr: {} " ,
closed_out . status ,
String ::from_utf8_lossy ( & closed_out . stderr )
) ;
let open_dir = temp_cwd ( " bound-override-matches-open-open " ) ;
let open_bp = format! ( " {} /tests/fixtures/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let open_out = Command ::new ( BIN )
. args ( [
" sweep " , & open_bp ,
" --axis " , " sma_signal.fast.length=2,4 " ,
" --axis " , " sma_signal.slow.length=8,16 " ,
] )
. current_dir ( & open_dir )
. output ( )
. expect ( " spawn sweep over the open blueprint's unbound axes " ) ;
assert! (
open_out . status . success ( ) ,
" open sweep exit: {:?}; stderr: {} " ,
open_out . status ,
String ::from_utf8_lossy ( & open_out . stderr )
) ;
let pips = | dir : & Path | -> Vec < f64 > {
let rank = Command ::new ( BIN )
. args ( [ " runs " , " family " , " sweep-0 " , " rank " , " total_pips " ] )
. current_dir ( dir )
. output ( )
. expect ( " spawn rank " ) ;
assert! ( rank . status . success ( ) , " rank exit: {:?} " , rank . status ) ;
let out = String ::from_utf8 ( rank . stdout ) . expect ( " utf-8 " ) ;
out . lines ( )
. map ( | l | {
let key = " \" total_pips \" : " ;
let start = l . find ( key ) . expect ( " line has total_pips " ) + key . len ( ) ;
let tail = & l [ start .. ] ;
let end = tail . find ( [ ',' , '}' ] ) . expect ( " token end " ) ;
tail [ .. end ] . parse ( ) . expect ( " total_pips is an f64 " )
} )
. collect ( )
} ;
let mut closed_pips = pips ( & closed_dir ) ;
let mut open_pips = pips ( & open_dir ) ;
closed_pips . sort_by ( | a , b | a . partial_cmp ( b ) . unwrap ( ) ) ;
open_pips . sort_by ( | a , b | a . partial_cmp ( b ) . unwrap ( ) ) ;
assert_eq! (
closed_pips , open_pips ,
" bound-override and historical open-bind must compute bit-identical \
member metrics for the same axis grid "
) ;
let _ = std ::fs ::remove_dir_all ( & closed_dir ) ;
let _ = std ::fs ::remove_dir_all ( & open_dir ) ;
}
/// The synthetic seed-resweep `mc` is undefined over real bars (one realization ->
/// identical members), so a bare `aura mc --real EURUSD` — with no R candidate — is
/// REJECTED (usage on stderr, exit 2) at the binary boundary. The real path is
@@ -2600,7 +2686,7 @@ fn generalize_grades_a_candidate_across_two_instruments() {
const FROM_MS : & str = " 1725148800000 " ;
const TO_MS : & str = " 1727740799999 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -2646,7 +2732,7 @@ fn generalize_real_e2e_pins_the_exact_current_grade() {
const FROM_MS : & str = " 1725148800000 " ;
const TO_MS : & str = " 1727740799999 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -2691,7 +2777,7 @@ fn generalize_real_e2e_pins_the_exact_current_grade() {
/// blueprint, not just the historical r-sma candidate — the whole point of
/// dropping `--strategy r-sma`/`--fast`/`--slow` for a positional blueprint +
/// generic `--axis`. Every other generalize E2E test here still exercises
/// `r_sma_open .json`, so a regression that silently special-cased r-sma paths
/// `r_sma.json`, so a regression that silently special-cased r-sma paths
/// back in (e.g. resolving axes against a hardcoded `sma_signal.*` namespace)
/// would ship green there while breaking every other blueprint. This runs the
/// unrelated r-breakout candidate (the ganged `channel_length` axis, no
@@ -2703,7 +2789,7 @@ fn generalize_grades_a_non_r_sma_blueprint() {
const FROM_MS : & str = " 1725148800000 " ;
const TO_MS : & str = " 1727740799999 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /exampl es/r_breakout_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /tests/fixtur es/r_breakout_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -2751,7 +2837,7 @@ fn walkforward_real_e2e_pins_the_exact_current_grade() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -2797,7 +2883,7 @@ fn walkforward_real_e2e_pins_the_exact_current_grade() {
/// sweepable blueprint through the campaign path, not just the historical r-sma
/// candidate — the whole point of dropping `--strategy r-sma`/`--fast`/`--slow`
/// for a positional blueprint + generic `--axis`. Every other walkforward E2E
/// test here still exercises `r_sma_open .json`; a regression that silently
/// test here still exercises `r_sma.json`; a regression that silently
/// special-cased the refit's axis lookup back to a hardcoded `sma_signal.*`
/// namespace (e.g. in `walkforward_summary_json_from_reports`'s per-axis
/// `raw_matches_wrapped` search) would ship green there while breaking every
@@ -2813,7 +2899,7 @@ fn walkforward_dissolves_a_non_r_sma_blueprint() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /exampl es/r_breakout_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /tests/fixtur es/r_breakout_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -2852,7 +2938,7 @@ fn walkforward_dissolves_a_non_r_sma_blueprint() {
#[ test ]
fn walkforward_dissolved_refuses_a_multi_value_stop ( ) {
let cwd = temp_cwd ( " walkforward-multi-stop " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -2874,7 +2960,7 @@ fn walkforward_dissolved_refuses_a_multi_value_stop() {
#[ test ]
fn walkforward_dissolved_accepts_select_plateau ( ) {
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -2918,7 +3004,7 @@ fn walkforward_real_e2e_pins_the_exact_current_plateau_grade() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -2972,7 +3058,7 @@ fn walkforward_real_e2e_pins_the_exact_current_plateau_grade() {
#[ test ]
fn walkforward_dissolved_defaults_a_single_omitted_knob ( ) {
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -3005,7 +3091,7 @@ fn walkforward_dissolved_defaults_a_single_omitted_knob() {
#[ test ]
fn walkforward_dissolved_refuses_an_empty_real_symbol ( ) {
let cwd = temp_cwd ( " walkforward-empty-real " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " " ,
@@ -3029,7 +3115,7 @@ fn walkforward_dissolved_refuses_an_empty_real_symbol() {
#[ test ]
fn walkforward_dissolved_refuses_an_unknown_axis_name ( ) {
let cwd = temp_cwd ( " walkforward-unknown-axis " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -3059,7 +3145,7 @@ fn walkforward_dissolved_refuses_an_unknown_axis_name() {
#[ test ]
fn walkforward_dissolved_refuses_an_unknown_select_token ( ) {
let cwd = temp_cwd ( " walkforward-bad-select " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -3083,7 +3169,7 @@ fn walkforward_dissolved_refuses_an_unknown_select_token() {
#[ test ]
fn walkforward_dissolved_refuses_name_and_trace_together ( ) {
let cwd = temp_cwd ( " walkforward-name-and-trace " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -3119,7 +3205,7 @@ fn walkforward_dissolves_through_the_campaign_path() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -3210,7 +3296,7 @@ fn walkforward_stopless_defaults_the_regime_byte_identically_to_explicit_3_2() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
// Stop-less: the two knobs are omitted entirely. This is the headline — today it
// is refused at the argv boundary (exit 2, "requires --stop-length --stop-k");
@@ -3296,7 +3382,7 @@ fn generalize_dissolves_through_the_campaign_path() {
const FROM_MS : & str = " 1725148800000 " ;
const TO_MS : & str = " 1727740799999 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -3387,7 +3473,7 @@ fn generalize_repeated_identical_invocation_does_not_litter_the_store() {
const FROM_MS : & str = " 1725148800000 " ;
const TO_MS : & str = " 1727740799999 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let invoke = | | {
std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
@@ -3442,7 +3528,7 @@ fn generalize_distinct_invocations_persist_distinct_campaign_documents() {
const FROM_MS : & str = " 1725148800000 " ;
const TO_MS : & str = " 1727740799999 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let invoke = | fast : & str | {
let fast_axis = format! ( " sma_signal.fast.length= {fast} " ) ;
std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
@@ -3492,7 +3578,7 @@ fn generalize_distinct_invocations_persist_distinct_campaign_documents() {
#[ test ]
fn generalize_without_explicit_window_resolves_a_shared_window_and_completes ( ) {
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -3545,7 +3631,7 @@ fn generalize_without_explicit_window_resolves_the_intersection_of_all_symbols()
return ;
}
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
// The resolved shared window persists verbatim in the generated campaign
// document; read the (from_ms, to_ms) of the one whose `name` field matches.
@@ -3630,7 +3716,7 @@ fn generalize_without_explicit_window_resolves_the_intersection_of_all_symbols()
/// before any data access — so it asserts the arity refusal on any machine.
#[ test ]
fn generalize_refuses_a_single_instrument ( ) {
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40 " ,
@@ -3646,7 +3732,7 @@ fn generalize_refuses_a_single_instrument() {
/// `check_r_metric` pre-check), so this asserts the R-only refusal on any machine.
#[ test ]
fn generalize_refuses_a_non_r_metric ( ) {
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -3671,7 +3757,7 @@ fn generalize_refuses_a_non_r_metric() {
/// check precedes any geometry/archive lookup, so it asserts on any machine.
#[ test ]
fn generalize_refuses_a_duplicate_instrument ( ) {
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,GER40 " ,
@@ -3696,7 +3782,7 @@ fn generalize_refuses_a_duplicate_instrument() {
/// into a multi-cell run whose generalization grade would be ill-defined.
#[ test ]
fn generalize_refuses_a_multi_value_axis ( ) {
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -3720,7 +3806,7 @@ fn generalize_refuses_a_multi_value_axis() {
/// sweep/walkforward "no axis" refusals. Data-free (fires before any archive access).
#[ test ]
fn generalize_refuses_no_axis ( ) {
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -3744,7 +3830,7 @@ fn generalize_refuses_no_axis() {
/// `aura sweep` enforces (`aura_sweep_real_blueprint_refuses_a_raw_form_axis_name_before_data_access`).
#[ test ]
fn generalize_refuses_an_unknown_axis_name ( ) {
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -3781,7 +3867,7 @@ fn generalize_persists_a_discoverable_cross_instrument_family() {
const FROM_MS : & str = " 1725148800000 " ;
const TO_MS : & str = " 1727740799999 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -3843,7 +3929,7 @@ fn generalize_family_members_are_attributed_to_the_right_instrument() {
const FROM_MS : & str = " 1725148800000 " ;
const TO_MS : & str = " 1727740799999 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -3910,7 +3996,7 @@ fn generalize_family_members_stamp_project_provenance() {
const FROM_MS : & str = " 1725148800000 " ;
const TO_MS : & str = " 1727740799999 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -3957,13 +4043,13 @@ fn generalize_family_members_stamp_project_provenance() {
}
}
/// `aura sweep <blueprint.json> --axis <name>=<csv> …` (#166): sweeps a loaded OPEN
/// signal over its named param-spac e axes and persists a discoverable Sweep family.
/// Both open knobs (fast/slow) must be boun d by axes; the 2× 2 grid yields 4 members.
/// `aura sweep <blueprint.json> --axis <name>=<csv> …` (#166): sweeps a loaded CLOSED
/// blueprint over its named bound-overrid e axes and persists a discoverable Sweep family.
/// Both bound knobs (fast/slow) must be re-opene d by axes; the 2× 2 grid yields 4 members.
#[ test ]
fn aura_sweep_loads_a_blueprint_and_persists_a_sweep_family ( ) {
let cwd = temp_cwd ( " blueprint-sweep " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -3996,7 +4082,7 @@ fn aura_sweep_loads_a_blueprint_and_persists_a_sweep_family() {
/// both are the lying/pointer-less surface this pins.
#[ test ]
fn sweep_and_walkforward_refuse_trace_with_a_forward_pointer ( ) {
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
for verb in [ " sweep " , " walkforward " ] {
let cwd = temp_cwd ( & format! ( " {verb} -trace-refusal " ) ) ;
let out = Command ::new ( BIN )
@@ -4050,7 +4136,7 @@ fn aura_sweep_persists_the_canonical_blueprint_keyed_by_topology_hash() {
use sha2 ::{ Digest , Sha256 } ;
let cwd = temp_cwd ( " blueprint-sweep-store " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -4101,12 +4187,13 @@ fn aura_sweep_persists_the_canonical_blueprint_keyed_by_topology_hash() {
}
/// An `--axis` name that does not resolve against the loaded blueprint's param_space
/// fails clean (a named BindError, non-zero exit), not a panic. The OPEN fixture has
/// sweepabl e knobs, so a nonsense axis name (`nope`) is genuinely unknown — it names
/// neither an open knob nor a bound param (#246: a bound name would re-open instead).
/// fails clean (a named BindError, non-zero exit), not a panic. The CLOSED fixture has
/// bound-overrid e knobs, so a nonsense axis name (`nope`) is genuinely unknown — it names
/// neither a re-openable bound param nor an already-open knob (#246: a bound name would
/// re-open instead).
#[ test ]
fn aura_sweep_rejects_an_unknown_axis ( ) {
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = Command ::new ( BIN )
. args ( [ " sweep " , & fixture , " --axis " , " nope=1,2 " , " --name " , " f " ] )
. output ( )
@@ -4127,7 +4214,7 @@ fn aura_sweep_rejects_an_unknown_axis() {
#[ test ]
fn aura_reproduce_re_derives_a_persisted_sweep_family ( ) {
let cwd = temp_cwd ( " blueprint-reproduce " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let sweep = Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -4168,7 +4255,7 @@ fn aura_reproduce_re_derives_a_persisted_sweep_family() {
#[ test ]
fn aura_reproduce_reports_a_diverged_member_and_exits_one ( ) {
let cwd = temp_cwd ( " blueprint-reproduce-diverge " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let sweep = Command ::new ( BIN )
. args ( [
" sweep " , & fixture ,
@@ -4207,7 +4294,7 @@ fn aura_reproduce_reports_a_diverged_member_and_exits_one() {
#[ test ]
fn aura_reproduce_re_derives_a_persisted_sweep_bit_identically ( ) {
let cwd = temp_cwd ( " reproduce_roundtrip " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let sweep = std ::process ::Command ::new ( BIN )
. args ( [
@@ -4291,7 +4378,7 @@ fn aura_mc_over_a_blueprint_reproduces_bit_identically() {
#[ test ]
fn aura_walkforward_over_a_blueprint_reproduces_bit_identically ( ) {
let cwd = temp_cwd ( " blueprint-walkforward-reproduce " ) ;
let bp = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let run = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " walkforward " , & bp , " --axis " , " sma_signal.fast.length=2,3 " ,
" --axis " , " sma_signal.slow.length=4,6 " , " --name " , " wfr " ] )
@@ -4316,7 +4403,7 @@ fn aura_walkforward_over_a_blueprint_reproduces_bit_identically() {
#[ test ]
fn aura_walkforward_over_a_blueprint_persists_a_family ( ) {
let cwd = temp_cwd ( " blueprint-walkforward-persist " ) ;
let bp = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " walkforward " , & bp , " --axis " , " sma_signal.fast.length=2,3 " ,
" --axis " , " sma_signal.slow.length=4,6 " , " --name " , " wfx " ] )
@@ -4337,11 +4424,11 @@ fn aura_walkforward_over_a_blueprint_persists_a_family() {
let _ = std ::fs ::remove_dir_all ( & cwd ) ;
}
/// E2E (#173): an OPEN blueprint with no --axis (nothing to re-fit) is a usage
/// E2E (#173): a CLOSED blueprint with no --axis (nothing to re-fit) is a usage
/// error (exit 2), naming that >= 1 --axis is required.
#[ test ]
fn aura_walkforward_over_a_blueprint_rejects_no_axis ( ) {
let bp = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " walkforward " , & bp ] )
. output ( )
@@ -4379,7 +4466,7 @@ fn aura_walkforward_over_a_blueprint_rejects_malformed() {
/// while leaving the malformed test green.
#[ test ]
fn aura_walkforward_over_a_blueprint_rejects_an_unknown_axis ( ) {
let bp = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " walkforward " , & bp , " --axis " , " nope=1,2 " ] )
. output ( )
@@ -4433,7 +4520,7 @@ fn aura_walkforward_emits_an_unknown_axis_rejection_once() {
#[ test ]
fn aura_mc_rejects_an_open_blueprint ( ) {
let cwd = temp_cwd ( " mc-blueprint-open-reject " ) ;
let fixture = format! ( " {} /exampl es/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /tests/fixtur es/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = Command ::new ( BIN )
. args ( [ " mc " , & fixture , " --seeds " , " 4 " ] )
. current_dir ( & cwd )
@@ -4453,7 +4540,7 @@ fn aura_mc_rejects_an_open_blueprint() {
#[ test ]
fn aura_run_rejects_an_open_blueprint_without_panicking ( ) {
let cwd = temp_cwd ( " run-blueprint-open-reject " ) ;
let fixture = format! ( " {} /exampl es/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /tests/fixtur es/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = Command ::new ( BIN )
. args ( [ " run " , & fixture ] )
. current_dir ( & cwd )
@@ -4510,7 +4597,7 @@ fn aura_reproduce_rejects_an_unknown_family() {
#[ test ]
fn aura_reproduce_rejects_a_missing_stored_blueprint ( ) {
let cwd = temp_cwd ( " reproduce_missing_store " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let sweep = std ::process ::Command ::new ( BIN )
. args ( [
" sweep " ,
@@ -4551,7 +4638,7 @@ fn aura_reproduce_rejects_a_missing_stored_blueprint() {
/// user can discover then sweep or re-open without guessing.
#[ test ]
fn aura_sweep_list_axes_prints_prefixed_names ( ) {
let bp = format! ( " {} /exampl es/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /tests/fixtur es/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " sweep " , & bp , " --list-axes " ] )
. output ( )
@@ -4594,7 +4681,7 @@ fn aura_sweep_list_axes_closed_prints_bound_defaults() {
/// and takes no other flags. A query cannot also seed a sweep.
#[ test ]
fn aura_sweep_list_axes_rejects_other_flags ( ) {
let bp = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " sweep " , & bp , " --list-axes " , " --axis " , " sma_signal.fast.length=2,3 " ] )
. output ( )
@@ -4683,7 +4770,7 @@ fn aura_sweep_rejects_malformed_json_house_style() {
#[ test ]
fn aura_sweep_list_axes_names_round_trip_into_a_working_sweep ( ) {
let cwd = temp_cwd ( " blueprint-list-axes-roundtrip " ) ;
let bp = format! ( " {} /exampl es/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let bp = format! ( " {} /tests/fixtur es/r_sma_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
// 1) discover the axis names + kinds (do NOT hardcode them) — this is what a user
// reads. #246: the fixture now lists a BOUND param (`bias.scale`, F64) alongside
@@ -4943,7 +5030,7 @@ fn mc_r_bootstrap_real_e2e_pins_the_exact_current_grade() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" mc " , & fixture , " --real " , " GER40 " ,
@@ -4985,7 +5072,7 @@ fn mc_r_bootstrap_real_e2e_pins_the_exact_current_grade() {
/// blueprint through the campaign path, not just the historical r-sma candidate
/// — the whole point of dropping `--strategy r-sma`/`--fast`/`--slow` for a
/// positional blueprint + generic `--axis`. Every other mc E2E test here still
/// exercises `r_sma_open .json`; a regression that silently special-cased the
/// exercises `r_sma.json`; a regression that silently special-cased the
/// pipeline's axis lookup back to a hardcoded `sma_signal.*` namespace would
/// ship green there while breaking every other blueprint. This runs the
/// unrelated r-breakout candidate (the ganged `channel_length` axis, no
@@ -5000,7 +5087,7 @@ fn mc_dissolves_a_non_r_sma_blueprint() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /exampl es/r_breakout_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /tests/fixtur es/r_breakout_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" mc " , & fixture , " --real " , " GER40 " ,
@@ -5055,7 +5142,7 @@ fn mc_dissolves_through_the_campaign_path() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" mc " , & fixture , " --real " , " GER40 " ,
@@ -5158,7 +5245,7 @@ fn mc_real_fits_the_injected_roller_to_a_short_window() {
return ;
}
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
// Probe GER40's full archive window: a single-cell, no-window sweep records
// `campaign_window_ms(full_window)` into its generated campaign document, in the
@@ -5251,7 +5338,7 @@ fn mc_real_fits_the_injected_roller_to_a_short_window() {
#[ test ]
fn mc_dissolved_refuses_a_multi_value_stop ( ) {
let cwd = temp_cwd ( " mc-multi-stop " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" mc " , & fixture , " --real " , " GER40 " ,
@@ -5276,7 +5363,7 @@ fn mc_dissolved_refuses_a_multi_value_stop() {
#[ test ]
fn mc_dissolved_refuses_an_unknown_axis_name ( ) {
let cwd = temp_cwd ( " mc-unknown-axis " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" mc " , & fixture , " --real " , " GER40 " ,
@@ -5318,7 +5405,7 @@ fn mc_dissolved_seed_changes_the_bootstrap_draw_not_the_pooled_series() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let run = | seed : & str | {
std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
@@ -5381,7 +5468,7 @@ fn walkforward_campaign_runs_an_arbitrary_blueprint() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /exampl es/r_breakout_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /tests/fixtur es/r_breakout_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -5432,7 +5519,7 @@ fn mc_campaign_runs_an_arbitrary_blueprint() {
const FROM_MS : & str = " 1735689600000 " ;
const TO_MS : & str = " 1767225599000 " ;
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /exampl es/r_breakout_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /tests/fixtur es/r_breakout_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" mc " , & fixture , " --real " , " GER40 " ,
@@ -5481,7 +5568,7 @@ fn generalize_campaign_runs_an_arbitrary_blueprint() {
return ;
}
let ( cwd , _g ) = fresh_project ( ) ;
let fixture = format! ( " {} /exampl es/r_meanrev_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /tests/fixtur es/r_meanrev_open.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" generalize " , & fixture , " --real " , " GER40,USDJPY " ,
@@ -5519,7 +5606,7 @@ fn generalize_campaign_runs_an_arbitrary_blueprint() {
#[ test ]
fn walkforward_campaign_refuses_missing_axis ( ) {
let cwd = temp_cwd ( " walkforward-campaign-no-axis " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " walkforward " , & fixture , " --real " , " GER40 " , " --stop-length " , " 14 " , " --stop-k " , " 2.0 " ] )
. current_dir ( & cwd )
@@ -5535,7 +5622,7 @@ fn walkforward_campaign_refuses_missing_axis() {
#[ test ]
fn mc_campaign_refuses_seeds_with_real ( ) {
let cwd = temp_cwd ( " mc-campaign-seeds-mix " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" mc " , & fixture , " --real " , " GER40 " , " --seeds " , " 3 " ,
@@ -5556,7 +5643,7 @@ fn mc_campaign_refuses_seeds_with_real() {
#[ test ]
fn walkforward_campaign_refuses_a_raw_form_axis_name ( ) {
let cwd = temp_cwd ( " walkforward-campaign-raw-axis " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" walkforward " , & fixture , " --real " , " GER40 " ,
@@ -5577,7 +5664,7 @@ fn walkforward_campaign_refuses_a_raw_form_axis_name() {
#[ test ]
fn mc_campaign_refuses_an_unknown_axis ( ) {
let cwd = temp_cwd ( " mc-campaign-unknown-axis " ) ;
let fixture = format! ( " {} /examples/r_breakout_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_breakout.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [
" mc " , & fixture , " --real " , " GER40 " ,
@@ -5605,7 +5692,7 @@ fn mc_campaign_refuses_an_unknown_axis() {
#[ test ]
fn mc_campaign_refuses_missing_axis ( ) {
let cwd = temp_cwd ( " mc-campaign-no-axis " ) ;
let fixture = format! ( " {} /examples/r_sma_open .json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let fixture = format! ( " {} /examples/r_sma.json " , env! ( " CARGO_MANIFEST_DIR " ) ) ;
let out = std ::process ::Command ::new ( env! ( " CARGO_BIN_EXE_aura " ) )
. args ( [ " mc " , & fixture , " --real " , " GER40 " , " --stop-length " , " 14 " , " --stop-k " , " 2.0 " ] )
. current_dir ( & cwd )