use ferrox_models::capability::{default_swa_layout, resolve_profile, SwaPattern};
use ferrox_models::config::test_dense_fixture;
const LLAMA_SWA_DEFAULTS: &[(&str, usize, bool, &str)] = &[
("gpt-oss", 2, false, "src/models/openai-moe.cpp:9"),
("gemma2", 2, false, "src/models/gemma2.cpp:6"),
("gemma3", 6, false, "src/models/gemma3.cpp:7"),
("gemma3n", 5, false, "src/models/gemma3n.cpp:4"),
(
"gemma-embedding",
6,
false,
"src/models/gemma-embedding.cpp:5",
),
("cohere2", 4, false, "src/models/cohere2.cpp:5"),
("exaone4", 4, false, "src/models/exaone4.cpp:7"),
("olmo2", 4, false, "src/models/olmo2.cpp:9"),
("mellum", 4, false, "src/models/mellum.cpp:11"),
("exaone-moe", 4, false, "src/models/exaone-moe.cpp:6"),
("afmoe", 4, false, "src/models/afmoe.cpp:17"),
("plamo3", 8, false, "src/models/plamo3.cpp:9"),
("llama4", 4, false, "src/models/llama4.cpp:19"),
("smallthinker", 4, true, "src/models/smallthinker.cpp:9-11"),
("laguna", 4, true, "src/models/laguna.cpp:39-41"),
("cohere2moe", 4, true, "src/models/cohere2moe.cpp:31-33"),
("modern-bert", 3, true, "src/models/modern-bert.cpp:8-10"),
];
fn llama_layer_is_swa(il: usize, period: usize, dense_first: bool) -> bool {
if period == 0 {
true
} else if dense_first {
!il.is_multiple_of(period)
} else {
il % period < period - 1
}
}
#[test]
fn swa_defaults_match_llama_cpp() {
let mut wrong = Vec::new();
for &(arch, period, dense_first, cite) in LLAMA_SWA_DEFAULTS {
let want = SwaPattern {
period,
dense_first,
};
match default_swa_layout(arch) {
Some(got) if got == want => {}
other => wrong.push(format!(
"{arch} ({cite}): ferrox {other:?}, llama.cpp {want:?}"
)),
}
}
assert!(
wrong.is_empty(),
"default SWA layout disagrees with llama.cpp:\n {}",
wrong.join("\n ")
);
}
#[test]
fn ferrox_invents_no_swa_period_llama_cpp_does_not_have() {
let pinned: std::collections::HashSet<&str> =
LLAMA_SWA_DEFAULTS.iter().map(|&(a, ..)| a).collect();
let mut extra = Vec::new();
for p in ferrox_models::capability::architecture_catalog() {
if default_swa_layout(p.gguf_name).is_some() && !pinned.contains(p.gguf_name) {
extra.push(p.gguf_name);
}
}
assert!(
extra.is_empty(),
"ferrox seeds a SWA period llama.cpp does not: {extra:?}"
);
}
#[test]
fn the_swa_transcription_is_complete_enough_to_be_worth_pinning() {
assert!(
LLAMA_SWA_DEFAULTS.len() >= 17,
"transcribed {} architectures that seed a swa_period; llama.cpp has 17",
LLAMA_SWA_DEFAULTS.len()
);
let mut unknown = Vec::new();
for &(arch, ..) in LLAMA_SWA_DEFAULTS {
if resolve_profile(arch).is_none() {
unknown.push(arch);
}
}
assert!(
unknown.is_empty(),
"in llama.cpp's inventory but not in ferrox's capability registry, so a \
checkpoint tagged with it is refused for the wrong reason: {unknown:?}"
);
}
#[test]
fn the_period_lands_on_the_layers_llama_cpp_windows() {
const WINDOW: usize = 128;
let mut wrong = Vec::new();
for &(arch, period, dense_first, cite) in LLAMA_SWA_DEFAULTS {
let mut cfg = test_dense_fixture();
cfg.n_layers = 64;
cfg.sliding_window = Some(WINDOW);
cfg.swa_pattern = default_swa_layout(arch).map(|p| p.period);
cfg.swa_dense_first = default_swa_layout(arch).is_some_and(|p| p.dense_first);
for il in 0..cfg.n_layers {
let want = llama_layer_is_swa(il, period, dense_first);
let got = cfg.layer_sliding_window(il).is_some();
if want != got {
wrong.push(format!(
"{arch} ({cite}) layer {il}: ferrox windowed={got}, llama.cpp windowed={want}"
));
break;
}
}
}
assert!(
wrong.is_empty(),
"sliding window lands on the wrong layers:\n {}",
wrong.join("\n ")
);
}
#[test]
fn the_two_phases_are_not_the_same_answer() {
const WINDOW: usize = 128;
let mut dense_first_seen = 0usize;
for &(arch, period, dense_first, cite) in LLAMA_SWA_DEFAULTS {
assert_eq!(
default_swa_layout(arch).map(|p| (p.period, p.dense_first)),
Some((period, dense_first)),
"{arch} ({cite}) lost its transcribed layout"
);
if !dense_first {
continue;
}
dense_first_seen += 1;
let mut cfg = test_dense_fixture();
cfg.n_layers = 32;
cfg.sliding_window = Some(WINDOW);
cfg.swa_pattern = Some(period);
cfg.swa_dense_first = true;
let differs = (0..cfg.n_layers)
.filter(|&il| {
cfg.layer_sliding_window(il).is_some() != llama_layer_is_swa(il, period, false)
})
.count();
assert!(
differs > 0,
"{arch} ({cite}): if the two phases agreed there would be nothing to carry \
-- re-derive this test"
);
}
assert!(
dense_first_seen >= 4,
"only {dense_first_seen} dense_first architectures checked; llama.cpp passes \
dense_first=true for smallthinker, laguna, cohere2moe and modern-bert"
);
}
#[test]
fn period_one_windows_nothing_and_period_zero_windows_everything() {
const WINDOW: usize = 128;
for dense_first in [false, true] {
let mut cfg = test_dense_fixture();
cfg.n_layers = 8;
cfg.sliding_window = Some(WINDOW);
cfg.swa_dense_first = dense_first;
cfg.swa_pattern = Some(1);
for il in 0..cfg.n_layers {
assert_eq!(
cfg.layer_sliding_window(il),
None,
"period 1 (dense_first={dense_first}) must window no layer, llama-hparams.cpp:8-22"
);
}
cfg.swa_pattern = Some(0);
for il in 0..cfg.n_layers {
assert_eq!(
cfg.layer_sliding_window(il),
Some(WINDOW),
"period 0 (dense_first={dense_first}) must window every layer"
);
}
}
}
#[test]
fn phi3_ignores_the_sliding_window_its_own_checkpoints_declare() {
use ferrox_models::capability::{default_swa_layout, swa_disabled_by_arch};
assert!(swa_disabled_by_arch("phi3"));
for other in ["gemma2", "gemma3", "gpt-oss", "cohere2", "phimoe"] {
assert!(
!swa_disabled_by_arch(other),
"{other} honours its declared window"
);
}
assert!(
default_swa_layout("phi3").is_none(),
"phi3 must not also carry a transcribed period"
);
}
#[test]
#[ignore = "needs models/Phi-4-mini-instruct-Q4_K_M.gguf"]
fn a_real_phi3_checkpoint_loads_with_no_layer_windowed() {
let path = concat!(
env!("CARGO_MANIFEST_DIR"),
"/../../models/Phi-4-mini-instruct-Q4_K_M.gguf"
);
let file = ferrox_gguf::GgufFile::open(path).expect("fixture opens");
assert_eq!(file.metadata_str("general.architecture"), Some("phi3"));
assert_eq!(
file.metadata_u64("phi3.attention.sliding_window"),
Some(262_144),
"this checkpoint really does declare a window -- if it stopped, \
pick one that still does rather than deleting this test"
);
let cfg = ferrox_models::ModelConfig::from_gguf(&file).expect("phi3 loads");
assert_eq!(cfg.sliding_window, None, "llama.cpp sets n_swa = 0");
assert_eq!(cfg.kv_block_window(), None);
for il in 0..cfg.n_layers {
assert_eq!(
cfg.layer_sliding_window(il),
None,
"layer {il} must attend over the whole context"
);
}
}