feat(research): std::walk_forward vocabulary corrected to machinery-true fields (0107 task 1)
folds/in_sample_bars/out_of_sample_bars mapped to nothing WindowRoller::new accepts; the block now carries in_sample_ms/ out_of_sample_ms/step_ms/mode (WfMode: rolling|anchored) — the roller's three lengths in the campaign window's own epoch-ms unit plus both shipped RollModes (#198 decision 2). New intrinsic fault ZeroWalkForwardLength (path-addressed) refuses zero lengths at the doc tier, earlier than the roller's NonPositiveLength. Golden canonical pin, PROCESS_FIXTURE, introspection tables, and the aura-cli prose/fixture twins moved together; fieldtest corpus untouched (historical record — stored walk_forward docs get new content ids by design). Gates: aura-research 14/14, aura-cli green, workspace build clean. refs #198
This commit is contained in:
@@ -97,6 +97,9 @@ fn doc_fault_prose(f: &DocFault) -> String {
|
||||
DocFault::GateAfterTerminalStage { stage } => {
|
||||
format!("stage {stage}: a gate cannot follow a terminal stage (monte_carlo/generalize)")
|
||||
}
|
||||
DocFault::ZeroWalkForwardLength { stage, field } => {
|
||||
format!("pipeline[{stage}]: walk_forward {field} must be > 0")
|
||||
}
|
||||
DocFault::EmptyInstruments => "data.instruments is empty".into(),
|
||||
DocFault::NoWindow => "data.windows is empty".into(),
|
||||
DocFault::BadWindow { index } => {
|
||||
@@ -401,4 +404,11 @@ mod tests {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn zero_walk_forward_length_prose_is_path_addressed_and_debug_free() {
|
||||
let prose = doc_fault_prose(&DocFault::ZeroWalkForwardLength { stage: 2, field: "step_ms" });
|
||||
assert_eq!(prose, "pipeline[2]: walk_forward step_ms must be > 0");
|
||||
assert!(!prose.contains("ZeroWalkForwardLength"), "Debug leak: {prose}");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user