See T4453. When revisions are landed as a series of commits, Differential updates after discovering the first one. This may not accurately reflect what actually landed. This is a huge mess, but probably never going to get riper than it is right now.
D20451 was incorrectly updated (with an empty diff) after being closed by the stable-promotion merge commit. This is not expected. There are two sub-problems here:
- The "setContinueOnNoEffect()" behavior changed to make edges write (desirable) but multiple "updated the revision" actions can now write too (not desirable). The easiest fix here is to no-op the update-after-commit if the revision is already closed.
- See T7333. Empty commits have incorrectly associated with the revision of the parent for a long time, but now that we're doing a better job about being inclusive of "one revision, many commits" this is creating more visible problems.