There is a very simple algorithm that D3 could implement that would prevent items from becoming obsolete when stat ranges change during a rebalance patch, and it goes like this:
value = min + (max - min) * roll
where:
roll = random(0.0, 1.0)
for some degree of precision
min = stat range minimum
max = stat range maximum
For example, let’s say version 1 of item X has a stat with a minimum value of 450 and a maximum value of 550, for a total range of 100 (easy math). The RNG would generate a number between 0.0 and 1.0, and for this example, let’s say it rolled 0.32. This rolled value, and only this rolled value, is the value that’s saved for this stat in the player’s profile. The value of the stat then becomes
482 = 450 + (550 - 450) * 0.32
.
Now let’s say the game gets a patch (version 2) with stat changes for items. The stat for item X that the player looted in version 1 has its range change from [450, 550] to [750, 1000]. Under the current system, the disgruntled player would have to loot item X again in order to take advantage of the buff, because the value of the stat that has been saved is the raw value. However, with the proposed system, the game would generate the value for the stat based on the saved roll value and the new range, meaning that the stat’s value now becomes
830 = 750 + (1000 - 750) * 0.32
.
This new stat value remains a fair scaling of the stat given its original roll.
To be clear, I am not proposing that the values of 482 (version 1) or 830 (version 2) be the values that are saved for the stat, or that the game would generate these values during the patch process, but rather that the game would save only the 0.32 value and generate the final stat value upon instantiating the item in game.
This system should apply to all stats for all items, including legendary powers. A primal item would then become an item that (forcibly) rolled a 1.0 for every stat and would not become obsolete during the next rebalance patch. Set bonus values could also use this system and either always roll a 1.0 (fixed value, like it is now) or a range.
The bottom line is, developers would be free to rebalance the game without discarding a player’s past progress.
If it’s too late for D3, then please, Please, PLEASE use this system for D4 and the many patches that will inevitably follow the initial launch.