I'm hoping some of you Project gurus can help with an issue I'm having with levelling (and dependencies). It seems inexplicable that reducing the size of some work from a project has the result of extending the project end date with levelling enabled. I'm seeing this in a complex project and the date effects can be profound from this; however I've managed to capture the essence of the issue I see into hopefully a small and easily understood example.
I start with a project that is simple; 2 people working on tasks. Ed's tasks are sequential, enforced by predecessors. One of Jon's tasks (line 9) is dependent on one of Ed's tasks.
This very simple example levels to an optimal result. But if you reduce line 3's work to 1 week from two, the end result is the project extends in total duration by a week!
Initial view:

Reduced task line 3 to 1 week, project delivery extends out by 1 week(!), from 26/05 to 02/06. It seems obvious that there is a perfectly good route through the plan that doesn't extend the duration and satisfies the dependencies. And that's what I expected / hoped Project would pick.

If we allow levelling to split the task, then it splits the task around the obstacle, though this may be undesireable for many reasons - particularly if there was a perfectly good plan without a split, so preference is to have splitting turned off. See here with splitting enabled:

And finally, if I manually "hint" to the levelling engine via priorities on a couple of the tasks, then it will adopt one of the optimal plan variants that seemed so obvious to me:

I was hoping that Project would have the smarts to be able to get to the last plan shown above without having to be guided in the direction - that it would crunch the plan and come up with the shortest date, which surely must be the most desireable use case. While it isn't very hard to figure out which tasks to prioritise here as the example is very small, it's a bit random and just being driven by inspecting how the engine seems to be behaving. I'm not sure it will be practical to track through all the dependencies on a large, complex project and tweak priorities to make this happen, and it seems you'd likely have to constantly fiddle with this to get the engine to do the right thing in the face of change over the project lifetime.
Am I missing something in how I'm driving this - without specifying priorities could project have given me a better result? Any advice and pointers from the pros very gratefully received. Thank you in advance.