#![cfg(test)]
use super::tests::{global_ev, planted_circle_embedded};
use super::*;
use crate::basis::{EuclideanPatchEvaluator, PeriodicHarmonicEvaluator, SaeBasisSecondJet};
use crate::sparse_dict::{SparseDictConfig, fit_sparse_dictionary};
use gam_linalg::faer_ndarray::{FaerCholesky, fast_atb};
use gam_solve::rho_optimizer::OuterObjective;
use ndarray::{Array1, Array2, ArrayView2, array, s};
use std::sync::Arc;
#[derive(Clone, Copy)]
pub(crate) enum Topo {
Circle,
Euclidean,
Linear,
}
pub(crate) fn build_term(
z: ArrayView2<'_, f64>,
k: usize,
topo: Topo,
mode: AssignmentMode,
) -> (SaeManifoldTerm, f64) {
let n = z.nrows();
let (basis_kind, dim, topo_name): (SaeAtomBasisKind, usize, &str) = match topo {
Topo::Circle => (SaeAtomBasisKind::Periodic, 1, "circle"),
Topo::Euclidean => (SaeAtomBasisKind::EuclideanPatch, 1, "euclidean"),
Topo::Linear => (SaeAtomBasisKind::Linear, 1, "linear"),
};
let evaluator: Arc<dyn SaeBasisSecondJet> = match topo {
Topo::Circle => Arc::new(PeriodicHarmonicEvaluator::new(3).unwrap()),
Topo::Euclidean => Arc::new(EuclideanPatchEvaluator::new(dim, 2).unwrap()),
Topo::Linear => Arc::new(EuclideanPatchEvaluator::new(dim, 1).unwrap()),
};
let basis_kinds = vec![basis_kind.clone(); k];
let atom_dims = vec![dim; k];
let seed_coords = sae_pca_seed_initial_coords(z, &basis_kinds, &atom_dims).unwrap();
let mut atoms = Vec::with_capacity(k);
let mut coords_blocks = Vec::with_capacity(k);
let mut manifolds = Vec::with_capacity(k);
let mut rss = 0.0_f64;
for atom_idx in 0..k {
let coords = seed_coords.slice(s![atom_idx, .., 0..dim]).to_owned();
let (phi, jet) = evaluator.evaluate(coords.view()).unwrap();
let mm = phi.ncols();
let mut xtx = fast_atb(&phi, &phi);
for i in 0..mm {
xtx[[i, i]] += 1.0e-8;
}
let xtz = fast_atb(&phi, &z.to_owned());
let decoder = xtx.cholesky(Side::Lower).unwrap().solve_mat(&xtz);
let fitted = phi.dot(&decoder);
for row in 0..n {
for col in 0..z.ncols() {
let r = z[[row, col]] - fitted[[row, col]];
rss += r * r;
}
}
let atom = SaeManifoldAtom::new_with_provided_function_gram(
topo_name,
basis_kind.clone(),
dim,
phi,
jet,
decoder,
Array2::<f64>::eye(mm),
)
.unwrap()
.with_basis_evaluator(evaluator.clone());
atoms.push(atom);
coords_blocks.push(coords);
manifolds.push(match topo {
Topo::Circle => LatentManifold::Circle { period: 1.0 },
_ => LatentManifold::Euclidean,
});
}
let seed_dispersion = (rss / (k * n * z.ncols()) as f64).max(1.0e-12);
let mut logits = Array2::<f64>::zeros((n, k));
for row in 0..n {
for atom in 0..k {
logits[[row, atom]] = match mode {
AssignmentMode::OrderedBetaBernoulli { .. } => 6.0,
AssignmentMode::Softmax { .. } => {
if atom == row % k {
3.0
} else {
0.0
}
}
AssignmentMode::ThresholdGate { .. } => {
if atom == row % k {
3.0
} else {
-3.0
}
}
AssignmentMode::TopK { .. } => {
if atom == row % k {
3.0
} else {
0.0
}
}
};
}
}
let assignment =
SaeAssignment::from_blocks_with_mode_and_manifolds(logits, coords_blocks, manifolds, mode)
.unwrap();
(
SaeManifoldTerm::new(atoms, assignment).unwrap(),
seed_dispersion,
)
}
pub(crate) fn objective_and_seed(
z: ArrayView2<'_, f64>,
k: usize,
topo: Topo,
mode: AssignmentMode,
) -> (SaeManifoldOuterObjective, Array1<f64>) {
let (term, seed_dispersion) = build_term(z, k, topo, mode);
let init_rho = SaeManifoldRho::new(0.02_f64.ln(), 1.0_f64.ln(), vec![array![0.0]; k])
.seed_scaled_by_dispersion_for_assignment(seed_dispersion, mode)
.unwrap();
let init_rho_flat = init_rho.to_flat();
let objective =
SaeManifoldOuterObjective::new(term, z.to_owned(), None, init_rho, 8, 0.04, 1.0e-6, 1.0e-6);
(objective, init_rho_flat)
}
fn seed_passes_startup_validation(
z: ArrayView2<'_, f64>,
k: usize,
topo: Topo,
mode: AssignmentMode,
) -> Result<f64, String> {
let (mut objective, seed) = objective_and_seed(z, k, topo, mode);
assert!(
seed.len() > 8,
"test must exercise the EFS lane (n_params={} must exceed 8)",
seed.len()
);
let eval = objective.eval_efs(&seed).map_err(|e| e.to_string())?;
if eval.cost == f64::INFINITY {
return Err(
"seed rejected: the EFS startup lane reports this rho INFEASIBLE \
(cost = +inf, the conventional infeasible encoding)"
.to_string(),
);
}
if !eval.cost.is_finite() {
return Err(format!(
"EFS seed cost is numerically invalid ({}) — this is NOT the infeasible convention and does indicate a divergence",
eval.cost
));
}
if let Some((idx, v)) = eval.steps.iter().enumerate().find(|(_, v)| !v.is_finite()) {
return Err(format!("EFS seed step[{idx}] is non-finite ({v})"));
}
Ok(eval.cost)
}
#[test]
fn efs_and_value_lanes_agree_on_finiteness_at_the_seed_2609() {
let z = planted_circle_embedded(48, 6, 0.03);
let (mut objective, seed) = objective_and_seed(
z.view(),
4,
Topo::Circle,
AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false),
);
let value_lane = objective.eval(&seed).map(|evaluation| evaluation.cost);
let efs_lane = objective.eval_efs(&seed).map(|evaluation| evaluation.cost);
eprintln!("2609 value lane = {value_lane:?}");
eprintln!("2609 efs lane = {efs_lane:?}");
let value_cost = value_lane.expect("the value lane must evaluate the seed");
let efs_cost = efs_lane.expect("the EFS lane must evaluate the seed");
assert!(
value_cost.is_finite(),
"the value lane returned a non-finite seed cost ({value_cost}); the defect is \
then in the criterion itself, not in the EFS step"
);
assert!(
efs_cost.is_finite(),
"the value lane installed a finite authoritative basin ({value_cost}) but the \
following EFS evaluation rejected that same seed ({efs_cost})"
);
}
#[test]
fn ordered_beta_finiteness_sweep_2609() {
let z = planted_circle_embedded(48, 6, 0.03);
let mut any_finite = false;
for &k in &[2usize, 4, 8] {
for &tau in &[0.25_f64, 1.0, 4.0] {
for &alpha in &[0.25_f64, 1.0, 4.0] {
let (mut objective, seed) = objective_and_seed(
z.view(),
k,
Topo::Circle,
AssignmentMode::ordered_beta_bernoulli(tau, alpha, false),
);
let cost = objective.eval(&seed).map(|evaluation| evaluation.cost);
let verdict = match &cost {
Ok(value) if value.is_finite() => {
any_finite = true;
format!("finite {value:.6e}")
}
Ok(value) => format!("NON-FINITE {value}"),
Err(error) => format!("Err {error}"),
};
eprintln!("2609sweep k={k} tau={tau} alpha={alpha}: {verdict}");
}
}
}
assert!(
any_finite,
"every ordered-Beta configuration diverged, so the sweep localises nothing; \
widen it before concluding the assignment kind itself is at fault"
);
}
#[test]
fn all_assignment_topology_combinations_pass_startup_validation_1782() {
let z = planted_circle_embedded(48, 6, 0.03);
let k = 4usize;
let cases: Vec<(&str, Topo, AssignmentMode)> = vec![
(
"circle/ordered_beta_bernoulli",
Topo::Circle,
AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false),
),
("circle/softmax", Topo::Circle, AssignmentMode::softmax(1.0)),
(
"circle/threshold_gate",
Topo::Circle,
AssignmentMode::threshold_gate(1.0, 0.0),
),
(
"euclidean/ordered_beta_bernoulli",
Topo::Euclidean,
AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false),
),
(
"linear/ordered_beta_bernoulli",
Topo::Linear,
AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false),
),
];
let mut verdicts: Vec<(&str, Result<f64, String>)> = Vec::new();
for (label, topo, mode) in cases {
let result = seed_passes_startup_validation(z.view(), k, topo, mode);
match &result {
Ok(cost) => eprintln!("REPRO1782 {label}: startup OK (cost={cost:.4e})"),
Err(e) => eprintln!("REPRO1782 {label}: startup ERR={e}"),
}
verdicts.push((label, result));
}
let failures: Vec<String> = verdicts
.iter()
.filter_map(|(label, result)| {
result.as_ref().err().map(|e| format!("{label}: {e}"))
})
.collect();
assert!(
failures.is_empty(),
"#1782: {} of {} assignment/topology cells failed outer startup validation:\n {}",
failures.len(),
verdicts.len(),
failures.join("\n ")
);
}
fn run_full_fit(
z: ArrayView2<'_, f64>,
k: usize,
topo: Topo,
mode: AssignmentMode,
label: &str,
) -> f64 {
let (mut objective, seed) = objective_and_seed(z, k, topo, mode);
let n_params = seed.len();
let result = gam_solve::rho_optimizer::OuterProblem::new(n_params)
.with_initial_rho(seed)
.with_max_iter(4)
.with_seed_config(gam_problem::SeedConfig {
max_seeds: 1,
seed_budget: 1,
..Default::default()
})
.run(&mut objective, "SAE manifold")
.unwrap_or_else(|e| {
panic!("#1782 {label} fit must not abort at startup / in the outer solver, got: {e}")
});
objective
.certify_outer_result(&result)
.expect("#1782 outer result must certify the installed state");
let fitted = objective.into_fitted().expect("outer fit was evaluated");
let ev = global_ev(z, fitted.term.fitted().view());
eprintln!("REPRO1782 {label} fit: ev={ev:.4}");
assert!(
ev.is_finite(),
"#1782 {label} produced a non-finite reconstruction EV ({ev})"
);
ev
}
#[test]
fn assignment_kinds_fit_on_circle_1782() {
let z = planted_circle_embedded(48, 6, 0.03);
let k = 4usize;
for (label, mode) in [
(
"circle/ordered_beta_bernoulli",
AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false),
),
("circle/softmax", AssignmentMode::softmax(1.0)),
(
"circle/threshold_gate",
AssignmentMode::threshold_gate(1.0, 0.0),
),
] {
run_full_fit(z.view(), k, Topo::Circle, mode, label);
}
}
#[test]
fn topologies_fit_on_circle_data_1782() {
let z = planted_circle_embedded(48, 6, 0.03);
let k = 4usize;
for (label, topo) in [
("euclidean/ordered_beta_bernoulli", Topo::Euclidean),
("linear/ordered_beta_bernoulli", Topo::Linear),
] {
run_full_fit(
z.view(),
k,
topo,
AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false),
label,
);
}
}
#[test]
fn cocollapse_startup_frontier_1026() {
let z = planted_circle_embedded(96, 10, 0.03);
let ks = [4usize, 8];
let modes: [(&str, fn() -> AssignmentMode); 3] = [
("ordered_beta_bernoulli ", || {
AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false)
}),
("thresh_gate", || AssignmentMode::threshold_gate(1.0, 0.5)),
("softmax ", || AssignmentMode::softmax(1.0)),
];
let mut ordered_beta_bernoulli_frontier = 0usize;
for (label, mk) in modes {
let mut frontier = 0usize;
for &k in &ks {
match seed_passes_startup_validation(z.view(), k, Topo::Circle, mk()) {
Ok(cost) => {
eprintln!("FRONTIER1026 {label} K={k:>3}: startup PASS (cost={cost:.4e})");
frontier = k;
}
Err(e) => {
eprintln!("FRONTIER1026 {label} K={k:>3}: startup FAIL ({e})");
break;
}
}
}
eprintln!("FRONTIER1026 {label}: largest passing K = {frontier}");
if label.trim() == "ordered_beta_bernoulli" {
ordered_beta_bernoulli_frontier = frontier;
}
}
assert!(
ordered_beta_bernoulli_frontier >= 4,
"startup validation must hold at least to K=4 (got frontier {ordered_beta_bernoulli_frontier})"
);
}
#[test]
fn manifold_beats_linear_joint_streaming_1026() {
let z = planted_circle_embedded(120, 10, 0.03);
for &k in &[8usize] {
let z32 = z.mapv(|v| v as f32);
let lin = fit_sparse_dictionary(z32.view(), &SparseDictConfig::new(k))
.expect("linear SAE baseline fits");
let ev_linear = lin.explained_variance;
let mode = AssignmentMode::threshold_gate(1.0, 0.0);
let (mut term, _disp) = build_term(z.view(), k, Topo::Circle, mode);
let mut rho = SaeManifoldRho::new(
1.0e-3_f64.ln(),
1.0e-3_f64.ln(),
vec![array![1.0e-3_f64.ln()]; k],
);
term.run_joint_fit_arrow_schur(z.view(), &mut rho, None, 24, 1.0, 1.0e-6, 1.0e-6)
.unwrap_or_else(|e| {
panic!("#1026 manifold K={k} joint inner fit must run e2e, got: {e}")
});
let fitted = term.try_fitted().expect("manifold fitted");
let ev_manifold = global_ev(z.view(), fitted.view());
eprintln!(
"WIN1026 K={k:>3}: manifold EV={ev_manifold:.4} linear EV={ev_linear:.4} \
margin={:+.4}",
ev_manifold - ev_linear
);
assert!(
ev_manifold.is_finite() && ev_linear.is_finite(),
"#1026 K={k}: both EVs must be finite (manifold={ev_manifold}, linear={ev_linear})"
);
assert!(
ev_manifold + 5.0e-2 >= ev_linear,
"#1026 K={k}: principled manifold SAE must match-or-beat linear \
(manifold={ev_manifold:.4} vs linear={ev_linear:.4})"
);
}
}
#[test]
fn d2_portfolio_loses_at_measured_parameter_parity_2502() {
fn arm(
z: ArrayView2<'_, f64>,
z_test: ArrayView2<'_, f64>,
kinds: &[SaeAtomBasisKind],
dims: &[usize],
evals: &[Arc<dyn SaeBasisSecondJet>],
) -> (usize, f64) {
let k = kinds.len();
let p = z.ncols();
let seed = sae_pca_seed_initial_coords(z, kinds, dims).expect("train seed");
let seed_test = sae_pca_seed_initial_coords(z_test, kinds, dims).expect("test seed");
let mut params = 0usize;
let n_test = z_test.nrows();
let mut recon = Array2::<f64>::zeros((n_test, p));
for a in 0..k {
let d = dims[a];
let coords = seed.slice(s![a, .., 0..d]).to_owned();
let (phi, _) = evals[a].evaluate(coords.view()).expect("train phi");
let mm = phi.ncols();
params += mm * p;
let mut xtx = fast_atb(&phi, &phi);
for i in 0..mm {
xtx[[i, i]] += 1.0e-8;
}
let xtz = fast_atb(&phi, &z.to_owned());
let decoder = xtx
.cholesky(Side::Lower)
.expect("seed gram is PD")
.solve_mat(&xtz);
let coords_t = seed_test.slice(s![a, .., 0..d]).to_owned();
let (phi_t, _) = evals[a].evaluate(coords_t.view()).expect("test phi");
let fitted = phi_t.dot(&decoder);
for row in 0..n_test {
for col in 0..p {
recon[[row, col]] += fitted[[row, col]] / k as f64;
}
}
}
let mut resid = 0.0_f64;
let mut total = 0.0_f64;
let mean = z_test.mean_axis(ndarray::Axis(0)).expect("test mean");
for row in 0..n_test {
for col in 0..p {
let r = z_test[[row, col]] - recon[[row, col]];
resid += r * r;
let c = z_test[[row, col]] - mean[col];
total += c * c;
}
}
(params, 1.0 - resid / total.max(1.0e-30))
}
let z = planted_circle_embedded(600, 8, 0.03);
let z_test = planted_circle_embedded(400, 8, 0.03);
let linear_eval: Arc<dyn SaeBasisSecondJet> =
Arc::new(EuclideanPatchEvaluator::new(1, 1).expect("linear evaluator"));
let euclid_eval: Arc<dyn SaeBasisSecondJet> =
Arc::new(EuclideanPatchEvaluator::new(2, 2).expect("euclidean evaluator"));
let periodic_eval: Arc<dyn SaeBasisSecondJet> =
Arc::new(PeriodicHarmonicEvaluator::new(3).expect("periodic evaluator"));
let sphere_eval: Arc<dyn SaeBasisSecondJet> =
Arc::new(crate::basis::AmbientSphereHarmonicEvaluator::new(2).expect("sphere evaluator"));
let probe = 10usize;
let lin_kinds = vec![SaeAtomBasisKind::Linear; probe];
let lin_dims = vec![1usize; probe];
let lin_evals = vec![linear_eval.clone(); probe];
let (lin_probe_params, _) = arm(z.view(), z_test.view(), &lin_kinds, &lin_dims, &lin_evals);
let cycle: [(SaeAtomBasisKind, usize, usize); 5] = [
(SaeAtomBasisKind::Linear, 1, 0),
(SaeAtomBasisKind::EuclideanPatch, 2, 1),
(SaeAtomBasisKind::Periodic, 1, 2),
(SaeAtomBasisKind::Sphere, 3, 3),
(SaeAtomBasisKind::Sphere, 3, 3),
];
let evals_by_slot = [
linear_eval.clone(),
euclid_eval.clone(),
periodic_eval.clone(),
sphere_eval.clone(),
];
let mix = |k: usize| {
let mut kinds = Vec::with_capacity(k);
let mut dims = Vec::with_capacity(k);
let mut evals: Vec<Arc<dyn SaeBasisSecondJet>> = Vec::with_capacity(k);
for a in 0..k {
let (kind, d, slot) = cycle[a % cycle.len()].clone();
kinds.push(kind);
dims.push(d);
evals.push(evals_by_slot[slot].clone());
}
(kinds, dims, evals)
};
let (pk, pd, pe) = mix(probe);
let (mix_probe_params, _) = arm(z.view(), z_test.view(), &pk, &pd, &pe);
let lin_per_atom = lin_probe_params as f64 / probe as f64;
let mix_per_atom = mix_probe_params as f64 / probe as f64;
let cost_ratio = mix_per_atom / lin_per_atom;
println!(
"[2502-parity] measured per-atom decoder params: linear={lin_per_atom:.1} \
mixed={mix_per_atom:.1} ratio={cost_ratio:.3}x"
);
let k_lin = 60usize;
let k_mix = ((k_lin as f64) / cost_ratio).round().max(1.0) as usize;
let lk = vec![SaeAtomBasisKind::Linear; k_lin];
let ld = vec![1usize; k_lin];
let le = vec![linear_eval.clone(); k_lin];
let (lin_params, lin_ev) = arm(z.view(), z_test.view(), &lk, &ld, &le);
let (mk, md, me) = mix(k_mix);
let (mix_params, mix_ev) = arm(z.view(), z_test.view(), &mk, &md, &me);
let skew = (mix_params as f64 - lin_params as f64).abs() / (lin_params as f64);
println!(
"[2502-parity] linear K={k_lin} params={lin_params} heldout_EV={lin_ev:.4}"
);
println!(
"[2502-parity] mixed K={k_mix} params={mix_params} heldout_EV={mix_ev:.4}"
);
println!(
"[2502-parity] realized skew={:.1}% linear_EV - mixed_EV = {:+.4}",
skew * 100.0,
lin_ev - mix_ev
);
assert!(
skew <= 0.05,
"this is NOT a parity comparison: realized skew {:.1}% (linear {} vs mixed {} \
decoder params). Do not report an EV difference across it.",
skew * 100.0,
lin_params,
mix_params
);
assert!(
lin_ev.is_finite() && mix_ev.is_finite(),
"both arms must produce a finite held-out EV; got linear={lin_ev} mixed={mix_ev}"
);
}
#[test]
fn seed_infeasibility_channel_is_named_2609() {
let z = planted_circle_embedded(48, 6, 0.03);
let cases: [(&str, Topo, AssignmentMode); 5] = [
(
"circle/ordered_beta_bernoulli",
Topo::Circle,
AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false),
),
("circle/softmax", Topo::Circle, AssignmentMode::softmax(1.0)),
(
"circle/threshold_gate",
Topo::Circle,
AssignmentMode::threshold_gate(1.0, 0.0),
),
(
"euclidean/ordered_beta_bernoulli",
Topo::Euclidean,
AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false),
),
(
"linear/ordered_beta_bernoulli",
Topo::Linear,
AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false),
),
];
let mut fatal_channels = Vec::new();
for (label, topo, mode) in cases {
let (mut term, seed_dispersion) = build_term(z.view(), 4, topo, mode);
let rho = SaeManifoldRho::new(0.02_f64.ln(), 1.0_f64.ln(), vec![array![0.0]; 4])
.seed_scaled_by_dispersion_for_assignment(seed_dispersion, mode)
.unwrap();
let warm = term.warm_start_latents_from_amortized_encoder(z.view(), &rho);
let outcome = term.penalized_quasi_laplace_criterion_with_refine_policy_and_lane(
z.view(),
&rho,
None,
8,
0.04,
1.0e-6,
1.0e-6,
true,
None,
);
let channel = match &outcome {
Ok((cost, _)) if cost.is_finite() => format!("FINITE cost={cost:.6e}"),
Ok((cost, _)) => format!("ASSEMBLED-NON-FINITE cost={cost}"),
Err(SaeCriterionError::VanishedAtoms(atoms)) => {
format!("VANISHED-ATOMS {atoms}")
}
Err(SaeCriterionError::IndefiniteObservedInformation { block }) => {
format!("INDEFINITE-OBSERVED-INFORMATION block={block}")
}
Err(SaeCriterionError::Numerical(message)) => {
format!("NUMERICAL(fatal, never mapped to +inf) {message}")
}
};
println!("[2609-channel] {label}: {channel} warm_start={warm:?}");
if matches!(&outcome, Err(SaeCriterionError::Numerical(_))) {
fatal_channels.push((label, outcome.err()));
}
}
assert!(
fatal_channels.is_empty(),
"seed criteria returned fatal Numerical refusals, which the +inf infeasible \
convention does not cover: {fatal_channels:?}"
);
}
#[test]
fn seed_verdict_depends_on_lane_call_order_2609() {
let z = planted_circle_embedded(48, 6, 0.03);
let mode = AssignmentMode::ordered_beta_bernoulli(1.0, 1.0, false);
let (mut cold, seed_a) = objective_and_seed(z.view(), 4, Topo::Circle, mode);
let a_efs = cold.eval_efs(&seed_a).map(|evaluation| evaluation.cost);
eprintln!("[2609-order] A cold eval_efs FIRST = {a_efs:?}");
let (mut warm, seed_b) = objective_and_seed(z.view(), 4, Topo::Circle, mode);
let b_value = warm.eval(&seed_b).map(|evaluation| evaluation.cost);
let b_efs = warm.eval_efs(&seed_b).map(|evaluation| evaluation.cost);
eprintln!("[2609-order] B eval THEN eval_efs = {b_value:?} then {b_efs:?}");
let a_cost = a_efs.expect("the cold EFS lane must evaluate the seed");
let b_value_cost = b_value.expect("the value lane must evaluate the seed");
let b_efs_cost = b_efs.expect("the warmed EFS lane must evaluate the seed");
eprintln!(
"[2609-order] cold_efs_finite={} value_finite={} warmed_efs_finite={}",
a_cost.is_finite(),
b_value_cost.is_finite(),
b_efs_cost.is_finite()
);
assert!(
b_value_cost.is_finite(),
"the authoritative value lane must establish that this seed is feasible, got {b_value_cost}"
);
assert!(
a_cost.is_finite(),
"cold EFS rejected a seed whose authoritative envelope is finite ({b_value_cost}); \
startup validation must select the basin before committing it"
);
assert!(
b_efs_cost.is_finite(),
"EFS rejected the same seed after a finite value evaluation: {b_efs_cost}"
);
}