> - “every commit must compile” - again, unnecessary overzealousness.

Until you need to `git bisect`. Then you'll require that every commit compile, pass tests, etc.; even if that means rebase/squashing to do it.

You don't bisect a merge/pull request. There is no need for it, unless it is a giant, but then your workflow is different.

Main has clean history and every commit is good.