Automated Checks and User Feedback
First, we need to find the region that is interesting and not buggy. I did this with a combination of automated checks and user feedback. The tool begins by generating random examples. Getting user feedback on every example would be time-consuming.
One insight was to program checks that are easy to check, but have a complex non-linear relationship with parameters. One example of this type of check was "is the hip within the body area?" It would be a pain to constrain the parameters directly! But it is trivial to verify after we start computing the bird shape, and can even be estimated before the bird is drawn.
Next are the slightly slower, but very interesting post-render checks. For example, I added one that made sure "at least 5% of pixels are beak-colored." This helped catch some issues that were difficult to detect before the pixels are drawn. Pixel-based tests could be really interesting for making art too! ("only show me when 20% of the image is red").
At this point, I also tested automated tests like YOLO. Out of the box, it wasn't particularly good at distinguishing invalid birds from valid birds, and also had a tendency to mark my graphical birds as umbrellas. Perhaps it would be useful if it were to be refined!
The most expensive and valuable test is user feedback. I would score birds that passed the rest of the tests. This way I could promote interesting birds. I could use this to down-rank rare edge cases where it wasn't worth it to add an automatic test.