Branches share patches: one made from another reads what that had through the same set, not a copy; what each records after is its own; a version coming back on one hides the patch out of it beneath, for that one alone; a merge's work set aside and put back is as it was; a deep stack of sets reads as a flat one; and a branch deleted takes the sets only it read.
Long texts are kept compressed, short ones as written; `compact` compresses those a tcm from before kept as written, and what's read is the same throughout.
A codebase whose texts are kept compressed (as `packed` keeps long ones) reads as it did with them as written: definitions, their metadata (docs, shapes, text versions) and namespace nodes.
A version that comes back (a change undone hashes as the code before it did) is the newest again: what replaced it then doesn't now. Patches lead to it, not on past it, whether recorded now or from before (a store holding a patch out of a version the branch names again).