When the subject of free versus restricted saving comes up, people often end up conflating the issues of players being free to save their progress at any time and games requiring players to replay certain segments upon failure. The assumption is that the proper response to player failure is for the game to reload the latest save state, thus leading to a framing of the issue of loss of player progress in terms of free versus restricted saving.
Unrestricted saving mechanisms are essential in modern games in that they allow players to quit the game at any time without losing progress. This does not, however, mean that loss of progress upon failure is an illegitimate mechanic. Countless commercially successful game designs that purposely incorporate just such a mechanic show quite clearly that loss of progress upon failure is a perfectly legitimate mechanic. Ultimately, the answer to the "free save" dilemma is not to design a game such that progress can never be lost, but to design a game such that its response to player failure isn't coupled to the game's save system.
Principle: Uncouple a game's save/reload mechanism from the game's response to player failure.
Rationale: A game's response to player failure should be designed into the game rather than be defined by something as arbitrary as when was the last time the player saved the game. Instead of reloading the latest save game whenever the player fails at a particular task, restore the game to a state that is known at design time given the player's progress so far. This makes it possible to divide player progress into milestones without subjecting players to a crippled save system.