feat(cli): campaign validate runs the executor preflight as a third tier (fieldtest 0108 F6)
valid == runnable for every pure document/campaign property: inside a project, once intrinsic + referential pass, validate fetches the referenced process from the store and runs the data-free aura_campaign::preflight (promoted to pub) — an executable shape gains 'campaign document valid (executable): pipeline shape and static guards pass'; a shape/param/metric/instrument fault refuses under 'campaign is not executable:' with the exec_fault_prose detail, exit 1, before any member runs. Outside a project the skip line is unchanged (the third tier needs the store like the second). Collateral the RED author predicted: the referential e2e's OK fixture (PROCESS_DOC: deflate+plateau sweep, overfit_probability gate) was intrinsically-valid-but-never-executable — that test now registers an executable twin (argmax/no-deflate, per-member gate metric); the base PROCESS_DOC fixture stays untouched for all other consumers. RED-first (tdd-author handoff): the third-tier pin observed failing on the two-line validate output. Gates: workspace 1026/0, clippy -D warnings clean. closes #205
This commit is contained in:
@@ -177,7 +177,7 @@ fn predicate_holds(cmp: &Cmp, value: f64, threshold: f64) -> bool {
|
||||
/// needs >= 2 campaign instruments and an R selection metric (the registry's
|
||||
/// `check_r_metric`). The campaign parameter carries the campaign-level
|
||||
/// static checks (generalize's instrument arity).
|
||||
pub(crate) fn preflight(process: &ProcessDoc, campaign: &CampaignDoc) -> Result<(), ExecFault> {
|
||||
pub fn preflight(process: &ProcessDoc, campaign: &CampaignDoc) -> Result<(), ExecFault> {
|
||||
// Position of a stage in the fixed v2 shape; gates (rank 1) may repeat,
|
||||
// every other rank appears at most once and ranks never decrease.
|
||||
fn shape_rank(stage: &StageBlock) -> usize {
|
||||
|
||||
Reference in New Issue
Block a user