Advice for partly read-only nodes

Say I have a bullet list, and I want to prevent any edits to the list, but each list item can potentially have extra content, after the one initial paragraph, and this will be editable. So no adding/removing/reordering items, and no editing that first para in each list item.

Any advice on the best way to achieve this?

I have it working now, using a readonly attribute on the list, the items, and the first paragraphs, and a plugin with filterTransaction. If I detect the transaction touches a node with n.attrs.readOnly, I veto it.

It works but it has some issues around undo. I could describe the specific issues, but they are a bit complicated. I’m wondering if there is a different approach that would be more suitable.

filterTransaction and the undo history should work together unproblematically. If you find a specific situation where they don’t, please report it as a bug.

Undo bug was on me and unrelated.