5bd5995ef0
insertNode with a markdown/JSON list now appends/prepends its items into an adjacent same-type sibling list instead of creating a separate sibling list that the serializer splits with `<!-- -->`. Adds a single shared merge rule (isCoalescibleList/listsMergeable) used by both the markdown path (insertNodesRelative) and the raw-node path (insertNodeRelative). Coalescing is strictly local to the two seams of the active insertion (each merged at most once — no greedy loop, no global normalization). Survivor is chosen POSITIONALLY (the pre-existing neighbour outside the inserted [i,j) range), so it keeps its block id and list-level attrs (e.g. orderedList start); the inserted wrapper's re-minted id is discarded. Handles the three-way case (list inserted between two same-type lists → left survives) and refuses to coalesce an empty inserted list. before/after now resolve via findAnchorChain and splice into the anchor's immediate parent, so coalescing runs against the actual parent array (incl. lists nested in callouts / table cells). Serializer / LIST_MARKER_SEPARATOR untouched — two genuinely-separate lists still emit `<!-- -->`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>