improve recipe validation and error reporting