The quest to make the configuration UX smooth has led me into first defining a finite state machine for a flow of prompts and then realizing that this is actually something I could turn into an interactive constraint solver with backtracking to checkpoints.
All so that when you hit "Run" and it doesn't run, instead of telling you "you are missing this thing. go find it yourself pal", it just brings up exactly the set of forms or prompts you need to fill in or fix.