The null solution -- that is, the one that reverts all the user's changes -- should be handled more gracefully. Right now it's silently thrown away whenever it appears, which is confusing if it turns out to actually be what you want. I think that at least one of the following approaches should be taken instead:
- Clearly label the null solution ("cancel all pending changes") so users can quickly decide whether to use it or not (especially important when there are a lot of pending changes).
- Apply a heavy penalty to the null solution (probably less than the penalty for, e.g., removing an essential package, though).
Also, I need a better name than
null solution, since that makes
me think of the empty solution. Maybe call it the