pub fn diff(local: &Manifest, remote: &Manifest) -> DeltaExpand description
What changed between the tree as it is (local) and as the last sync left it (remote).
Identity is category-scoped: a path that was a file and is now a symlink is uploaded and
not deleted, since the upload overwrites the name in place, which is the daemon’s own
extraction contract. MANIFEST_NAME never appears in either set.