Not sure if you’ve figured out a solution to your problem, but I stumbled on your question while trying to solve the same problem in my app.
I noticed that the signature for the DS.Store push function takes an optional “_partial” parameter.
push: function(type, data, _partial) {
// _partial is an internal param used by `update`.
// If passed, it means that the data should be
// merged into the existing data, not replace it.
I was able to update portions of my data set by sending true as the third parameter.
I’m unfamiliar (only been using ember for a couple weeks) with the approach you’re using, but perhaps my scenario will help.