> "What should X have done in the first place to avoid the pickle?"
0. (Of course, not develop a 406 patch changeset and then have to pick it apart. Make smaller pushes, frequently.)
1. Create a topic branch right there at the tip where the 406 changes are locally committed.
2. Then use git's interactive rebase to rewrite this branch such that just the back-end commits are picked first, followed by the front end.
3. Make a back-end topic branch from the last back-end commit and test that. If it's cool, master can be rebased to that and pushed to origin/master upstream.
4. Test remaining front-end changes, rebase master to them, push.
Also:
3. a) If back-end changes need fixing, fix them on the back-end-topic branch. Then rebase the original topic to the back end topic to pick up these changes "under" it. (I.e. replay the front end over the new back end, and install as new front end).