The current problem most people run into with the last-write-wins system is having the node overwriting their run_list changes because it happened to be in the middle of a chef-client run when they are making a change. 

I think this is confusing because the user never took action to make the node save the run_list, it just does so because of an implementation detail.

If the persistent node data were a completely separate API, I think think it would be less confusing than the example above because at some point in the past the user wrote a recipe that explicitly used that API.  Few people who make programmatic data bag changes get confused if their manual edits are overwritten.

However, I do think it is important that the API allows me to update item A in the persistent data and not be affected by someone updating item B.  Is this what you mean by conflict resolution?