use super::*;
use super::tests::periodic_basis;
use ndarray::{Array2, Array3, array};
#[test]
pub(crate) fn collapse_bar_uses_reachable_dictionary_rank_not_nominal_count_1610() {
use crate::manifold::outer_objective::{collapse_ev_bar, reachable_dictionary_rank};
let (n, p) = (8usize, 8usize);
let mut target = Array2::<f64>::zeros((n, p));
let sigma = [8.0_f64, 4.0, 2.0, 1.0, 0.5, 0.25, 0.125, 0.0625];
for a in 0..p {
target[[a, a]] = sigma[a];
}
let coords_a = array![[0.0_f64], [0.25], [0.5], [0.75]];
let (phi_a, jet_a) = periodic_basis(&coords_a);
let coords_b = array![[0.3_f64], [0.3], [0.3], [0.3]];
let (phi_b, jet_b) = periodic_basis(&coords_b);
let make = |name: &str, phi: Array2<f64>, jet: Array3<f64>, decoder: Array2<f64>| {
SaeManifoldAtom::new(
name,
SaeAtomBasisKind::Periodic,
1,
phi,
jet,
decoder,
Array2::<f64>::eye(3),
)
.unwrap()
};
let atom_a = make("full", phi_a.clone(), jet_a.clone(), Array2::<f64>::ones((3, p)));
let atom_b = make("degenerate", phi_b.clone(), jet_b.clone(), Array2::<f64>::ones((3, p)));
assert_eq!(
atom_a.realized_chart_image_rank().unwrap(),
3,
"full periodic chart on 4 distinct angles spans rank 3 in [1,sin,cos]"
);
assert_eq!(
atom_b.realized_chart_image_rank().unwrap(),
1,
"a chart evaluated at ONE repeated coordinate has identical rows → rank 1, \
far below its basis_size 3"
);
let atoms = vec![atom_a, atom_b];
let nominal: usize = atoms
.iter()
.map(|a| a.basis_size())
.sum::<usize>()
.min(n)
.min(p);
let reachable = reachable_dictionary_rank(&atoms, n, p);
assert_eq!(reachable, 4, "reachable rank must be rank(Φ_A) + rank(Φ_B) = 3 + 1");
assert_eq!(nominal, 6, "nominal Σ basis_size (capped) must be 6 on this fixture");
assert!(
reachable < nominal,
"reachable rank {reachable} must be strictly below the nominal count \
{nominal} (this fails if someone reverts to Σ basis_size)"
);
let collapsed: Vec<SaeManifoldAtom> = vec![
make("full0", phi_a, jet_a, Array2::<f64>::zeros((3, p))),
make("degenerate0", phi_b, jet_b, Array2::<f64>::zeros((3, p))),
];
assert_eq!(
reachable_dictionary_rank(&collapsed, n, p),
reachable,
"reachable rank must read the chart design alone and be invariant to the \
decoder magnitude (a co-collapsed decoder still reports full geometric reach)"
);
let bar_reachable = collapse_ev_bar(target.view(), reachable);
let bar_nominal = collapse_ev_bar(target.view(), nominal);
assert!(
bar_reachable < bar_nominal,
"collapse bar at reachable rank ({bar_reachable}) must be strictly below the \
bar at the nominal count ({bar_nominal}) on a spectrally-spread target"
);
assert!(
bar_reachable.is_finite() && (0.0..=1.0).contains(&bar_reachable),
"reachable-rank collapse bar must be a finite EV fraction, got {bar_reachable}"
);
}