corpus/paragraph-edit/README.md | 16 +- corpus/paragraph-edit/join-tags/before/notebook/Open Notebook.onetoc2 | Bin 0 -> 4800 bytes corpus/paragraph-edit/join-tags/before/notebook/synthetic.one | Bin 0 -> 36936 bytes corpus/paragraph-edit/join-tags/before/read/environment.json | 7 + corpus/paragraph-edit/join-tags/before/read/hierarchy.xml | 2 + corpus/paragraph-edit/join-tags/before/read/page-000.xml | 5 + corpus/paragraph-edit/join-tags/before/read/page-001.xml | 5 + corpus/paragraph-edit/join-tags/before/read/page-002.xml | 20 ++ corpus/paragraph-edit/join-tags/before/read/page-003.xml | 5 + corpus/paragraph-edit/join-tags/before/read/payloads.json | 1 + corpus/paragraph-edit/join-tags/cases.json | 17 + corpus/paragraph-edit/join-tags/joined/notebook/Open Notebook.onetoc2 | 1 + corpus/paragraph-edit/join-tags/joined/notebook/synthetic.one | Bin 0 -> 44032 bytes corpus/paragraph-edit/join-tags/joined/read/environment.json | 1 + corpus/paragraph-edit/join-tags/joined/read/hierarchy.xml | 2 + corpus/paragraph-edit/join-tags/joined/read/page-000.xml | 5 + corpus/paragraph-edit/join-tags/joined/read/page-001.xml | 5 + corpus/paragraph-edit/join-tags/joined/read/page-002.xml | 20 ++ corpus/paragraph-edit/join-tags/joined/read/page-003.xml | 5 + corpus/paragraph-edit/join-tags/joined/read/payloads.json | 1 + corpus/paragraph-edit/join-tags/joined/ui/join-different-tags.ahk | 22 ++ corpus/paragraph-edit/join-tags/joined/ui/join-different-tags.json | 13 + corpus/paragraph-edit/join-tags/joined/ui/join-different-tags.png | Bin 0 -> 44891 bytes corpus/paragraph-edit/join-tags/joined/ui/join-empty-left-right-tag.ahk | 22 ++ corpus/paragraph-edit/join-tags/joined/ui/join-empty-left-right-tag.json | 13 + corpus/paragraph-edit/join-tags/joined/ui/join-empty-left-right-tag.png | Bin 0 -> 44900 bytes corpus/paragraph-edit/join-tags/joined/ui/join-empty-left-two-tags.ahk | 22 ++ corpus/paragraph-edit/join-tags/joined/ui/join-empty-left-two-tags.json | 13 + corpus/paragraph-edit/join-tags/joined/ui/join-empty-left-two-tags.png | Bin 0 -> 45283 bytes corpus/paragraph-edit/join-tags/joined/ui/selections.json | 20 ++ corpus/paragraph-edit/join-tags/run.json | 19 ++ corpus/paragraph-edit/join-tags/source.json | 1 + corpus/paragraph-edit/join-tags/teardown.json | 1 + corpus/paragraph-edit/rust-join/inheritance/candidate/synthetic.one | Bin 0 -> 56344 bytes corpus/paragraph-edit/rust-join/inheritance/manifest.json | 47 +++ corpus/paragraph-edit/rust-join/inheritance/native/notebook/Open Notebook.onetoc2 | Bin 0 -> 4800 bytes corpus/paragraph-edit/rust-join/inheritance/native/notebook/synthetic.one | Bin 0 -> 56344 bytes corpus/paragraph-edit/rust-join/inheritance/native/read/environment.json | 7 + corpus/paragraph-edit/rust-join/inheritance/native/read/hierarchy.xml | 2 + corpus/paragraph-edit/rust-join/inheritance/native/read/page-000.xml | 5 + corpus/paragraph-edit/rust-join/inheritance/native/read/page-001.xml | 20 ++ corpus/paragraph-edit/rust-join/inheritance/native/read/page-002.xml | 5 + corpus/paragraph-edit/rust-join/inheritance/native/read/page-003.xml | 5 + corpus/paragraph-edit/rust-join/inheritance/native/read/page-004.xml | 5 + corpus/paragraph-edit/rust-join/inheritance/native/read/page-005.xml | 5 + corpus/paragraph-edit/rust-join/inheritance/native/read/payloads.json | 1 + corpus/paragraph-edit/rust-join/inheritance/native/run.json | 18 ++ corpus/paragraph-edit/rust-join/inheritance/native/source.json | 8 + corpus/paragraph-edit/rust-join/inheritance/native/teardown.json | 1 + corpus/paragraph-edit/rust-join/split/candidate/synthetic.one | Bin 0 -> 139752 bytes corpus/paragraph-edit/rust-join/split/manifest.json | 110 +++++++ corpus/paragraph-edit/rust-join/split/native/notebook/Open Notebook.onetoc2 | Bin 0 -> 4800 bytes corpus/paragraph-edit/rust-join/split/native/notebook/synthetic.one | Bin 0 -> 139752 bytes corpus/paragraph-edit/rust-join/split/native/read/environment.json | 7 + corpus/paragraph-edit/rust-join/split/native/read/hierarchy.xml | 2 + corpus/paragraph-edit/rust-join/split/native/read/page-000.xml | 5 + corpus/paragraph-edit/rust-join/split/native/read/page-001.xml | 20 ++ corpus/paragraph-edit/rust-join/split/native/read/page-002.xml | 5 + corpus/paragraph-edit/rust-join/split/native/read/page-003.xml | 5 + corpus/paragraph-edit/rust-join/split/native/read/page-004.xml | 3 + corpus/paragraph-edit/rust-join/split/native/read/page-005.xml | 5 + corpus/paragraph-edit/rust-join/split/native/read/page-006.xml | 5 + corpus/paragraph-edit/rust-join/split/native/read/page-007.xml | 3 + corpus/paragraph-edit/rust-join/split/native/read/page-008.xml | 5 + corpus/paragraph-edit/rust-join/split/native/read/page-009.xml | 2 + corpus/paragraph-edit/rust-join/split/native/read/page-010.xml | 5 + corpus/paragraph-edit/rust-join/split/native/read/page-011.xml | 6 + corpus/paragraph-edit/rust-join/split/native/read/page-012.xml | 5 + corpus/paragraph-edit/rust-join/split/native/read/page-013.xml | 5 + corpus/paragraph-edit/rust-join/split/native/read/payloads.json | 1 + corpus/paragraph-edit/rust-join/split/native/run.json | 18 ++ corpus/paragraph-edit/rust-join/split/native/source.json | 8 + corpus/paragraph-edit/rust-join/split/native/teardown.json | 1 + corpus/paragraph-edit/rust-join/tags/candidate/synthetic.one | Bin 0 -> 41808 bytes corpus/paragraph-edit/rust-join/tags/manifest.json | 29 ++ corpus/paragraph-edit/rust-join/tags/native/notebook/Open Notebook.onetoc2 | Bin 0 -> 4800 bytes corpus/paragraph-edit/rust-join/tags/native/notebook/synthetic.one | Bin 0 -> 41808 bytes corpus/paragraph-edit/rust-join/tags/native/read/environment.json | 7 + corpus/paragraph-edit/rust-join/tags/native/read/hierarchy.xml | 2 + corpus/paragraph-edit/rust-join/tags/native/read/page-000.xml | 20 ++ corpus/paragraph-edit/rust-join/tags/native/read/page-001.xml | 5 + corpus/paragraph-edit/rust-join/tags/native/read/page-002.xml | 5 + corpus/paragraph-edit/rust-join/tags/native/read/page-003.xml | 5 + corpus/paragraph-edit/rust-join/tags/native/read/payloads.json | 1 + corpus/paragraph-edit/rust-join/tags/native/run.json | 18 ++ corpus/paragraph-edit/rust-join/tags/native/source.json | 8 + corpus/paragraph-edit/rust-join/tags/native/teardown.json | 1 + crates/onestore/README.md | 9 + crates/onestore/src/commit.rs | 12 + crates/onestore/src/lib.rs | 2 +- crates/onestore/src/paragraph.rs | 551 +++++++++++++++++++++++++++----- crates/onestore/src/write.rs | 108 +++++++ crates/onestore/src/write/tests.rs | 76 ++++- crates/onestore/tests/paragraph.rs | 442 ++++++++++++++++++++++++- fuzz/fuzz_targets/paragraph.rs | 127 +++++--- tools/native/paragraph-tag-joins.ps1 | 39 +++ tools/test_paragraph_edit.py | 146 ++++++--- 97 files changed, 2054 insertions(+), 178 deletions(-)