#[test]
fn falsify_orc_003_qwen2_contract_matches_yaml() {
let registry = build_default_registry();
let qwen2 = registry
.detect_from_model_type("qwen2")
.expect("qwen2 detected");
let config = qwen2.config();
assert_eq!(config.family, "qwen2");
assert_eq!(config.display_name, "Qwen2 / Qwen2.5-Coder");
assert_eq!(config.vendor, "Alibaba");
let size = qwen2
.size_config("0.5b")
.expect("FALSIFY-ORC-003: 0.5b size variant must exist");
assert_eq!(
size.hidden_dim, 896,
"FALSIFY-ORC-003: 0.5b hidden_dim should be 896"
);
assert_eq!(
size.num_layers, 24,
"FALSIFY-ORC-003: 0.5b num_layers should be 24"
);
assert_eq!(
size.num_heads, 14,
"FALSIFY-ORC-003: 0.5b num_heads should be 14"
);
assert_eq!(
size.num_kv_heads, 2,
"FALSIFY-ORC-003: 0.5b num_kv_heads should be 2"
);
assert_eq!(
size.intermediate_dim, 4864,
"FALSIFY-ORC-003: 0.5b intermediate_dim should be 4864"
);
assert_eq!(
size.vocab_size, 151_936,
"FALSIFY-ORC-003: 0.5b vocab_size should be 151936"
);
assert_eq!(
size.max_position_embeddings, 32_768,
"FALSIFY-ORC-003: 0.5b max_position_embeddings should be 32768"
);
assert_eq!(
size.head_dim, 64,
"FALSIFY-ORC-003: 0.5b head_dim should be 64"
);
}
#[test]
fn falsify_orc_003_all_qwen2_sizes_present() {
let registry = build_default_registry();
let qwen2 = registry
.detect_from_model_type("qwen2")
.expect("qwen2 detected");
let expected_sizes = ["0.5b", "1.5b", "3b", "7b", "14b", "32b"];
for size_name in &expected_sizes {
assert!(
qwen2.size_config(size_name).is_some(),
"FALSIFY-ORC-003: Qwen2 should have size variant '{size_name}'"
);
}
}
#[test]
fn falsify_orc_003_constraints_match_yaml() {
use aprender::format::model_family::{
Activation, AttentionType, MlpType, NormType, PositionalEncoding,
};
let registry = build_default_registry();
let qwen2 = registry
.detect_from_model_type("qwen2")
.expect("qwen2 detected");
let constraints = qwen2.constraints();
assert_eq!(
constraints.attention_type,
AttentionType::Gqa,
"FALSIFY-ORC-003: Qwen2 attention should be GQA"
);
assert_eq!(
constraints.activation,
Activation::Silu,
"FALSIFY-ORC-003: Qwen2 activation should be SiLU"
);
assert_eq!(
constraints.norm_type,
NormType::RmsNorm,
"FALSIFY-ORC-003: Qwen2 norm should be RMSNorm"
);
assert!(
constraints.has_bias,
"FALSIFY-ORC-003: Qwen2 should have bias"
);
assert!(
!constraints.tied_embeddings,
"FALSIFY-ORC-003: Qwen2 should not have tied embeddings"
);
assert_eq!(
constraints.positional_encoding,
PositionalEncoding::Rope,
"FALSIFY-ORC-003: Qwen2 should use RoPE"
);
assert_eq!(
constraints.mlp_type,
MlpType::SwiGlu,
"FALSIFY-ORC-003: Qwen2 MLP should be SwiGLU"
);
}
#[test]
fn falsify_orc_004_missing_lm_head_detected() {
let registry = build_default_registry();
let qwen2 = registry
.detect_from_model_type("qwen2")
.expect("qwen2 detected");
let config = qwen2.config();
let mut names: Vec<String> = Vec::new();
names.push(config.tensor_template.embedding.clone());
if let Some(ref final_norm) = config.tensor_template.final_norm {
names.push(final_norm.clone());
}
for layer_idx in 0..24 {
for pat in config.tensor_template.per_layer.values().flatten() {
names.push(pat.replace("{n}", &layer_idx.to_string()));
}
}
let name_refs: Vec<&str> = names.iter().map(String::as_str).collect();
let result = qwen2.validate_tensor_names(&name_refs, "0.5b");
assert!(
result.is_err(),
"FALSIFY-ORC-004: Missing lm_head.weight should fail compliance"
);
let err = result.unwrap_err();
assert!(
err.message.contains("lm_head.weight"),
"FALSIFY-ORC-004: Error should mention missing lm_head.weight, got: {}",
err.message
);
}
#[test]
fn falsify_orc_004_extra_unexpected_tensor_detected() {
let registry = build_default_registry();
let qwen2 = registry
.detect_from_model_type("qwen2")
.expect("qwen2 detected");
let config = qwen2.config();
let mut names: Vec<String> = Vec::new();
names.push(config.tensor_template.embedding.clone());
if let Some(ref lm_head) = config.tensor_template.lm_head {
names.push(lm_head.clone());
}
if let Some(ref final_norm) = config.tensor_template.final_norm {
names.push(final_norm.clone());
}
for layer_idx in 0..24 {
for pat in config.tensor_template.per_layer.values().flatten() {
names.push(pat.replace("{n}", &layer_idx.to_string()));
}
}
names.push("totally.unexpected.tensor.weight".to_string());
let name_refs: Vec<&str> = names.iter().map(String::as_str).collect();
let result = qwen2.validate_tensor_names(&name_refs, "0.5b");
assert!(
result.is_err(),
"FALSIFY-ORC-004: Unexpected tensor should fail compliance"
);
let err = result.unwrap_err();
assert!(
err.message.contains("Unexpected"),
"FALSIFY-ORC-004: Error should mention unexpected tensors, got: {}",
err.message
);
}
#[test]
fn falsify_orc_004_missing_layer_tensors_detected() {
let registry = build_default_registry();
let qwen2 = registry
.detect_from_model_type("qwen2")
.expect("qwen2 detected");
let config = qwen2.config();
let mut names: Vec<String> = Vec::new();
names.push(config.tensor_template.embedding.clone());
if let Some(ref lm_head) = config.tensor_template.lm_head {
names.push(lm_head.clone());
}
if let Some(ref final_norm) = config.tensor_template.final_norm {
names.push(final_norm.clone());
}
for layer_idx in 0..23 {
for pat in config.tensor_template.per_layer.values().flatten() {
names.push(pat.replace("{n}", &layer_idx.to_string()));
}
}
let name_refs: Vec<&str> = names.iter().map(String::as_str).collect();
let result = qwen2.validate_tensor_names(&name_refs, "0.5b");
assert!(
result.is_err(),
"FALSIFY-ORC-004: Missing layer 23 tensors should fail compliance"
);
}
#[test]
fn falsify_cmp_001_row_major_is_only_layout() {
assert_eq!(
std::mem::size_of::<RowMajor>(),
0,
"FALSIFY-CMP-001: RowMajor must be zero-sized"
);
assert_eq!(
std::mem::size_of::<std::marker::PhantomData<RowMajor>>(),
0,
"FALSIFY-CMP-001: PhantomData<RowMajor> must be zero-sized"
);
}
#[test]
fn falsify_cmp_001_validated_weight_default_is_row_major() {
let data: Vec<f32> = (0..100).map(|i| i as f32 * 0.01).collect();
let weight: ValidatedWeight = ValidatedWeight::new(data, 10, 10, "test").unwrap();
let _explicit: ValidatedWeight<RowMajor> = weight;
}
#[test]
fn falsify_cmp_001_no_column_major_type_exists() {
let _ = RowMajor; }
#[test]
fn falsify_cmp_002_validated_types_reject_raw_data() {
let nan_data = vec![f32::NAN; 100];
let result = ValidatedWeight::new(nan_data, 10, 10, "test");
assert!(
result.is_err(),
"FALSIFY-CMP-002: Raw NaN data must be rejected by ValidatedWeight::new()"
);
let zero_data = vec![0.0f32; 100];
let result = ValidatedWeight::new(zero_data, 10, 10, "test");
assert!(
result.is_err(),
"FALSIFY-CMP-002: All-zero data must be rejected by ValidatedWeight::new()"
);
}
#[test]
fn falsify_cmp_003_clippy_toml_bans_column_major() {
let clippy_toml =
std::fs::read_to_string(find_project_root().join(".clippy.toml")).unwrap_or_default();
let expected_bans = [
"matmul_q4k_f32_colmajor",
"matmul_q6k_f32_colmajor",
"matmul_q4k_f32_colmajor_dispatch",
"matmul_q6k_f32_colmajor_dispatch",
];
for ban in &expected_bans {
assert!(
clippy_toml.contains(ban),
"FALSIFY-CMP-003: .clippy.toml must ban '{ban}'. Column-major imports must be disallowed."
);
}
}