Another somewhat weird bug report. :P (I'm in the middle of beta testing with lots of folks playing my game in a variety of ways on lots of different machines, so I've hit a few weird things)
If you have a scene where an instance of the player already exists, the player is given an id of -1, while if AC has to create the player, the player gets an id of 1. So, if you first save in a scene where AC created the player, saveData.playerData will get a new PlayerData where the id is 1. If you go on to a scene where the player already existed, and you save there, the old PlayerData won't be removed, and your new save will have both the original PlayerData with id 1 and the new PlayerData with id -1. If you then load this save, the first PlayerData will be used, thus loading the first save you made, not the save it should have loaded.
In summary: It appears that this is part of a feature for supporting multiple players. If you're not using that feature, but you have one scene where you put the player into the scene manually and another scene where AC automatically creates the player, then you may get into a situation where all saves actually write the first save you made.
The relevant code is in SaveSystem@SaveSaveGame, L951. You can see the part there where it loops through the existing PlayerDatas and deletes ones with matching ids, which breaks down if AC has accidentally given the same player two different ids. I have it now working for my particular use case by just commenting out the first half of the if, ensuring that a new SaveData is always made. It's to be seen if that has negative side effects. :P
Comments
-2 - (current scene index)
This means that -1 is now decrepit and local players will only ever have values of -2, -3 and so on. As they are now unique to their scene, AC shouldn't get confused about this aspect any more.