Saving the changes immediately would reduce the window for race conditions.  The problem with making the users save the changes is obviously that if they write incorrect code that saves on every run even if it does not mutate, then they'll recreate the problem we're trying to solve.  I definitely think we need to do the save for the users if the data updates, which lets them be lazy and get the right result.  I'm actually not wild about doing the save immediately because it is more round trips and just feels a bit more brittle to code.