Is artifact promotion in this pipeline correct?
It depends on the artifact repository you are using but in general, you tag the artifacts in the repository to indicate their state.  This can specify it has passed some level of quality gate, some approval, or what ever is required to move through the stages.  

I would say you tag the artifact as to it's state, not move between artifact repositories.  A single artifact repository can be used to hold the artifacts at multiple versions, and multiple states.  This provides a single audit point and a single way of controlling the deployment which can be very helpful.   

With tagging of the artifacts you can be clear if they are ready for deployment, and if so to which environments.  The tags can be updated in multiple ways, but I would recommend automated processes, such as when an artifact is deployed, the artifact is tagged.  When it set of tests pass the end of that marks the artifact as ready.  If you have manual testing, that testing will be tracked in some tool or dashboard or approval process, when it is approved, that process should tag the artifact as ready to move on.