1) Create a branch “x” and create a pull request
2) while True: (run these steps on a script until you notice that the hashes don’t match up)
git commit —amend —no-edit # hashes change at this point.
git push origin x -f
if PR commit != the actual branch commit:
break # found the bug
When someone unrelated to the PR pushes an unrelated commit to master (as opposed to the PR branch) it seems Bitbucket goes through its ref cache and updates them. At this time the PR decides to update its commit. This puts the PR in the expected and correct state. 
I suspect Bitbucket has some sort of cache or db of “ref -> sha” mapping. This mapping seems to not being updated or triggered correctly on every push.
I suspect that the reason the scenario above  works because another (potentially unrelated) push is correctly updating this mapping and therefere causing PR’s to fall into a correct state.