#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Ti001Verdict { Pass, Fail }
#[must_use]
pub const fn verdict_from_tensor_count(
base: u64,
num_layers: u64,
per_layer: u64,
observed_total: u64,
) -> Ti001Verdict {
if num_layers == 0 || per_layer == 0 { return Ti001Verdict::Fail; }
if base == 0 { return Ti001Verdict::Fail; }
let expected = base + num_layers * per_layer;
if observed_total == expected { Ti001Verdict::Pass } else { Ti001Verdict::Fail }
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Ti002Verdict { Pass, Fail }
#[must_use]
pub const fn verdict_from_architecture_delta(
base_a: u64,
base_b: u64,
num_layers: u64,
per_layer_a: u64,
per_layer_b: u64,
observed_delta: i64,
) -> Ti002Verdict {
if num_layers == 0 { return Ti002Verdict::Fail; }
if base_a != base_b { return Ti002Verdict::Fail; } let expected = (per_layer_b as i64 - per_layer_a as i64) * (num_layers as i64);
if observed_delta == expected { Ti002Verdict::Pass } else { Ti002Verdict::Fail }
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Ti003Verdict { Pass, Fail }
#[must_use]
pub const fn verdict_from_quant_byte_ordering(
q4k: u64,
q6k: u64,
q8: u64,
f16: u64,
f32_: u64,
) -> Ti003Verdict {
if q4k == 0 || q6k == 0 || q8 == 0 || f16 == 0 || f32_ == 0 {
return Ti003Verdict::Fail;
}
if q4k < q6k && q6k < q8 && q8 < f16 && f16 < f32_ {
Ti003Verdict::Pass
} else {
Ti003Verdict::Fail
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Ti004Verdict { Pass, Fail }
#[must_use]
pub fn verdict_from_param_decomposition(
embed_params: u64,
layer_params: &[u64],
head_params: u64,
observed_total: u64,
) -> Ti004Verdict {
if layer_params.is_empty() { return Ti004Verdict::Fail; }
if embed_params == 0 || head_params == 0 { return Ti004Verdict::Fail; }
let mut sum: u64 = embed_params.checked_add(head_params).unwrap_or(0);
if sum == 0 { return Ti004Verdict::Fail; }
for &lp in layer_params {
if lp == 0 { return Ti004Verdict::Fail; }
sum = match sum.checked_add(lp) {
Some(s) => s,
None => return Ti004Verdict::Fail,
};
}
if sum == observed_total { Ti004Verdict::Pass } else { Ti004Verdict::Fail }
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Ti005Verdict { Pass, Fail }
#[must_use]
pub const fn verdict_from_tied_embedding_count(
untied_tensor_count: u64,
tied_tensor_count: u64,
) -> Ti005Verdict {
if untied_tensor_count == 0 || tied_tensor_count == 0 { return Ti005Verdict::Fail; }
if untied_tensor_count <= tied_tensor_count { return Ti005Verdict::Fail; }
if untied_tensor_count - tied_tensor_count == 1 { Ti005Verdict::Pass } else { Ti005Verdict::Fail }
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Ti006Verdict { Pass, Fail }
#[must_use]
pub fn verdict_from_simd_inventory_parity(scalar: &[u64], simd: &[u64]) -> Ti006Verdict {
if scalar.is_empty() || simd.is_empty() { return Ti006Verdict::Fail; }
if scalar.len() != simd.len() { return Ti006Verdict::Fail; }
for (&s, &v) in scalar.iter().zip(simd.iter()) {
if s != v { return Ti006Verdict::Fail; }
}
Ti006Verdict::Pass
}
#[cfg(test)]
mod tests {
use super::*;
#[test] fn ti001_pass_canonical() {
assert_eq!(verdict_from_tensor_count(3, 28, 12, 339), Ti001Verdict::Pass);
}
#[test] fn ti001_fail_omitted_bias() {
assert_eq!(verdict_from_tensor_count(3, 28, 12, 311), Ti001Verdict::Fail);
}
#[test] fn ti001_fail_zero_layers() {
assert_eq!(verdict_from_tensor_count(3, 0, 12, 3), Ti001Verdict::Fail);
}
#[test] fn ti001_fail_zero_per_layer() {
assert_eq!(verdict_from_tensor_count(3, 28, 0, 3), Ti001Verdict::Fail);
}
#[test] fn ti002_pass_zero_delta() {
assert_eq!(
verdict_from_architecture_delta(3, 3, 28, 12, 12, 0),
Ti002Verdict::Pass
);
}
#[test] fn ti002_pass_canonical_delta() {
assert_eq!(
verdict_from_architecture_delta(3, 3, 28, 12, 14, 56),
Ti002Verdict::Pass
);
}
#[test] fn ti002_pass_negative_delta() {
assert_eq!(
verdict_from_architecture_delta(3, 3, 28, 14, 12, -56),
Ti002Verdict::Pass
);
}
#[test] fn ti002_fail_wrong_delta() {
assert_eq!(
verdict_from_architecture_delta(3, 3, 28, 12, 14, 100),
Ti002Verdict::Fail
);
}
#[test] fn ti002_fail_base_mismatch() {
assert_eq!(
verdict_from_architecture_delta(3, 4, 28, 12, 12, 1),
Ti002Verdict::Fail
);
}
#[test] fn ti003_pass_canonical() {
assert_eq!(
verdict_from_quant_byte_ordering(500, 750, 1000, 2000, 4000),
Ti003Verdict::Pass
);
}
#[test] fn ti003_fail_q4k_above_q6k() {
assert_eq!(
verdict_from_quant_byte_ordering(800, 750, 1000, 2000, 4000),
Ti003Verdict::Fail
);
}
#[test] fn ti003_fail_q8_above_f16() {
assert_eq!(
verdict_from_quant_byte_ordering(500, 750, 3000, 2000, 4000),
Ti003Verdict::Fail
);
}
#[test] fn ti003_fail_f16_above_f32() {
assert_eq!(
verdict_from_quant_byte_ordering(500, 750, 1000, 5000, 4000),
Ti003Verdict::Fail
);
}
#[test] fn ti003_fail_zero() {
assert_eq!(
verdict_from_quant_byte_ordering(0, 750, 1000, 2000, 4000),
Ti003Verdict::Fail
);
}
#[test] fn ti004_pass_canonical() {
let layers = vec![300_000_000_u64, 300_000_000];
assert_eq!(
verdict_from_param_decomposition(100_000_000, &layers, 100_000_000, 800_000_000),
Ti004Verdict::Pass
);
}
#[test] fn ti004_pass_uniform_layers() {
let layers = vec![100_000_000_u64; 28];
let total = 100_000_000 + 100_000_000 + 28 * 100_000_000;
assert_eq!(
verdict_from_param_decomposition(100_000_000, &layers, 100_000_000, total),
Ti004Verdict::Pass
);
}
#[test] fn ti004_fail_drift() {
let layers = vec![300_000_000_u64];
assert_eq!(
verdict_from_param_decomposition(100_000_000, &layers, 100_000_000, 999_999_999),
Ti004Verdict::Fail
);
}
#[test] fn ti004_fail_empty_layers() {
assert_eq!(
verdict_from_param_decomposition(100_000_000, &[], 100_000_000, 200_000_000),
Ti004Verdict::Fail
);
}
#[test] fn ti004_fail_zero_embed() {
let layers = vec![100_000_000_u64];
assert_eq!(
verdict_from_param_decomposition(0, &layers, 100_000_000, 200_000_000),
Ti004Verdict::Fail
);
}
#[test] fn ti005_pass_canonical() {
assert_eq!(verdict_from_tied_embedding_count(339, 338), Ti005Verdict::Pass);
}
#[test] fn ti005_fail_no_reduction() {
assert_eq!(verdict_from_tied_embedding_count(339, 339), Ti005Verdict::Fail);
}
#[test] fn ti005_fail_too_much_reduction() {
assert_eq!(verdict_from_tied_embedding_count(339, 337), Ti005Verdict::Fail);
}
#[test] fn ti005_fail_tied_above_untied() {
assert_eq!(verdict_from_tied_embedding_count(338, 339), Ti005Verdict::Fail);
}
#[test] fn ti005_fail_zero() {
assert_eq!(verdict_from_tied_embedding_count(0, 0), Ti005Verdict::Fail);
}
#[test] fn ti006_pass_identical() {
let inv = vec![339_u64, 28, 1, 152064];
assert_eq!(verdict_from_simd_inventory_parity(&inv, &inv), Ti006Verdict::Pass);
}
#[test] fn ti006_fail_drift() {
let scalar = vec![339_u64, 28];
let simd = vec![338_u64, 28];
assert_eq!(verdict_from_simd_inventory_parity(&scalar, &simd), Ti006Verdict::Fail);
}
#[test] fn ti006_fail_length() {
let scalar = vec![339_u64];
let simd = vec![339_u64, 28];
assert_eq!(verdict_from_simd_inventory_parity(&scalar, &simd), Ti006Verdict::Fail);
}
#[test] fn ti006_fail_empty() {
assert_eq!(verdict_from_simd_inventory_parity(&[], &[]), Ti006Verdict::Fail);
}
}