The only rule you need is: preserve history that is worth preserving.
99% of the time, that means you should squash commits in a PR. Most commits should be small enough that they don't need more fine grained history than one commit.
I will grant a couple of exceptions:
- Sometimes you have refactorings where you e.g. move a load of files and then do something else.. Or do a big search and replace and then fix the errors. In these cases it's nice to have the file moves or search/replace in separate commits to a) make review easier, b) make the significant changes easier to see, and c) let git track file moves reliably.
- Sometimes you have a very long lived feature branch that multiple people have worked on for months. That can be worth keeping history for.
Unfortunately, if you enable merge queues on GitHub it forces you to pick one method for all PRs, which is kind of dumb. We just use squash merges for everything and accept that sometimes it's not the best.
I doubt this will fly in the UK. They are legally required to implement "highly effective" age verification, and that definitely rules out AI and probably face recognition (pornhub doesn't support that for example). It's going to be credit card checks all round, yeay.