pub fn validate(sds: &SdsRoot) -> Vec<String>
Performs post-deserialization structural checks on all 16 SDS sections. Does not hard-fail so partial results are still usable.