Does it make sense to announce a release candidate and then make tons and tons of breaking changes over the course of evolving from rc.1 to rc.6?
Well, yes. Yes, it does. That’s the exact purpose of Release Candidates: to test the water, and find out whether there are any remaining niggles before going gold. Think of them as betas, because that’s exactly what they are.
What they are not is a basis for a self-taught course in developing with them, and this was your first mistake. As you’ve discovered, not only can you expect bugs and incomplete functionality with an RC, there may be significant changes before final release. This is the exactly wrong thing on which to teach yourself, because you’ll never quite be sure whether the problems you encounter are with your code or the platform software, and change will happen so quickly that anything you knew yesterday may be invalid today.
The second mistake was to base a production workflow on anything but a formally released package. I don’t really need to elaborate on this.
But it’s certainly a good opportunity to learn lessons, and that’s always a valuable career progression.