A single PR should contain a single merge commit in "digestible" chunks. PR title should be prepended by [<local_branch_name> MERGE]. Ideally this is done ~once per month. If the merge commit compiles and passes all tests, the merge commit message is prepended with UPSTREAM MERGE:. If the resulting merge contains compilation/test failures, the merge commit is prepended by UPSTREAM MERGE BROKEN: and these issues should be fixed in separate commits on top, with their commit message prepended MERGE-FIX:.
This allows for easy history reading(discrete fixes with clear reasoning), and bisection rules to skip known bad sections.
Example with "clean" merge that passes tests: #500
Example with "broken" merge that fails a single functional test, with fix appended: #501