corpus/link-edit/internal/candidate/Open Notebook.onetoc2 | Bin 1604 -> 1604 bytes corpus/link-edit/internal/candidate/links.one | Bin 9200 -> 10120 bytes corpus/link-edit/internal/cold/commands.jsonl | 2 +- corpus/link-edit/internal/cold/machine.json | 2 +- corpus/link-edit/internal/cold/notebook/Open Notebook.onetoc2 | Bin 3764 -> 3764 bytes corpus/link-edit/internal/cold/notebook/links.one | Bin 9200 -> 12016 bytes corpus/link-edit/internal/cold/read/environment.json | 2 +- corpus/link-edit/internal/cold/read/hierarchy.xml | 2 +- corpus/link-edit/internal/cold/read/page-000.xml | 3 +- corpus/link-edit/internal/cold/read/page-001.xml | 3 +- corpus/link-edit/internal/cold/run.json | 2 +- corpus/link-edit/internal/cold/source.json | 10 +- corpus/page-copy/candidate/Open Notebook.onetoc2 | Bin 1604 -> 1604 bytes corpus/page-copy/candidate/copies.one | Bin 185400 -> 163632 bytes corpus/page-copy/cold/commands.jsonl | 2 +- corpus/page-copy/cold/machine.json | 2 +- corpus/page-copy/cold/notebook/Open Notebook.onetoc2 | Bin 3764 -> 3764 bytes corpus/page-copy/cold/notebook/copies.one | Bin 188288 -> 166520 bytes corpus/page-copy/cold/read/environment.json | 2 +- corpus/page-copy/cold/read/hierarchy.xml | 2 +- corpus/page-copy/cold/read/page-000.navigation.json | 2 +- corpus/page-copy/cold/read/page-000.png | Bin 43968 -> 45566 bytes corpus/page-copy/cold/read/page-000.xml | 2 +- corpus/page-copy/cold/read/page-001.navigation.json | 2 +- corpus/page-copy/cold/read/page-001.png | Bin 46447 -> 46784 bytes corpus/page-copy/cold/read/page-001.xml | 6 +- corpus/page-copy/cold/read/page-002.navigation.json | 2 +- corpus/page-copy/cold/read/page-002.png | Bin 47780 -> 47609 bytes corpus/page-copy/cold/read/page-002.xml | 6 +- corpus/page-copy/cold/read/page-003.navigation.json | 2 +- corpus/page-copy/cold/read/page-003.png | Bin 47637 -> 47336 bytes corpus/page-copy/cold/read/page-003.xml | 3 +- corpus/page-copy/cold/read/page-004.navigation.json | 2 +- corpus/page-copy/cold/read/page-004.png | Bin 47389 -> 47119 bytes corpus/page-copy/cold/read/page-004.xml | 5 +- corpus/page-copy/cold/read/page-005.navigation.json | 2 +- corpus/page-copy/cold/read/page-005.png | Bin 47445 -> 43943 bytes corpus/page-copy/cold/read/page-005.xml | 5 +- corpus/page-copy/cold/read/page-006.navigation.json | 2 +- corpus/page-copy/cold/read/page-006.png | Bin 47572 -> 47756 bytes corpus/page-copy/cold/read/page-006.xml | 23 +- corpus/page-copy/cold/read/page-007.navigation.json | 2 +- corpus/page-copy/cold/read/page-007.png | Bin 46782 -> 47938 bytes corpus/page-copy/cold/read/page-007.xml | 5 +- corpus/page-copy/cold/read/page-008.navigation.json | 2 +- corpus/page-copy/cold/read/page-008.png | Bin 47905 -> 46404 bytes corpus/page-copy/cold/read/page-008.xml | 5 +- corpus/page-copy/cold/read/page-009.navigation.json | 2 +- corpus/page-copy/cold/read/page-009.png | Bin 48612 -> 45128 bytes corpus/page-copy/cold/read/page-009.xml | 5 +- corpus/page-copy/cold/read/page-010.navigation.json | 2 +- corpus/page-copy/cold/read/page-010.png | Bin 48240 -> 47260 bytes corpus/page-copy/cold/read/page-010.xml | 6 +- corpus/page-copy/cold/read/page-011.navigation.json | 2 +- corpus/page-copy/cold/read/page-011.png | Bin 48103 -> 46333 bytes corpus/page-copy/cold/read/page-011.xml | 2 +- corpus/page-copy/cold/read/page-012.navigation.json | 2 +- corpus/page-copy/cold/read/page-012.png | Bin 48325 -> 46752 bytes corpus/page-copy/cold/read/page-012.xml | 6 +- corpus/page-copy/cold/read/page-013.navigation.json | 2 +- corpus/page-copy/cold/read/page-013.png | Bin 48626 -> 45853 bytes corpus/page-copy/cold/read/page-013.xml | 10 +- corpus/page-copy/cold/read/page-014.navigation.json | 2 +- corpus/page-copy/cold/read/page-014.png | Bin 47113 -> 45479 bytes corpus/page-copy/cold/read/page-014.xml | 7 +- corpus/page-copy/cold/read/page-015.navigation.json | 2 +- corpus/page-copy/cold/read/page-015.png | Bin 46780 -> 46782 bytes corpus/page-copy/cold/read/page-015.xml | 2 +- corpus/page-copy/cold/read/page-016.navigation.json | 2 +- corpus/page-copy/cold/read/page-016.png | Bin 47620 -> 46522 bytes corpus/page-copy/cold/read/page-016.xml | 20 +- corpus/page-copy/cold/read/payloads.json | 4 +- corpus/page-copy/cold/run.json | 2 +- corpus/page-copy/cold/source.json | 12 +- corpus/page-lifecycle/creation/README.md | 3 +- corpus/page-lifecycle/creation/candidate/Lifecycle.one | Bin 60368 -> 59264 bytes corpus/page-lifecycle/creation/cold/notebook/Lifecycle.one | Bin 60368 -> 59264 bytes corpus/page-lifecycle/creation/cold/read/hierarchy.xml | 2 +- corpus/page-lifecycle/creation/cold/read/page-000.xml | 4 +- corpus/page-lifecycle/creation/cold/read/page-001.xml | 2 +- corpus/page-lifecycle/creation/cold/read/page-002.xml | 4 +- corpus/page-lifecycle/creation/cold/read/page-003.xml | 2 +- corpus/page-lifecycle/creation/cold/read/page-004.xml | 2 +- corpus/page-lifecycle/creation/cold/read/page-005.xml | 2 +- corpus/page-lifecycle/creation/cold/read/page-006.xml | 4 +- corpus/page-lifecycle/creation/cold/read/page-007.xml | 4 +- corpus/page-lifecycle/creation/cold/read/page-008.xml | 2 +- corpus/page-lifecycle/creation/cold/read/page-009.xml | 2 +- corpus/page-lifecycle/creation/cold/read/page-010.xml | 2 +- corpus/page-lifecycle/creation/cold/read/page-011.xml | 4 +- corpus/page-lifecycle/creation/cold/read/page-012.xml | 4 +- corpus/page-lifecycle/creation/followup/Lifecycle.one | Bin 72088 -> 71472 bytes corpus/page-lifecycle/creation/followup/cold/notebook/Lifecycle.one | Bin 72088 -> 72128 bytes corpus/page-lifecycle/creation/followup/cold/read/hierarchy.xml | 2 +- corpus/page-lifecycle/creation/followup/cold/read/page-000.xml | 4 +- corpus/page-lifecycle/creation/followup/cold/read/page-001.xml | 4 +- corpus/page-lifecycle/creation/followup/cold/read/page-002.xml | 2 +- corpus/page-lifecycle/creation/followup/cold/read/page-003.xml | 2 +- corpus/page-lifecycle/creation/followup/cold/read/page-004.xml | 4 +- corpus/page-lifecycle/creation/followup/cold/read/page-005.xml | 4 +- corpus/page-lifecycle/creation/followup/cold/read/page-006.xml | 4 +- corpus/page-lifecycle/creation/followup/cold/read/page-007.xml | 4 +- corpus/page-lifecycle/creation/followup/cold/read/page-008.xml | 2 +- corpus/page-lifecycle/creation/followup/cold/read/page-009.xml | 4 +- corpus/page-lifecycle/creation/followup/cold/read/page-010.xml | 4 +- corpus/page-lifecycle/creation/followup/cold/read/page-011.xml | 4 +- corpus/page-lifecycle/creation/followup/cold/read/page-012.xml | 4 +- corpus/page-lifecycle/creation/native/cold/read/hierarchy.xml | 2 +- corpus/page-lifecycle/creation/native/cold/read/page-000.xml | 2 +- corpus/page-lifecycle/creation/native/cold/read/page-001.xml | 4 +- corpus/page-lifecycle/creation/native/cold/read/page-002.xml | 4 +- corpus/page-lifecycle/creation/native/cold/read/page-003.xml | 2 +- corpus/page-lifecycle/creation/native/cold/read/page-004.xml | 4 +- corpus/page-lifecycle/creation/native/cold/read/page-005.xml | 2 +- corpus/page-lifecycle/creation/native/cold/read/page-006.xml | 2 +- corpus/page-lifecycle/creation/native/cold/read/page-007.xml | 4 +- corpus/page-lifecycle/creation/native/cold/read/page-008.xml | 2 +- corpus/page-lifecycle/creation/native/cold/read/page-009.xml | 4 +- corpus/page-lifecycle/creation/native/cold/read/page-010.xml | 4 +- corpus/page-lifecycle/creation/native/cold/read/page-011.xml | 4 +- corpus/page-lifecycle/creation/native/cold/read/page-012.xml | 4 +- corpus/page-lifecycle/creation/native/notebook/Lifecycle.one | Bin 69000 -> 67896 bytes corpus/page-lifecycle/creation/native/read/hierarchy.xml | 2 +- corpus/page-lifecycle/creation/native/read/page-000.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-001.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-002.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-003.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-004.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-005.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-006.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-007.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-008.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-009.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-010.xml | 2 +- corpus/page-lifecycle/creation/native/read/page-011.xml | 4 +- corpus/page-lifecycle/creation/native/read/page-012.xml | 2 +- corpus/page-lifecycle/creation/provenance.json | 32 +- corpus/page-lifecycle/offline-creation/candidate/pages.one | Bin 50384 -> 53720 bytes corpus/page-lifecycle/offline-creation/cold/notebook/pages.one | Bin 51864 -> 55200 bytes corpus/page-lifecycle/offline-creation/cold/read/hierarchy.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-000.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-001.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-002.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-003.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-004.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-005.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-006.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-007.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-008.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-009.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-010.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-011.xml | 2 +- corpus/page-lifecycle/offline-creation/cold/read/page-012.xml | 2 +- corpus/page-lifecycle/offline-creation/provenance.json | 6 +- corpus/page-lifecycle/offline-edits/provenance.json | 18 +- corpus/page-lifecycle/offline-edits/twelve-clients/candidate/manifest.json | 3200 ++++++++++++++++++++------------ corpus/page-lifecycle/offline-edits/twelve-clients/candidate/pages.one | Bin 155344 -> 152360 bytes corpus/page-lifecycle/offline-edits/twelve-clients/cold/commands.jsonl | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/machine.json | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/notebook/Open Notebook.onetoc2 | Bin 4792 -> 4792 bytes corpus/page-lifecycle/offline-edits/twelve-clients/cold/notebook/pages.one | Bin 169872 -> 166888 bytes corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/environment.json | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/hierarchy.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-000.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-001.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-002.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-003.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-004.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-005.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-006.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-007.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-008.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-009.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-010.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-011.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-012.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-013.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-014.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-015.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-016.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-017.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-018.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-019.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-020.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-021.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-022.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-023.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-024.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-025.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-026.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-027.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-028.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-029.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-030.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-031.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-032.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-033.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-034.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-035.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-036.xml | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/run.json | 2 +- corpus/page-lifecycle/offline-edits/twelve-clients/cold/source.json | 12 +- corpus/page-lifecycle/page-edits/stress/candidate/movement.one | Bin 2635536 -> 959216 bytes corpus/page-lifecycle/page-edits/stress/cold/notebook/Open Notebook.onetoc2 | Bin 4792 -> 4792 bytes corpus/page-lifecycle/page-edits/stress/cold/notebook/movement.one | Bin 2635536 -> 959216 bytes corpus/page-lifecycle/page-edits/stress/cold/read/environment.json | 2 +- corpus/page-lifecycle/page-edits/stress/cold/read/hierarchy.xml | 2 +- corpus/page-lifecycle/page-edits/stress/cold/read/page-000.xml | 2 +- corpus/page-lifecycle/page-edits/stress/cold/read/page-001.xml | 2 +- corpus/page-lifecycle/page-edits/stress/provenance.json | 12 +- corpus/paragraph-edit/README.md | 3 +- corpus/picture-edit/inserted/candidate/Open Notebook.onetoc2 | Bin 1604 -> 1604 bytes corpus/picture-edit/inserted/candidate/pictures.one | Bin 7064 -> 7776 bytes corpus/picture-edit/inserted/cold/commands.jsonl | 2 +- corpus/picture-edit/inserted/cold/machine.json | 2 +- corpus/picture-edit/inserted/cold/notebook/Open Notebook.onetoc2 | Bin 3764 -> 3764 bytes corpus/picture-edit/inserted/cold/notebook/pictures.one | Bin 7064 -> 9272 bytes corpus/picture-edit/inserted/cold/read/environment.json | 2 +- corpus/picture-edit/inserted/cold/read/hierarchy.xml | 2 +- corpus/picture-edit/inserted/cold/read/page-000.xml | 4 +- corpus/picture-edit/inserted/cold/run.json | 2 +- corpus/picture-edit/inserted/cold/source.json | 10 +- corpus/picture-edit/page-level/candidate/Open Notebook.onetoc2 | Bin 1604 -> 1604 bytes corpus/picture-edit/page-level/candidate/pictures.one | Bin 5656 -> 6560 bytes corpus/picture-edit/page-level/cold/commands.jsonl | 2 +- corpus/picture-edit/page-level/cold/machine.json | 2 +- corpus/picture-edit/page-level/cold/notebook/Open Notebook.onetoc2 | Bin 3764 -> 3764 bytes corpus/picture-edit/page-level/cold/notebook/pictures.one | Bin 5656 -> 8056 bytes corpus/picture-edit/page-level/cold/read/environment.json | 2 +- corpus/picture-edit/page-level/cold/read/hierarchy.xml | 2 +- corpus/picture-edit/page-level/cold/read/page-000.xml | 2 +- corpus/picture-edit/page-level/cold/run.json | 2 +- corpus/picture-edit/page-level/cold/source.json | 10 +- corpus/table-edit/README.md | 4 +- corpus/table-edit/created/candidate/Open Notebook.onetoc2 | Bin 1604 -> 1604 bytes corpus/table-edit/created/candidate/tables.one | Bin 11016 -> 10936 bytes corpus/table-edit/created/cold/commands.jsonl | 2 +- corpus/table-edit/created/cold/machine.json | 2 +- corpus/table-edit/created/cold/notebook/Open Notebook.onetoc2 | Bin 3764 -> 3764 bytes corpus/table-edit/created/cold/notebook/tables.one | Bin 12512 -> 12432 bytes corpus/table-edit/created/cold/read/environment.json | 2 +- corpus/table-edit/created/cold/read/hierarchy.xml | 2 +- corpus/table-edit/created/cold/read/page-000.xml | 2 +- corpus/table-edit/created/cold/run.json | 2 +- corpus/table-edit/created/cold/source.json | 10 +- corpus/table-edit/nested/candidate/Open Notebook.onetoc2 | Bin 1612 -> 1612 bytes corpus/table-edit/nested/candidate/synthetic.one | Bin 91192 -> 90608 bytes corpus/table-edit/nested/cold/commands.jsonl | 2 +- corpus/table-edit/nested/cold/machine.json | 2 +- corpus/table-edit/nested/cold/notebook/Open Notebook.onetoc2 | Bin 3780 -> 3780 bytes corpus/table-edit/nested/cold/notebook/synthetic.one | Bin 94920 -> 94336 bytes corpus/table-edit/nested/cold/read/environment.json | 2 +- corpus/table-edit/nested/cold/read/hierarchy.xml | 2 +- corpus/table-edit/nested/cold/read/page-000.xml | 6 +- corpus/table-edit/nested/cold/read/page-001.xml | 6 +- corpus/table-edit/nested/cold/read/page-002.xml | 6 +- corpus/table-edit/nested/cold/read/page-003.xml | 6 +- corpus/table-edit/nested/cold/read/page-004.xml | 5 +- corpus/table-edit/nested/cold/read/page-005.xml | 23 +- corpus/table-edit/nested/cold/read/page-006.xml | 6 +- corpus/table-edit/nested/cold/read/page-007.xml | 5 +- corpus/table-edit/nested/cold/read/page-008.xml | 5 +- corpus/table-edit/nested/cold/read/page-009.xml | 6 +- corpus/table-edit/nested/cold/read/page-010.xml | 23 +- corpus/table-edit/nested/cold/read/page-011.xml | 5 +- corpus/table-edit/nested/cold/run.json | 2 +- corpus/table-edit/nested/cold/source.json | 10 +- crates/notebook/README.md | 10 +- crates/notebook/examples/queue_scale.rs | 6 +- crates/notebook/examples/recovery_probe.rs | 6 +- crates/notebook/examples/smb_offline_client.rs | 20 +- crates/notebook/src/images.rs | 31 +- crates/notebook/src/lib.rs | 44 + crates/notebook/src/merge.rs | 16 + crates/notebook/src/session.rs | 62 +- crates/notebook/src/smb/directory.rs | 1 + crates/notebook/src/smb/mod.rs | 34 +- crates/notebook/src/smb/remote.rs | 10 +- crates/notebook/src/smb/tests.rs | 48 + crates/notebook/src/sync.rs | 30 +- crates/notebook/src/worker.rs | 17 +- crates/notebook/tests/assets.rs | 2 +- crates/notebook/tests/support/model_schedule.rs | 13 +- crates/notebook/tests/support/page_schedule.rs | 14 +- crates/notebook/tests/support/server.rs | 9 +- crates/notebook/tests/sync.rs | 55 +- crates/notebook/tests/sync_page.rs | 2 + crates/notebook/tests/sync_paragraph.rs | 14 +- crates/notebook/tests/sync_worker.rs | 25 +- crates/onestore/README.md | 13 +- crates/onestore/src/active.rs | 236 ++- crates/onestore/src/commit.rs | 278 ++- crates/onestore/src/create.rs | 69 +- crates/onestore/src/document.rs | 198 +- crates/onestore/src/files.rs | 79 +- crates/onestore/src/formatting.rs | 26 +- crates/onestore/src/insertion.rs | 99 +- crates/onestore/src/lib.rs | 9 +- crates/onestore/src/objects.rs | 4 +- crates/onestore/src/op/apply.rs | 1188 ++++++++++++ crates/onestore/src/op/content.rs | 746 ++++++++ crates/onestore/src/op/levels.rs | 143 ++ crates/onestore/src/op/lower.rs | 1778 ++++++++++++++++++ crates/onestore/src/op/mod.rs | 265 +++ crates/onestore/src/op/model.rs | 1245 +++++++++++++ crates/onestore/src/op/properties.rs | 376 ++++ crates/onestore/src/op/table.rs | 214 +++ crates/onestore/src/op/tests.rs | 2150 +++++++++++++++++++++ crates/onestore/src/outline.rs | 11 + crates/onestore/src/page/ink.rs | 2 +- crates/onestore/src/page/mod.rs | 102 +- crates/onestore/src/page/write.rs | 2171 ++++------------------ crates/onestore/src/pages.rs | 611 +++--- crates/onestore/src/paragraph.rs | 115 +- crates/onestore/src/section.rs | 1235 ++++++++++++ crates/onestore/src/snapshot.rs | 2 +- crates/onestore/src/store.rs | 378 ++-- crates/onestore/src/write.rs | 1170 +++++++++--- crates/onestore/src/write/tests/multi.rs | 16 +- crates/onestore/tests/edit.rs | 13 +- crates/onestore/tests/page.rs | 73 + crates/onestore/tests/page_math.rs | 39 + crates/onestore/tests/page_tables.rs | 20 + crates/onestore/tests/page_writer.rs | 13 +- crates/onestore/tests/paragraph.rs | 48 +- crates/onestore/tests/transaction.rs | 107 ++ tools/canvas/README.md | 8 +- tools/test_page_creation.py | 4 +- tools/test_page_movement.py | 2 +- tools/verify_page_creation.py | 15 +- 330 files changed, 15199 insertions(+), 4527 deletions(-)