This is valid HTML:
<blockquote> <p> Foo </p> <p> Bar </p> </blockquote>
But when such structure is edited in VE, the inner paragraphs get alienated.
At present, BlockquoteNode behaves like a ContentBranchNode ; it should not.
Right now, ve.ce.BlockquoteNode extends ve.ce.ContentBranchNode, but ve.dm.BlockquoteNode extends ve.dm.BranchNode . I would say BranchNode is the correct parent, because HTML blockquote elements can contain flow content such as paragraph elements (see https://html.spec.whatwg.org/multipage/semantics.html#the-blockquote-element ).
If however there's some special weird reason to treat BlockquoteNode as a ContentBranchNode, then I'll implement that instead and document the special weird reason.
ISTR there is — or at least, was — a solid reason for doing this. But I don't recall at all what it was.
It seems the reason was that we treat it as a top-level block element, like paragraphs or heading.
This is probably correct but it means we have to come up with a new tool for inserting block quote, as it is currently treated as a CBN conversion in the format dropdown. I think we did it that way because most blockquotes are only one paragraph.
Alternatively, we could go the other way and make it fully ContentBranchNode, at least for the time being.
It was actually changed to be fully ContentBranchNode in 94dbb244dd.