Each page keeps a history of edits called the journal. Here we consider how one might refactor this history.
See also Clean Git History
There is nothing authoritative about the journal. Anyone with a text editor could write whatever history they want. We're interested in how mangling this history might be useful.
The journal applies to one page and travels with it. When you drag an item it appears deleted from one journal and added to another. Items have ids which could connect these two operations through a series of inferences. We don't rely on this for correct operation of any one site.
Edit. Most operations work by formulating an action to be applied to the story and appended to the journal.
Fork. When we fork a page we replace whatever might have been on our site with that of another.
Merge. When we drag one journal on to another their histories merge to create a third page which we can save.
Imagine you got off track adding to a page and then got back on track but wanted to forget your digression. You could delete the unwanted pages but then they could be recalled from history. With the primitives we now have you can delete the unwanted history.
Open a scratch page, drag what ever you want to save there, then reset history, and drag them back. You could probably even drag them back in bulk by dragging the whole journal.
This is all experimental, of course. And it depends on having recent versions of the client-side application. Further, we've endured a page scrambling bug that has probably not been eradicated from most servers.