Validate walkforward axes without executing the first IS-window sweep #253
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The walkforward campaign path validates the axis grid by executing it:
dispatch's pre-flight callsblueprint_sweep_over(doc, axes, first_is_window)(crates/aura-cli/src/main.rs:2130-2138 atd7874e2), andblueprint_sweep_over(main.rs:2019-2049) runs every grid member end-to-end (sweep_with_lattice(|point| run_blueprint_member(...))). The result is discarded; thewalk_forwardclosure (main.rs:2139-2141) then re-computes the same first IS window as part of the real run. Landed with6a775f7(2026-07-01).Cost: every real-data walkforward pays roughly one extra IS window of full sim compute; with #239's fit-scaled short windows a single-roll walkforward pays ~2× its total IS compute. Context and measured per-window magnitudes: measured breakdown on #250 (a year-2025, 9-window, 4-cell walkforward is ~4.4 s debug; the discarded pre-flight is one of those windows across the whole grid).
The pre-flight's purpose is axis validation (unknown axis names, arity, bounds), which is resolvable without running members — the same predicate set the construction gate splits already share (
edge_kind_check/resolve_*, crates/aura-engine construction). A validation-only pre-flight keeps the refusal semantics and drops the duplicated compute.claude referenced this issue2026-07-13 15:24:41 +02:00
Attribution correction before close. The pre-flight this issue describes exists, is real, and is now fixed — but it serves only the synthetic walkforward path, so the issue's cost claim ("every real-data walkforward pays ~one extra IS window") was wrong.
Evidence:
blueprint_sweep_over/blueprint_walkforward_familyeach have exactly one call site, gated onDataSource::Synthetic(main.rs ~3832 atd7874e2). The--realbranch builds aSugarInvocationand returns viaverb_sugar::run_walkforward_sugar— it never reaches this pre-flight.The fix that landed (
validate_axis_grid): the synthetic pre-flight now drives the sweep terminal's ownresolve_axes/arity/kind checks with a constant placeholder report — same single-sourced rejection wording (the #177 exactly-once property stays pinned byaura_walkforward_emits_an_unknown_axis_rejection_once), no member execution, no roller derivation.The actual discarded computation for
--realtraffic lives inaura-campaign/src/exec.rs::run_cell(~lines 259-333): the dissolved walkforward/mc process is[Sweep{selection: argmax}, WalkForward], the leading Sweep stage executes every grid member over the entire campaign window, its argmax winner is (pertranslate_walkforward's own doc) "not part of the summary", and with no Gate stage between them the survivors flow on as the whole family regardless — the WalkForward stage reads only the grid points. Filed with the design fork it raises as a separate issue.