Breaking defaults is part of that last bad commit I hadn't properly tested. Testing this is going to be annoying with the way Chrome sandboxes the data too. I think packaging the last released version with a particular key and then packaging the test with the same key should work.

I should return the Store in the syncCallback() as well, syncCallback(this)
JSON.parse should probably get caught past store.set just incase
store.queueCommit() should be called for good measure. Store() queues up and only actually sets initially and every 5 seconds with a bulk storage.sync.set() so that we don't exceed usage limits.
for the flag I'm thinking it could be handy to plan to set it as a number. If there's future changes that need conversion it could switch(settingsSynced) against null, 1, etc probably just not calling break; to roll into the proper state.