https://github.com/LMDB/lmdb/blob/30288c72573ceac719627183f1...
Which meta-page used is determined by the transaction ID (even IDs use first, odd IDs second).
This is the earliest description I can find of the "shadow paging" concept: https://dl.acm.org/doi/10.1145/320521.320540
And I believe its first implementation was in IBM's System R.
Other commenters noting that append-only isn't efficient enough for general use are correct. We found this as well in the early days of testing LMDB with append-only behavior; 99% of pages were obsolete after only 5 transactions. That's why LMDB is CoW but not append-only, and that's why it uses a double-buffered meta page.
Bzero's work on append-only Btree was educational and illuminating, but not usable in the real world.