If you "Edit Task", the "Status" dropdown includes the custom status marked with the special "duplicate" role. It should not, unless the task is currently in that status. Users should normally be able to move to that status only by performing a task merge.
This doesn't need to be validated on the server side since it's fine if a user messes with the form to push things into "duplicate" status directly, this is just a usability/confusion issue.
In Phabricator you can click "Edit Task" and set the Status to DUPLICATE without the requirement to mention what task it was duped on/merged into. It seems that you need to specify the task duplicated as a comment in a separate action, but would expect the option to provide the number of the other task directly.