pub fn validate_name(name: &str) -> Result<(), NewError>
Validates an application name against both language rules.
Returns the specific rule (or both) the name violates, with the exact grammar that would pass.