I thought about that but rejected it. I don't fully recall why but I do know that the detached items and indeterminacy of the order of elements in the resultset implying that I'd have to create a forest of dags which I'd then paste together before persisting made it seem too ugly. I could junk this working large-effort approach and try to implement the in memory dag one, but I might rather do it as a backlogged task especially since quite a few changes in this PR are fixes unrelated to the overall approach.

As I said above, I also wanted to get an idea of the scope, rqmts, and approach for the `with new_version()` mechanism w/o having to fully impl it.