Permit --select plateau in the campaign walk_forward stage (decision-4 relaxation) #215
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?
Permit
--select plateau:*in the campaignstd::walk_forwardstage — thedecision-4 preflight relaxation.
The campaign walk-forward stage (
crates/aura-campaign/src/exec.rs,run_walk_forward_stage) selects its per-window in-sample winner viaoptimize_deflated(argmax with trials-deflation) unconditionally, ignoring theStageBlock::WalkForward.selectfield. So a process whose wf stage carriesselect: plateau:mean|plateau:worstis not honoured: the plateau lattice isnever consulted.
Decision 4 (#210) already decided the relaxation: permit plateau in the wf stage
when no gate precedes it (a gate filters survivors to a non-lattice subset; with
no preceding gate the survivors are the full grid, so the plateau lattice is
intact). Implement: branch the wf stage's IS winner selection on
select(Argmax →
optimize_deflated; PlateauMean/Worst →optimize_plateauwith thesurvivor lattice), threading the lattice (axis lengths) into the stage; refuse
plateau when a preceding gate has already broken the lattice.
Carved out of the walkforward dissolution (#210, Fork B, 2026-07-06): that cycle
dissolves the argmax path (anchor-gated) and refuses
--select plateau:*on thedissolved path with a pointer here. Lifting the refusal is the last step of this
follow-up. Gate it with its own plateau characterization anchor (pin the current
aura walkforward … --select plateau:worstgrade before the change).depends on: nothing (a standalone executor relaxation, already designed)
context: #210 verb-dissolution milestone, decision 4; unblocks full walkforward
dissolution (removes the Fork-B plateau refusal)
Triage 2026-07-09 (tree at
68317ec) — ready to build; the design decision is already made and the building blocks are in place:..(droppingselect) and calls optimize_deflated unconditionally (crates/aura-campaign/src/exec.rs, ~:768); preflight refuses plateau unconditionally (crates/aura-campaign/src/lib.rs:291, pinned by the test at :808); the CLI refuses with "--select plateau is not yet available on the campaign path; see #215" (crates/aura-cli/src/main.rs:2915-2916).f783535,a047af6,e7efe1f) only installed the refusal-with-pointer.Design reconciliation (specify) — #215 wf-stage plateau
The code recon surfaced two load-bearing forks; both are resolved below before
the spec is written (derived decisions, not user preferences).
Fork 1 — where "the parameter lattice is intact" is decided: static preflight
(gate-presence) vs runtime executor (survivor count).
Decision: static preflight on gate-presence. The preflight refuses
--select plateau:*in astd::walk_forwardstage iff somestd::gatestagesyntactically precedes it; with no preceding gate the survivors are provably the
full sweep grid, so the parameter lattice (the per-cell
grid.axis_lens) isexact and
optimize_plateauis sound. Basis: derived — a campaign document'sstructural validity must be data-independent, and a gate's filtering is
data-dependent (a
n_trades ge 0gate passes every member on one dataset andfilters on another). Hinging plateau-validity on the runtime survivor count
would make the same document valid on one dataset and faulted on another,
violating the determinism / document-validity separation. The static rule is
deliberately conservative (it also refuses plateau after a no-op gate) but
predictable, and keeps the refusal in the existing static preflight tier — no
new runtime
ExecFaultpath. It matches decision-4's own "when no gateprecedes" phrasing, and the existing fault message ("a gated survivor subset has
no parameter lattice") already describes exactly the narrowed case.
Fork 2 — scope: the
walkforwardverb only, or alsoaura mc.Decision: walkforward-only for the CLI surface; the campaign-level capability
is verb-agnostic. The executor + preflight changes make the campaign path
honour plateau-in-wf (no preceding gate) for ANY process document — hand-authored
or generated. The CLI
--selectthreading is added to thewalkforwardverbonly (
translate_walkforward); themcverb keeps its hardcoded wf-stageArgmax. Basis: derived — #215 / decision-4 scopes the relaxation to thewalk_forward stage's in-sample winner selection and the issue names the
aura walkforward … --select plateausurface; whetheraura mcshould exposeplateau on its internal wf stage is a separate, unposed question. It is filed
forward if warranted, not laundered into this cut.
Implementation note (not a fork): the wf per-window in-sample winner is rewired
to reuse the existing
select_sweep_winner(&is_family, axis_lens, metric, select, /*deflate=*/true, seed)bridge.(Argmax, true)there is exactly thecurrent
optimize_deflated(...)call, so the argmax default staysbyte-identical (its grade + content-id pins hold); plateau flows through the
same three-type seam, no fourth dispatch copy.
Spec auto-signed (/boss)
The spec for the walk_forward-stage plateau relaxation was auto-signed on a
grounding-check PASS with no human in the loop. All five load-bearing
current-behaviour assumptions it rests on are ratified by named, currently-green
tests: the argmax walk_forward grade and the survivor-lattice invariants
(
wf_searches_only_the_survivor_points,wf_stamps_selection_on_oos_members),the unconditional plateau-in-wf preflight refusal
(
preflight_refuses_plateau_in_walk_forward), the CLI--select plateaurefusal (
walkforward_dissolved_refuses_select_plateau), andselect_sweep_winner's existing plateau dispatch(
wf_sweep_stage_dispatches_plateau_select_modes).The design is settled: the two load-bearing forks — a static preflight refusal
keyed on gate-presence (not a runtime survivor count), and a walkforward-only
CLI scope (the
mcverb untouched) — were resolved in this issue's earlierdesign-reconciliation comment. The argmax default is held byte-identical by
reusing the existing
select_sweep_winnerbridge for the wf per-window winner.