corpus/paragraph-edit/README.md | 12 +- corpus/paragraph-edit/rust-split/candidate/synthetic.one | Bin 0 -> 110224 bytes corpus/paragraph-edit/rust-split/manifest.json | 352 +++++++++++++++++++++++++++++ corpus/paragraph-edit/rust-split/native/notebook/Open Notebook.onetoc2 | Bin 0 -> 4800 bytes corpus/paragraph-edit/rust-split/native/notebook/synthetic.one | Bin 0 -> 110224 bytes corpus/paragraph-edit/rust-split/native/read/environment.json | 7 + corpus/paragraph-edit/rust-split/native/read/hierarchy.xml | 2 + corpus/paragraph-edit/rust-split/native/read/page-000.xml | 6 + corpus/paragraph-edit/rust-split/native/read/page-001.xml | 3 + corpus/paragraph-edit/rust-split/native/read/page-002.xml | 6 + corpus/paragraph-edit/rust-split/native/read/page-003.xml | 5 + corpus/paragraph-edit/rust-split/native/read/page-004.xml | 20 ++ corpus/paragraph-edit/rust-split/native/read/page-005.xml | 6 + corpus/paragraph-edit/rust-split/native/read/page-006.xml | 6 + corpus/paragraph-edit/rust-split/native/read/page-007.xml | 6 + corpus/paragraph-edit/rust-split/native/read/page-008.xml | 2 + corpus/paragraph-edit/rust-split/native/read/page-009.xml | 5 + corpus/paragraph-edit/rust-split/native/read/page-010.xml | 3 + corpus/paragraph-edit/rust-split/native/read/page-011.xml | 6 + corpus/paragraph-edit/rust-split/native/read/page-012.xml | 6 + corpus/paragraph-edit/rust-split/native/read/page-013.xml | 5 + corpus/paragraph-edit/rust-split/native/read/payloads.json | 1 + corpus/paragraph-edit/rust-split/native/run.json | 18 ++ corpus/paragraph-edit/rust-split/native/source.json | 8 + corpus/paragraph-edit/rust-split/native/teardown.json | 1 + corpus/paragraph-edit/rust-split/typed/before-read/environment.json | 7 + corpus/paragraph-edit/rust-split/typed/before-read/hierarchy.xml | 2 + corpus/paragraph-edit/rust-split/typed/before-read/page-000.xml | 5 + corpus/paragraph-edit/rust-split/typed/before-read/page-001.xml | 6 + corpus/paragraph-edit/rust-split/typed/before-read/page-002.xml | 3 + corpus/paragraph-edit/rust-split/typed/before-read/page-003.xml | 6 + corpus/paragraph-edit/rust-split/typed/before-read/page-004.xml | 20 ++ corpus/paragraph-edit/rust-split/typed/before-read/page-005.xml | 6 + corpus/paragraph-edit/rust-split/typed/before-read/page-006.xml | 6 + corpus/paragraph-edit/rust-split/typed/before-read/page-007.xml | 6 + corpus/paragraph-edit/rust-split/typed/before-read/page-008.xml | 2 + corpus/paragraph-edit/rust-split/typed/before-read/page-009.xml | 5 + corpus/paragraph-edit/rust-split/typed/before-read/page-010.xml | 3 + corpus/paragraph-edit/rust-split/typed/before-read/page-011.xml | 6 + corpus/paragraph-edit/rust-split/typed/before-read/page-012.xml | 6 + corpus/paragraph-edit/rust-split/typed/before-read/page-013.xml | 5 + corpus/paragraph-edit/rust-split/typed/before-read/payloads.json | 1 + corpus/paragraph-edit/rust-split/typed/notebook/Open Notebook.onetoc2 | 1 + corpus/paragraph-edit/rust-split/typed/notebook/synthetic.one | Bin 0 -> 119912 bytes corpus/paragraph-edit/rust-split/typed/read/environment.json | 7 + corpus/paragraph-edit/rust-split/typed/read/hierarchy.xml | 2 + corpus/paragraph-edit/rust-split/typed/read/page-000.xml | 5 + corpus/paragraph-edit/rust-split/typed/read/page-001.xml | 1 + corpus/paragraph-edit/rust-split/typed/read/page-002.xml | 1 + corpus/paragraph-edit/rust-split/typed/read/page-003.xml | 1 + corpus/paragraph-edit/rust-split/typed/read/page-004.xml | 20 ++ corpus/paragraph-edit/rust-split/typed/read/page-005.xml | 1 + corpus/paragraph-edit/rust-split/typed/read/page-006.xml | 1 + corpus/paragraph-edit/rust-split/typed/read/page-007.xml | 1 + corpus/paragraph-edit/rust-split/typed/read/page-008.xml | 2 + corpus/paragraph-edit/rust-split/typed/read/page-009.xml | 1 + corpus/paragraph-edit/rust-split/typed/read/page-010.xml | 1 + corpus/paragraph-edit/rust-split/typed/read/page-011.xml | 1 + corpus/paragraph-edit/rust-split/typed/read/page-012.xml | 1 + corpus/paragraph-edit/rust-split/typed/read/page-013.xml | 5 + corpus/paragraph-edit/rust-split/typed/read/payloads.json | 1 + corpus/paragraph-edit/rust-split/typed/run.json | 18 ++ corpus/paragraph-edit/rust-split/typed/source.json | 14 ++ corpus/paragraph-edit/rust-split/typed/teardown.json | 1 + corpus/paragraph-edit/rust-split/typed/ui/selections.json | 30 +++ corpus/paragraph-edit/rust-split/typed/ui/split-empty-0.ahk | 23 ++ corpus/paragraph-edit/rust-split/typed/ui/split-empty-0.json | 1 + corpus/paragraph-edit/rust-split/typed/ui/split-empty-0.png | Bin 0 -> 47514 bytes corpus/paragraph-edit/rust-split/typed/ui/split-empty-1.ahk | 23 ++ corpus/paragraph-edit/rust-split/typed/ui/split-empty-1.json | 1 + corpus/paragraph-edit/rust-split/typed/ui/split-empty-1.png | Bin 0 -> 47726 bytes corpus/paragraph-edit/rust-split/typed/ui/split-end-1.ahk | 23 ++ corpus/paragraph-edit/rust-split/typed/ui/split-end-1.json | 1 + corpus/paragraph-edit/rust-split/typed/ui/split-end-1.png | Bin 0 -> 47953 bytes corpus/paragraph-edit/rust-split/typed/ui/split-start-0.ahk | 23 ++ corpus/paragraph-edit/rust-split/typed/ui/split-start-0.json | 1 + corpus/paragraph-edit/rust-split/typed/ui/split-start-0.png | Bin 0 -> 47959 bytes crates/onestore/README.md | 9 + crates/onestore/src/commit.rs | 13 ++ crates/onestore/src/lib.rs | 2 + crates/onestore/src/paragraph.rs | 383 ++++++++++++++++++++++++++++++++ crates/onestore/src/write.rs | 92 +++++++- crates/onestore/src/write/tests.rs | 54 +++++ crates/onestore/tests/paragraph.rs | 343 ++++++++++++++++++++++++++++ fuzz/Cargo.toml | 7 + fuzz/fuzz_targets/paragraph.rs | 144 ++++++++++++ tools/test_paragraph_edit.py | 61 ++++- 87 files changed, 1889 insertions(+), 12 deletions(-)