Epochs would be great, and would definitely solve this issue, but I'm curious: is there a downside to simply always stepping through upgrades by each revision that was released on a given channel?
Perhaps the store doesn't even track revision release history, but if it did, say the user was currently on revision 1 (from the stable channel). When they check for updates, if the current revision on the stable channel was 4 but the store knew that 2 and 3 were released on the stable channel between 1 and 4, would there be a downside to it returning
2 for that query, and
3 the next time, and so on?
With no other changes, the only (not insignificant) downside I see is that updates could take forever since by default snapd only checks every few hours. But I wonder if such a mechanism would be a shorter path to resolving some of this pain than fleshing out epochs.