I've had a chance to think this over, and I've come up with a few ideas that may be relevant.
First, your definition is hinting at an iterative approach to a depth-first search (as opposed to recursive). The need for a stack is circumvented by solving the slightly different problem of identifying a parent vertex for each vertex in the graph. Especially in practice, this is a clever approach to solving the problem, but the algorithm is somewhat more complicated to describe.
I think your definition is valid but poorly phrased, which makes me nervous about details. First, I don't think as it is phrased it actually works. In step 2, you say that if all adjacent vertices have been visited to proceed to step 3, only exploring the parent of the current vertex. Step 3 assumes that there is an unvisited adjacent vertex to v. There are no instructions for what to do when there are none. It should fix it to just repeat step 2 instead of going immediately to step 3. Second, it doesn't seem clear that the algorithm is intended to scan every edge of a vertex to search for unvisited vertices. Termination depends on all vertices being visited, so we better be sure to visit all of them. Arguably, this is implied, but precision is essential for a definition. The interjections about tree edges in (3) and about the spanning tree in (1) distract from the actual definition. Finally, it's just generally disorganized and awkward.
Anyway, there are a number of equivalent definitions. It's reasonable to start with any of them and show they're all logically equivalent. It's a matter of taste and purpose. For the initial definition, I like the recursive one because it's very concise; it doesn't require attention to many technicalities and highlights the recursive nature of the algorithm. Your definition has advantages, too. In practice, iteration would certainly be preferred and it does highlight the tree generated by DFS.
I'm tired and I want to go to bed now. If I have time, I'll try to come up with an iterative definition that's convincing to me and then prove that it is equivalent to the recursive definition. I've also thought of another way to describe the recursive algorithm directly using a stack, but I have a few more details to iron out.