Permit --select plateau in the campaign walk_forward stage (decision-4 relaxation) #215

Closed
opened 2026-07-06 21:03:11 +02:00 by Brummel · 3 comments
Owner

Permit --select plateau:* in the campaign std::walk_forward stage — the
decision-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 via
optimize_deflated (argmax with trials-deflation) unconditionally, ignoring the
StageBlock::WalkForward.select field. So a process whose wf stage carries
select: plateau:mean|plateau:worst is not honoured: the plateau lattice is
never 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_plateau with the
survivor 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 the
dissolved 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:worst grade 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)

Permit `--select plateau:*` in the campaign `std::walk_forward` stage — the decision-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 via `optimize_deflated` (argmax with trials-deflation) unconditionally, ignoring the `StageBlock::WalkForward.select` field. So a process whose wf stage carries `select: plateau:mean|plateau:worst` is not honoured: the plateau lattice is never 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_plateau` with the survivor 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 the dissolved 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:worst` grade 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)
Brummel added the feature label 2026-07-06 21:03:11 +02:00
Brummel added this to the Triage harvest 2026-07 — surface honesty & authoring ergonomics milestone 2026-07-09 17:31:15 +02:00
Author
Owner

Triage 2026-07-09 (tree at 68317ec) — ready to build; the design decision is already made and the building blocks are in place:

  • The gap: run_walk_forward_stage destructures StageBlock::WalkForward with .. (dropping select) 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).
  • The model: the sweep stage already dispatches plateau via select_sweep_winner → optimize_plateau with the axis lens (exec.rs:575-611), so the walk_forward branch is a bounded extension — thread the lattice in, branch the per-window in-sample winner selection, narrow the preflight refusal to gate-preceded stages, delete the CLI-side refusal.
  • No relaxation work has landed: the commits referencing #215 (f783535, a047af6, e7efe1f) only installed the refusal-with-pointer.
Triage 2026-07-09 (tree at 68317ec) — ready to build; the design decision is already made and the building blocks are in place: - The gap: run_walk_forward_stage destructures StageBlock::WalkForward with `..` (dropping `select`) 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). - The model: the sweep stage already dispatches plateau via select_sweep_winner → optimize_plateau with the axis lens (exec.rs:575-611), so the walk_forward branch is a bounded extension — thread the lattice in, branch the per-window in-sample winner selection, narrow the preflight refusal to gate-preceded stages, delete the CLI-side refusal. - No relaxation work has landed: the commits referencing #215 (f783535, a047af6, e7efe1f) only installed the refusal-with-pointer.
Author
Owner

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 a std::walk_forward stage iff some std::gate stage
syntactically precedes it; with no preceding gate the survivors are provably the
full sweep grid, so the parameter lattice (the per-cell grid.axis_lens) is
exact and optimize_plateau is sound. Basis: derived — a campaign document's
structural validity must be data-independent, and a gate's filtering is
data-dependent (a n_trades ge 0 gate passes every member on one dataset and
filters 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 ExecFault path. It matches decision-4's own "when no gate
precedes" phrasing, and the existing fault message ("a gated survivor subset has
no parameter lattice") already describes exactly the narrowed case.

Fork 2 — scope: the walkforward verb only, or also aura 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 --select threading is added to the walkforward verb
only (translate_walkforward); the mc verb keeps its hardcoded wf-stage
Argmax. Basis: derived — #215 / decision-4 scopes the relaxation to the
walk_forward stage's in-sample winner selection and the issue names the
aura walkforward … --select plateau surface; whether aura mc should expose
plateau 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 the
current optimize_deflated(...) call, so the argmax default stays
byte-identical (its grade + content-id pins hold); plateau flows through the
same three-type seam, no fourth dispatch copy.

## 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 a `std::walk_forward` stage iff some `std::gate` stage syntactically precedes it; with no preceding gate the survivors are provably the full sweep grid, so the parameter lattice (the per-cell `grid.axis_lens`) is exact and `optimize_plateau` is sound. Basis: derived — a campaign document's structural validity must be data-independent, and a gate's filtering is data-dependent (a `n_trades ge 0` gate passes every member on one dataset and filters 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 `ExecFault` path. It matches decision-4's own "when no gate precedes" phrasing, and the existing fault message ("a gated survivor subset has no parameter lattice") already describes exactly the narrowed case. **Fork 2 — scope: the `walkforward` verb only, or also `aura 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 `--select` threading is added to the `walkforward` verb only (`translate_walkforward`); the `mc` verb keeps its hardcoded wf-stage `Argmax`. Basis: derived — #215 / decision-4 scopes the relaxation to the walk_forward stage's in-sample winner selection and the issue names the `aura walkforward … --select plateau` surface; whether `aura mc` should expose plateau 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 the current `optimize_deflated(...)` call, so the argmax default stays byte-identical (its grade + content-id pins hold); plateau flows through the same three-type seam, no fourth dispatch copy.
Author
Owner

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 plateau
refusal (walkforward_dissolved_refuses_select_plateau), and
select_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 mc verb untouched) — were resolved in this issue's earlier
design-reconciliation comment. The argmax default is held byte-identical by
reusing the existing select_sweep_winner bridge for the wf per-window winner.

## 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 plateau` refusal (`walkforward_dissolved_refuses_select_plateau`), and `select_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 `mc` verb untouched) — were resolved in this issue's earlier design-reconciliation comment. The argmax default is held byte-identical by reusing the existing `select_sweep_winner` bridge for the wf per-window winner.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#215