The thing that the docs refer to as "impose order" is not a single thing, but two. I would characterize a normal prerequisite as doing three things rather than two:
-
update-marking: cause a target to be marked out of date if the prereq is marked out of date
- require-existence: require the prereq to be built successfully at least once before the target is built
- imposed-order: require the prereq to be built before the target, if both are being built
A prereq which truly was order-only would exclusively do the last one, imposing order. The "order-only" prereqs as they stand do both imposed-order and require-existence. For .PHONY targets, require-existence always mandates update-marking, which is why the overlap between those two cases is particularly confusing - a phony target which drops only update-marking is a contradiction in terms, so the natural assumption to make is that the effect of "order-only" prereqs is not that, and is instead something non-paradoxical.
I looked deeper into the list archives and saw that this discussion has come up before;
Stefano Lattarini experienced the same problem in 2012 (thread starts 2012/06/11).
Phillip Guenther said that this pure-order effect is not achievable with the structure of make, which presumably remains true.
I agree with Lattarini's recommendations, which I'll reproduce below for convenience. The primary one was the suggestion of alternate names that might be used for what are currently called order-only prerequisites - "existence-only prerequisites" seems like the clearest one to me.