diff --git a/corpus/page-lifecycle/offline-edits/README.md b/corpus/page-lifecycle/offline-edits/README.md new file mode 100644 index 0000000000000000000000000000000000000000..229eb140c29c299bc9b09d8d7eb68fccf6735fef --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/README.md @@ -0,0 +1,45 @@ +# Offline page order and indentation + +Eighteen cases combine two offline intents with the nine retained native movement +states in `../movement`. Each starts from `../04-nested`, queues an indentation +change or explicit three-page movement, then a dependent body-text edit. Nine +cases reconcile directly; nine require reviewed placement retaining the original +page and allocated series identities. Both edits survive cache reopen. + +Each case contains its generated candidate and intent manifest, plus a fresh +OneNote 2010 capture. Native page order, text and character formatting agree; +active graphs compare exactly and all bytes after the 1024-byte header remain +unchanged. The warm native promoted-parent input contains stale cached indentation; +the Rust topology edit refreshes it before publication. Its strict comparison +needs no stale-cache exception. + +`twelve-clients` starts twelve independent offline branches from one 37-page +section. Each branch reorders two pages, nests another, and inserts its own body +outline. All 24 publications reconcile without review. The native reopen retains +all page identities, order, indentation and twelve distinct Unicode bodies. +OneNote fills the seed page's absent optional metadata copy; the verifier checks +its complete contents and references. `provenance.json` records all nineteen +captures, source hashes, scripts, base image and clone removal. + +Reproduce candidates with new absolute output directories: + +```sh +ONESTORE_OFFLINE_PAGE_EDIT_OUTPUT=/tmp/one-page-edits cargo test -p onestore-offline --all-features --test sync pages::native_page_changes_reconcile_with_atomic_offline_batches_and_review -- --exact +python tools/offline_page_edits.py /tmp/one-page-edits /tmp/one-page-edits-cold --workers 4 +ONESTORE_OFFLINE_PAGE_CLIENT_OUTPUT=/tmp/one-page-clients cargo test -p onestore-offline --all-features --test sync pages::twelve_disjoint_page_batches_merge_with_dependent_bodies_without_review -- --exact +python tools/native_runner.py /tmp/one-page-clients /tmp/one-page-clients-cold --expected-pages 37 --collect-notebook +``` + +After building the `onestore-notebook` document example, run +`python -m unittest discover -s tools -p test_page_movement.py -v` to compare the +retained captures. The `offline_page` sanitizer target exercises twelve replicas, +atomic page batches, conflict review, creation, body insertion, cache reopen and +interrupted publication using the shared Rust schedule model. `schedules` retains +the twelve initial inputs for ASan seed 1987 (163 executions, including 150 +mutations). Link them into a new writable corpus directory, then run +`cargo +nightly fuzz run offline_page CORPUS -- -seed=1987 -max_total_time=240 +-timeout=30` from the repository root. + +These captures establish native compatibility of reconciled results. The twelve +branches publish serially; the schedule model varies their interleavings. Neither +is a simultaneous native/Rust SMB campaign or physical power-loss test. diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..a5f9214f1d6f124243acbf2deece1042eb54b0ed Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..a2e59f7c6b0534d4baf1b7c839a80bc0f1be89ab --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/candidate/manifest.json @@ -0,0 +1,163 @@ +{ + "confirmations": 0, + "conflict": true, + "mode": "group", + "original": [ + { + "guid": [ + 252, + 123, + 153, + 77, + 36, + 185, + 51, + 68, + 157, + 175, + 43, + 0, + 120, + 23, + 139, + 98 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 98, + 233, + 125, + 166, + 225, + 132, + 140, + 70, + 165, + 161, + 117, + 217, + 23, + 3, + 116, + 120 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 239, + 150, + 201, + 240, + 46, + 241, + 31, + 69, + 183, + 57, + 169, + 176, + 1, + 44, + 199, + 228 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [45, 245, 5, 231, 195, 155, 59, 69, 132, 30, 135, 57, 44, 58, 98, 121], n: 1 } })", + "phase": "01-demoted-parent", + "publications": 2, + "reviewed": [ + { + "guid": [ + 252, + 123, + 153, + 77, + 36, + 185, + 51, + 68, + 157, + 175, + 43, + 0, + 120, + 23, + 139, + 98 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 98, + 233, + 125, + 166, + 225, + 132, + 140, + 70, + 165, + 161, + 117, + 217, + 23, + 3, + 116, + 120 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 239, + 150, + 201, + 240, + 46, + 241, + 31, + 69, + 183, + 57, + 169, + 176, + 1, + 44, + 199, + 228 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [158, 168, 187, 37, 45, 131, 162, 76, 190, 222, 10, 76, 236, 19, 235, 183], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..80f1e99b69c3e9adc7c434113a25aee76c55207e Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..8ddbea76bb664363d095779528aa88347d14dd60 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..3ee348a35859185d865152b1eaf187df0ec1474d --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-000.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..12e634fad1f842455d581e11d8dfd37c842a9d6e --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-001.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..85216cfdc05263624742fe73ce0d7c08165c340b --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..20740711b6cc7e8fe8fe29c6bb4de61f5e8c8517 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-003.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..d32f327d6c8a91806bfac5bff526356135178802 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..d60aad063d3af51798dd95027f7d15ed704868bb --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-005.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..c63d9a1990243b8a47c5238a44ba7fd6cb62c339 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..797255f7f07481ec6a652be069428287c508a4fa --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..d25e3ec6e0fd06cbc6a68c9a425e4d1e09677ad4 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-01-demoted-parent/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..353b3b73aca4f83700b1a37ca34883680a4f7e88 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..0a91ee206e09713c25317a6d6e58133d910125ec --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/candidate/manifest.json @@ -0,0 +1,163 @@ +{ + "confirmations": 0, + "conflict": false, + "mode": "group", + "original": [ + { + "guid": [ + 205, + 25, + 35, + 174, + 21, + 169, + 174, + 72, + 182, + 223, + 57, + 112, + 191, + 108, + 153, + 199 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 59, + 191, + 216, + 214, + 87, + 39, + 49, + 64, + 147, + 84, + 80, + 127, + 29, + 240, + 132, + 241 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 111, + 54, + 53, + 101, + 131, + 37, + 42, + 79, + 140, + 237, + 226, + 118, + 126, + 82, + 234, + 186 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [67, 193, 171, 179, 22, 209, 32, 71, 157, 84, 15, 231, 121, 87, 141, 208], n: 1 } })", + "phase": "02-promoted-parent", + "publications": 2, + "reviewed": [ + { + "guid": [ + 205, + 25, + 35, + 174, + 21, + 169, + 174, + 72, + 182, + 223, + 57, + 112, + 191, + 108, + 153, + 199 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 59, + 191, + 216, + 214, + 87, + 39, + 49, + 64, + 147, + 84, + 80, + 127, + 29, + 240, + 132, + 241 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 111, + 54, + 53, + 101, + 131, + 37, + 42, + 79, + 140, + 237, + 226, + 118, + 126, + 82, + 234, + 186 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [117, 117, 239, 204, 176, 55, 94, 77, 143, 225, 32, 46, 243, 247, 87, 45], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..dbde03ccf5d068f64771aff896b56afec51957d3 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..e1c3260092a2a2888a6fac8aad6e3ec09423dc88 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..b49393e0bec505558d406e92368349c3179da095 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-000.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..ac53606f49a7e98edbe97b13d95831ad3cffb429 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..e59d479b7161382835c959d60af6b9d2167eaa1d --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..7567ea80bced6c3c2782e8c6f4ed224dbd364307 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-003.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..1a8ea955732ef95b63306495a01d7005585c2a55 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..a0d1ae4322235093fe1aee25115d21195f9ba149 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-005.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..af74b0b3ce0f12e16643d21e3c773980617b707c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..19cfa6e08a9bad712003c9abbd1636a641df3c7c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..b756f6f806dde3c05a91037e60add9566ee9eefe --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-02-promoted-parent/cold/read/page-008.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..2c360d4926f138ed90c66657c9eaa4a905039b3b Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..78fde90ddefdfa2372df478c17fd4cdc2a9a770d --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/candidate/manifest.json @@ -0,0 +1,163 @@ +{ + "confirmations": 1, + "conflict": false, + "mode": "group", + "original": [ + { + "guid": [ + 59, + 56, + 245, + 11, + 183, + 166, + 17, + 77, + 128, + 103, + 4, + 198, + 84, + 31, + 176, + 132 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 125, + 120, + 25, + 176, + 131, + 146, + 79, + 66, + 152, + 72, + 8, + 5, + 112, + 144, + 227, + 13 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 13, + 28, + 56, + 21, + 0, + 191, + 211, + 65, + 137, + 203, + 79, + 98, + 79, + 246, + 200, + 111 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [254, 121, 90, 44, 97, 44, 81, 11, 16, 148, 125, 34, 133, 142, 122, 129], n: 1 } })", + "phase": "03-selected-group-move", + "publications": 1, + "reviewed": [ + { + "guid": [ + 59, + 56, + 245, + 11, + 183, + 166, + 17, + 77, + 128, + 103, + 4, + 198, + 84, + 31, + 176, + 132 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 125, + 120, + 25, + 176, + 131, + 146, + 79, + 66, + 152, + 72, + 8, + 5, + 112, + 144, + 227, + 13 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 13, + 28, + 56, + 21, + 0, + 191, + 211, + 65, + 137, + 203, + 79, + 98, + 79, + 246, + 200, + 111 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [60, 10, 128, 166, 67, 192, 180, 77, 159, 109, 56, 86, 122, 77, 206, 97], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..c8ef9758827843a7de8a5841061ec81a50f82f5b Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..3f8eb5430a158b16c4b13ad412368a1caf5921fd --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..4606c1dc986c96fa06b62cb2ab7ef72cd82a41e9 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-000.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..83dc60453e4f4ccc1df31be48d5f12956e928ec6 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..547a567b37b677d592a76297e9b5f1d0aa98d9d1 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc1955130f89864806f7a4e6b2425067a0fe607d --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-003.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..555151550341e889451c675f7892271a0bbd541a --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..8692105a5442dfb9154f32bc03bb7b4d3ceb88b9 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-005.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..93de8fbb47c60089f4b428c30113904416f32b9c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..a944412ed9ca6e8c07515b1301daf91f4be599e4 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..826cf6ceb894ab1f79787892ad911ae1b4e9e5a7 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-03-selected-group-move/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..f2246dc48f1be0aac3a93e92973f6d97df0093e6 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..542a43c578e4c9ac7562e829f316a13ed1899c30 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/candidate/manifest.json @@ -0,0 +1,163 @@ +{ + "confirmations": 0, + "conflict": true, + "mode": "group", + "original": [ + { + "guid": [ + 199, + 220, + 106, + 186, + 152, + 76, + 232, + 72, + 177, + 255, + 217, + 123, + 93, + 179, + 135, + 200 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 201, + 193, + 170, + 254, + 196, + 54, + 169, + 65, + 154, + 108, + 193, + 198, + 218, + 35, + 28, + 28 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 115, + 244, + 83, + 70, + 165, + 185, + 39, + 79, + 140, + 95, + 5, + 252, + 174, + 129, + 183, + 255 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [1, 23, 42, 161, 80, 203, 9, 65, 141, 37, 73, 126, 83, 54, 184, 88], n: 1 } })", + "phase": "04-subpage-move", + "publications": 2, + "reviewed": [ + { + "guid": [ + 199, + 220, + 106, + 186, + 152, + 76, + 232, + 72, + 177, + 255, + 217, + 123, + 93, + 179, + 135, + 200 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 201, + 193, + 170, + 254, + 196, + 54, + 169, + 65, + 154, + 108, + 193, + 198, + 218, + 35, + 28, + 28 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 115, + 244, + 83, + 70, + 165, + 185, + 39, + 79, + 140, + 95, + 5, + 252, + 174, + 129, + 183, + 255 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [240, 236, 238, 203, 108, 116, 178, 66, 158, 216, 234, 236, 225, 51, 111, 153], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..fd9993809907ef62e50d0048d6d001c8894415d9 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..29b297008f732d1b59dc23c73eab41dddf83117c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..641d0f427604e5f658a64c761b62edad722521ca --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-000.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..47e7dc37a7d1165b83787020b1c651c6a4795499 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..45c7729e4c7fa4bf41f7188e5b304d4537c9e701 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..89f9bdf8bba3bc0ef1c2475a3ea8847817f8a835 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-003.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..95930861ec6efc5d6f67f1f9aa08305bf5872d00 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..6046d9cef4384d45cb8821d442a9b765638dffa1 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-005.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..90449ac07241299d3bddba540c1b14e4c8f33dfc --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..9328dbea04689335589756d508d10632a932f564 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..f232d0470aa691fd2d252c686b33c3547a487dd9 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-04-subpage-move/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..a3c872c9c655a1dd02b125a7ddb85c14f079febf Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..01347c85d709f49e59aed974458f98da97aca2ba --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/candidate/manifest.json @@ -0,0 +1,163 @@ +{ + "confirmations": 0, + "conflict": true, + "mode": "group", + "original": [ + { + "guid": [ + 226, + 236, + 241, + 200, + 113, + 141, + 171, + 65, + 191, + 3, + 115, + 230, + 170, + 34, + 82, + 43 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 20, + 121, + 4, + 218, + 137, + 56, + 175, + 77, + 160, + 58, + 161, + 132, + 129, + 41, + 1, + 141 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 231, + 161, + 138, + 72, + 118, + 99, + 127, + 79, + 169, + 229, + 47, + 28, + 85, + 29, + 216, + 80 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [183, 145, 48, 129, 50, 121, 10, 64, 180, 97, 141, 196, 85, 188, 142, 54], n: 1 } })", + "phase": "05-insert-before-subpage", + "publications": 2, + "reviewed": [ + { + "guid": [ + 226, + 236, + 241, + 200, + 113, + 141, + 171, + 65, + 191, + 3, + 115, + 230, + 170, + 34, + 82, + 43 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 20, + 121, + 4, + 218, + 137, + 56, + 175, + 77, + 160, + 58, + 161, + 132, + 129, + 41, + 1, + 141 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 231, + 161, + 138, + 72, + 118, + 99, + 127, + 79, + 169, + 229, + 47, + 28, + 85, + 29, + 216, + 80 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [31, 6, 219, 197, 110, 152, 68, 76, 172, 35, 161, 30, 41, 171, 164, 154], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..7264884661d4692d36a36ae7faa62496b462725c Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..ff049c9c8cfcc579a6512cf18a203fad3f1fb18e --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..56409f471881843d6412125de69260a6385043af --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-000.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..2c1397fd535eba6b9d56e0ff3d815b6358beb5b7 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-001.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..d9a41c904e5c8b0de61054913ce252b9bbbfa67f --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-002.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..138fd929e3fc8b18fcbef521a1849a4a69c66247 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-003.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..370d826a803e0667a73b1f09ac1179562cb1f2e3 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-004.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..6df0b9a75d431ad7e3c4d401a6b0a89c777c1789 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-005.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..da5ff0193b117ff66aec2ac8ce8e000cf56f39bd --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..5d88cb6927aee56fe9206fbc673d0cb058846de6 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..817b4dd435498d30b4d9eba16e70e9dbc0ffe789 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-05-insert-before-subpage/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..cba6a1d547983632bfdbcb8f010dd7237341409f Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..7e16fb916c1d7d8906503fddf3aa2ddfac6125d8 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/candidate/manifest.json @@ -0,0 +1,163 @@ +{ + "confirmations": 1, + "conflict": false, + "mode": "group", + "original": [ + { + "guid": [ + 250, + 94, + 81, + 44, + 38, + 41, + 18, + 79, + 176, + 32, + 212, + 55, + 124, + 86, + 24, + 127 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 212, + 192, + 147, + 247, + 2, + 22, + 36, + 69, + 191, + 7, + 210, + 26, + 138, + 233, + 236, + 190 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 161, + 179, + 107, + 180, + 28, + 108, + 129, + 70, + 167, + 177, + 5, + 12, + 8, + 212, + 104, + 95 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [100, 78, 16, 188, 187, 38, 50, 6, 26, 153, 42, 58, 131, 32, 56, 215], n: 1 } })", + "phase": "06-promoted-level-two", + "publications": 1, + "reviewed": [ + { + "guid": [ + 250, + 94, + 81, + 44, + 38, + 41, + 18, + 79, + 176, + 32, + 212, + 55, + 124, + 86, + 24, + 127 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 212, + 192, + 147, + 247, + 2, + 22, + 36, + 69, + 191, + 7, + 210, + 26, + 138, + 233, + 236, + 190 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 161, + 179, + 107, + 180, + 28, + 108, + 129, + 70, + 167, + 177, + 5, + 12, + 8, + 212, + 104, + 95 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [196, 162, 225, 119, 228, 238, 138, 70, 157, 106, 207, 59, 244, 169, 255, 34], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..8ca150210d1bdf4eff78e0c77821370b130d1c8b Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..185019a1ab9cd23e9cf12a88956802e3b577634b --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..ca35946118950b08b9539761e4b41bf4cbfd359a --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-000.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..f93737305928e254976a6629e1898fa793f270f1 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..c206d2154f0423e3e8ab0ad5b12f913dbfaa16ca --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd7332627d400e0f8cc6f01b67216e1dd710083c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-003.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..c683033bab3aaa11cc4253ac8fb3ad8d67031ea3 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-004.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..cf69328c7c5908b7fd44355ceabe557211e0489c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-005.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..85aa554da7b9f5aab922f37fc9c1675dbfeffe94 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..fdd0ee6268a31303cb6f99d4f96f83c63eddc1a0 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..2e34b0f3fc827fdb87fe607bc5fb25c387382031 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-06-promoted-level-two/cold/read/page-008.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..de29bf36f6123310faecad194e217a12ab0e6f6b Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..3758d43618fe85fbe4fd7de5191e8361846448be --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/candidate/manifest.json @@ -0,0 +1,163 @@ +{ + "confirmations": 0, + "conflict": true, + "mode": "group", + "original": [ + { + "guid": [ + 155, + 138, + 13, + 62, + 124, + 243, + 228, + 74, + 161, + 125, + 95, + 246, + 248, + 243, + 219, + 170 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 13, + 25, + 247, + 66, + 234, + 19, + 150, + 74, + 135, + 140, + 17, + 226, + 15, + 18, + 189, + 93 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 91, + 125, + 117, + 74, + 205, + 55, + 70, + 73, + 176, + 8, + 196, + 33, + 10, + 8, + 124, + 28 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [42, 89, 136, 237, 122, 6, 54, 72, 145, 166, 231, 104, 38, 49, 121, 133], n: 1 } })", + "phase": "07-promoted-root", + "publications": 2, + "reviewed": [ + { + "guid": [ + 155, + 138, + 13, + 62, + 124, + 243, + 228, + 74, + 161, + 125, + 95, + 246, + 248, + 243, + 219, + 170 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 13, + 25, + 247, + 66, + 234, + 19, + 150, + 74, + 135, + 140, + 17, + 226, + 15, + 18, + 189, + 93 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 91, + 125, + 117, + 74, + 205, + 55, + 70, + 73, + 176, + 8, + 196, + 33, + 10, + 8, + 124, + 28 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [49, 218, 252, 142, 98, 154, 225, 64, 133, 164, 9, 6, 69, 181, 239, 103], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..bb5b87148b9f9bf18e4582924e3581ddeff61ecd Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3424723c82d4908b2404fa23103d92e3b66841a --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..3553c70f17c69fce246d097b504465d5963eb45b --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-000.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..2a7c71e6b1f9c495ba5e3cc414dd13b3ab0170f4 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..289cd9a0fcd89bd53e213787caea05bcbdf47350 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..af1c9da6f6089d17289d846c3a8add2093994abe --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-003.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..e47d053d03a5bec82284117e0b5569130210aa73 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..e04dc2d8efee949ac19d15797a78471585a119b1 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-005.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..4edbbb4144a12903a51120c8309eb2d601f6aaaf --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..1e27f5f82f040e40fa5cd3c5ee7985a2a9d2fa38 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..cbe74728ae8462ad4ac4a1f837792ae3b0db959f --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-07-promoted-root/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..03799d8fb1b754c9d8fc2abf2ba8d241eeed9c0e Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..caf701d28a230ae01671b70c8be59214e3372402 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/candidate/manifest.json @@ -0,0 +1,163 @@ +{ + "confirmations": 0, + "conflict": true, + "mode": "group", + "original": [ + { + "guid": [ + 19, + 199, + 233, + 32, + 233, + 151, + 117, + 77, + 128, + 237, + 235, + 14, + 49, + 245, + 253, + 90 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 11, + 59, + 230, + 216, + 152, + 34, + 39, + 72, + 141, + 162, + 178, + 217, + 3, + 248, + 183, + 124 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 131, + 53, + 255, + 252, + 76, + 246, + 212, + 70, + 142, + 200, + 250, + 254, + 150, + 118, + 235, + 6 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [31, 59, 135, 227, 202, 4, 204, 77, 149, 2, 51, 50, 192, 123, 144, 152], n: 1 } })", + "phase": "08-collapsed-group-move", + "publications": 2, + "reviewed": [ + { + "guid": [ + 19, + 199, + 233, + 32, + 233, + 151, + 117, + 77, + 128, + 237, + 235, + 14, + 49, + 245, + 253, + 90 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 11, + 59, + 230, + 216, + 152, + 34, + 39, + 72, + 141, + 162, + 178, + 217, + 3, + 248, + 183, + 124 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 131, + 53, + 255, + 252, + 76, + 246, + 212, + 70, + 142, + 200, + 250, + 254, + 150, + 118, + 235, + 6 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [177, 90, 34, 188, 147, 50, 135, 66, 186, 165, 239, 21, 214, 159, 188, 81], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..3afa054f65cb9ea344fa96af9d88646518899f8c Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..a5f391d3c28e56e3b14f485f63ce38f1cfbd9fd2 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..22e7ee2a0615a449b452f4f99a9dbfce701fb25c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-000.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..4db172a21b1890fef631c57beae1ab99ab83cb13 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..823b251e26e2cb4da7e5b70c94eb54648611dda8 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-002.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..388737348575b51f6900f2f02ac2c9b953017ec0 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-003.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..2f3602eabda6c615ae44c05bba7d06494ca14132 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-004.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..4bb6531fd27a0faff6f2af3cf1f3525be42bfb45 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-005.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..e926ab1fdc36a63521b452336ed7a88865e4556b --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..22880c399a2281975b80e0e5a12e21ae0fbd8429 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..c4ba10d560dc86dbabe4a084ffcfe4c8a4f2bb94 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-08-collapsed-group-move/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-single-page/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..68b9eda5d841c574768463be8ae8c995e9ef4865 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-single-page/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/group-single-page/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..082c1625a21744d940f99f41423fc3454ef9447f --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/candidate/manifest.json @@ -0,0 +1,163 @@ +{ + "confirmations": 0, + "conflict": true, + "mode": "group", + "original": [ + { + "guid": [ + 17, + 13, + 99, + 39, + 16, + 219, + 3, + 75, + 146, + 158, + 103, + 67, + 152, + 150, + 129, + 4 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 99, + 139, + 226, + 4, + 217, + 28, + 58, + 66, + 179, + 136, + 138, + 139, + 19, + 67, + 135, + 234 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 77, + 239, + 134, + 254, + 131, + 88, + 202, + 64, + 174, + 43, + 16, + 100, + 98, + 151, + 16, + 95 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [44, 196, 75, 170, 155, 16, 195, 70, 129, 191, 203, 51, 52, 196, 196, 61], n: 1 } })", + "phase": "single-page", + "publications": 2, + "reviewed": [ + { + "guid": [ + 17, + 13, + 99, + 39, + 16, + 219, + 3, + 75, + 146, + 158, + 103, + 67, + 152, + 150, + 129, + 4 + ], + "level": 1, + "position": { + "Before": null + }, + "space": "{8A3D5318-2F37-02D8-0DC9-CC0BC689209F},1" + }, + { + "guid": [ + 99, + 139, + 226, + 4, + 217, + 28, + 58, + 66, + 179, + 136, + 138, + 139, + 19, + 67, + 135, + 234 + ], + "level": 2, + "position": { + "Before": null + }, + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + }, + { + "guid": [ + 77, + 239, + 134, + 254, + 131, + 88, + 202, + 64, + 174, + 43, + 16, + 100, + 98, + 151, + 16, + 95 + ], + "level": 3, + "position": { + "Before": null + }, + "space": "{8A6DBA48-33BB-0681-2F02-2C73A811E8B8},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [16, 25, 161, 195, 247, 106, 18, 79, 145, 52, 79, 155, 148, 117, 105, 144], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/group-single-page/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..a7d1c8cd2ee3498fea9e95436dd205df703dca87 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/group-single-page/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..31ab6ea3516975695579433603f358f0b113c7de --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..8c56e657acab1e2645db0b7db0f439938d35edb5 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-000.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..07d1abde47dcb058d2b8ce2f5d88295b0af9025f --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..75ce5c196b2c8f107467dac1b98b5412e5eb49fc --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..e1cdc9832cc62970e87e8f1e8e17d0201ea058fd --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-003.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..f3e2f07d0b4998eb6538beb4e8fe7452c77199ce --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-004.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..7faf3438e5bfe2cd65b5186b3f2d691fa5621240 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-005.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..bc6ed999c299b9cf092a1ef69de64ba88798ead7 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-006.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..0ee2447c4511ff99381a18061d260d4602a8321c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-007.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd65d743951471d17467b4e8438893f7d4ebff7a --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/group-single-page/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..2b6fd03c045ea6a2c4f665e41b995cd199b10e3b Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..ba631c1c9c546f93850c5fec398ed5e2bee4f114 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/candidate/manifest.json @@ -0,0 +1,59 @@ +{ + "confirmations": 0, + "conflict": false, + "mode": "indent", + "original": [ + { + "guid": [ + 51, + 149, + 71, + 130, + 35, + 40, + 136, + 73, + 174, + 150, + 88, + 198, + 236, + 138, + 233, + 46 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [251, 177, 210, 219, 141, 235, 29, 72, 144, 228, 193, 87, 108, 105, 221, 185], n: 1 } })", + "phase": "01-demoted-parent", + "publications": 2, + "reviewed": [ + { + "guid": [ + 51, + 149, + 71, + 130, + 35, + 40, + 136, + 73, + 174, + 150, + 88, + 198, + 236, + 138, + 233, + 46 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [40, 101, 158, 170, 87, 244, 65, 66, 154, 49, 204, 137, 48, 37, 222, 151], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..11e6db8793659abc789a12f4dce3b80fb1c3c898 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..931b2160f5cbd5d36844575f84913826a88bf7d1 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..2c30288598dea46d0b8323ad293cbe6438e665dc --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-000.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..7d5246520edd9f8682f15619d1726eec091621ee --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-001.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..7c74a10fa0c57c7559770738758ffc5447ac42e5 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-002.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ed998ad53a336229e907e219959cee82ae680d9 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-003.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..334ab5c5228d33f8633a510696c4e89126b9ce5e --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-004.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..dd27e940f1ba049701745dc23b63a9185598d541 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-005.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..aab84fd136b7e8e66ffa768e9e568988ef53ba9a --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..175c837b65e99e0ad08d95b7dcc12384ad4912ac --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..5110cb0954fb17374a767d57adf8f802a4815d6f --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-01-demoted-parent/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..4330b9e3a2bab05a122fea306ad64fb4cfb8f760 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..a59ec49aed2c95693afdac4bf47b7eaf08fc35d9 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/candidate/manifest.json @@ -0,0 +1,59 @@ +{ + "confirmations": 0, + "conflict": false, + "mode": "indent", + "original": [ + { + "guid": [ + 74, + 104, + 251, + 59, + 244, + 179, + 135, + 76, + 167, + 255, + 40, + 223, + 194, + 18, + 10, + 190 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [23, 146, 135, 98, 153, 107, 107, 69, 187, 87, 31, 204, 225, 219, 112, 75], n: 1 } })", + "phase": "02-promoted-parent", + "publications": 2, + "reviewed": [ + { + "guid": [ + 74, + 104, + 251, + 59, + 244, + 179, + 135, + 76, + 167, + 255, + 40, + 223, + 194, + 18, + 10, + 190 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [94, 246, 254, 201, 85, 191, 7, 77, 186, 8, 10, 23, 229, 199, 73, 189], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..b85adfac4e8b9abba97bb1574bb7671b56927d50 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..f4f2f22ec5bc88cf1858377087c1ea5b7f303556 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..6a2cf37f0dc995fddf3dce1d21ced07d04a93728 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-000.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd57a53172293dfd132489b7401f86489b08b312 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..85e373ea826cbf125e1847169b6010895710a4f6 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..17d603bc2b1b5461c65ccb6e7fc223b87cc4fbd1 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-003.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..346a62c243cefa74d6955bd65f1aa2e4964de3da --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-004.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..f74d51e74298a6798d4ced53cb226e9239278691 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-005.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..027a4073fd43d4094649fe264f8a421a0fad7fda --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-006.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..4d73c1582b215bc94398d4f6980ecb2fbf24a7df --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..d8097dbaf961081b207a7e6244ef62537eee20fc --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-02-promoted-parent/cold/read/page-008.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..b1b6616758663f23e9fb4116d4805be487ed04db Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..e36b124cd8e575ee4180e7251be41e0b79682ea2 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/candidate/manifest.json @@ -0,0 +1,59 @@ +{ + "confirmations": 0, + "conflict": false, + "mode": "indent", + "original": [ + { + "guid": [ + 125, + 53, + 145, + 2, + 3, + 127, + 82, + 64, + 167, + 187, + 251, + 62, + 162, + 162, + 161, + 216 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [79, 36, 83, 146, 51, 185, 231, 72, 147, 254, 0, 180, 206, 5, 30, 79], n: 1 } })", + "phase": "03-selected-group-move", + "publications": 2, + "reviewed": [ + { + "guid": [ + 125, + 53, + 145, + 2, + 3, + 127, + 82, + 64, + 167, + 187, + 251, + 62, + 162, + 162, + 161, + 216 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [21, 35, 82, 67, 204, 139, 55, 78, 156, 40, 98, 53, 158, 180, 33, 141], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..d309acb210c66b940bfa64925c20e41b3e04663b Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..d522da966bcf290ef753f3dcbdf7186bc9a28316 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..c030175bbc038081b6ea818f014aca3f8d9f156c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-000.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..7daf73932bd87a60fd90402221f605519f7244ca --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..6e63b04c776b24eedd2c660266f2f6c15f345bda --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..0780350d99c7ddde66c3446517938fe7e3bbfc9c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-003.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..a3f6da4a755147788360c3d0b49eb5910cd6b332 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..3f614e3eb7325b575bdf701553383f40d1ef916f --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-005.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..d31cc414ec99bcd8020c0458b55ad22e06016398 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..5f36954144d5fab9d197d825932dab04d7a7e851 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..0666a6d29a3ea3e0c2c5a40088879ed3e79b186c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-03-selected-group-move/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..291421f083d3c89243c6ab3ed2d0f8e63a20d540 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..d027db681b5abb182f96ccef427149401b8b9313 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/candidate/manifest.json @@ -0,0 +1,59 @@ +{ + "confirmations": 0, + "conflict": true, + "mode": "indent", + "original": [ + { + "guid": [ + 212, + 44, + 63, + 182, + 28, + 209, + 154, + 72, + 154, + 49, + 110, + 172, + 24, + 52, + 11, + 197 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [8, 34, 143, 21, 222, 135, 177, 65, 143, 221, 51, 237, 136, 193, 187, 9], n: 1 } })", + "phase": "04-subpage-move", + "publications": 2, + "reviewed": [ + { + "guid": [ + 212, + 44, + 63, + 182, + 28, + 209, + 154, + 72, + 154, + 49, + 110, + 172, + 24, + 52, + 11, + 197 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [80, 133, 66, 122, 158, 20, 64, 73, 176, 64, 170, 48, 196, 195, 216, 191], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..07a380363ee63a89b3498e20e0f81e45afcddc66 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..86f30bb2f3d06cbf0dc09e0079cca4fa480ed607 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..ac51c79601f9b0ca5e666ba1f3df86ef85da19e3 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-000.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..5e90fdfe9ae67add82c8757e364c83c126d154ec --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..f86c556d436c5b97f60f62c5af905eb1ce34dfe1 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-002.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..fbf05a32f682574e0765f7bed6ef6c5c59e791b8 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-003.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..c335371bc9781e1778f7c9b43ce6817aa5a1e52d --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-004.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..cf0bc30aedaa4705c27e598cd3972b7efba5fd8b --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-005.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec651536ff45de4fe84ae556d7d79d52fd50e503 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..2309a54cf2af5e57de49cf7030e631446a13f490 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..db97e3f0c35ee2f348dec1f5ef48c79fb8fe87fe --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-04-subpage-move/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..969768a1f8d4056b64e51804f5378d787ca1375f Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..10c61eec17ce4bd0cbff75c5ebf057cef279536a --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/candidate/manifest.json @@ -0,0 +1,59 @@ +{ + "confirmations": 1, + "conflict": false, + "mode": "indent", + "original": [ + { + "guid": [ + 16, + 127, + 169, + 184, + 6, + 197, + 46, + 76, + 132, + 6, + 229, + 69, + 101, + 216, + 82, + 122 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [128, 50, 190, 55, 253, 41, 207, 9, 38, 43, 124, 25, 177, 209, 21, 208], n: 1 } })", + "phase": "05-insert-before-subpage", + "publications": 1, + "reviewed": [ + { + "guid": [ + 16, + 127, + 169, + 184, + 6, + 197, + 46, + 76, + 132, + 6, + 229, + 69, + 101, + 216, + 82, + 122 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [136, 4, 115, 179, 47, 49, 9, 73, 170, 14, 74, 194, 41, 126, 181, 65], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..320a5b470afd4d6a61944f2474566201b852785d Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..6390daaec50eddbf5458665fd14e764cdfc0fc0f --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..7e84ef75198876e79fda769b380b2b7a83eb9881 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-000.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b47688a009d181b55b97cbf34e8809b64d0fcb1 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-001.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..d0dd7d58d9ab21b24ab56047f76c6ba6e05b1b0d --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..240091165437942b1c533c8bd07d7c153f39af16 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-003.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..6f76f37c8dcaf1066d15a0b83bbd0cd70678f58a --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..0b09402d89d37d14affa4e46ed2984a6661998de --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-005.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..f6461edc278e5e4ad2facb700e916cdb6ab0d937 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ba63b947391203afc2ef75f8d898339b4a8cae3 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..340c7a7de1ed73627d6136e2a5c939aacc873b5d --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-05-insert-before-subpage/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..de93d19ed31f9874d68afcbe23d996a7346ebbf3 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..c2778ea48b1942d49ad23a5a23c5849680d97151 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/candidate/manifest.json @@ -0,0 +1,59 @@ +{ + "confirmations": 0, + "conflict": false, + "mode": "indent", + "original": [ + { + "guid": [ + 252, + 73, + 160, + 21, + 81, + 53, + 195, + 79, + 136, + 194, + 167, + 121, + 5, + 123, + 19, + 178 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [221, 248, 102, 82, 242, 12, 194, 64, 138, 231, 128, 175, 67, 118, 169, 171], n: 1 } })", + "phase": "06-promoted-level-two", + "publications": 2, + "reviewed": [ + { + "guid": [ + 252, + 73, + 160, + 21, + 81, + 53, + 195, + 79, + 136, + 194, + 167, + 121, + 5, + 123, + 19, + 178 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [230, 196, 113, 150, 161, 124, 235, 76, 179, 76, 159, 133, 104, 150, 52, 125], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..afe252a32a392191dee826fd1cdff713f4662e72 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..5d365b5595db0d668ccff283ffbda2462f0a53d6 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..2c820f22e2b956bd89527ebd153963b68de0ebb7 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-000.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..da92bd7180d3b8fe12c6d9c34b05e42dde30e4a5 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..4907a264a7b149962315aebf6bebb16a84638191 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..fc1c90bddbbf4d35da271ce2796a85964715b3e7 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-003.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..206f75cfae24571eb4f8c4e710add7e821926e34 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..c5c98de466b7e7d5e25a4ed3eec5b6e4e02db670 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-005.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..c4f4db853288afcd39c6db9b3965c2a2bbda9607 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..06485d3977b92b0952377ef2f1be6a2410e28d24 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-007.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..c46c04873a5e6e988e06998e3abea272ef4300af --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-06-promoted-level-two/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..684d740175054374caed48d143b0c5deb67bf2c0 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..8056cd45cd00611ac2ac4ef9fdcb8092d1d4f02b --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/candidate/manifest.json @@ -0,0 +1,59 @@ +{ + "confirmations": 0, + "conflict": true, + "mode": "indent", + "original": [ + { + "guid": [ + 210, + 210, + 26, + 68, + 171, + 53, + 125, + 65, + 151, + 57, + 103, + 167, + 162, + 188, + 127, + 168 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [7, 195, 77, 199, 152, 133, 125, 74, 184, 130, 191, 29, 82, 132, 119, 53], n: 1 } })", + "phase": "07-promoted-root", + "publications": 2, + "reviewed": [ + { + "guid": [ + 210, + 210, + 26, + 68, + 171, + 53, + 125, + 65, + 151, + 57, + 103, + 167, + 162, + 188, + 127, + 168 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [76, 22, 86, 93, 17, 98, 89, 75, 180, 244, 69, 64, 214, 23, 130, 101], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..44489c86a8c941aec1d276ae595e05db95e675ff Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..f464c4f9371f02ab41f5b4890425cfc13813aedc --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..2c8de41793179a2a6cb34149464e6caa8a2fbe85 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-000.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..d34d3de9948549ac57a53696f907d5b0286bd5fb --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..0962294e321b89491a8b0fe94c66f3d4126d1719 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..6b7dff0a785f95904084cba7b26337061a9ed8e8 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-003.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..ffd74309e7121732443d89c4822e978ac3c12bea --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-004.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..bda9a32d0e2d6a834a028a7fb73f1b39ca62b478 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-005.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b65f28b3324a4cdc4fc9940cc6ce89103c5b73b --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-006.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..7cc29f161b7df2b0672bd088e4cea23544a4d3ba --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..b5d4452da63a2d7c43633d995410f9147db98ac7 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-07-promoted-root/cold/read/page-008.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..bdc11818051de98d9b52000a661dff0fbfdfbadf Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..b5d7635092313496e7c077a420f258ac6743c478 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/candidate/manifest.json @@ -0,0 +1,59 @@ +{ + "confirmations": 1, + "conflict": true, + "mode": "indent", + "original": [ + { + "guid": [ + 88, + 101, + 118, + 0, + 26, + 164, + 204, + 65, + 188, + 144, + 52, + 96, + 130, + 42, + 72, + 63 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [180, 27, 41, 8, 239, 104, 1, 2, 9, 202, 204, 241, 8, 227, 97, 156], n: 1 } })", + "phase": "08-collapsed-group-move", + "publications": 1, + "reviewed": [ + { + "guid": [ + 88, + 101, + 118, + 0, + 26, + 164, + 204, + 65, + 188, + 144, + 52, + 96, + 130, + 42, + 72, + 63 + ], + "level": 1, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [63, 218, 209, 6, 29, 105, 228, 72, 152, 18, 66, 236, 91, 189, 126, 66], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..71f96c1dfc2ff71c4b401f0055ccff4777513c3e Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..5719aa26227e2c14f74e014ad355e044c8815449 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..51299b44b7a94a0c682cd2c9c960cd4846650195 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-000.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..e7361b989c43e0f1513ed106c50c1107b15f6447 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-001.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..d6e89b60ca4a0a122b7e401330ce08c3e3edae46 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..d1185a10588878ac61679697e79a4cb46f5bf611 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-003.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..f740f86068f16965989e32574c8d4c7f5a1c358d --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..b78519adb1eadd14afb1fa5276c585ee24d7c862 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-005.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..ff20ffaa509355ba4e87e9764ed2acb68f3d454b --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..be9c65c3b53e2228702629fa2fbb20227520b660 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..f28319de24b583552f7a9dbb73e47a5bbf5546de --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-08-collapsed-group-move/cold/read/page-008.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/candidate/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-single-page/candidate/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..1866250830de0a4bb4f3013d6d6d2e312eacb029 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-single-page/candidate/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/indent-single-page/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..76f934ad647c703e08c2e778d81e1c99f09f3cc7 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/candidate/manifest.json @@ -0,0 +1,59 @@ +{ + "confirmations": 0, + "conflict": false, + "mode": "indent", + "original": [ + { + "guid": [ + 28, + 199, + 140, + 70, + 240, + 153, + 168, + 68, + 147, + 100, + 233, + 168, + 206, + 231, + 7, + 109 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "page_receipt": "Some(Published { revision: ExGuid { guid: [213, 111, 188, 48, 141, 241, 142, 66, 179, 253, 171, 140, 78, 79, 80, 17], n: 1 } })", + "phase": "single-page", + "publications": 2, + "reviewed": [ + { + "guid": [ + 28, + 199, + 140, + 70, + 240, + 153, + 168, + 68, + 147, + 100, + 233, + 168, + 206, + 231, + 7, + 109 + ], + "level": 3, + "position": "Keep", + "space": "{D7B1788B-A971-08DE-3324-F4DF82A3B46E},1" + } + ], + "text_receipt": "Some(Published { revision: ExGuid { guid: [158, 3, 104, 164, 172, 85, 63, 67, 179, 78, 186, 177, 165, 15, 164, 158], n: 1 } })" +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/notebook/Lifecycle.one b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/notebook/Lifecycle.one new file mode 100644 index 0000000000000000000000000000000000000000..b6c5b9b115073afe02dcc47768bfca3787fcb8f0 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/notebook/Lifecycle.one differ diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..b4925c33e29a7ed92d9d464c09d473267a5b2fa2 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..2fad3bcc8986f48cf03cfc898cc68cf86863acd6 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-000.xml @@ -0,0 +1,4 @@ + +Body child 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..74ee05b496a37a4498a375473a5f632d4f2088e1 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-001.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..02566225479a211c5af801b132ad85ae26103547 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-002.xml @@ -0,0 +1,4 @@ + +Offline Body parent 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..c54bafd9f900c1fa83c87c3ab5cd70248b8f3cf6 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-003.xml @@ -0,0 +1,4 @@ + +Body grandchild 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..9dd340e4be7f2510745aa68f1f0c45d93114ff89 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..821141b64b52ed4dc856337a4bf88c17ff9a00c8 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-005.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..ecb0e0214d1823e1a1fee5401341b5ebc17bf8dc --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-006.xml @@ -0,0 +1,4 @@ + +Body automatic 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..b9ac7efa88d60f73d8118bed77f95e6b38b12ce8 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-007.xml @@ -0,0 +1,4 @@ + +Body duplicate 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..560fe366effd777b9662921cf89120b13cacb515 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/indent-single-page/cold/read/page-008.xml @@ -0,0 +1,4 @@ + +Body trailing 🦀 é preserved]]> diff --git a/corpus/page-lifecycle/offline-edits/provenance.json b/corpus/page-lifecycle/offline-edits/provenance.json new file mode 100644 index 0000000000000000000000000000000000000000..634b8edb4df2be275431104f59aecbf730558e0d --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/provenance.json @@ -0,0 +1,688 @@ +{ + "cases": { + "group-01-demoted-parent": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp25ua0uma", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-b441c6ce", + "hostname": "ONE-M6-B441C6CE" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 61168, + "sha256": "b824f43c0f789519771dcaabd0d7b84549ccc01629c19a64bd3bba9bb70b75df", + "mtime_ns": 1788941881049079637 + } + ] + }, + "group-02-promoted-parent": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpbtvm7zy4", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-a937eee4", + "hostname": "ONE-M6-A937EEE4" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 62200, + "sha256": "904bf500864584bff80c83dfbdf957de109836964a1dd7e97810df042cee0efa", + "mtime_ns": 1788941881329857761 + } + ] + }, + "group-03-selected-group-move": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpqpnmdqos", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-1b35b14a", + "hostname": "ONE-M6-1B35B14A" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 62664, + "sha256": "5a3d665f5da9a1c8aee3339d368bb1fdcb2e00e7aa0422478758bce84f5646f0", + "mtime_ns": 1788941881601421859 + } + ] + }, + "group-04-subpage-move": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp93masgxw", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-390f4ff1", + "hostname": "ONE-M6-390F4FF1" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 66464, + "sha256": "f758f4f74f21734349275e839e78a39454d00e1c546dd6b29f936ed9adef752a", + "mtime_ns": 1788941881947544959 + } + ] + }, + "group-05-insert-before-subpage": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmph61roaik", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-c13e29ae", + "hostname": "ONE-M6-C13E29AE" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 68104, + "sha256": "fbacddf7e10d230f3ffc4e28a967cfa43d378e598bff5dc5d2a532f8cb64091d", + "mtime_ns": 1788941882292841519 + } + ] + }, + "group-06-promoted-level-two": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpyvldz7f2", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-84bacce5", + "hostname": "ONE-M6-84BACCE5" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 70512, + "sha256": "89163b8a78ef94dc540ef00d3d05fca2014fa9e3b88a7e73e6a574c11e6d39bd", + "mtime_ns": 1788941882577853637 + } + ] + }, + "group-07-promoted-root": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpw7p2frw3", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-0e532964", + "hostname": "ONE-M6-0E532964" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 73840, + "sha256": "7952a0e1d9211af424cb5af2745171d8e745f7583d0e748762d7e34314bdb1c8", + "mtime_ns": 1788941882943040331 + } + ] + }, + "group-08-collapsed-group-move": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpopp2ih5l", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-8da7d856", + "hostname": "ONE-M6-8DA7D856" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 75656, + "sha256": "0be5eaca3172c3455b9b85946e0425e62cff0f61ab8fee75d8d0c4b0f6706248", + "mtime_ns": 1788941883308990065 + } + ] + }, + "group-single-page": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpyqtm83w3", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-2e6f3792", + "hostname": "ONE-M6-2E6F3792" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 64016, + "sha256": "a256c8f761cfe6465ccbe37852794c5760bbd46a6993a821e535ced69c38d510", + "mtime_ns": 1788941883672568012 + } + ] + }, + "indent-01-demoted-parent": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpono2kv8d", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-12ecb7c4", + "hostname": "ONE-M6-12ECB7C4" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 60192, + "sha256": "7d65268efd6ff873d370ff776062c378674b760d6adbeac4a19dc9fd28cb61c1", + "mtime_ns": 1788941878214798774 + } + ] + }, + "indent-02-promoted-parent": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpu3zp0wxf", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-8695a32c", + "hostname": "ONE-M6-8695A32C" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 62680, + "sha256": "bb97693bb9b9ee756b71b46ec9f8236994af5ebcd17b4162b799d25687c03bae", + "mtime_ns": 1788941878501070348 + } + ] + }, + "indent-03-selected-group-move": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpkkgri9eo", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-79f79370", + "hostname": "ONE-M6-79F79370" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 63752, + "sha256": "38e4a1ea6410eb097653c8d3bd74abdc5ac28f4616ebd04eb32e332e9a34179a", + "mtime_ns": 1788941878785592590 + } + ] + }, + "indent-04-subpage-move": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpnaob6ged", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-24815dc0", + "hostname": "ONE-M6-24815DC0" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 66856, + "sha256": "beeb72e90c663376bf6f378c256b44a58f74adcd7efa75b685ab163521cb899c", + "mtime_ns": 1788941879132236190 + } + ] + }, + "indent-05-insert-before-subpage": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmp4c2gwxhe", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-bf5daf50", + "hostname": "ONE-M6-BF5DAF50" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 67160, + "sha256": "eebeea1c5b675eb9114dc1ab096ccd71536e6b077a6bb4cfbac6ca8c0b674c71", + "mtime_ns": 1788941879409552027 + } + ] + }, + "indent-06-promoted-level-two": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpkdhy5hsi", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-7cb23bfd", + "hostname": "ONE-M6-7CB23BFD" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 71448, + "sha256": "fe37a1b0a3691daf93b172d42f929905a5c9c9b5caba4e6e3b67e6a59f5f7de5", + "mtime_ns": 1788941879701176676 + } + ] + }, + "indent-07-promoted-root": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpi18ckmh6", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-d1a70cb9", + "hostname": "ONE-M6-D1A70CB9" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 73840, + "sha256": "276195070618d102292a0455590ceb9bbf6d26106b4887cda73252fa149d1b63", + "mtime_ns": 1788941880070772321 + } + ] + }, + "indent-08-collapsed-group-move": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpqphw6cgh", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-d141faaf", + "hostname": "ONE-M6-D141FAAF" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 74056, + "sha256": "250a938806af76fc3ed8b917fcbd6161694000f2d287eb491ad134586b7a2fa2", + "mtime_ns": 1788941880425063366 + } + ] + }, + "indent-single-page": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpey9_i1nq", + "expected_pages": 9, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-809753e8", + "hostname": "ONE-M6-809753E8" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "Lifecycle.one", + "bytes": 64312, + "sha256": "19c5d537b172a6ceeceffb8aa72e370c08584a55f18619aef5bdcbb0c7cca935", + "mtime_ns": 1788941880706173615 + } + ] + } + }, + "twelve-clients": { + "run": { + "notebook": "/private/var/folders/90/4f4rngds01j55ggdj_vglk_c0000gn/T/tmpauflzr4r", + "expected_pages": 37, + "author": null, + "author_timeout_seconds": 600, + "inspect": false, + "collect_notebook": true, + "base": { + "file": "win7-office-base.qcow2", + "format": "qcow2", + "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346", + "virtual_size": 68719476736 + }, + "scripts": { + "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331", + "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41" + } + }, + "machine": { + "name": "m6-87535bf3", + "hostname": "ONE-M6-87535BF3" + }, + "teardown": { + "absent": true + }, + "source": [ + { + "path": "pages.one", + "bytes": 149680, + "sha256": "c1f90ad7adb5568be651fdf59009c8ccbb11ca772973155d93caa45b14f79665", + "mtime_ns": 1788941460936854212 + } + ] + }, + "fuzz": { + "seed": 1987, + "runs": 163, + "seconds": 241, + "inputs": { + "0177f4ea49713f71cfe986f58f83c8e2c7fc8d7c": "33d23e883c8b3fa484f12d71bb94e7c3e963c0a54fa7c42d5ce6578fcf36dc3b", + "11882653c40343d6be9aaa05730083439adadfba": "b344b92852ac487c86d37360f9c58cdac92b7cfb25fb6fee88d65b509c94b3cc", + "202ea61c560b7c79b4bf0e3d2893942d4e26a8e4": "ac6a8229fcadf589b86379927e8222c6fc7523658299329d6d2332988bdadf94", + "3acf70d9e55944a5c6abf1f1d83e903339e5880c": "28552294fc055e696856e90727cdd5a1447c6c9a37ba3af740a9eb6d8d08ee7f", + "476acb5883a4186ffa15607df041c28b402b961d": "ba3ca97145608505fc67c8557b2e41f42709032d0571fadedf92719c2139e96f", + "6adda485004874d3453c3a2646ae9aa3d9727680": "286ebc324bcc09fd7e5a2b97894556b5948508dc2c061feffb67093e78f31ce7", + "8392a61f3aa12dcd132fb3d80883fbe4de642ae4": "6f2ab500101055b91dec113be7c437e8cd4cc5ca75220af9defcbd3e7bcb4050", + "91895109fd9961c798a6ab0fdda8356147da72f0": "9682cd150367c3eb5b2c36969a205cd333e02687ebb92167708075246da7ffae", + "a4b973248eb4dbdb491dacc50eb1de89a494e3d1": "8baa3ec279de90799c5f237d9df980b88215b04b5b3a3942644739bc86df69c4", + "cdb0f291d1ccc9bc2077cdbeb44d0b5d3abb63c2": "d2ad11a793125438472443ad737d148d6c797137316d81234b5d973f3e46fd07", + "e1f2f478704e3516cadd3493dae22588253a6e0e": "5f745bacec59593259119e452de71ac0acb4bf58ba04584485c6479759a957b2", + "fc4bce1d89f38a2eb9d6c23aec24ca44df70ab67": "d14c6edd4ae7d2f5a2ba10610206bf98faf8a6d3f7cd2913ecbfdcdeef9f2307" + } + } +} diff --git a/corpus/page-lifecycle/offline-edits/schedules/0177f4ea49713f71cfe986f58f83c8e2c7fc8d7c b/corpus/page-lifecycle/offline-edits/schedules/0177f4ea49713f71cfe986f58f83c8e2c7fc8d7c new file mode 100644 index 0000000000000000000000000000000000000000..5a3e49bff73e1c91a83e2abcc38a6c496af71abd Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/0177f4ea49713f71cfe986f58f83c8e2c7fc8d7c differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/11882653c40343d6be9aaa05730083439adadfba b/corpus/page-lifecycle/offline-edits/schedules/11882653c40343d6be9aaa05730083439adadfba new file mode 100644 index 0000000000000000000000000000000000000000..1726290447456b408f1abc2dc4ebe32cfb84f829 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/11882653c40343d6be9aaa05730083439adadfba differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/202ea61c560b7c79b4bf0e3d2893942d4e26a8e4 b/corpus/page-lifecycle/offline-edits/schedules/202ea61c560b7c79b4bf0e3d2893942d4e26a8e4 new file mode 100644 index 0000000000000000000000000000000000000000..8c5f8d8f9d2ca16a86ac0cdeb0eb9ec2ac6fa9cf Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/202ea61c560b7c79b4bf0e3d2893942d4e26a8e4 differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/3acf70d9e55944a5c6abf1f1d83e903339e5880c b/corpus/page-lifecycle/offline-edits/schedules/3acf70d9e55944a5c6abf1f1d83e903339e5880c new file mode 100644 index 0000000000000000000000000000000000000000..0aed45238ebf54d9d907fca7ba3e5079316bd5b1 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/3acf70d9e55944a5c6abf1f1d83e903339e5880c differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/476acb5883a4186ffa15607df041c28b402b961d b/corpus/page-lifecycle/offline-edits/schedules/476acb5883a4186ffa15607df041c28b402b961d new file mode 100644 index 0000000000000000000000000000000000000000..de6c2186a4cd59283b698a942d0b627e45534a46 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/476acb5883a4186ffa15607df041c28b402b961d differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/6adda485004874d3453c3a2646ae9aa3d9727680 b/corpus/page-lifecycle/offline-edits/schedules/6adda485004874d3453c3a2646ae9aa3d9727680 new file mode 100644 index 0000000000000000000000000000000000000000..2be1a9f0515b03b2c9c69ad74a5a60967d8a7405 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/6adda485004874d3453c3a2646ae9aa3d9727680 differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/8392a61f3aa12dcd132fb3d80883fbe4de642ae4 b/corpus/page-lifecycle/offline-edits/schedules/8392a61f3aa12dcd132fb3d80883fbe4de642ae4 new file mode 100644 index 0000000000000000000000000000000000000000..ef519b922465abca8bc9673db6124591d676da5b Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/8392a61f3aa12dcd132fb3d80883fbe4de642ae4 differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/91895109fd9961c798a6ab0fdda8356147da72f0 b/corpus/page-lifecycle/offline-edits/schedules/91895109fd9961c798a6ab0fdda8356147da72f0 new file mode 100644 index 0000000000000000000000000000000000000000..bea4b1e0ab875d2a7058983bc7a079aa0bce2bea Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/91895109fd9961c798a6ab0fdda8356147da72f0 differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/a4b973248eb4dbdb491dacc50eb1de89a494e3d1 b/corpus/page-lifecycle/offline-edits/schedules/a4b973248eb4dbdb491dacc50eb1de89a494e3d1 new file mode 100644 index 0000000000000000000000000000000000000000..e1a27b93a60d15efc6c40ba63d96b476065f461a Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/a4b973248eb4dbdb491dacc50eb1de89a494e3d1 differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/cdb0f291d1ccc9bc2077cdbeb44d0b5d3abb63c2 b/corpus/page-lifecycle/offline-edits/schedules/cdb0f291d1ccc9bc2077cdbeb44d0b5d3abb63c2 new file mode 100644 index 0000000000000000000000000000000000000000..44e460f2a3f4fef6463c1fb2ac824c09372e87cf Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/cdb0f291d1ccc9bc2077cdbeb44d0b5d3abb63c2 differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/e1f2f478704e3516cadd3493dae22588253a6e0e b/corpus/page-lifecycle/offline-edits/schedules/e1f2f478704e3516cadd3493dae22588253a6e0e new file mode 100644 index 0000000000000000000000000000000000000000..00eff5df56426f6704928ea7e64d812b51cf49c3 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/e1f2f478704e3516cadd3493dae22588253a6e0e differ diff --git a/corpus/page-lifecycle/offline-edits/schedules/fc4bce1d89f38a2eb9d6c23aec24ca44df70ab67 b/corpus/page-lifecycle/offline-edits/schedules/fc4bce1d89f38a2eb9d6c23aec24ca44df70ab67 new file mode 100644 index 0000000000000000000000000000000000000000..9232f381805957e7a0b4450ee7aed63dee177eb6 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/schedules/fc4bce1d89f38a2eb9d6c23aec24ca44df70ab67 differ diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/candidate/manifest.json b/corpus/page-lifecycle/offline-edits/twelve-clients/candidate/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..82e0c6e06d029c1ed259f92743ef1a3ae3ed66ba --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/candidate/manifest.json @@ -0,0 +1,3108 @@ +{ + "expected_order": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 2 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 2 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 2 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 2 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 2 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 2 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 2 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 2 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 2 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 2 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 2 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 2 + ] + ], + "operations": [ + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 66, + 8, + 214, + 26, + 163, + 202, + 186, + 65, + 133, + 85, + 205, + 48, + 31, + 86, + 240, + 18 + ], + "level": 1, + "position": { + "Before": "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1" + }, + "space": "{EED86E95-3017-46A7-B26B-991C815839B7},1" + }, + { + "guid": [ + 175, + 129, + 69, + 10, + 173, + 37, + 210, + 68, + 143, + 124, + 194, + 27, + 84, + 67, + 127, + 64 + ], + "level": 2, + "position": "Keep", + "space": "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408656, + "guid": [ + 169, + 96, + 38, + 145, + 180, + 69, + 222, + 67, + 132, + 192, + 3, + 247, + 73, + 62, + 35, + 159 + ], + "parent": "{EED86E95-3017-46A7-B26B-991C815839B7},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 0 🦀 é" + } + }, + "space": "{EED86E95-3017-46A7-B26B-991C815839B7},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 172, + 161, + 73, + 98, + 42, + 175, + 7, + 71, + 172, + 34, + 169, + 112, + 203, + 118, + 56, + 125 + ], + "level": 1, + "position": { + "Before": "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1" + }, + "space": "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1" + }, + { + "guid": [ + 192, + 0, + 119, + 124, + 245, + 45, + 114, + 68, + 165, + 167, + 212, + 208, + 73, + 144, + 1, + 1 + ], + "level": 2, + "position": "Keep", + "space": "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408656, + "guid": [ + 103, + 211, + 55, + 116, + 145, + 175, + 246, + 72, + 188, + 193, + 248, + 191, + 133, + 8, + 103, + 251 + ], + "parent": "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 1 🦀 é" + } + }, + "space": "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 186, + 235, + 251, + 180, + 99, + 157, + 152, + 66, + 133, + 236, + 95, + 58, + 75, + 235, + 31, + 11 + ], + "level": 1, + "position": { + "Before": "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1" + }, + "space": "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1" + }, + { + "guid": [ + 212, + 110, + 96, + 109, + 211, + 163, + 247, + 70, + 139, + 235, + 189, + 123, + 151, + 176, + 53, + 248 + ], + "level": 2, + "position": "Keep", + "space": "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408656, + "guid": [ + 171, + 143, + 40, + 139, + 204, + 11, + 117, + 64, + 133, + 104, + 4, + 206, + 154, + 151, + 142, + 27 + ], + "parent": "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 2 🦀 é" + } + }, + "space": "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 188, + 81, + 138, + 165, + 126, + 205, + 194, + 74, + 131, + 185, + 205, + 113, + 158, + 13, + 18, + 70 + ], + "level": 1, + "position": { + "Before": "{9C56CBC3-690B-4900-8A07-A43600F7477B},1" + }, + "space": "{914C89B2-A95E-4992-8D2B-B533C7326D57},1" + }, + { + "guid": [ + 55, + 235, + 66, + 120, + 1, + 129, + 35, + 79, + 158, + 92, + 115, + 100, + 177, + 222, + 61, + 141 + ], + "level": 2, + "position": "Keep", + "space": "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408656, + "guid": [ + 143, + 233, + 248, + 215, + 61, + 12, + 0, + 79, + 148, + 136, + 19, + 105, + 195, + 219, + 117, + 136 + ], + "parent": "{914C89B2-A95E-4992-8D2B-B533C7326D57},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 3 🦀 é" + } + }, + "space": "{914C89B2-A95E-4992-8D2B-B533C7326D57},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 34, + 42, + 214, + 244, + 21, + 119, + 161, + 72, + 138, + 36, + 0, + 226, + 83, + 220, + 182, + 42 + ], + "level": 1, + "position": { + "Before": "{73479EE6-9FC0-4474-A702-E22C734FC42B},1" + }, + "space": "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1" + }, + { + "guid": [ + 4, + 175, + 37, + 45, + 204, + 188, + 216, + 74, + 162, + 17, + 48, + 219, + 8, + 158, + 57, + 248 + ], + "level": 2, + "position": "Keep", + "space": "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408656, + "guid": [ + 85, + 203, + 251, + 4, + 53, + 54, + 25, + 75, + 131, + 132, + 88, + 128, + 39, + 160, + 107, + 23 + ], + "parent": "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 4 🦀 é" + } + }, + "space": "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 104, + 223, + 221, + 220, + 195, + 253, + 140, + 73, + 138, + 112, + 221, + 253, + 145, + 92, + 153, + 238 + ], + "level": 1, + "position": { + "Before": "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1" + }, + "space": "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1" + }, + { + "guid": [ + 120, + 153, + 169, + 147, + 181, + 108, + 47, + 66, + 154, + 71, + 185, + 89, + 106, + 88, + 140, + 240 + ], + "level": 2, + "position": "Keep", + "space": "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408656, + "guid": [ + 255, + 149, + 116, + 40, + 154, + 131, + 139, + 73, + 186, + 135, + 152, + 112, + 107, + 42, + 81, + 135 + ], + "parent": "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 5 🦀 é" + } + }, + "space": "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 90, + 196, + 10, + 13, + 157, + 154, + 233, + 79, + 148, + 125, + 170, + 133, + 213, + 12, + 242, + 187 + ], + "level": 1, + "position": { + "Before": "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1" + }, + "space": "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1" + }, + { + "guid": [ + 158, + 142, + 245, + 209, + 34, + 112, + 75, + 79, + 157, + 220, + 50, + 10, + 201, + 168, + 243, + 47 + ], + "level": 2, + "position": "Keep", + "space": "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408656, + "guid": [ + 229, + 132, + 181, + 220, + 244, + 135, + 183, + 77, + 159, + 236, + 219, + 238, + 255, + 87, + 152, + 224 + ], + "parent": "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 6 🦀 é" + } + }, + "space": "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 72, + 57, + 163, + 131, + 240, + 229, + 85, + 76, + 146, + 253, + 111, + 184, + 27, + 159, + 64, + 117 + ], + "level": 1, + "position": { + "Before": "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1" + }, + "space": "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1" + }, + { + "guid": [ + 22, + 244, + 53, + 252, + 208, + 13, + 123, + 67, + 136, + 101, + 93, + 39, + 110, + 39, + 190, + 158 + ], + "level": 2, + "position": "Keep", + "space": "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408656, + "guid": [ + 6, + 12, + 136, + 31, + 34, + 131, + 43, + 75, + 140, + 243, + 250, + 229, + 197, + 110, + 135, + 127 + ], + "parent": "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 7 🦀 é" + } + }, + "space": "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 92, + 171, + 163, + 41, + 66, + 80, + 115, + 70, + 155, + 131, + 144, + 210, + 175, + 109, + 142, + 183 + ], + "level": 1, + "position": { + "Before": "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1" + }, + "space": "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1" + }, + { + "guid": [ + 72, + 112, + 149, + 65, + 108, + 25, + 248, + 69, + 165, + 205, + 164, + 179, + 32, + 249, + 230, + 107 + ], + "level": 2, + "position": "Keep", + "space": "{12C643DD-9593-4641-B945-124257947ADD},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408657, + "guid": [ + 32, + 217, + 98, + 198, + 139, + 74, + 200, + 79, + 184, + 88, + 19, + 17, + 198, + 122, + 217, + 139 + ], + "parent": "{574D9093-179F-46A3-B3F9-F7EB4345FADA},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 8 🦀 é" + } + }, + "space": "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 87, + 93, + 187, + 190, + 118, + 231, + 12, + 73, + 171, + 89, + 199, + 95, + 48, + 205, + 34, + 65 + ], + "level": 1, + "position": { + "Before": "{C4850841-2A3C-4402-BF11-7499914F9024},1" + }, + "space": "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1" + }, + { + "guid": [ + 231, + 156, + 210, + 109, + 117, + 247, + 23, + 73, + 150, + 139, + 247, + 223, + 39, + 173, + 106, + 66 + ], + "level": 2, + "position": "Keep", + "space": "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408657, + "guid": [ + 212, + 210, + 78, + 209, + 125, + 10, + 236, + 68, + 149, + 82, + 106, + 62, + 189, + 231, + 83, + 255 + ], + "parent": "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 9 🦀 é" + } + }, + "space": "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 32, + 165, + 164, + 162, + 23, + 231, + 122, + 69, + 137, + 205, + 124, + 4, + 250, + 9, + 150, + 110 + ], + "level": 1, + "position": { + "Before": "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1" + }, + "space": "{858FEBAE-05A2-4B49-92D2-96C28376330D},1" + }, + { + "guid": [ + 136, + 28, + 174, + 50, + 180, + 184, + 83, + 67, + 167, + 99, + 194, + 10, + 250, + 255, + 69, + 239 + ], + "level": 2, + "position": "Keep", + "space": "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408657, + "guid": [ + 235, + 68, + 225, + 150, + 90, + 167, + 26, + 78, + 157, + 185, + 155, + 48, + 227, + 111, + 93, + 87 + ], + "parent": "{858FEBAE-05A2-4B49-92D2-96C28376330D},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 10 🦀 é" + } + }, + "space": "{858FEBAE-05A2-4B49-92D2-96C28376330D},1" + } + ], + [ + { + "id": 1, + "operation": { + "Pages": { + "edits": [ + { + "guid": [ + 181, + 53, + 220, + 27, + 175, + 42, + 75, + 67, + 172, + 247, + 88, + 164, + 222, + 89, + 204, + 82 + ], + "level": 1, + "position": { + "Before": "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1" + }, + "space": "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1" + }, + { + "guid": [ + 66, + 14, + 221, + 210, + 177, + 93, + 236, + 75, + 161, + 135, + 67, + 6, + 66, + 129, + 52, + 199 + ], + "level": 2, + "position": "Keep", + "space": "{A8883FF6-F53C-46B7-912C-779F9300FA77},1" + } + ], + "observed": [ + [ + "{90D67E9A-BEC2-43C9-973C-1B927FE5FCD4},1", + 1 + ], + [ + "{7D896A2D-61C9-42B2-AECF-B3C979B88BEB},1", + 1 + ], + [ + "{EED86E95-3017-46A7-B26B-991C815839B7},1", + 1 + ], + [ + "{0E8EA7AB-946D-461C-B571-96CCDC183FDC},1", + 1 + ], + [ + "{BE25CAF8-690F-4947-8683-3A37A7D52CCA},1", + 1 + ], + [ + "{F61E497B-25BB-426E-BC73-320A7B6D2E9E},1", + 1 + ], + [ + "{E53F33D2-F3FC-42C9-8DC8-B47261D1BDED},1", + 1 + ], + [ + "{7FDAAAE9-CD33-42AA-A8AA-F87CE3BC8CD6},1", + 1 + ], + [ + "{F0E8692A-3CBB-47A6-81D6-7B6E2A125A7F},1", + 1 + ], + [ + "{71B566DF-DBD8-43B2-AD96-265FDB789E07},1", + 1 + ], + [ + "{9C56CBC3-690B-4900-8A07-A43600F7477B},1", + 1 + ], + [ + "{914C89B2-A95E-4992-8D2B-B533C7326D57},1", + 1 + ], + [ + "{2CA7400B-F732-4FAF-811B-AAFA91C480DF},1", + 1 + ], + [ + "{73479EE6-9FC0-4474-A702-E22C734FC42B},1", + 1 + ], + [ + "{B6C1B618-B721-49CD-B224-45DDFF38C8FC},1", + 1 + ], + [ + "{CED8C7D5-5AC4-4553-B9F7-A02A1F599692},1", + 1 + ], + [ + "{D260D973-E2FB-4654-89A2-13BAFC23AEDE},1", + 1 + ], + [ + "{EC0D40A0-9E0D-4262-9B4D-D075704938C9},1", + 1 + ], + [ + "{8E47F53D-F24F-4B3B-942F-390A8F0F31E7},1", + 1 + ], + [ + "{1FBF8DA5-01E9-4248-BBB9-90B5C4ADFA58},1", + 1 + ], + [ + "{A3909E43-E7FE-40C8-9222-0B60EA8CE89B},1", + 1 + ], + [ + "{925E4C70-2C3F-480D-BB44-D3BF4A0FB985},1", + 1 + ], + [ + "{1792331E-BA2E-4B60-B150-6AAF41BC488D},1", + 1 + ], + [ + "{39716E7C-28A0-4770-BBD2-BB4018DBE93F},1", + 1 + ], + [ + "{D30FD954-4DA9-4B85-8950-12B85AFA12CB},1", + 1 + ], + [ + "{0F4D72D3-20B0-4884-BF56-08BA4DBFB6FF},1", + 1 + ], + [ + "{574D9093-179F-46A3-B3F9-F7EB4345FADA},1", + 1 + ], + [ + "{12C643DD-9593-4641-B945-124257947ADD},1", + 1 + ], + [ + "{C4850841-2A3C-4402-BF11-7499914F9024},1", + 1 + ], + [ + "{37EF05A5-C2D9-44A2-84C0-BCA93ACB9048},1", + 1 + ], + [ + "{27C692F0-F79D-4390-AB44-CB8B10E2B49E},1", + 1 + ], + [ + "{B1F28022-58CF-49CF-BC6F-D77A1A034AAC},1", + 1 + ], + [ + "{858FEBAE-05A2-4B49-92D2-96C28376330D},1", + 1 + ], + [ + "{806A80BF-45E8-4188-B782-66A0DAA26E5A},1", + 1 + ], + [ + "{940E7901-6EF0-43ED-BD42-E0C7658185B1},1", + 1 + ], + [ + "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1", + 1 + ], + [ + "{A8883FF6-F53C-46B7-912C-779F9300FA77},1", + 1 + ] + ] + } + }, + "space": "{31C1BA26-B092-43F4-B346-A5147633ACB5},1" + }, + { + "id": 2, + "operation": { + "Insert": { + "author": "Author", + "created": 1473408657, + "guid": [ + 142, + 193, + 242, + 223, + 29, + 246, + 57, + 70, + 180, + 43, + 87, + 35, + 54, + 147, + 219, + 200 + ], + "parent": "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},12", + "placement": { + "Outline": { + "x": 36.0, + "y": 36.0 + } + }, + "text": "Actor 11 🦀 é" + } + }, + "space": "{D106259D-D139-4DAB-87BE-50AC5E5BEF80},1" + } + ] + ], + "pages": 37, + "publications": 24 +} \ No newline at end of file diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/candidate/pages.one b/corpus/page-lifecycle/offline-edits/twelve-clients/candidate/pages.one new file mode 100644 index 0000000000000000000000000000000000000000..1b5234be824491c10496e749049b25836b704808 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/twelve-clients/candidate/pages.one differ diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/notebook/pages.one b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/notebook/pages.one new file mode 100644 index 0000000000000000000000000000000000000000..274d65ef695ac53f5138b85182b722ba6ec98316 Binary files /dev/null and b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/notebook/pages.one differ diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/hierarchy.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/hierarchy.xml new file mode 100644 index 0000000000000000000000000000000000000000..0ee77a03aafb8eeaeb2733d618080544bd2ea97f --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/hierarchy.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-000.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-000.xml new file mode 100644 index 0000000000000000000000000000000000000000..0f15ae2965b2c5801066502cc65fb2971d3d6f79 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-000.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-001.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-001.xml new file mode 100644 index 0000000000000000000000000000000000000000..3c5a328c51edce7c2dc83cd5a92c18bc587a106c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-001.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-002.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-002.xml new file mode 100644 index 0000000000000000000000000000000000000000..a195845e5111f9473c8e51a137c52a816bad177b --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-002.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-003.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-003.xml new file mode 100644 index 0000000000000000000000000000000000000000..baee1e0e41db2b8970d5ebf6874ced610c5605fb --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-003.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-004.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-004.xml new file mode 100644 index 0000000000000000000000000000000000000000..f44afff85ab2f639498e454230ad684fe477fbf6 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-004.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-005.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-005.xml new file mode 100644 index 0000000000000000000000000000000000000000..f6e72bd83473e6564ec0fff5a02f177df8bf0645 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-005.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-006.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-006.xml new file mode 100644 index 0000000000000000000000000000000000000000..7a8518e4307ec050749e07f20cfc60e669106ef5 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-006.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-007.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-007.xml new file mode 100644 index 0000000000000000000000000000000000000000..7bd5e8573a299047e1a443e9c48e7656f3fd4cc4 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-007.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-008.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-008.xml new file mode 100644 index 0000000000000000000000000000000000000000..b6fe52b23f3a5dba69811943143175555fb768be --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-008.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-009.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-009.xml new file mode 100644 index 0000000000000000000000000000000000000000..0858743ad9424999de876ec95ebb3248a6a6bdf9 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-009.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-010.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-010.xml new file mode 100644 index 0000000000000000000000000000000000000000..11a009ba37b0b56e694a634af3d0e8004ce9d891 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-010.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-011.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-011.xml new file mode 100644 index 0000000000000000000000000000000000000000..7b24ebb857bc900c9e2b592c479099b227d34cd3 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-011.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-012.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-012.xml new file mode 100644 index 0000000000000000000000000000000000000000..9d24b783aaefac29d5cdcd4a31f24ae4350e8cf1 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-012.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-013.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-013.xml new file mode 100644 index 0000000000000000000000000000000000000000..a0b537ecdf3fdbe4dad19b16940ec5b2b81a1328 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-013.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-014.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-014.xml new file mode 100644 index 0000000000000000000000000000000000000000..a732b77292318a35e0043268b077c55e62718d14 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-014.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-015.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-015.xml new file mode 100644 index 0000000000000000000000000000000000000000..954bc03f039bf5fe5d329e2f645d7360bd26d705 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-015.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-016.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-016.xml new file mode 100644 index 0000000000000000000000000000000000000000..b5d495c4a6dd601c2d85aab3b59447958047a59c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-016.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-017.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-017.xml new file mode 100644 index 0000000000000000000000000000000000000000..6605ca79c45634598f5ce40064057da6816f4609 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-017.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-018.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-018.xml new file mode 100644 index 0000000000000000000000000000000000000000..90b13e7d6aee11a437d57de33a4a0018feb9d4c9 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-018.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-019.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-019.xml new file mode 100644 index 0000000000000000000000000000000000000000..ed2088a46488b1d864cc197db28d717da87c7a37 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-019.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-020.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-020.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b846972581daad7f772f3e9cf9c9a94c9f920d6 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-020.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-021.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-021.xml new file mode 100644 index 0000000000000000000000000000000000000000..0fbc487ff677d2ea1c5fc1486f9a0b07cc2a6475 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-021.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-022.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-022.xml new file mode 100644 index 0000000000000000000000000000000000000000..7f858dac0099b526675ffdb5ab01ab6da1d33691 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-022.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-023.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-023.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a8a90d9ebdb7e7a59a3974d7cad9ce6090de2c5 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-023.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-024.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-024.xml new file mode 100644 index 0000000000000000000000000000000000000000..9853ca9969f3b84d42d3cd09ae46998e6a647a29 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-024.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-025.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-025.xml new file mode 100644 index 0000000000000000000000000000000000000000..906efaf6bca54f0ab49f8b1bb800048142964fc3 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-025.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-026.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-026.xml new file mode 100644 index 0000000000000000000000000000000000000000..8bbe68696dd02386a2cf7779fd753c7f01c996c3 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-026.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-027.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-027.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc544f47a39d6a8c3327a84b2769965ca0a882bf --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-027.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-028.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-028.xml new file mode 100644 index 0000000000000000000000000000000000000000..70ab187afc832d956614e01d0af09fa5d6d1f4cb --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-028.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-029.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-029.xml new file mode 100644 index 0000000000000000000000000000000000000000..1758fdbfe166a84f89b01fe06f116e6c302db6ea --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-029.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-030.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-030.xml new file mode 100644 index 0000000000000000000000000000000000000000..700ebcae96d598eee2625e5fed1f666da0a3b1c4 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-030.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-031.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-031.xml new file mode 100644 index 0000000000000000000000000000000000000000..e495a2d21ac63dd38b6d09d900e67f2eacc2575c --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-031.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-032.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-032.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5b8a086d20f562201b4434f21a709704a633a03 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-032.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-033.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-033.xml new file mode 100644 index 0000000000000000000000000000000000000000..3cd0c6e82ab8d68f29e1404827790b08c5647b2e --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-033.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-034.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-034.xml new file mode 100644 index 0000000000000000000000000000000000000000..3b6e3be1405b02b3bfc6f65e430ef3131457e9c6 --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-034.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-035.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-035.xml new file mode 100644 index 0000000000000000000000000000000000000000..7df2f70b29e740529a7fea08d8f6d69f395dba6b --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-035.xml @@ -0,0 +1,2 @@ + + diff --git a/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-036.xml b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-036.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0741ad9b38c722243acfd6dd81afdf090e9780e --- /dev/null +++ b/corpus/page-lifecycle/offline-edits/twelve-clients/cold/read/page-036.xml @@ -0,0 +1,2 @@ + + diff --git a/crates/onestore-offline/README.md b/crates/onestore-offline/README.md index 59cc0655dced263b3bffe84b9a01a6874feea914..fd4aa367554e978a9910f58f70608df58ffa3d03 100644 --- a/crates/onestore-offline/README.md +++ b/crates/onestore-offline/README.md @@ -31,8 +31,9 @@ its styles as one intent and one publication. Keep that value across retries; it the new text for subsequent offline edits. Pending entries expose `Operation::Text(TextEdit)`, `Operation::Insert(Insertion)`, `Operation::Format(FormatEdit)`, `Operation::Split(SplitEdit)`, -`Operation::Join(JoinEdit)`, `Operation::Outline(OutlineEdit)` and -`Operation::Tree(TreeEdit)` and `Operation::CreatePage(PageCreation)` through their +`Operation::Join(JoinEdit)`, `Operation::Outline(OutlineEdit)`, +`Operation::Tree(TreeEdit)`, `Operation::CreatePage(PageCreation)` and +`Operation::Pages(PageEdits)` through their `operation` field. Synchronization applies these in queue order, so an inserted outline can precede its paragraphs and their later edits. Missing anchors or existing insertion identities preserve a conflict and the complete local image. @@ -47,6 +48,24 @@ before)` reviews a replacement anchor against both cache images while retaining the new page and dependent object identities. Existing page identities require reconciliation; a matching page alone does not establish a receipt. +`pages(snapshot, edits)` queues a slice of core `PageEdit` intents as one atomic +publication. `PagePosition::Keep` preserves remote movement during indentation-only +edits. Every requested level remains explicit: a competing remote level produces +`StructureChanged` unless it already matches the requested level. Moves compare +the selected page's position relative to surviving observed pages; an unchanged +or already-satisfied position can proceed, and new remote pages remain present. +Indistinguishable competing moves retain a conflict and the complete local image. + +`rebase_pages_conflict(id, local, remote, edits)` reviews the batch against both +cache images. Use `PageEdit::reposition(position, level)` on the retained intents +to revise anchors or indentation; replacing page or allocated series identities +is rejected. Dependent edits remain queued. Schema 11 adds the durable batch; +schema 10 migration preserves existing multi-space publication evidence unchanged. +Attempt evidence includes every changed space plus the receipt space when that +space is unchanged. An existing section revision alone cannot confirm a page edit. +The [offline page corpus](../../corpus/page-lifecycle/offline-edits/README.md) +contains native comparisons, reproduction commands and stateful sanitizer seeds. + `split` and `join` accept the core `ParagraphSplit` and `ParagraphJoin` intents. Splits retain allocated identities when the original UTF-16 boundary rebases; dependent edits can address `ParagraphSplit::text_object()` immediately after diff --git a/crates/onestore-offline/examples/cache_probe.rs b/crates/onestore-offline/examples/cache_probe.rs index 9a3f1e4b3d2c729926f79fe3c337c49193dcaa66..c27e00cf46fcc8da856d280dd9874cea30f89cca 100644 --- a/crates/onestore-offline/examples/cache_probe.rs +++ b/crates/onestore-offline/examples/cache_probe.rs @@ -140,6 +140,7 @@ fn main() -> Result<(), Box> { } onestore_offline::Operation::Split(_) | onestore_offline::Operation::CreatePage(_) + | onestore_offline::Operation::Pages(_) | onestore_offline::Operation::Join(_) | onestore_offline::Operation::Outline(_) | onestore_offline::Operation::Tree(_) => { diff --git a/crates/onestore-offline/src/lib.rs b/crates/onestore-offline/src/lib.rs index 8bad5718bdd02719993f4aec63a5983935b04250..2a40bbbbf863c44622d622b2d3c8002392be4090 100644 --- a/crates/onestore-offline/src/lib.rs +++ b/crates/onestore-offline/src/lib.rs @@ -11,6 +11,7 @@ use std::{fs::OpenOptions, io, ops::Range, path::Path, sync::Mutex, time::Durati mod assets; mod formatting; mod outline; +mod pages; mod paragraph; mod rebase; mod recovery; @@ -18,6 +19,7 @@ mod schema; mod tree; pub use formatting::FormatEdit; pub use outline::OutlineEdit; +pub use pages::PageEdits; pub use paragraph::{JoinEdit, SplitEdit}; pub use recovery::{Recovery, RecoverySummary}; pub use tree::TreeEdit; @@ -51,7 +53,7 @@ pub enum Error { type Result = std::result::Result; const APPLICATION_ID: u32 = 0x4f4e454f; -const SCHEMA_VERSION: u32 = 10; +const SCHEMA_VERSION: u32 = 11; /// Text and its observed precondition, retained across cache reopen and rebasing. #[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)] @@ -67,6 +69,7 @@ pub struct TextEdit { #[serde(deny_unknown_fields)] pub enum Operation { CreatePage(PageCreation), + Pages(PageEdits), Text(TextEdit), Insert(Insertion), Format(FormatEdit), diff --git a/crates/onestore-offline/src/pages.rs b/crates/onestore-offline/src/pages.rs new file mode 100644 index 0000000000000000000000000000000000000000..12bf7d1af435862b25d8ec0e2b847cc0ee34b481 --- /dev/null +++ b/crates/onestore-offline/src/pages.rs @@ -0,0 +1,169 @@ +use super::*; +use onestore::{PageEdit, PagePosition}; +use serde::{Deserialize, Serialize}; +use std::collections::BTreeMap; + +type PageOrder = Vec<(ExGuid, u32)>; + +/// An atomic page batch with its observed order and indentation. +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PageEdits { + pub edits: Vec, + observed: PageOrder, +} + +fn observe(source: &[u8]) -> Result> { + let store = Store::parse(source)?; + let index = RevisionIndex::parse(&store)?; + let document = Document::parse(&index)?; + let mut pages = Vec::new(); + for (sid, _) in document.pages()? { + let space = &document.spaces[&sid]; + let view = &space.revisions[&space.contexts[&ExGuid::default()]]; + let Some(metadata) = view.roots.get(&2).and_then(|id| view.nodes.get(id)) else { + return Ok(None); + }; + let Kind::Metadata { level, .. } = metadata.kind else { + return Ok(None); + }; + pages.push((sid, level.unwrap_or(1))); + } + Ok(Some((document.root, pages))) +} + +fn positions(pages: &[(ExGuid, u32)]) -> Result> { + let mut positions = BTreeMap::new(); + for (at, (sid, level)) in pages.iter().enumerate() { + if sid.guid == [0; 16] + || !(1..=3).contains(level) + || positions.insert(*sid, (at, *level)).is_some() + { + return Err(io::Error::new( + io::ErrorKind::InvalidData, + "Page observations need unique identities and valid indentation", + ) + .into()); + } + } + Ok(positions) +} + +impl Replica { + /// Durably queues the complete page batch using the supplied local snapshot. + pub fn pages(&self, source: &[u8], edits: &[PageEdit]) -> Result> { + let (space, batch, prepared) = PageEdits::capture(source, edits)?; + self.record(source, space, Operation::Pages(batch), &prepared) + } +} + +impl PageEdits { + fn capture<'a>( + source: &'a [u8], + edits: &[PageEdit], + ) -> Result<(ExGuid, Self, PreparedEdit<'a>)> { + let prepared = PreparedEdit::pages(source, edits)?; + let (space, observed) = observe(source)?.ok_or_else(|| { + io::Error::new( + io::ErrorKind::InvalidData, + "Prepared page edits have no page metadata", + ) + })?; + positions(&observed)?; + Ok(( + space, + Self { + edits: edits.to_vec(), + observed, + }, + prepared, + )) + } + + pub(crate) fn prepare<'a>( + &self, + source: &'a [u8], + space: ExGuid, + ) -> Result, ConflictKind>> { + let Some((root, current)) = observe(source)? else { + return Ok(Err(ConflictKind::TargetUnavailable)); + }; + if root != space { + return Ok(Err(ConflictKind::TargetUnavailable)); + } + let before = positions(&self.observed)?; + let current = positions(¤t)?; + for edit in &self.edits { + let Some((_, original_level)) = before.get(&edit.space()) else { + return Ok(Err(ConflictKind::TargetUnavailable)); + }; + let Some((_, current_level)) = current.get(&edit.space()) else { + return Ok(Err(ConflictKind::TargetUnavailable)); + }; + if current_level != original_level && *current_level != edit.level() { + return Ok(Err(ConflictKind::StructureChanged)); + } + } + let prepared = match PreparedEdit::pages(source, &self.edits) { + Ok(prepared) => prepared, + Err(_) => return Ok(Err(ConflictKind::StructureChanged)), + }; + let (_, wanted) = observe(prepared.as_bytes())?.ok_or_else(|| { + io::Error::new( + io::ErrorKind::InvalidData, + "Prepared page edits lost page metadata", + ) + })?; + let wanted = positions(&wanted)?; + for edit in &self.edits { + if edit.position() == PagePosition::Keep { + continue; + } + let sid = edit.space(); + let peers = before + .keys() + .filter(|id| **id != sid && current.contains_key(id)); + let mut unchanged = true; + let mut satisfied = true; + for id in peers { + let observed = current[id].0 < current[&sid].0; + unchanged &= observed == (before[id].0 < before[&sid].0); + satisfied &= observed == (wanted[id].0 < wanted[&sid].0); + } + if !unchanged && !satisfied { + return Ok(Err(ConflictKind::StructureChanged)); + } + } + Ok(Ok(prepared)) + } + + pub(crate) fn review(&self, source: &[u8], space: ExGuid, edits: &[PageEdit]) -> Result { + let identities_match = edits.len() == self.edits.len() + && edits.iter().all(|edit| { + self.edits + .iter() + .find(|original| original.space() == edit.space()) + .is_some_and(|original| { + original + .reposition(edit.position(), edit.level()) + .is_ok_and(|revised| revised == *edit) + }) + }); + if !identities_match { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + "Retain the original page and series identities when reviewing a page batch", + ) + .into()); + } + let (root, reviewed, _) = Self::capture(source, edits)?; + if root != space { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + "Review the original section for page edits", + ) + .into()); + } + Ok(reviewed) + } +} diff --git a/crates/onestore-offline/src/schema.rs b/crates/onestore-offline/src/schema.rs index 4e3af92b6e7452778c95ea8f32702cabc429d494..b392c200c66b01dc09c0a76dc128b06f03f2766b 100644 --- a/crates/onestore-offline/src/schema.rs +++ b/crates/onestore-offline/src/schema.rs @@ -35,6 +35,9 @@ pub(crate) fn create(transaction: &Transaction<'_>) -> Result<()> { } pub(crate) fn migrate(transaction: &Transaction<'_>, version: u32) -> Result<()> { + if version >= 10 { + return Ok(()); + } if version >= 3 { transaction.execute_batch("ALTER TABLE conflicts RENAME TO old_conflicts;")?; transaction.execute_batch(CONFLICTS)?; diff --git a/crates/onestore-offline/src/sync.rs b/crates/onestore-offline/src/sync.rs index 098208ceed46534143953a19b415265b12707ff8..26b25e1bc353ef2ceabebe60f0cd48769a9e6560 100644 --- a/crates/onestore-offline/src/sync.rs +++ b/crates/onestore-offline/src/sync.rs @@ -29,11 +29,12 @@ pub enum ConflictKind { #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum EditStatus { Pending, + /// Retained publication attempt; this revision alone may be insufficient to confirm it. AwaitingConfirmation { revision: ExGuid, }, Conflict(ConflictKind), - /// Revision containing the confirmed effect; it can differ from a retired attempted revision. + /// Revision of the intent's space when its complete effect was confirmed. Published { revision: ExGuid, }, @@ -140,6 +141,7 @@ impl Replica { let candidate = match &intent.operation { Operation::CreatePage(page) => PreparedEdit::create_page(&snapshot, page) .map_err(|_| ConflictKind::StructureChanged), + Operation::Pages(edit) => edit.prepare(&snapshot, intent.space)?, Operation::Format(edit) => edit.prepare(&snapshot, intent.space)?, Operation::Split(edit) => edit.prepare(&snapshot, intent.space)?, Operation::Join(edit) => edit.prepare(&snapshot, intent.space)?, @@ -195,7 +197,7 @@ impl Replica { let revision = index.spaces[&intent.space].labels[&(ExGuid::default(), 1)]; let before_store = Store::parse(&snapshot)?; let before = RevisionIndex::parse(&before_store)?; - let revisions: BTreeMap<_, _> = index + let mut revisions: BTreeMap<_, _> = index .spaces .iter() .filter_map(|(sid, space)| { @@ -208,6 +210,8 @@ impl Replica { .then_some((*sid, revision)) }) .collect(); + // The receipt's space can be unchanged in a multi-space edit. + revisions.insert(intent.space, revision); { let mut connection = self .connection @@ -351,6 +355,13 @@ impl Replica { ) .into()); } + Operation::Pages(_) => { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + "Review page edits using rebase_pages_conflict", + ) + .into()); + } }) }) } @@ -377,6 +388,30 @@ impl Replica { }) } + /// Reviews a page batch against both cache images, retaining its page and series identities. + pub fn rebase_pages_conflict( + &self, + id: u64, + local: &[u8], + remote: &[u8], + edits: &[onestore::PageEdit], + ) -> Result<()> { + self.resolve_conflict(id, local, remote, |intent| { + let Operation::Pages(batch) = intent.operation else { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + "Select a page movement or indentation conflict", + ) + .into()); + }; + Ok(Operation::Pages(batch.review( + remote, + intent.space, + edits, + )?)) + }) + } + /// Reviews a join against both current cache images, retaining its original text identities. /// The surviving text identity must remain the same for dependent edits. pub fn rebase_join_conflict(&self, id: u64, local: &[u8], remote: &[u8]) -> Result<()> { diff --git a/crates/onestore-offline/tests/support/page_schedule.rs b/crates/onestore-offline/tests/support/page_schedule.rs index de836500ae5000559cea1e6210d43e28c3fb2012..fe02c8a42adcd80da6c9446132ecb762ecf97261 100644 --- a/crates/onestore-offline/tests/support/page_schedule.rs +++ b/crates/onestore-offline/tests/support/page_schedule.rs @@ -1,6 +1,6 @@ use crate::disk; use onestore::{ - CommitError, ExGuid, Insertion, PreparedEdit, RevisionIndex, Store, + CommitError, ExGuid, Insertion, PageEdit, PagePosition, PreparedEdit, RevisionIndex, Store, document::{Document, Kind}, }; use onestore_offline::{EditStatus, Operation, Remote, Replica}; @@ -9,14 +9,36 @@ use std::{io, sync::LazyLock}; #[path = "../../../onestore/tests/support/current.rs"] mod current; -static SOURCE: LazyLock> = - LazyLock::new(|| onestore::create_section("page-schedule.one", "Original", "Author").unwrap()); +static SOURCE: LazyLock> = LazyLock::new(|| { + let mut source = onestore::create_section("page-schedule.one", "Original", "Author").unwrap(); + for _ in 0..3 { + let page = onestore::PageCreation::new(None, Some("Same title"), "Author").unwrap(); + source = PreparedEdit::create_page(&source, &page) + .unwrap() + .as_bytes() + .to_vec(); + } + source +}); -fn pages(source: &[u8]) -> Vec<(ExGuid, ExGuid)> { +fn pages(source: &[u8]) -> Vec<(ExGuid, ExGuid, u32)> { let store = Store::parse(source).unwrap(); let index = RevisionIndex::parse(&store).unwrap(); index.validate_current().unwrap(); - Document::parse(&index).unwrap().pages().unwrap() + let document = Document::parse(&index).unwrap(); + document + .pages() + .unwrap() + .into_iter() + .map(|(sid, page)| { + let space = &document.spaces[&sid]; + let view = &space.revisions[&space.contexts[&ExGuid::default()]]; + let Kind::Metadata { level, .. } = view.nodes[&view.roots[&2]].kind else { + panic!() + }; + (sid, page, level.unwrap_or(1)) + }) + .collect() } struct Session<'a> { @@ -32,7 +54,20 @@ impl Remote for Session<'_> { fn publish(&mut self, edit: &PreparedEdit<'_>) -> Result<(), CommitError> { let mut expected = pages(&self.disk.visible); match self.operation.unwrap() { - Operation::CreatePage(page) => expected.push((page.space(), page.object())), + Operation::CreatePage(page) => expected.push((page.space(), page.object(), 1)), + Operation::Pages(batch) => { + for change in &batch.edits { + let at = expected.iter().position(|p| p.0 == change.space()).unwrap(); + expected[at].2 = change.level(); + if let PagePosition::Before(before) = change.position() { + let page = expected.remove(at); + let at = before.map_or(expected.len(), |before| { + expected.iter().position(|p| p.0 == before).unwrap() + }); + expected.insert(at, page); + } + } + } Operation::Insert(insertion) => { let store = Store::parse(edit.as_bytes()).unwrap(); let index = RevisionIndex::parse(&store).unwrap(); @@ -87,13 +122,13 @@ pub fn run(input: &[u8]) { let cache = replicas[actor].get_or_insert_with(|| Replica::create(&path, &SOURCE).unwrap()); let snapshot = cache.snapshot().unwrap(); let pending = cache.pending().unwrap(); - match step[1] % 6 { + match step[1] % 8 { 0 | 1 => { let title = (step[2] & 1 != 0).then_some("Same 🦋 é"); let page = onestore::PageCreation::new(None, title, "Author").unwrap(); cache.create_page(&snapshot, &page).unwrap().unwrap(); owned[actor].push((page.space(), page.object())); - if step[1] % 6 == 1 { + if step[1] % 8 == 1 { let insertion = Insertion::outline(page.object(), 36.0, 36.0, "Body 🦋 é", "Author") .unwrap(); @@ -146,11 +181,74 @@ pub fn run(input: &[u8]) { disk.visible.clone_from(&disk.durable); disk.fail_at = None; } + 6 => { + let order = pages(&snapshot); + let count = 1 + usize::from(step[3] & 1 != 0); + let selected: Vec<_> = (0..count) + .map(|i| order[(usize::from(step[2]) + i) % order.len()].0) + .collect(); + let anchor = (step[4] & 1 != 0) + .then_some(order[usize::from(step[5]) % order.len()].0) + .filter(|sid| !selected.contains(sid)); + let edits: Vec<_> = selected + .iter() + .enumerate() + .map(|(i, sid)| { + let level = u32::from(step[6 + i]) % 3 + 1; + if step[4] & 2 == 0 { + PageEdit::set_level(*sid, level).unwrap() + } else { + PageEdit::move_to(*sid, anchor, level).unwrap() + } + }) + .collect(); + let expected = PreparedEdit::pages(&snapshot, &edits); + match cache.pages(&snapshot, &edits) { + Ok(id) => { + let expected = expected.unwrap(); + assert_eq!( + current::current(&cache.snapshot().unwrap()), + current::current(expected.as_bytes()) + ); + assert_eq!(id.is_some(), expected.as_bytes() != snapshot); + } + Err(_) => { + assert!(expected.is_err()); + assert_eq!(cache.snapshot().unwrap(), snapshot); + assert_eq!(cache.pending().unwrap(), pending); + } + } + } + 7 => { + if let Some(edit) = pending.first() + && matches!( + cache.status(edit.id).unwrap(), + Some(EditStatus::Conflict(_)) + ) + && let Operation::Pages(batch) = &edit.operation + { + let remote = cache.remote_snapshot().unwrap(); + let order = pages(&remote); + let anchor = (step[2] & 1 != 0) + .then_some(order[usize::from(step[3]) % order.len()].0) + .filter(|sid| batch.edits.iter().all(|e| e.space() != *sid)); + let edits: Vec<_> = batch + .edits + .iter() + .map(|edit| edit.reposition(PagePosition::Before(anchor), 1).unwrap()) + .collect(); + let result = cache.rebase_pages_conflict(edit.id, &snapshot, &remote, &edits); + assert_eq!(cache.snapshot().unwrap(), snapshot); + if result.is_err() { + assert_eq!(cache.pending().unwrap(), pending); + } + } + } _ => unreachable!(), } let local = pages(&replicas[actor].as_ref().unwrap().snapshot().unwrap()); for page in &owned[actor] { - assert!(local.contains(page)); + assert!(local.iter().any(|(sid, oid, _)| (*sid, *oid) == *page)); } } } diff --git a/crates/onestore-offline/tests/sync.rs b/crates/onestore-offline/tests/sync.rs index fac7429f7c0b8a8b3a3bd17e0cae43fa5b3dc8c1..a41fcf03c1353f7cf1fde00c90fd083650d72876 100644 --- a/crates/onestore-offline/tests/sync.rs +++ b/crates/onestore-offline/tests/sync.rs @@ -13,6 +13,8 @@ mod outline; mod page; #[path = "support/page_schedule.rs"] mod page_schedule; +#[path = "sync/pages.rs"] +mod pages; #[path = "sync/tree.rs"] mod tree; #[path = "support/tree_schedule.rs"] @@ -2119,7 +2121,17 @@ mod worker { drop(cache); let cache = Replica::open(&path).unwrap(); assert_eq!(cache.status(id).unwrap(), Some(published)); - assert_eq!(cache.snapshot().unwrap(), server.durable); + let cached = cache.snapshot().unwrap(); + // Confirmation changes reader-notification fields without changing the committed graph. + assert_eq!(cached[..212], server.durable[..212]); + assert_eq!(cached[252..], server.durable[252..]); + let cached_generation = Store::parse(&cached).unwrap().header.generation; + let remote_generation = Store::parse(&server.durable).unwrap().header.generation; + if cached_generation == remote_generation { + assert_eq!(cached, server.durable); + } else { + assert_eq!(cached_generation.checked_add(1), Some(remote_generation)); + } } #[test] diff --git a/crates/onestore-offline/tests/sync/pages.rs b/crates/onestore-offline/tests/sync/pages.rs new file mode 100644 index 0000000000000000000000000000000000000000..45d447d7cada7a959c5c7cb8f48e2dc474867af2 --- /dev/null +++ b/crates/onestore-offline/tests/sync/pages.rs @@ -0,0 +1,631 @@ +use super::*; +use onestore::{PageEdit, PagePosition}; +use onestore_offline::{Operation, Recovery}; +use std::collections::BTreeMap; + +const SOURCE: &[u8] = + include_bytes!("../../../../corpus/page-lifecycle/04-nested/notebook/Lifecycle.one"); + +fn order(source: &[u8]) -> Vec<(ExGuid, u32)> { + let store = Store::parse(source).unwrap(); + let index = RevisionIndex::parse(&store).unwrap(); + index.validate_current().unwrap(); + let document = Document::parse(&index).unwrap(); + document + .pages() + .unwrap() + .iter() + .map(|(sid, _)| { + let space = &document.spaces[sid]; + let view = &space.revisions[&space.contexts[&ExGuid::default()]]; + let Kind::Metadata { level, .. } = view.nodes[&view.roots[&2]].kind else { + panic!() + }; + (*sid, level.unwrap_or(1)) + }) + .collect() +} + +fn texts(source: &[u8]) -> BTreeMap<(ExGuid, ExGuid), String> { + let store = Store::parse(source).unwrap(); + let index = RevisionIndex::parse(&store).unwrap(); + let document = Document::parse(&index).unwrap(); + let mut texts = BTreeMap::new(); + for (sid, space) in &document.spaces { + let view = &space.revisions[&space.contexts[&ExGuid::default()]]; + for (oid, node) in &view.nodes { + if let Kind::RichText { text, .. } = &node.kind { + texts.insert((*sid, *oid), text.clone()); + } + } + } + texts +} + +#[test] +fn atomic_page_batches_survive_reopen_with_dependent_text() { + let directory = tempfile::tempdir().unwrap(); + let path = directory.path().join("pages.sqlite"); + let cache = Replica::create(&path, SOURCE).unwrap(); + let before = order(SOURCE); + let edits: Vec<_> = before[3..6] + .iter() + .map(|(sid, level)| PageEdit::move_to(*sid, None, *level).unwrap()) + .collect(); + let id = cache.pages(SOURCE, &edits).unwrap().unwrap(); + assert!(cache.pages(SOURCE, &edits).is_err()); + let mut expected_text = texts(SOURCE); + let (&(sid, oid), original) = expected_text + .iter() + .find(|(_, text)| text.starts_with("Body parent")) + .unwrap(); + let changed = format!("Offline {original}"); + expected_text.insert((sid, oid), changed); + cache + .edit_text(&cache.snapshot().unwrap(), sid, oid, 0..0, "Offline ") + .unwrap() + .unwrap(); + let queue = cache.pending().unwrap(); + assert!(matches!(&queue[0].operation, Operation::Pages(batch) if batch.edits == edits)); + let local = cache.snapshot().unwrap(); + drop(cache); + let cache = Replica::open(&path).unwrap(); + assert_eq!(cache.pending().unwrap(), queue); + assert_eq!(cache.snapshot().unwrap(), local); + let mut server = Server::new(SOURCE); + for edit in queue { + assert!(matches!(cache.sync_once(&mut server).unwrap(), + Some((published, EditStatus::Published { .. })) if published == edit.id)); + } + let expected = [ + before[..3].to_vec(), + before[6..].to_vec(), + before[3..6].to_vec(), + ] + .concat(); + assert_eq!(order(&server.durable), expected); + assert_eq!(texts(&server.durable), expected_text); + assert!(matches!( + cache.status(id).unwrap(), + Some(EditStatus::Published { .. }) + )); + assert_eq!(server.publications, 2); +} + +#[test] +fn indentation_only_edits_preserve_remote_page_movement() { + let directory = tempfile::tempdir().unwrap(); + let cache = Replica::create(directory.path().join("pages.sqlite"), SOURCE).unwrap(); + let before = order(SOURCE); + let sid = before[4].0; + let id = cache + .pages(SOURCE, &[PageEdit::set_level(sid, 3).unwrap()]) + .unwrap() + .unwrap(); + let mut server = Server::new(SOURCE); + PreparedEdit::pages( + SOURCE, + &[PageEdit::move_to(sid, Some(before[7].0), 2).unwrap()], + ) + .unwrap() + .commit(&mut server) + .unwrap(); + let mut expected = order(&server.durable); + expected.iter_mut().find(|p| p.0 == sid).unwrap().1 = 3; + assert!(matches!(cache.sync_once(&mut server).unwrap(), + Some((published, EditStatus::Published { .. })) if published == id)); + assert_eq!(order(&server.durable), expected); +} + +#[test] +fn competing_page_moves_require_current_review_and_retain_intent_identities() { + let directory = tempfile::tempdir().unwrap(); + let cache = Replica::create(directory.path().join("pages.sqlite"), SOURCE).unwrap(); + let pages = order(SOURCE); + let sid = pages[6].0; + let original = PageEdit::move_to(sid, None, 1).unwrap(); + let id = cache + .pages(SOURCE, std::slice::from_ref(&original)) + .unwrap() + .unwrap(); + let mut server = Server::new(SOURCE); + PreparedEdit::pages( + SOURCE, + &[PageEdit::move_to(sid, Some(pages[0].0), 1).unwrap()], + ) + .unwrap() + .commit(&mut server) + .unwrap(); + let remote = server.visible.clone(); + let local = cache.snapshot().unwrap(); + assert_eq!( + cache.sync_once(&mut server).unwrap(), + Some((id, EditStatus::Conflict(ConflictKind::StructureChanged))) + ); + assert_eq!(server.publications, 0); + assert_eq!(cache.snapshot().unwrap(), local); + let revised = original + .reposition(PagePosition::Before(Some(pages[2].0)), 1) + .unwrap(); + let fresh = PageEdit::move_to(sid, Some(pages[2].0), 1).unwrap(); + assert!( + cache + .rebase_pages_conflict(id, &local, &remote, &[fresh]) + .is_err() + ); + assert!( + cache + .rebase_pages_conflict(id, SOURCE, &remote, std::slice::from_ref(&revised)) + .is_err() + ); + assert!( + cache + .rebase_pages_conflict(id, &local, SOURCE, std::slice::from_ref(&revised)) + .is_err() + ); + cache + .rebase_pages_conflict(id, &local, &remote, std::slice::from_ref(&revised)) + .unwrap(); + assert!(matches!(&cache.pending().unwrap()[0].operation, + Operation::Pages(batch) if batch.edits == [revised.clone()])); + let expected = PreparedEdit::pages(&remote, &[revised]).unwrap(); + assert!(matches!(cache.sync_once(&mut server).unwrap(), + Some((published, EditStatus::Published { .. })) if published == id)); + assert_eq!(order(&server.durable), order(expected.as_bytes())); +} + +#[test] +fn one_competing_level_prevents_publication_of_the_whole_batch() { + let directory = tempfile::tempdir().unwrap(); + let cache = Replica::create(directory.path().join("pages.sqlite"), SOURCE).unwrap(); + let pages = order(SOURCE); + let id = cache + .pages( + SOURCE, + &[ + PageEdit::set_level(pages[4].0, 3).unwrap(), + PageEdit::set_level(pages[5].0, 2).unwrap(), + ], + ) + .unwrap() + .unwrap(); + let local = cache.snapshot().unwrap(); + let mut server = Server::new(SOURCE); + PreparedEdit::pages(SOURCE, &[PageEdit::set_level(pages[5].0, 1).unwrap()]) + .unwrap() + .commit(&mut server) + .unwrap(); + let remote = server.durable.clone(); + assert_eq!( + cache.sync_once(&mut server).unwrap(), + Some((id, EditStatus::Conflict(ConflictKind::StructureChanged))) + ); + assert_eq!(server.publications, 0); + assert_eq!(server.durable, remote); + assert_eq!(cache.snapshot().unwrap(), local); +} + +#[test] +fn uncertain_page_batches_survive_recovery_and_do_not_replay() { + for fault in [ + Fault::UnknownBefore, + Fault::UnknownAfter, + Fault::PanicBefore, + Fault::PanicAfter, + ] { + let directory = tempfile::tempdir().unwrap(); + let path = directory.path().join("pages.sqlite"); + let mut cache = Replica::create(&path, SOURCE).unwrap(); + let pages = order(SOURCE); + let edits = [ + PageEdit::set_level(pages[4].0, 3).unwrap(), + PageEdit::set_level(pages[5].0, 2).unwrap(), + ]; + let id = cache.pages(SOURCE, &edits).unwrap().unwrap(); + let local = cache.snapshot().unwrap(); + let queue = cache.pending().unwrap(); + let mut server = Server::new(SOURCE); + server.fault = fault; + let _ = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| { + cache.sync_once(&mut server) + })); + drop(cache); + cache = Replica::open(&path).unwrap(); + let attempted = cache.status(id).unwrap().unwrap(); + assert!(matches!(attempted, EditStatus::AwaitingConfirmation { .. })); + let archive = directory.path().join("recovery.sqlite"); + cache.export_recovery(&archive).unwrap(); + let recovery = Recovery::open(&archive).unwrap(); + assert_eq!(recovery.pending().unwrap(), queue); + assert_eq!(recovery.status(id).unwrap(), Some(attempted)); + assert_eq!(recovery.snapshot().unwrap(), local); + assert!( + cache + .rebase_pages_conflict(id, &local, SOURCE, &edits) + .is_err() + ); + let result = cache.sync_once(&mut server).unwrap().unwrap(); + assert_eq!(server.publications, 1); + if matches!(fault, Fault::UnknownAfter | Fault::PanicAfter) { + assert!(matches!(result.1, EditStatus::Published { .. })); + assert_eq!(server.confirmations, 1); + } else { + assert_eq!(result, (id, attempted)); + assert_eq!(server.confirmations, 0); + } + } +} + +#[test] +fn an_unchanged_section_revision_cannot_confirm_a_changed_page() { + let before = order(SOURCE); + let sid = before[4].0; + let store = Store::parse(SOURCE).unwrap(); + let index = RevisionIndex::parse(&store).unwrap(); + let root = index.root; + let doc = Document::parse(&index).unwrap(); + let space = &doc.spaces[&root]; + let view = &space.revisions[&space.contexts[&ExGuid::default()]]; + let copy = *view.nodes.iter().find(|(_, node)| + matches!(&node.kind, Kind::Metadata { title: Some(title), .. } if title == "child")) + .unwrap().0; + let source = + onestore::replace_property_bytes(SOURCE, root, copy, 0x14001dff, &3_u32.to_le_bytes()) + .unwrap(); + let directory = tempfile::tempdir().unwrap(); + let path = directory.path().join("pages.sqlite"); + let cache = Replica::create(&path, &source).unwrap(); + let id = cache + .pages(&source, &[PageEdit::set_level(sid, 3).unwrap()]) + .unwrap() + .unwrap(); + let mut server = Server::new(&source); + server.fault = Fault::UnknownAfter; + assert!(cache.sync_once(&mut server).is_err()); + let attempted = cache.status(id).unwrap().unwrap(); + drop(cache); + let db = rusqlite::Connection::open(&path).unwrap(); + let encoded: String = db + .query_row("SELECT revisions FROM attempt", [], |r| r.get(0)) + .unwrap(); + let proofs: BTreeMap = serde_json::from_str(&encoded).unwrap(); + assert_eq!(proofs.len(), 2); + let store = Store::parse(&source).unwrap(); + let index = RevisionIndex::parse(&store).unwrap(); + assert_eq!( + proofs[&root], + index.spaces[&root].labels[&(ExGuid::default(), 1)] + ); + assert!(!index.spaces[&sid].revisions.contains_key(&proofs[&sid])); + drop(db); + let cache = Replica::open(&path).unwrap(); + let complete = server.visible.clone(); + server.visible = source; + assert_eq!(cache.sync_once(&mut server).unwrap(), Some((id, attempted))); + assert_eq!(server.confirmations, 0); + server.visible = complete; + assert!(matches!( + cache.sync_once(&mut server).unwrap(), + Some((_, EditStatus::Published { .. })) + )); + assert_eq!(server.publications, 1); + assert_eq!(server.confirmations, 1); +} + +#[test] +fn an_explicit_anchor_is_retained_even_when_originally_in_place() { + let directory = tempfile::tempdir().unwrap(); + let cache = Replica::create(directory.path().join("pages.sqlite"), SOURCE).unwrap(); + let pages = order(SOURCE); + let id = cache + .pages( + SOURCE, + &[ + PageEdit::move_to(pages[6].0, Some(pages[7].0), 1).unwrap(), + PageEdit::set_level(pages[4].0, 3).unwrap(), + ], + ) + .unwrap() + .unwrap(); + let mut server = Server::new(SOURCE); + PreparedEdit::pages( + SOURCE, + &[PageEdit::move_to(pages[6].0, Some(pages[0].0), 1).unwrap()], + ) + .unwrap() + .commit(&mut server) + .unwrap(); + assert_eq!( + cache.sync_once(&mut server).unwrap(), + Some((id, EditStatus::Conflict(ConflictKind::StructureChanged))) + ); + assert_eq!(server.publications, 0); +} + +#[test] +fn convergent_page_indentation_requires_confirmation_without_republishing() { + let directory = tempfile::tempdir().unwrap(); + let cache = Replica::create(directory.path().join("pages.sqlite"), SOURCE).unwrap(); + let sid = order(SOURCE)[4].0; + let id = cache + .pages(SOURCE, &[PageEdit::set_level(sid, 1).unwrap()]) + .unwrap() + .unwrap(); + let mut server = Server::new(SOURCE); + PreparedEdit::pages(SOURCE, &[PageEdit::set_level(sid, 1).unwrap()]) + .unwrap() + .commit(&mut server) + .unwrap(); + server.fault = Fault::Confirm; + assert!(cache.sync_once(&mut server).is_err()); + assert_eq!(cache.status(id).unwrap(), Some(EditStatus::Pending)); + assert_eq!(server.publications, 0); + assert!(matches!(cache.sync_once(&mut server).unwrap(), + Some((published, EditStatus::Published { .. })) if published == id)); + assert_eq!(server.publications, 0); + assert_eq!(server.confirmations, 2); +} + +#[test] +fn schema_ten_migration_preserves_multi_space_uncertainty() { + let directory = tempfile::tempdir().unwrap(); + let path = directory.path().join("pages.sqlite"); + let cache = Replica::create(&path, SOURCE).unwrap(); + let page = onestore::PageCreation::new(None, Some("Migration"), "Author").unwrap(); + let id = cache.create_page(SOURCE, &page).unwrap().unwrap(); + let mut server = Server::new(SOURCE); + server.fault = Fault::UnknownBefore; + assert!(cache.sync_once(&mut server).is_err()); + let local = cache.snapshot().unwrap(); + let queue = cache.pending().unwrap(); + let status = cache.status(id).unwrap(); + drop(cache); + let db = rusqlite::Connection::open(&path).unwrap(); + db.pragma_update(None, "user_version", 10).unwrap(); + let proofs: String = db + .query_row("SELECT revisions FROM attempt", [], |r| r.get(0)) + .unwrap(); + drop(db); + let cache = Replica::open(&path).unwrap(); + assert_eq!(cache.snapshot().unwrap(), local); + assert_eq!(cache.pending().unwrap(), queue); + assert_eq!(cache.status(id).unwrap(), status); + assert_eq!( + cache.sync_once(&mut server).unwrap(), + Some((id, status.unwrap())) + ); + assert_eq!(server.publications, 1); + drop(cache); + let db = rusqlite::Connection::open(&path).unwrap(); + assert_eq!( + db.query_row("SELECT revisions FROM attempt", [], |r| r + .get::<_, String>(0)) + .unwrap(), + proofs + ); + assert_eq!( + db.pragma_query_value(None, "user_version", |r| r.get::<_, u32>(0)) + .unwrap(), + 11 + ); +} + +#[test] +fn native_page_changes_reconcile_with_atomic_offline_batches_and_review() { + let root = std::path::Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../../corpus/page-lifecycle/movement"); + let provenance: serde_json::Value = + serde_json::from_slice(&std::fs::read(root.join("provenance.json")).unwrap()).unwrap(); + let phases = provenance["cold"].as_object().unwrap(); + assert_eq!(phases.len(), 9); + let original = order(SOURCE); + let original_text = texts(SOURCE); + let (&(text_space, text_object), body) = original_text + .iter() + .find(|(_, text)| text.starts_with("Body parent")) + .unwrap(); + let mut expected_text = original_text.clone(); + expected_text.insert((text_space, text_object), format!("Offline {body}")); + let mut counts = [0; 2]; + for mode in ["indent", "group"] { + for phase in phases.keys() { + let directory = tempfile::tempdir().unwrap(); + let path = directory.path().join("pages.sqlite"); + let cache = Replica::create(&path, SOURCE).unwrap(); + let edits = if mode == "indent" { + vec![PageEdit::set_level(original[4].0, 3).unwrap()] + } else { + original[3..6] + .iter() + .map(|(sid, level)| PageEdit::move_to(*sid, None, *level).unwrap()) + .collect() + }; + let id = cache.pages(SOURCE, &edits).unwrap().unwrap(); + let text_id = cache + .edit_text( + &cache.snapshot().unwrap(), + text_space, + text_object, + 0..0, + "Offline ", + ) + .unwrap() + .unwrap(); + let native = std::fs::read(root.join(phase).join("notebook/Lifecycle.one")).unwrap(); + let mut server = Server::new(&native); + let local = cache.snapshot().unwrap(); + let expected_conflict = if mode == "indent" { + matches!( + phase.as_str(), + "04-subpage-move" | "07-promoted-root" | "08-collapsed-group-move" + ) + } else { + !matches!( + phase.as_str(), + "02-promoted-parent" | "03-selected-group-move" | "06-promoted-level-two" + ) + }; + let first = cache.sync_once(&mut server).unwrap().unwrap(); + assert_eq!(first.0, id); + let mut reviewed = edits.clone(); + if expected_conflict { + assert_eq!( + first.1, + EditStatus::Conflict(ConflictKind::StructureChanged), + "{mode}:{phase}" + ); + assert_eq!(server.publications, 0); + assert_eq!(cache.snapshot().unwrap(), local); + if mode == "indent" && phase == "08-collapsed-group-move" { + reviewed[0] = reviewed[0].reposition(PagePosition::Keep, 1).unwrap(); + } + cache + .rebase_pages_conflict(id, &local, &native, &reviewed) + .unwrap(); + assert!(matches!(cache.sync_once(&mut server).unwrap(), + Some((published, EditStatus::Published { .. })) if published == id)); + } else { + assert!( + matches!(first.1, EditStatus::Published { .. }), + "{mode}:{phase}" + ); + } + counts[usize::from(expected_conflict)] += 1; + drop(cache); + let cache = Replica::open(&path).unwrap(); + assert!(matches!(cache.sync_once(&mut server).unwrap(), + Some((published, EditStatus::Published { .. })) if published == text_id)); + assert!(cache.pending().unwrap().is_empty()); + let mut expected = order(&native); + for edit in &reviewed { + let at = expected.iter().position(|p| p.0 == edit.space()).unwrap(); + expected[at].1 = edit.level(); + if let PagePosition::Before(before) = edit.position() { + let page = expected.remove(at); + let at = before.map_or(expected.len(), |sid| { + expected.iter().position(|p| p.0 == sid).unwrap() + }); + expected.insert(at, page); + } + } + assert_eq!(order(&server.durable), expected, "{mode}:{phase}"); + assert_eq!(texts(&server.durable), expected_text, "{mode}:{phase}"); + assert_eq!( + server.publications, + 1 + usize::from(expected != order(&native)) + ); + if let Some(output) = std::env::var_os("ONESTORE_OFFLINE_PAGE_EDIT_OUTPUT") { + let output = std::path::Path::new(&output); + assert!(output.is_absolute()); + let path = output.join(format!("{mode}-{phase}")); + std::fs::create_dir_all(&path).unwrap(); + std::fs::write(path.join("Lifecycle.one"), &server.durable).unwrap(); + std::fs::write( + path.join("manifest.json"), + serde_json::to_vec_pretty( + &serde_json::json!({"mode": mode, "phase": phase, "original": edits, + "reviewed": reviewed, "conflict": expected_conflict, + "publications": server.publications, "confirmations": server.confirmations, + "page_receipt": format!("{:?}", cache.status(id).unwrap()), + "text_receipt": format!("{:?}", cache.status(text_id).unwrap())}), + ) + .unwrap(), + ) + .unwrap(); + } + } + } + assert_eq!(counts, [9, 9]); +} + +#[test] +fn twelve_disjoint_page_batches_merge_with_dependent_bodies_without_review() { + let mut source = onestore::create_section("pages.one", "Sentinel", "Author").unwrap(); + let mut created = Vec::new(); + for _ in 0..36 { + let page = onestore::PageCreation::new(None, Some("Same title"), "Author").unwrap(); + source = PreparedEdit::create_page(&source, &page) + .unwrap() + .as_bytes() + .to_vec(); + created.push(page); + } + let mut expected = vec![order(&source)[0]]; + let mut expected_text = texts(&source); + let directory = tempfile::tempdir().unwrap(); + let mut queues = Vec::new(); + for (actor, group) in created.chunks_exact(3).enumerate() { + let path = directory.path().join(format!("{actor}.sqlite")); + let cache = Replica::create(&path, &source).unwrap(); + let edits = [ + PageEdit::move_to(group[1].space(), Some(group[0].space()), 1).unwrap(), + PageEdit::set_level(group[2].space(), 2).unwrap(), + ]; + cache.pages(&source, &edits).unwrap().unwrap(); + let body = format!("Actor {actor} 🦀 é"); + let insertion = + onestore::Insertion::outline(group[1].object(), 36.0, 36.0, &body, "Author").unwrap(); + cache + .insert(&cache.snapshot().unwrap(), group[1].space(), &insertion) + .unwrap() + .unwrap(); + expected.extend([ + (group[1].space(), 1), + (group[0].space(), 1), + (group[2].space(), 2), + ]); + expected_text.insert((group[1].space(), insertion.text_object()), body); + queues.push((path, cache.pending().unwrap())); + } + let mut server = Server::new(&source); + for (path, queue) in &queues { + let cache = Replica::open(path).unwrap(); + assert_eq!(cache.pending().unwrap(), *queue); + for edit in queue { + assert!(matches!(cache.sync_once(&mut server).unwrap(), + Some((published, EditStatus::Published { .. })) if published == edit.id)); + } + assert!(cache.pending().unwrap().is_empty()); + } + assert_eq!(server.publications, 24); + assert_eq!(order(&server.durable), expected); + assert_eq!(texts(&server.durable), expected_text); + for (path, queue) in &queues { + let cache = Replica::open(path).unwrap(); + assert_eq!(cache.sync_once(&mut server).unwrap(), None); + assert_eq!(order(&cache.snapshot().unwrap()), expected); + for edit in queue { + assert!(matches!( + cache.status(edit.id).unwrap(), + Some(EditStatus::Published { .. }) + )); + } + } + if let Some(output) = std::env::var_os("ONESTORE_OFFLINE_PAGE_CLIENT_OUTPUT") { + let output = std::path::Path::new(&output); + assert!(output.is_absolute()); + std::fs::create_dir_all(output).unwrap(); + std::fs::write(output.join("pages.one"), &server.durable).unwrap(); + let operations: Vec<_> = queues + .iter() + .map(|(_, queue)| { + queue + .iter() + .map(|edit| { + serde_json::json!({"id": edit.id, "space": edit.space, + "operation": edit.operation}) + }) + .collect::>() + }) + .collect(); + std::fs::write( + output.join("manifest.json"), + serde_json::to_vec_pretty( + &serde_json::json!({"operations": operations, "publications": server.publications, + "expected_order": expected, "pages": 37}), + ) + .unwrap(), + ) + .unwrap(); + } +} diff --git a/crates/onestore/README.md b/crates/onestore/README.md index 6e3f4c5bb71750b1644d7b8b7ef1a22f7a45b160..a1924eb03c1771ad3255274bec07b9989e386f71 100644 --- a/crates/onestore/README.md +++ b/crates/onestore/README.md @@ -89,7 +89,8 @@ series membership and metadata levels in one transaction. Each page occurs once; levels are 1–3 and the final first page must have level 1. A following deeper-level page remains in place unless explicitly selected. To move a group, supply all its pages in order. Retain the intents across retries so newly formed series keep -their identities. [Native page-edit fixtures](../../corpus/page-lifecycle/page-edits/README.md) +their identities; `reposition(PagePosition, level)` revises their placement while +preserving those identities. [Native page-edit fixtures](../../corpus/page-lifecycle/page-edits/README.md) cover individual tabs, selected and collapsed groups, nesting and promotion. Insertions update child references, reference counts, modification times and automatic titles atomically. Paragraphs can be nested or inserted into table cells; outline diff --git a/crates/onestore/src/lib.rs b/crates/onestore/src/lib.rs index fdcbb6a90cc801dd223dc7fdc952c72275f442cf..5cf64bcba45d63834e44ce062111cbdea98775aa 100644 --- a/crates/onestore/src/lib.rs +++ b/crates/onestore/src/lib.rs @@ -36,7 +36,7 @@ pub use formatting::TextAttribute; pub use insertion::Insertion; pub use objects::{Object, ObjectData, ObjectReferences, ResolvedRevision}; pub use outline::OutlineEdit; -pub use page::{PageCreation, PageEdit}; +pub use page::{PageCreation, PageEdit, PagePosition}; pub use paragraph::{ParagraphJoin, ParagraphSplit}; pub use properties::{IdStream, Property, PropertySets, Value}; pub use revisions::{ExGuid, ObjectSpace, Revision, RevisionIndex}; diff --git a/crates/onestore/src/page.rs b/crates/onestore/src/page.rs index a4487113f96f32f12d9d4935059b2720d6c5fe01..ea63632a72a220c741a1db8b36bcb921982f5a0e 100644 --- a/crates/onestore/src/page.rs +++ b/crates/onestore/src/page.rs @@ -50,9 +50,10 @@ fn set_references(object: &mut PropertyObject, property: u32, ids: &[ExGuid]) -> object.copy_property(&source, property) } -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +/// Whether an edit preserves position or moves before a page (None appends). +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[serde(deny_unknown_fields)] -enum Position { +pub enum PagePosition { Keep, Before(Option), } @@ -65,25 +66,44 @@ pub struct PageEdit { guid: [u8; 16], space: ExGuid, level: u32, - position: Position, + position: PagePosition, } impl PageEdit { /// Changes one page's indentation without changing its position. pub fn set_level(space: ExGuid, level: u32) -> Result { - Self::new(space, level, Position::Keep) + Self::new(space, level, PagePosition::Keep) } /// Moves before an existing page space, or appends when `before` is None. pub fn move_to(space: ExGuid, before: Option, level: u32) -> Result { - Self::new(space, level, Position::Before(before)) + Self::new(space, level, PagePosition::Before(before)) } pub fn space(&self) -> ExGuid { self.space } - fn new(space: ExGuid, level: u32, position: Position) -> Result { + pub fn level(&self) -> u32 { + self.level + } + + pub fn position(&self) -> PagePosition { + self.position + } + + /// Revises placement while retaining the selected page and allocated series identity. + pub fn reposition(&self, position: PagePosition, level: u32) -> Result { + let edit = Self { + position, + level, + ..self.clone() + }; + edit.validate()?; + Ok(edit) + } + + fn new(space: ExGuid, level: u32, position: PagePosition) -> Result { let edit = Self { guid: fresh_guid()?, space, @@ -100,7 +120,7 @@ impl PageEdit { "Choose an existing page space and indentation level 1 through 3", )); } - if let Position::Before(Some(before)) = self.position + if let PagePosition::Before(Some(before)) = self.position && (before.guid == [0; 16] || before == self.space) { return Err(invalid("Choose a different page as the movement anchor")); @@ -209,7 +229,7 @@ impl PageEdit { return Err(invalid("The selected page is no longer in the section")); }; levels.insert(edit.space, edit.level); - if let Position::Before(before) = edit.position { + if let PagePosition::Before(before) = edit.position { order.remove(at); let position = match before { None => order.len(), @@ -269,7 +289,13 @@ impl PageEdit { children.push(id); let membership_changed = old_id.is_none_or(|old| view.nodes[&old].spaces != spaces); if !membership_changed - && !spaces.iter().any(|sid| levels[sid] != original_levels[sid]) + && !spaces.iter().any(|sid| { + levels[sid] != original_levels[sid] + || copies.get(sid).is_some_and(|id| { + matches!(view.nodes[id].kind, Kind::Metadata { level, .. } + if level.unwrap_or(1) != levels[sid]) + }) + }) { continue; } diff --git a/crates/onestore/tests/page_movement.rs b/crates/onestore/tests/page_movement.rs index 4c4871e16ca4a965a9cc647d86b9188194213ddb..d726678e26b2b9275ddad8283af0bfb9d8927305 100644 --- a/crates/onestore/tests/page_movement.rs +++ b/crates/onestore/tests/page_movement.rs @@ -284,6 +284,51 @@ fn moving_pages_preserves_ink_file_data_and_native_feature_objects() { } } +#[test] +fn section_reordering_refreshes_stale_native_metadata_levels() { + let source = include_bytes!( + "../../../corpus/page-lifecycle/movement/02-promoted-parent/notebook/Lifecycle.one" + ); + let ids = pages(source); + let edits: Vec<_> = ids[3..6] + .iter() + .enumerate() + .map(|(i, sid)| PageEdit::move_to(*sid, None, u32::try_from(i + 1).unwrap()).unwrap()) + .collect(); + let prepared = PreparedEdit::pages(source, &edits).unwrap(); + let stores = [source.as_slice(), prepared.as_bytes()].map(|b| Store::parse(b).unwrap()); + let indexes = stores.each_ref().map(|s| RevisionIndex::parse(s).unwrap()); + let documents = indexes.each_ref().map(|i| Document::parse(i).unwrap()); + let levels = documents.each_ref().map(|document| { + let section = &document.spaces[&document.root]; + let view = §ion.revisions[§ion.contexts[&ExGuid::default()]]; + let copies: Vec<_> = view + .nodes + .iter() + .filter_map(|(id, node)| match &node.kind { + Kind::Metadata { + title: Some(title), + level, + } if title == "Same title" => Some((*id, *level)), + _ => None, + }) + .collect(); + assert_eq!(copies.len(), 1); + copies[0] + }); + assert_eq!(levels[0].0, levels[1].0); + assert_eq!(levels[0].1, Some(2)); + assert_eq!(levels[1].1, Some(1)); + for (sid, space) in &indexes[0].spaces { + for rid in space.revisions.keys() { + assert_eq!( + format!("{:?}", indexes[0].resolve(*sid, *rid).unwrap()), + format!("{:?}", indexes[1].resolve(*sid, *rid).unwrap()) + ); + } + } +} + #[test] fn metadata_copy_order_does_not_change_page_identity() { let source = include_bytes!( diff --git a/tools/offline_page_edits.py b/tools/offline_page_edits.py new file mode 100644 index 0000000000000000000000000000000000000000..b024c27b4b6b1bcd74890dbcbf89498c3230a903 --- /dev/null +++ b/tools/offline_page_edits.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +"""Cold-validate exported offline page batches in disposable OneNote clones.""" +import argparse +from concurrent.futures import ThreadPoolExecutor +import json +from pathlib import Path +import subprocess +import sys +from tempfile import TemporaryDirectory + +ROOT = Path(__file__).resolve().parent.parent + + +def capture(case, output): + destination = output / case.name + with TemporaryDirectory() as temporary: + source = Path(temporary) + (source / 'Lifecycle.one').symlink_to((case / 'Lifecycle.one').resolve(strict=True)) + with (output / (case.name + '.log')).open('w') as log: + subprocess.run([sys.executable, ROOT / 'tools/native_runner.py', source, + destination, '--expected-pages', '9', '--collect-notebook'], + stdout=log, stderr=subprocess.STDOUT, check=True) + subprocess.run([sys.executable, ROOT / 'tools/verify_page_creation.py', case, + destination], stdout=log, stderr=subprocess.STDOUT, check=True) + assert json.loads((destination / 'teardown.json').read_text())['absent'] + assert (case / 'Lifecycle.one').read_bytes()[1024:] == ( + destination / 'notebook/Lifecycle.one').read_bytes()[1024:] + print(f'Verified and removed: {case.name}', flush=True) + return case.name + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('candidates', type=Path) + parser.add_argument('output', type=Path) + parser.add_argument('--workers', type=int, default=4, choices=range(1, 9)) + args = parser.parse_args() + cases = sorted(p for p in args.candidates.iterdir() if (p / 'Lifecycle.one').is_file()) + if len(cases) != 18: + parser.error('Export all 18 native/offline page cases before starting the captures.') + args.output.mkdir(parents=True, exist_ok=False) + with ThreadPoolExecutor(max_workers=args.workers) as pool: + completed = list(pool.map(lambda case: capture(case, args.output), cases)) + (args.output / 'verified.json').write_text(json.dumps(completed, indent=2) + '\n') diff --git a/tools/test_page_movement.py b/tools/test_page_movement.py index 99822fd6091340b086d06ad79c1563700a81e5a1..abd76229afe2e54dd77b53d2d5f089fa35ce46ea 100644 --- a/tools/test_page_movement.py +++ b/tools/test_page_movement.py @@ -12,6 +12,42 @@ FIXTURE = Path(__file__).resolve().parent.parent / 'corpus/page-lifecycle' class PageMovementTest(unittest.TestCase): + def test_offline_batches_reconcile_native_movements_without_cold_repairs(self): + fixture = FIXTURE / 'offline-edits' + cases = json.loads((fixture / 'provenance.json').read_text())['cases'] + self.assertEqual(len(cases), 18) + conflicts = 0 + for case in cases: + with self.subTest(case=case): + source = fixture / case / 'candidate' + cold = fixture / case / 'cold' + manifest = json.loads((source / 'manifest.json').read_text()) + conflicts += manifest['conflict'] + self.assertEqual(compare(source, cold), 0) + self.assertEqual((source / 'Lifecycle.one').read_bytes()[1024:], + (cold / 'notebook/Lifecycle.one').read_bytes()[1024:]) + self.assertEqual(conflicts, 9) + + def test_twelve_offline_page_batches_retain_order_levels_and_bodies_natively(self): + fixture = FIXTURE / 'offline-edits/twelve-clients' + source = fixture / 'candidate' + cold = fixture / 'cold' + self.assertEqual(compare(source, cold), 0) + manifest = json.loads((source / 'manifest.json').read_text()) + self.assertEqual(manifest['publications'], 24) + with TemporaryDirectory() as temporary: + output = Path(temporary) / 'document' + subprocess.run([EXPORTER, cold / 'notebook/pages.one', output], check=True) + document = json.loads((output / 'document.json').read_text()) + pages = list(ordered_pages(document)) + self.assertEqual(len(pages), 37) + self.assertEqual([[sid, revision['nodes'][revision['roots']['2']]['kind']['level']] + for sid, _, revision, _ in pages], manifest['expected_order']) + bodies = [node['kind']['text'] for _, _, revision, page in pages + for _, node in walk(revision, page) + if node['kind']['type'] == 'RichText' and node['kind']['text'].startswith('Actor ')] + self.assertEqual(bodies, [f'Actor {i} 🦀 é' for i in range(12)]) + def test_optional_metadata_restoration_matches_native(self): fixture = FIXTURE / 'page-edits/optional-cache' for source, cold in [('source', 'source-cold'), ('candidate', 'cold'),