#![allow(unreachable_pub, dead_code)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ChecklistStatus {
CoveredAprender,
CoveredEntrenar,
Partial,
NotApplicable,
Future,
}
#[derive(Debug)]
pub struct ChecklistItem {
pub id: usize,
pub description: &'static str,
pub status: ChecklistStatus,
pub test_reference: &'static str,
}
pub fn get_checklist() -> Vec<ChecklistItem> {
vec![
ChecklistItem {
id: 1,
description: "Magnitude pruning on all-zero weights",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_magnitude_all_zeros_no_nan",
},
ChecklistItem {
id: 2,
description: "Wanda with zero activations",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_wanda_zero_activations_handled",
},
ChecklistItem {
id: 9,
description: "Wanda with zero activation norms",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_wanda_zero_activations_handled",
},
ChecklistItem {
id: 12,
description: "Pruning with target sparsity 0.0",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "schedule::tests::test_oneshot_before_step_returns_zero",
},
ChecklistItem {
id: 13,
description: "Pruning with target sparsity 1.0",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "schedule::tests::test_oneshot_at_step_returns_one",
},
ChecklistItem {
id: 16,
description: "2:4 mask on non-divisible size",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_nm_pattern_validates",
},
ChecklistItem {
id: 19,
description: "Mask with wrong shape",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_mask_apply_wrong_shape",
},
ChecklistItem {
id: 31,
description: "Magnitude L1 equals |w|",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_magnitude_l1_equals_abs_weight",
},
ChecklistItem {
id: 32,
description: "Magnitude L2 equals w^2",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_magnitude_l2_equals_weight_squared",
},
ChecklistItem {
id: 33,
description: "Wanda importance formula",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_wanda_formula_correct",
},
ChecklistItem {
id: 34,
description: "2:4 mask structure verification",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_nm_mask_validates_structure",
},
ChecklistItem {
id: 40,
description: "Welford online algorithm correctness",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "calibrate::tests::test_welford_*",
},
ChecklistItem {
id: 45,
description: "Cubic schedule formula",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "schedule::tests::test_cubic_formula_*",
},
ChecklistItem {
id: 46,
description: "Gradual schedule monotonicity",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "schedule::tests::test_sparsity_monotonic_gradual",
},
ChecklistItem {
id: 47,
description: "Non-negative importance scores",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_importance_non_negative",
},
ChecklistItem {
id: 48,
description: "Mask application idempotent",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_mask_apply_idempotent",
},
ChecklistItem {
id: 50,
description: "N:M constraint after mask",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_nm_mask_validates_structure",
},
ChecklistItem {
id: 51,
description: "Prune at step boundary",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "schedule::tests::test_gradual_*",
},
ChecklistItem {
id: 52,
description: "Wanda without calibration errors",
status: ChecklistStatus::CoveredAprender,
test_reference: "aprender::pruning::tests::test_wanda_errors_without_calibration",
},
ChecklistItem {
id: 89,
description: "Pruning callback with entrenar callbacks",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "callback::tests::*",
},
ChecklistItem {
id: 90,
description: "Generate config from YAML",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "config::tests::test_config_deserialize_from_yaml",
},
ChecklistItem {
id: 91,
description: "Public functions have doc comments",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "cargo doc verification",
},
ChecklistItem {
id: 93,
description: "Doc examples compile",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "cargo test --doc",
},
ChecklistItem {
id: 97,
description: "Config options documented",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "config.rs doc comments",
},
ChecklistItem {
id: 99,
description: "Citations included",
status: ChecklistStatus::CoveredEntrenar,
test_reference: "mod.rs and schedule.rs references",
},
]
}
pub fn checklist_summary() -> (usize, usize, usize) {
let checklist = get_checklist();
let covered = checklist
.iter()
.filter(|i| {
matches!(i.status, ChecklistStatus::CoveredAprender | ChecklistStatus::CoveredEntrenar)
})
.count();
let partial = checklist.iter().filter(|i| i.status == ChecklistStatus::Partial).count();
let total = checklist.len();
(covered, partial, total)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_checklist_items_defined() {
let checklist = get_checklist();
assert!(
checklist.len() >= 20,
"FALS-001 FALSIFIED: Should have at least 20 documented items"
);
}
#[test]
fn test_checklist_items_have_references() {
let checklist = get_checklist();
for item in &checklist {
assert!(
!item.test_reference.is_empty(),
"FALS-002 FALSIFIED: Item {} should have test reference",
item.id
);
}
}
#[test]
fn test_checklist_coverage_summary() {
let (covered, _partial, total) = checklist_summary();
let coverage = covered as f32 / total as f32;
assert!(
coverage >= 0.5,
"FALS-003 FALSIFIED: Checklist coverage should be >= 50%, got {:.0}%",
coverage * 100.0
);
}
#[test]
fn test_numerical_stability_items_covered() {
let checklist = get_checklist();
let numerical_items: Vec<_> = checklist.iter().filter(|i| i.id <= 15).collect();
assert!(
!numerical_items.is_empty(),
"FALS-010 FALSIFIED: Should have numerical stability items (1-15)"
);
}
#[test]
fn test_algorithm_correctness_items_covered() {
let checklist = get_checklist();
let algo_items: Vec<_> = checklist.iter().filter(|i| i.id >= 31 && i.id <= 50).collect();
assert!(
algo_items.len() >= 5,
"FALS-011 FALSIFIED: Should have at least 5 algorithm correctness items (31-50)"
);
}
#[test]
fn test_documentation_items_covered() {
let checklist = get_checklist();
let doc_items: Vec<_> = checklist.iter().filter(|i| i.id >= 91).collect();
assert!(
doc_items.len() >= 3,
"FALS-012 FALSIFIED: Should have at least 3 documentation items (91-100)"
);
}
}