pub type GateFn<Row> = for<'a> fn(&StudyView<'a, Row>) -> (bool, String);
A gate check: reads a study view of any lifetime, returns (passed, detail).
(passed, detail)