Thanks a lot! A few nitpicks, and let's discuss algorithm_family.h offline (I'll post a summary here afterwards).
The patch number needs to be updated.
Nit: it's best not to do these refactoring changes in this patch (for the lines that you don't otherwise modify). It increases the delta that needs to be reviewed, but more importantly, it makes it harder to navigate git blame. Ideally, such changes should go to dedicated refactoring patches which can then be added to .git-blame-ignore-revs.
This doesn't apply to the lines that you're modifying anyway -- since those would show up in git blame regardless, might as well refactor them.
Optional: consider asserting that (input.begin(), input.begin() + midIdx) and (input.begin() + midIdx, input.end()) are is_sorted.
Missing [first, mid).
Consider also checking mid == first + 1 and mid == last - 1 (to check for off-by-one errors).
Please copy the specification from the standard into this comment.
Ultranits: s/specify/specifies/ and s/does not/don't/.
I noticed the same with shuffle. It could be a simple oversight in the spec.
Nit: "yet" makes it a little ambiguous whether it's not constexpr in the standard or just in our implementation. I'd rephrase to inplace_merge is not constexpr in the latest finished Standard.