This is awesome! I edited the page to add a note about filibuster being slow, but I didn't want to touch it too much otherwise. So instead, a few corrections and nitpicks here:
Corrections
- There is no connection between metadata and the internal list. The internal list is for reference contents, metadata is for things typically represented by
<meta>
tags (such as__DOUBLEUNDERSCOREMAGICWORDS__
) and they're not related at all. - Not all non-retain operations are implemented as replace, only insert and remove are. Annotate and attribute operations are not implemented as replace.
Nitpicks
- It's not technically true that "retain" does nothing: if an "annotate" operation has started setting/clearing annotations and there hasn't been another "annotate" operation that turns this back off, then the "retain" is an "annotating retain" and annotates the things it retains over. But that's enough of a detail that it might not need to be here