use super::tests_startup_validation_1782::{Topo, objective_and_seed};
use ndarray::Array2;
use std::time::Instant;
fn zoo_fixture(name: &str, n: usize, p: usize) -> Array2<f64> {
let path = format!("{}/tests/data/zoo_micro/{name}", env!("CARGO_MANIFEST_DIR"));
let bytes =
std::fs::read(&path).unwrap_or_else(|e| panic!("zoo_micro fixture {path} unreadable: {e}"));
assert_eq!(bytes.len(), n * p * 8, "fixture {name} size mismatch");
let vals: Vec<f64> = bytes
.chunks_exact(8)
.map(|c| f64::from_le_bytes(c.try_into().unwrap()))
.collect();
Array2::from_shape_vec((n, p), vals).unwrap()
}
fn global_ev(target: &Array2<f64>, fitted: &Array2<f64>) -> f64 {
let (n, p) = target.dim();
let mut means = vec![0.0_f64; p];
for col in 0..p {
let mut acc = 0.0;
for row in 0..n {
acc += target[[row, col]];
}
means[col] = acc / n as f64;
}
let (mut ss_res, mut ss_tot) = (0.0_f64, 0.0_f64);
for row in 0..n {
for col in 0..p {
let r = target[[row, col]] - fitted[[row, col]];
ss_res += r * r;
let c = target[[row, col]] - means[col];
ss_tot += c * c;
}
}
1.0 - ss_res / ss_tot.max(1e-12)
}
fn cold_oos_ev(
fitted_term: &super::SaeManifoldTerm,
rho: &super::SaeManifoldRho,
x: &Array2<f64>,
label: &str,
) -> f64 {
let t0 = Instant::now();
let ev = super::tests_collapse_2132::oos_heldout_ev(fitted_term, rho, x.view());
let secs = t0.elapsed().as_secs_f64();
eprintln!(
"[zoo-micro-local] cold OOS {label}: ev={ev:.4} solve={secs:.2}s n={}",
x.nrows()
);
ev
}
#[test]
fn zz_zoo_micro_local_full_fit_and_oos_discriminator() {
let train = zoo_fixture("train_3000x48_f64le.bin", 3000, 48);
let test = zoo_fixture("test_1500x48_f64le.bin", 1500, 48);
let (mut objective, seed) = objective_and_seed(
train.view(),
12,
Topo::Circle,
crate::assignment::AssignmentMode::softmax(1.0),
);
let n_params = seed.len();
let t0 = Instant::now();
let result = gam_solve::rho_optimizer::OuterProblem::new(n_params)
.with_initial_rho(seed)
.with_seed_config(gam_problem::SeedConfig {
max_seeds: 1,
seed_budget: 1,
..Default::default()
})
.run(&mut objective, "SAE manifold")
.expect("zoo-micro full fit must not abort");
assert!(result.converged, "zoo fit must be analytically certified");
let certificate = result
.criterion_certificate
.as_ref()
.expect("converged zoo fit carries an analytic certificate");
assert!(certificate.stationarity.projected_norm() <= certificate.stationarity.bound());
let fit_secs = t0.elapsed().as_secs_f64();
objective
.certify_outer_result(&result)
.expect("zoo outer result certifies the exact installed state");
let fitted = objective.into_fitted().expect("outer fit was evaluated");
let native_fitted = fitted.term.fitted();
let native_ev = global_ev(&train, &native_fitted.to_owned());
eprintln!(
"[zoo-micro-local] FIT: {fit_secs:.1}s native_train_ev={native_ev:.4} (K=12, N=3000, p=48)"
);
let cold_train_ev = cold_oos_ev(&fitted.term, &fitted.rho, &train, "re-encode(train)");
let cold_test_ev = cold_oos_ev(&fitted.term, &fitted.rho, &test, "encode(test)");
eprintln!(
"[zoo-micro-local] DISCRIMINATOR: native={native_ev:.4} cold(train)={cold_train_ev:.4} \
cold(test)={cold_test_ev:.4} | encode-gap={:.4} generalization-gap={:.4}",
native_ev - cold_train_ev,
cold_train_ev - cold_test_ev
);
assert!(native_ev.is_finite() && cold_train_ev.is_finite() && cold_test_ev.is_finite());
assert!(
native_ev > 0.3,
"zoo-micro native train EV {native_ev:.4} is below the signal floor — \
the fit did not engage the planted mixture"
);
}
#[derive(Debug)]
struct RankChargeArm {
fit_secs: f64,
final_value: f64,
converged: bool,
iterations: usize,
grad_norm: Option<f64>,
native_ev: f64,
cold_train_ev: f64,
cold_test_ev: f64,
k_atoms: usize,
collapse_events: usize,
dict_cocollapse_reseeds: usize,
struct_cocollapse_reseeds: usize,
evidence_reanchors: usize,
}
fn rank_charge_zoo_arm(train: &Array2<f64>, test: &Array2<f64>) -> RankChargeArm {
let (mut objective, seed) = objective_and_seed(
train.view(),
12,
Topo::Circle,
crate::assignment::AssignmentMode::softmax(1.0),
);
let n_params = seed.len();
let t0 = Instant::now();
let result = gam_solve::rho_optimizer::OuterProblem::new(n_params)
.with_initial_rho(seed)
.with_seed_config(gam_problem::SeedConfig {
max_seeds: 1,
seed_budget: 1,
..Default::default()
})
.run(&mut objective, "SAE manifold")
.expect("zoo-micro rank-charge fit must not abort");
let fit_secs = t0.elapsed().as_secs_f64();
objective
.certify_outer_result(&result)
.expect("zoo rank-charge outer result certifies the installed state");
let grad_norm = result
.criterion_certificate
.as_ref()
.map(|certificate| certificate.stationarity.projected_norm());
let fitted = objective.into_fitted().expect("outer fit was evaluated");
let native_ev = global_ev(train, &fitted.term.fitted().to_owned());
let cold_train_ev = cold_oos_ev(&fitted.term, &fitted.rho, train, "re-encode(train)");
let cold_test_ev = cold_oos_ev(&fitted.term, &fitted.rho, test, "encode(test)");
RankChargeArm {
fit_secs,
final_value: result.final_value,
converged: result.converged,
iterations: result.iterations,
grad_norm,
native_ev,
cold_train_ev,
cold_test_ev,
k_atoms: fitted.term.k_atoms(),
collapse_events: fitted.term.collapse_events().len(),
dict_cocollapse_reseeds: fitted.term.dictionary_cocollapse_reseeds,
struct_cocollapse_reseeds: fitted.term.structural_cocollapse_reseeds,
evidence_reanchors: fitted.term.criterion_gauge_deflation_reanchors,
}
}
#[test]
fn zz_rank_charge_zoo_micro_2022() {
let train = zoo_fixture("train_3000x48_f64le.bin", 3000, 48);
let test = zoo_fixture("test_1500x48_f64le.bin", 1500, 48);
let arm = rank_charge_zoo_arm(&train, &test);
eprintln!(
"[#2022 rank-charge zoo] fit={:.1}s conv={} iters={} \
grad={:?} | native_ev={:.4} cold_train={:.4} cold_test={:.4} | \
K={} deaths={} dict_reseed={} struct_reseed={} reanchor={} | crit={:.6e}",
arm.fit_secs,
arm.converged,
arm.iterations,
arm.grad_norm,
arm.native_ev,
arm.cold_train_ev,
arm.cold_test_ev,
arm.k_atoms,
arm.collapse_events,
arm.dict_cocollapse_reseeds,
arm.struct_cocollapse_reseeds,
arm.evidence_reanchors,
arm.final_value,
);
assert!(
arm.native_ev.is_finite() && arm.cold_train_ev.is_finite() && arm.cold_test_ev.is_finite(),
"rank-charge fit produced a non-finite EV"
);
assert!(
arm.native_ev > 0.3,
"rank-charge native EV {:.4} below signal floor — fit did not engage",
arm.native_ev
);
}