Mainly agree except the squashing bit. Squashing means lost history, and you cant tell why a specific method or peace of code was written.
And if it's not possible to document inline, the PR docs or code review comments should address this. Then future onlookers can use `blame` to see the context.
This can be important information e.g. when troubleshooting bugs, since it could explain the developer's thinking. Like in Chesterton's Fence; why on earth would you do something like this?