OK the problem:
I have a populated site with one default category (A) and a permalink structure using %category%. I want to add a second category (B) (whether a child or not makes no difference here). Initially all posts are in A, and new posts might be in A,B, or Both. The behaviour I observe;
If a post is in A the permalink is /A.
If a post is ONLY in B the permalink is in /B
If a post is in A and B the permalink is in /A (I want /B here).
If I make B a child of A the permalink is always A (It should be /A/B)
In order to make an A+B post appear with permalink B, the ID order of the categories needs reversing. WordPress provides no tool for doing that, or migrating posts between categories, so with out an external tool I am stuffed.
I would suggest that the requirement for ID ordering to properly represent a hierarchical permalink is a bug - the site should not behave differently based on the ID values of the categories, but solely on the hierarchy defined in the dashboard. In the case of a flat structure, WP provides no tools for changing the behaviour as to which category takes priority in determining the permalink because its using a DB key which can't be changed.
I hope that makes sense!
The reason for needing this change on my site is because some tools and a fair few wordpress plugins use directory based controls.