It's becoming annoying that the diffs are large even when only a few nodes are added or deleted.
The cause is that we're assigning incrementing IDs while exporting the objects, and adding a node, for example, will cause all IDs that come afterwards to be shifted.
It might be worth switching to strings for the IDs.
Then we could use the from_root strings we already have.
They could be truncated to start at the tree name that we're currently exporting.
It would need some more manual naming of things like external items, maybe the IDs could look something like
"External 0"
"External 1"
"External 2"