Is there a way to migrate all my current edge
users up to track the beta
release channel, so that I can publish new edge
releases without them being automatically upgraded?
I don’t believe this is possible. They chose to track the edge channel so that’s what they’ll get. The only way you can make them track a more-stable channel is to close the edge channel so they get forwarded up the stack. But the moment you introduce a further edge release they’ll move onto that again.
Is this same for beta and candidate channels or only edge behaves in this way?
Yes, it’s the same for all the channels. If stable is closed then it will drop to candidate, then beta, then edge to find the first channel that has a release. If candidate is closed but stable is open it’ll use stable, else it will use beta, or edge. If beta is closed, it’ll use candidate if it is open, or stable if it is open and candidate is closed, or it’ll use edge if no other channels are open.
Really the concept is, if I’m getting this right, when a user specifies a channel it will try to install that channel and if there isn’t a revision it will attempt to get a more-stable channel before finally trying the less stable channels.
The override behaviour will never move you to a riskier channel than the one you originally chose. It only works in a more-stable direction. If you’re ok with beta software you should be ok with stable or candidate but should NOT be offered edge-level bleeding-edge stuff
I thought if there is no stable release and you snap install that-not-stable-snap
without specifying that you accept non-stable it’ll still use the most-stable channel below stable because there is no stable yet?
To the original question, you would need to close edge and then could consider making a new track (optionally making it default) and directing users to the edge risk on that track.
Channel fallback will only ever give you something less risky. snap install --candidate foo
installs from candidate, but if there’s nothing in candidate it falls back to stable. snap install foo
installs from stable, but if there’s nothing in stable it will fail since there’s nowhere safer to fall back to.