Not quite correct. The delete S** method in the recent versions somewhere was changed to only delete the predicates that exist in the type system for the given type of the node. For example if you manually delete or change the dgraph.type predicate then the delete will not work as expected. I’m going to open an issue about this with another idea I had while reading this post.
And more importantly…
uid predicates will ALWAYS exist and NEVER exist at the same time. Here is a relative post: