fn filter_challenges(
    challenges: Vec<Challenge>,
    filter: &[Constraint]
) -> Result<Vec<Challenge>, Rejection>