When an rc is worth it
When the change touches something a consumer cannot easily test: a wire format, a database layout, a dependency's version floor. If you can test the final version in one command, skip the rc.
The one rule that matters
No pre-release artifact may be reachable from a production pointer. If latest can point at an rc, the discipline has failed and the naming is doing nothing.