A branch only read (`--branch`) is what the store reads, text versions and all, and nothing changes any branch: names, text versions, history, todo, patches and branches stay as they were.
Criss-cross merges (two branches that merged each other) leave several best common ancestors: all of them, oldest first, the newest being the merge base.
A namespace node naming a text version is written with a fourth list, and hashed with it; one naming none is as before there were text versions (`testNamespaceAndCausalHashesArePinned`).
Changing only how a definition reads (its comments, layout, doc) is a change of the branch that makes it: the other branches read it as before, it's an entry in the branch's history, and going back to an entry before it brings back the text as it was. Text a definition was first stored with is no version of its own.