feat: merge concurrent page edits during reconciliation
When the remote page changed since a save was made, reconcile by a three-way
merge of page models: the remote page keeps everything it changed and the
local changes are re-applied wherever the two sides touched different
objects, fields or text ranges. Same-paragraph edits reuse the banded text
rebase to place the local replacement inside the remote text; a paragraph
removed on one side and edited on the other, overlapping text ranges, both
sides moving an outline, or both sides reordering the same container remain
ContentChanged conflicts for review_page.
Validation: five sync tests (different paragraphs, same paragraph with and
without overlap, local insertion beside a remote deletion, remote deletion
of the edited paragraph, outline moves against remote text edits and moves)
plus a text-merge unit test; Clippy and fmt.
Assisted-by: claude-fable-5.1
2e2f9466aeclover caruso committed on 9/13/2026, 12:00:32 AMparent59f5163