I didn't really mean to suggest that one should wait until all these goals are met perfectly before releasing anything.
I don't think you did. All I'm saying is that you didn't point out "make it run". I'm not attacking your position, just adding to it.
But, what you release should work, at least reliably enough for your target users.
(Emphasis added.) Here's my point: don't get so hung up on technical correctness that you forget about why you're writing the program in the first place. If your target users can get more work done with incomplete, beta software than they can without any software at all, give them the beta while you work on the next release.