authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-10 23:05:38-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-10 23:05:38-07:00
log8f943380df58facba8f67538e833f1e7f86a515a
tree5adf7b0332e91164194b3da247945e0cb81b45fc
parenta12631917f7c136f8549fd670561c6face5fe85a
signature Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU

test: reopen page-model edits in OneNote and edit them natively

Export a candidate notebook with eight compound PreparedEdit::page publications on the outline-edit fixture (reorder with Unicode replacement and bold, subtree move with a new nested child and italic/color/size, deletion with an appended paragraph and a new outline, mid-paragraph split, collapse with outline move and fixed width, outline reorder, outline deletion with underline/highlight/font, join with strike/subscript), capture it through a fresh OneNote 2010 cache, replace one Rust-written paragraph natively, and reopen that result cold. tools/test_page_model.py compares every page against the Rust model of each notebook, requires every page space to keep its active revision across the cold reopen, and checks each case against the manifest. Native results: 15/15 pages, 14 associated tags and 10,132 format comparisons match after the cold reopen; OneNote only adds its per-series navigation metadata copies to the section root, as for the untouched fixture. The native edit saves on top of the Rust output, and its cold reopen is byte-identical. Three owned clones removed. Acceptance: evidence/m10/PAGE-MODEL.md. Assisted-by: claude-fable-5.1

100 files changed, 3116 insertions(+), 0 deletions(-)

corpus/page-model/README.md created+32
......@@ -0,0 +1,32 @@
1# Page-model edits through a cold native reopen
2
3`candidate` is `corpus/outline-edit/before` after eight compound `PreparedEdit::page`
4publications, one per edited page, each combining several kinds of change in a single
5transaction: paragraph reorder and Unicode replacement with a bold range; a subtree
6move with a new nested child and an italic/colored/resized range; a subtree deletion
7with an appended paragraph and a new two-paragraph outline; a mid-paragraph split; a
8collapse with an outline move and fixed width; an outline reorder with text appended
9in both; an outline deletion with underline/highlight/font changes; and a paragraph
10join with strike/subscript. `candidate/manifest.json` records each case, the page's
11position in the section and the model the writer read back.
12
13`cold` is an independent OneNote 2010 capture of the candidate through a fresh
14application cache, with the notebook retained after the native open. `followup`
15opens `cold/notebook` in another fresh clone and replaces the Rust-written Unicode
16paragraph on "Move leaf down" natively (`tools/native/page-model-followup.ps1`);
17`followup-cold` reopens that result cold.
18
19`PYTHONPATH=tools python3 -m unittest test_page_model -v` compares every page's
20native XML with the Rust model of each notebook (text order, resolved formatting,
21associated tags), requires the cold reopen to leave every page space's active
22revision unchanged (OneNote only adds its per-series navigation metadata copies to
23the section root on open, as it does for the untouched `outline-edit` fixture whose
24first-page copy was already stale), and checks each case's expected outline positions, paragraph order,
25nesting and collapse state in the candidate, the cold notebook and the follow-up.
26
27To regenerate: `ONESTORE_PAGE_MODEL_OUTPUT=/absolute/new cargo test -p onestore
28--test page_writer export_native_page_model_candidates -- --ignored`, then
29`tools/native_runner.py /absolute/new/candidate/notebook /absolute/new/cold
30--expected-pages 15 --collect-notebook`, then the same runner on `cold/notebook`
31with `--author tools/native/page-model-followup.ps1` into `followup`, and a final
32cold capture of `followup/notebook` into `followup-cold`. Each runner removes its clone.
corpus/page-model/candidate/manifest.json created+1505
......@@ -0,0 +1,1505 @@
1{
2 "author": "Rust page writer",
3 "cases": [
4 {
5 "description": "Anchor moved last and replaced with Unicode text, bold range on Trailing sibling",
6 "expected": {
7 "outlines": [
8 {
9 "max_width": 468.0,
10 "paragraphs": [
11 {
12 "collapsed": false,
13 "parent": null,
14 "spans": [
15 {
16 "bold": true,
17 "color": 4278190080,
18 "end": 12,
19 "font": "Calibri",
20 "font_size": 11.0,
21 "highlight": 4278190080,
22 "italic": false,
23 "strike": false,
24 "subscript": false,
25 "underline": false
26 },
27 {
28 "bold": false,
29 "color": 4278190080,
30 "end": 13,
31 "font": "Calibri",
32 "font_size": 11.0,
33 "highlight": 4278190080,
34 "italic": false,
35 "strike": false,
36 "subscript": false,
37 "underline": false
38 },
39 {
40 "bold": false,
41 "color": 4278190080,
42 "end": 57,
43 "font": "Calibri",
44 "font_size": 11.0,
45 "highlight": 4278190080,
46 "italic": false,
47 "strike": false,
48 "subscript": false,
49 "underline": false
50 },
51 {
52 "bold": false,
53 "color": 4278190080,
54 "end": 67,
55 "font": "Calibri",
56 "font_size": 11.0,
57 "highlight": 4278190080,
58 "italic": false,
59 "strike": false,
60 "subscript": false,
61 "underline": false
62 }
63 ],
64 "text": "Target 🦀 é ﷟HYPERLINK \"https://example.invalid/outline\"Link label"
65 },
66 {
67 "collapsed": false,
68 "parent": null,
69 "spans": [
70 {
71 "bold": true,
72 "color": 4278190080,
73 "end": 4,
74 "font": "Calibri",
75 "font_size": 11.0,
76 "highlight": 4278190080,
77 "italic": false,
78 "strike": false,
79 "subscript": false,
80 "underline": false
81 },
82 {
83 "bold": false,
84 "color": 4278190080,
85 "end": 16,
86 "font": "Calibri",
87 "font_size": 11.0,
88 "highlight": 4278190080,
89 "italic": false,
90 "strike": false,
91 "subscript": false,
92 "underline": false
93 }
94 ],
95 "text": "Trailing sibling"
96 },
97 {
98 "collapsed": false,
99 "parent": null,
100 "spans": [
101 {
102 "bold": false,
103 "color": 4278190080,
104 "end": 17,
105 "font": "Calibri",
106 "font_size": 11.0,
107 "highlight": 4278190080,
108 "italic": false,
109 "strike": false,
110 "subscript": false,
111 "underline": false
112 }
113 ],
114 "text": "Rust 🦀 é 東京 שלום"
115 }
116 ],
117 "width_set_by_user": null,
118 "x": 72.0,
119 "y": 108.0
120 },
121 {
122 "max_width": 468.0,
123 "paragraphs": [
124 {
125 "collapsed": false,
126 "parent": null,
127 "spans": [
128 {
129 "bold": false,
130 "color": 4278190080,
131 "end": 13,
132 "font": "Calibri",
133 "font_size": 11.0,
134 "highlight": 4278190080,
135 "italic": false,
136 "strike": false,
137 "subscript": false,
138 "underline": false
139 }
140 ],
141 "text": "Other outline"
142 }
143 ],
144 "width_set_by_user": null,
145 "x": 480.0,
146 "y": 108.0
147 }
148 ],
149 "title": "Move leaf down"
150 },
151 "index": 1,
152 "space": "{B7267338-BF83-0893-27A7-37F606DD20C8},1",
153 "title": "Move leaf down"
154 },
155 {
156 "description": "Target subtree moved last with a new nested child, italic blue 14 pt range on Anchor",
157 "expected": {
158 "outlines": [
159 {
160 "max_width": 468.0,
161 "paragraphs": [
162 {
163 "collapsed": false,
164 "parent": null,
165 "spans": [
166 {
167 "bold": false,
168 "color": 16711680,
169 "end": 6,
170 "font": "Calibri",
171 "font_size": 14.0,
172 "highlight": 4278190080,
173 "italic": true,
174 "strike": false,
175 "subscript": false,
176 "underline": false
177 }
178 ],
179 "text": "Anchor"
180 },
181 {
182 "collapsed": false,
183 "parent": null,
184 "spans": [
185 {
186 "bold": false,
187 "color": 4278190080,
188 "end": 16,
189 "font": "Calibri",
190 "font_size": 11.0,
191 "highlight": 4278190080,
192 "italic": false,
193 "strike": false,
194 "subscript": false,
195 "underline": false
196 }
197 ],
198 "text": "Trailing sibling"
199 },
200 {
201 "collapsed": false,
202 "parent": null,
203 "spans": [
204 {
205 "bold": true,
206 "color": 4278190080,
207 "end": 12,
208 "font": "Calibri",
209 "font_size": 11.0,
210 "highlight": 4278190080,
211 "italic": false,
212 "strike": false,
213 "subscript": false,
214 "underline": false
215 },
216 {
217 "bold": false,
218 "color": 4278190080,
219 "end": 13,
220 "font": "Calibri",
221 "font_size": 11.0,
222 "highlight": 4278190080,
223 "italic": false,
224 "strike": false,
225 "subscript": false,
226 "underline": false
227 },
228 {
229 "bold": false,
230 "color": 4278190080,
231 "end": 57,
232 "font": "Calibri",
233 "font_size": 11.0,
234 "highlight": 4278190080,
235 "italic": false,
236 "strike": false,
237 "subscript": false,
238 "underline": false
239 },
240 {
241 "bold": false,
242 "color": 4278190080,
243 "end": 67,
244 "font": "Calibri",
245 "font_size": 11.0,
246 "highlight": 4278190080,
247 "italic": false,
248 "strike": false,
249 "subscript": false,
250 "underline": false
251 }
252 ],
253 "text": "Target 🦀 é ﷟HYPERLINK \"https://example.invalid/outline\"Link label"
254 },
255 {
256 "collapsed": false,
257 "parent": 2,
258 "spans": [
259 {
260 "bold": false,
261 "color": 4278190080,
262 "end": 5,
263 "font": "Calibri",
264 "font_size": 11.0,
265 "highlight": 4278190080,
266 "italic": true,
267 "strike": false,
268 "subscript": false,
269 "underline": false
270 }
271 ],
272 "text": "Child"
273 },
274 {
275 "collapsed": false,
276 "parent": 3,
277 "spans": [
278 {
279 "bold": false,
280 "color": 4278190080,
281 "end": 10,
282 "font": "Calibri",
283 "font_size": 11.0,
284 "highlight": 4278190080,
285 "italic": false,
286 "strike": false,
287 "subscript": false,
288 "underline": false
289 }
290 ],
291 "text": "Grandchild"
292 },
293 {
294 "collapsed": false,
295 "parent": 2,
296 "spans": [
297 {
298 "bold": false,
299 "color": 4278190080,
300 "end": 14,
301 "font": "Calibri",
302 "font_size": 11.0,
303 "highlight": 4278190080,
304 "italic": false,
305 "strike": false,
306 "subscript": false,
307 "underline": false
308 }
309 ],
310 "text": "Nested by Rust"
311 }
312 ],
313 "width_set_by_user": null,
314 "x": 72.0,
315 "y": 108.0
316 },
317 {
318 "max_width": 468.0,
319 "paragraphs": [
320 {
321 "collapsed": false,
322 "parent": null,
323 "spans": [
324 {
325 "bold": false,
326 "color": 4278190080,
327 "end": 13,
328 "font": "Calibri",
329 "font_size": 11.0,
330 "highlight": 4278190080,
331 "italic": false,
332 "strike": false,
333 "subscript": false,
334 "underline": false
335 }
336 ],
337 "text": "Other outline"
338 }
339 ],
340 "width_set_by_user": null,
341 "x": 480.0,
342 "y": 108.0
343 }
344 ],
345 "title": "Move subtree down"
346 },
347 "index": 2,
348 "space": "{9B80D7CA-18B4-02B0-1E85-6E8AA0DAD827},1",
349 "title": "Move subtree down"
350 },
351 {
352 "description": "Anchor deleted, paragraph appended, new outline with two paragraphs at (300, 400)",
353 "expected": {
354 "outlines": [
355 {
356 "max_width": 468.0,
357 "paragraphs": [
358 {
359 "collapsed": false,
360 "parent": null,
361 "spans": [
362 {
363 "bold": true,
364 "color": 4278190080,
365 "end": 12,
366 "font": "Calibri",
367 "font_size": 11.0,
368 "highlight": 4278190080,
369 "italic": false,
370 "strike": false,
371 "subscript": false,
372 "underline": false
373 },
374 {
375 "bold": false,
376 "color": 4278190080,
377 "end": 13,
378 "font": "Calibri",
379 "font_size": 11.0,
380 "highlight": 4278190080,
381 "italic": false,
382 "strike": false,
383 "subscript": false,
384 "underline": false
385 },
386 {
387 "bold": false,
388 "color": 4278190080,
389 "end": 57,
390 "font": "Calibri",
391 "font_size": 11.0,
392 "highlight": 4278190080,
393 "italic": false,
394 "strike": false,
395 "subscript": false,
396 "underline": false
397 },
398 {
399 "bold": false,
400 "color": 4278190080,
401 "end": 67,
402 "font": "Calibri",
403 "font_size": 11.0,
404 "highlight": 4278190080,
405 "italic": false,
406 "strike": false,
407 "subscript": false,
408 "underline": false
409 }
410 ],
411 "text": "Target 🦀 é ﷟HYPERLINK \"https://example.invalid/outline\"Link label"
412 },
413 {
414 "collapsed": false,
415 "parent": null,
416 "spans": [
417 {
418 "bold": false,
419 "color": 4278190080,
420 "end": 16,
421 "font": "Calibri",
422 "font_size": 11.0,
423 "highlight": 4278190080,
424 "italic": false,
425 "strike": false,
426 "subscript": false,
427 "underline": false
428 }
429 ],
430 "text": "Trailing sibling"
431 },
432 {
433 "collapsed": false,
434 "parent": null,
435 "spans": [
436 {
437 "bold": false,
438 "color": 4278190080,
439 "end": 16,
440 "font": "Calibri",
441 "font_size": 11.0,
442 "highlight": 4278190080,
443 "italic": false,
444 "strike": false,
445 "subscript": false,
446 "underline": false
447 }
448 ],
449 "text": "Appended by Rust"
450 }
451 ],
452 "width_set_by_user": null,
453 "x": 72.0,
454 "y": 108.0
455 },
456 {
457 "max_width": 468.0,
458 "paragraphs": [
459 {
460 "collapsed": false,
461 "parent": null,
462 "spans": [
463 {
464 "bold": false,
465 "color": 4278190080,
466 "end": 13,
467 "font": "Calibri",
468 "font_size": 11.0,
469 "highlight": 4278190080,
470 "italic": false,
471 "strike": false,
472 "subscript": false,
473 "underline": false
474 }
475 ],
476 "text": "Other outline"
477 }
478 ],
479 "width_set_by_user": null,
480 "x": 480.0,
481 "y": 108.0
482 },
483 {
484 "max_width": 468.0,
485 "paragraphs": [
486 {
487 "collapsed": false,
488 "parent": null,
489 "spans": [
490 {
491 "bold": false,
492 "color": 4278190080,
493 "end": 16,
494 "font": "Calibri",
495 "font_size": 11.0,
496 "highlight": 4278190080,
497 "italic": false,
498 "strike": false,
499 "subscript": false,
500 "underline": false
501 }
502 ],
503 "text": "Rust outline one"
504 },
505 {
506 "collapsed": false,
507 "parent": null,
508 "spans": [
509 {
510 "bold": false,
511 "color": 4278190080,
512 "end": 16,
513 "font": "Calibri",
514 "font_size": 11.0,
515 "highlight": 4278190080,
516 "italic": false,
517 "strike": false,
518 "subscript": false,
519 "underline": false
520 }
521 ],
522 "text": "Rust outline two"
523 }
524 ],
525 "width_set_by_user": null,
526 "x": 300.0,
527 "y": 400.0
528 }
529 ],
530 "title": "Delete leaf"
531 },
532 "index": 8,
533 "space": "{363FE055-44E1-0B27-14A8-46278FD681FF},1",
534 "title": "Delete leaf"
535 },
536 {
537 "description": "Anchor split in the middle",
538 "expected": {
539 "outlines": [
540 {
541 "max_width": 468.0,
542 "paragraphs": [
543 {
544 "collapsed": false,
545 "parent": null,
546 "spans": [
547 {
548 "bold": false,
549 "color": 4278190080,
550 "end": 3,
551 "font": "Calibri",
552 "font_size": 11.0,
553 "highlight": 4278190080,
554 "italic": false,
555 "strike": false,
556 "subscript": false,
557 "underline": false
558 }
559 ],
560 "text": "Anc"
561 },
562 {
563 "collapsed": false,
564 "parent": null,
565 "spans": [
566 {
567 "bold": false,
568 "color": 4278190080,
569 "end": 3,
570 "font": "Calibri",
571 "font_size": 11.0,
572 "highlight": 4278190080,
573 "italic": false,
574 "strike": false,
575 "subscript": false,
576 "underline": false
577 }
578 ],
579 "text": "hor"
580 },
581 {
582 "collapsed": false,
583 "parent": null,
584 "spans": [
585 {
586 "bold": true,
587 "color": 4278190080,
588 "end": 12,
589 "font": "Calibri",
590 "font_size": 11.0,
591 "highlight": 4278190080,
592 "italic": false,
593 "strike": false,
594 "subscript": false,
595 "underline": false
596 },
597 {
598 "bold": false,
599 "color": 4278190080,
600 "end": 13,
601 "font": "Calibri",
602 "font_size": 11.0,
603 "highlight": 4278190080,
604 "italic": false,
605 "strike": false,
606 "subscript": false,
607 "underline": false
608 },
609 {
610 "bold": false,
611 "color": 4278190080,
612 "end": 57,
613 "font": "Calibri",
614 "font_size": 11.0,
615 "highlight": 4278190080,
616 "italic": false,
617 "strike": false,
618 "subscript": false,
619 "underline": false
620 },
621 {
622 "bold": false,
623 "color": 4278190080,
624 "end": 67,
625 "font": "Calibri",
626 "font_size": 11.0,
627 "highlight": 4278190080,
628 "italic": false,
629 "strike": false,
630 "subscript": false,
631 "underline": false
632 }
633 ],
634 "text": "Target 🦀 é ﷟HYPERLINK \"https://example.invalid/outline\"Link label"
635 },
636 {
637 "collapsed": false,
638 "parent": 2,
639 "spans": [
640 {
641 "bold": false,
642 "color": 4278190080,
643 "end": 5,
644 "font": "Calibri",
645 "font_size": 11.0,
646 "highlight": 4278190080,
647 "italic": true,
648 "strike": false,
649 "subscript": false,
650 "underline": false
651 }
652 ],
653 "text": "Child"
654 },
655 {
656 "collapsed": false,
657 "parent": 3,
658 "spans": [
659 {
660 "bold": false,
661 "color": 4278190080,
662 "end": 10,
663 "font": "Calibri",
664 "font_size": 11.0,
665 "highlight": 4278190080,
666 "italic": false,
667 "strike": false,
668 "subscript": false,
669 "underline": false
670 }
671 ],
672 "text": "Grandchild"
673 },
674 {
675 "collapsed": false,
676 "parent": null,
677 "spans": [
678 {
679 "bold": false,
680 "color": 4278190080,
681 "end": 16,
682 "font": "Calibri",
683 "font_size": 11.0,
684 "highlight": 4278190080,
685 "italic": false,
686 "strike": false,
687 "subscript": false,
688 "underline": false
689 }
690 ],
691 "text": "Trailing sibling"
692 }
693 ],
694 "width_set_by_user": null,
695 "x": 72.0,
696 "y": 108.0
697 },
698 {
699 "max_width": 468.0,
700 "paragraphs": [
701 {
702 "collapsed": false,
703 "parent": null,
704 "spans": [
705 {
706 "bold": false,
707 "color": 4278190080,
708 "end": 13,
709 "font": "Calibri",
710 "font_size": 11.0,
711 "highlight": 4278190080,
712 "italic": false,
713 "strike": false,
714 "subscript": false,
715 "underline": false
716 }
717 ],
718 "text": "Other outline"
719 }
720 ],
721 "width_set_by_user": null,
722 "x": 480.0,
723 "y": 108.0
724 }
725 ],
726 "title": "Delete subtree"
727 },
728 "index": 9,
729 "space": "{8BBAD88F-D248-0959-00B3-2438A7065330},1",
730 "title": "Delete subtree"
731 },
732 {
733 "description": "Target collapsed, outline moved to (90, 250.5) with a fixed 300 pt width",
734 "expected": {
735 "outlines": [
736 {
737 "max_width": 300.0,
738 "paragraphs": [
739 {
740 "collapsed": false,
741 "parent": null,
742 "spans": [
743 {
744 "bold": false,
745 "color": 4278190080,
746 "end": 6,
747 "font": "Calibri",
748 "font_size": 11.0,
749 "highlight": 4278190080,
750 "italic": false,
751 "strike": false,
752 "subscript": false,
753 "underline": false
754 }
755 ],
756 "text": "Anchor"
757 },
758 {
759 "collapsed": true,
760 "parent": null,
761 "spans": [
762 {
763 "bold": true,
764 "color": 4278190080,
765 "end": 12,
766 "font": "Calibri",
767 "font_size": 11.0,
768 "highlight": 4278190080,
769 "italic": false,
770 "strike": false,
771 "subscript": false,
772 "underline": false
773 },
774 {
775 "bold": false,
776 "color": 4278190080,
777 "end": 13,
778 "font": "Calibri",
779 "font_size": 11.0,
780 "highlight": 4278190080,
781 "italic": false,
782 "strike": false,
783 "subscript": false,
784 "underline": false
785 },
786 {
787 "bold": false,
788 "color": 4278190080,
789 "end": 57,
790 "font": "Calibri",
791 "font_size": 11.0,
792 "highlight": 4278190080,
793 "italic": false,
794 "strike": false,
795 "subscript": false,
796 "underline": false
797 },
798 {
799 "bold": false,
800 "color": 4278190080,
801 "end": 67,
802 "font": "Calibri",
803 "font_size": 11.0,
804 "highlight": 4278190080,
805 "italic": false,
806 "strike": false,
807 "subscript": false,
808 "underline": false
809 }
810 ],
811 "text": "Target 🦀 é ﷟HYPERLINK \"https://example.invalid/outline\"Link label"
812 },
813 {
814 "collapsed": false,
815 "parent": 1,
816 "spans": [
817 {
818 "bold": false,
819 "color": 4278190080,
820 "end": 5,
821 "font": "Calibri",
822 "font_size": 11.0,
823 "highlight": 4278190080,
824 "italic": true,
825 "strike": false,
826 "subscript": false,
827 "underline": false
828 }
829 ],
830 "text": "Child"
831 },
832 {
833 "collapsed": false,
834 "parent": 2,
835 "spans": [
836 {
837 "bold": false,
838 "color": 4278190080,
839 "end": 10,
840 "font": "Calibri",
841 "font_size": 11.0,
842 "highlight": 4278190080,
843 "italic": false,
844 "strike": false,
845 "subscript": false,
846 "underline": false
847 }
848 ],
849 "text": "Grandchild"
850 },
851 {
852 "collapsed": false,
853 "parent": null,
854 "spans": [
855 {
856 "bold": false,
857 "color": 4278190080,
858 "end": 16,
859 "font": "Calibri",
860 "font_size": 11.0,
861 "highlight": 4278190080,
862 "italic": false,
863 "strike": false,
864 "subscript": false,
865 "underline": false
866 }
867 ],
868 "text": "Trailing sibling"
869 }
870 ],
871 "width_set_by_user": true,
872 "x": 90.0,
873 "y": 250.5
874 },
875 {
876 "max_width": 468.0,
877 "paragraphs": [
878 {
879 "collapsed": false,
880 "parent": null,
881 "spans": [
882 {
883 "bold": false,
884 "color": 4278190080,
885 "end": 13,
886 "font": "Calibri",
887 "font_size": 11.0,
888 "highlight": 4278190080,
889 "italic": false,
890 "strike": false,
891 "subscript": false,
892 "underline": false
893 }
894 ],
895 "text": "Other outline"
896 }
897 ],
898 "width_set_by_user": null,
899 "x": 480.0,
900 "y": 108.0
901 }
902 ],
903 "title": "Collapse subtree"
904 },
905 "index": 6,
906 "space": "{FF88B513-029C-00E2-0082-9E3DCE1D7796},1",
907 "title": "Collapse subtree"
908 },
909 {
910 "description": "first body outline moved after the second, first paragraph of each extended",
911 "expected": {
912 "outlines": [
913 {
914 "max_width": 468.0,
915 "paragraphs": [
916 {
917 "collapsed": false,
918 "parent": null,
919 "spans": [
920 {
921 "bold": false,
922 "color": 4278190080,
923 "end": 20,
924 "font": "Calibri",
925 "font_size": 11.0,
926 "highlight": 4278190080,
927 "italic": false,
928 "strike": false,
929 "subscript": false,
930 "underline": false
931 }
932 ],
933 "text": "Other outline (Rust)"
934 }
935 ],
936 "width_set_by_user": null,
937 "x": 480.0,
938 "y": 108.0
939 },
940 {
941 "max_width": 468.0,
942 "paragraphs": [
943 {
944 "collapsed": false,
945 "parent": null,
946 "spans": [
947 {
948 "bold": false,
949 "color": 4278190080,
950 "end": 13,
951 "font": "Calibri",
952 "font_size": 11.0,
953 "highlight": 4278190080,
954 "italic": false,
955 "strike": false,
956 "subscript": false,
957 "underline": false
958 }
959 ],
960 "text": "Anchor (Rust)"
961 },
962 {
963 "collapsed": false,
964 "parent": null,
965 "spans": [
966 {
967 "bold": true,
968 "color": 4278190080,
969 "end": 12,
970 "font": "Calibri",
971 "font_size": 11.0,
972 "highlight": 4278190080,
973 "italic": false,
974 "strike": false,
975 "subscript": false,
976 "underline": false
977 },
978 {
979 "bold": false,
980 "color": 4278190080,
981 "end": 13,
982 "font": "Calibri",
983 "font_size": 11.0,
984 "highlight": 4278190080,
985 "italic": false,
986 "strike": false,
987 "subscript": false,
988 "underline": false
989 },
990 {
991 "bold": false,
992 "color": 4278190080,
993 "end": 57,
994 "font": "Calibri",
995 "font_size": 11.0,
996 "highlight": 4278190080,
997 "italic": false,
998 "strike": false,
999 "subscript": false,
1000 "underline": false
1001 },
1002 {
1003 "bold": false,
1004 "color": 4278190080,
1005 "end": 67,
1006 "font": "Calibri",
1007 "font_size": 11.0,
1008 "highlight": 4278190080,
1009 "italic": false,
1010 "strike": false,
1011 "subscript": false,
1012 "underline": false
1013 }
1014 ],
1015 "text": "Target 🦀 é ﷟HYPERLINK \"https://example.invalid/outline\"Link label"
1016 },
1017 {
1018 "collapsed": false,
1019 "parent": 1,
1020 "spans": [
1021 {
1022 "bold": false,
1023 "color": 4278190080,
1024 "end": 5,
1025 "font": "Calibri",
1026 "font_size": 11.0,
1027 "highlight": 4278190080,
1028 "italic": true,
1029 "strike": false,
1030 "subscript": false,
1031 "underline": false
1032 }
1033 ],
1034 "text": "Child"
1035 },
1036 {
1037 "collapsed": false,
1038 "parent": 2,
1039 "spans": [
1040 {
1041 "bold": false,
1042 "color": 4278190080,
1043 "end": 10,
1044 "font": "Calibri",
1045 "font_size": 11.0,
1046 "highlight": 4278190080,
1047 "italic": false,
1048 "strike": false,
1049 "subscript": false,
1050 "underline": false
1051 }
1052 ],
1053 "text": "Grandchild"
1054 },
1055 {
1056 "collapsed": false,
1057 "parent": null,
1058 "spans": [
1059 {
1060 "bold": false,
1061 "color": 4278190080,
1062 "end": 16,
1063 "font": "Calibri",
1064 "font_size": 11.0,
1065 "highlight": 4278190080,
1066 "italic": false,
1067 "strike": false,
1068 "subscript": false,
1069 "underline": false
1070 }
1071 ],
1072 "text": "Trailing sibling"
1073 }
1074 ],
1075 "width_set_by_user": null,
1076 "x": 72.0,
1077 "y": 108.0
1078 }
1079 ],
1080 "title": "Move outline"
1081 },
1082 "index": 12,
1083 "space": "{16207F40-69C9-0CA1-09B5-DC5712DB2BBE},1",
1084 "title": "Move outline"
1085 },
1086 {
1087 "description": "second body outline deleted, underline, highlight and Consolas on a range of Anchor",
1088 "expected": {
1089 "outlines": [
1090 {
1091 "max_width": 468.0,
1092 "paragraphs": [
1093 {
1094 "collapsed": false,
1095 "parent": null,
1096 "spans": [
1097 {
1098 "bold": false,
1099 "color": 4278190080,
1100 "end": 1,
1101 "font": "Calibri",
1102 "font_size": 11.0,
1103 "highlight": 4278190080,
1104 "italic": false,
1105 "strike": false,
1106 "subscript": false,
1107 "underline": false
1108 },
1109 {
1110 "bold": false,
1111 "color": 4278190080,
1112 "end": 5,
1113 "font": "Consolas",
1114 "font_size": 11.0,
1115 "highlight": 65535,
1116 "italic": false,
1117 "strike": false,
1118 "subscript": false,
1119 "underline": true
1120 },
1121 {
1122 "bold": false,
1123 "color": 4278190080,
1124 "end": 6,
1125 "font": "Calibri",
1126 "font_size": 11.0,
1127 "highlight": 4278190080,
1128 "italic": false,
1129 "strike": false,
1130 "subscript": false,
1131 "underline": false
1132 }
1133 ],
1134 "text": "Anchor"
1135 },
1136 {
1137 "collapsed": false,
1138 "parent": null,
1139 "spans": [
1140 {
1141 "bold": true,
1142 "color": 4278190080,
1143 "end": 12,
1144 "font": "Calibri",
1145 "font_size": 11.0,
1146 "highlight": 4278190080,
1147 "italic": false,
1148 "strike": false,
1149 "subscript": false,
1150 "underline": false
1151 },
1152 {
1153 "bold": false,
1154 "color": 4278190080,
1155 "end": 13,
1156 "font": "Calibri",
1157 "font_size": 11.0,
1158 "highlight": 4278190080,
1159 "italic": false,
1160 "strike": false,
1161 "subscript": false,
1162 "underline": false
1163 },
1164 {
1165 "bold": false,
1166 "color": 4278190080,
1167 "end": 57,
1168 "font": "Calibri",
1169 "font_size": 11.0,
1170 "highlight": 4278190080,
1171 "italic": false,
1172 "strike": false,
1173 "subscript": false,
1174 "underline": false
1175 },
1176 {
1177 "bold": false,
1178 "color": 4278190080,
1179 "end": 67,
1180 "font": "Calibri",
1181 "font_size": 11.0,
1182 "highlight": 4278190080,
1183 "italic": false,
1184 "strike": false,
1185 "subscript": false,
1186 "underline": false
1187 }
1188 ],
1189 "text": "Target 🦀 é ﷟HYPERLINK \"https://example.invalid/outline\"Link label"
1190 },
1191 {
1192 "collapsed": false,
1193 "parent": 1,
1194 "spans": [
1195 {
1196 "bold": false,
1197 "color": 4278190080,
1198 "end": 5,
1199 "font": "Calibri",
1200 "font_size": 11.0,
1201 "highlight": 4278190080,
1202 "italic": true,
1203 "strike": false,
1204 "subscript": false,
1205 "underline": false
1206 }
1207 ],
1208 "text": "Child"
1209 },
1210 {
1211 "collapsed": false,
1212 "parent": 2,
1213 "spans": [
1214 {
1215 "bold": false,
1216 "color": 4278190080,
1217 "end": 10,
1218 "font": "Calibri",
1219 "font_size": 11.0,
1220 "highlight": 4278190080,
1221 "italic": false,
1222 "strike": false,
1223 "subscript": false,
1224 "underline": false
1225 }
1226 ],
1227 "text": "Grandchild"
1228 },
1229 {
1230 "collapsed": false,
1231 "parent": null,
1232 "spans": [
1233 {
1234 "bold": false,
1235 "color": 4278190080,
1236 "end": 16,
1237 "font": "Calibri",
1238 "font_size": 11.0,
1239 "highlight": 4278190080,
1240 "italic": false,
1241 "strike": false,
1242 "subscript": false,
1243 "underline": false
1244 }
1245 ],
1246 "text": "Trailing sibling"
1247 }
1248 ],
1249 "width_set_by_user": null,
1250 "x": 72.0,
1251 "y": 108.0
1252 }
1253 ],
1254 "title": "Delete outline"
1255 },
1256 "index": 11,
1257 "space": "{80E80543-87A1-0C3A-0816-22B190BDFC87},1",
1258 "title": "Delete outline"
1259 },
1260 {
1261 "description": "the two paragraphs joined, strike and subscript on the first three units",
1262 "expected": {
1263 "outlines": [
1264 {
1265 "max_width": 127.5136947631836,
1266 "paragraphs": [
1267 {
1268 "collapsed": false,
1269 "parent": null,
1270 "spans": [
1271 {
1272 "bold": true,
1273 "color": null,
1274 "end": 3,
1275 "font": "Calibri",
1276 "font_size": 11.0,
1277 "highlight": null,
1278 "italic": null,
1279 "strike": true,
1280 "subscript": true,
1281 "underline": true
1282 },
1283 {
1284 "bold": true,
1285 "color": null,
1286 "end": 4,
1287 "font": "Calibri",
1288 "font_size": 11.0,
1289 "highlight": null,
1290 "italic": null,
1291 "strike": null,
1292 "subscript": null,
1293 "underline": true
1294 },
1295 {
1296 "bold": null,
1297 "color": null,
1298 "end": 5,
1299 "font": "Calibri",
1300 "font_size": 11.0,
1301 "highlight": null,
1302 "italic": null,
1303 "strike": null,
1304 "subscript": null,
1305 "underline": null
1306 },
1307 {
1308 "bold": null,
1309 "color": null,
1310 "end": 7,
1311 "font": "Arial",
1312 "font_size": 13.5,
1313 "highlight": null,
1314 "italic": null,
1315 "strike": null,
1316 "subscript": null,
1317 "underline": null
1318 },
1319 {
1320 "bold": null,
1321 "color": null,
1322 "end": 8,
1323 "font": "Calibri",
1324 "font_size": 11.0,
1325 "highlight": null,
1326 "italic": null,
1327 "strike": null,
1328 "subscript": null,
1329 "underline": null
1330 },
1331 {
1332 "bold": null,
1333 "color": null,
1334 "end": 14,
1335 "font": "Calibri",
1336 "font_size": 11.0,
1337 "highlight": null,
1338 "italic": true,
1339 "strike": true,
1340 "subscript": null,
1341 "underline": null
1342 },
1343 {
1344 "bold": null,
1345 "color": null,
1346 "end": 15,
1347 "font": "Calibri",
1348 "font_size": 11.0,
1349 "highlight": null,
1350 "italic": null,
1351 "strike": null,
1352 "subscript": null,
1353 "underline": null
1354 },
1355 {
1356 "bold": null,
1357 "color": null,
1358 "end": 17,
1359 "font": "Calibri",
1360 "font_size": 11.0,
1361 "highlight": null,
1362 "italic": null,
1363 "strike": null,
1364 "subscript": false,
1365 "underline": null
1366 },
1367 {
1368 "bold": null,
1369 "color": null,
1370 "end": 18,
1371 "font": "Calibri",
1372 "font_size": 11.0,
1373 "highlight": null,
1374 "italic": null,
1375 "strike": null,
1376 "subscript": null,
1377 "underline": null
1378 },
1379 {
1380 "bold": null,
1381 "color": 3678732,
1382 "end": 23,
1383 "font": "Calibri",
1384 "font_size": 11.0,
1385 "highlight": 65535,
1386 "italic": null,
1387 "strike": null,
1388 "subscript": null,
1389 "underline": null
1390 },
1391 {
1392 "bold": null,
1393 "color": null,
1394 "end": 24,
1395 "font": "Calibri",
1396 "font_size": 11.0,
1397 "highlight": null,
1398 "italic": null,
1399 "strike": null,
1400 "subscript": null,
1401 "underline": null
1402 },
1403 {
1404 "bold": null,
1405 "color": null,
1406 "end": 26,
1407 "font": "Calibri",
1408 "font_size": 11.0,
1409 "highlight": null,
1410 "italic": null,
1411 "strike": null,
1412 "subscript": true,
1413 "underline": null
1414 },
1415 {
1416 "bold": null,
1417 "color": null,
1418 "end": 27,
1419 "font": "Calibri",
1420 "font_size": 11.0,
1421 "highlight": null,
1422 "italic": null,
1423 "strike": null,
1424 "subscript": null,
1425 "underline": null
1426 },
1427 {
1428 "bold": false,
1429 "color": 4278190080,
1430 "end": 30,
1431 "font": "Calibri",
1432 "font_size": 11.0,
1433 "highlight": 4278190080,
1434 "italic": false,
1435 "strike": null,
1436 "subscript": null,
1437 "underline": null
1438 },
1439 {
1440 "bold": true,
1441 "color": 7949855,
1442 "end": 48,
1443 "font": "Calibri",
1444 "font_size": 11.0,
1445 "highlight": 4278190080,
1446 "italic": false,
1447 "strike": false,
1448 "subscript": false,
1449 "underline": false
1450 },
1451 {
1452 "bold": true,
1453 "color": 7949855,
1454 "end": 50,
1455 "font": "SimSun",
1456 "font_size": 11.0,
1457 "highlight": 4278190080,
1458 "italic": false,
1459 "strike": false,
1460 "subscript": false,
1461 "underline": false
1462 },
1463 {
1464 "bold": true,
1465 "color": 7949855,
1466 "end": 52,
1467 "font": "Calibri",
1468 "font_size": 11.0,
1469 "highlight": 4278190080,
1470 "italic": false,
1471 "strike": false,
1472 "subscript": false,
1473 "underline": false
1474 },
1475 {
1476 "bold": true,
1477 "color": 7949855,
1478 "end": 57,
1479 "font": "Arial",
1480 "font_size": 11.0,
1481 "highlight": 4278190080,
1482 "italic": false,
1483 "strike": false,
1484 "subscript": false,
1485 "underline": false
1486 }
1487 ],
1488 "text": "Bold 🦀 italic é color 東京\rEndFictitious: café, 東京, مرحبا"
1489 }
1490 ],
1491 "width_set_by_user": false,
1492 "x": 36.0,
1493 "y": 14.40000057220459
1494 }
1495 ],
1496 "title": "Bold 🦀 italic é color 東京"
1497 },
1498 "index": 0,
1499 "space": "{64183EF4-4E19-0CBE-3D3B-88FF17D58B1C},1",
1500 "title": "Bold 🦀 italic é color 東京"
1501 }
1502 ],
1503 "source": "corpus/outline-edit/before/notebook/synthetic.one",
1504 "transactions_added": 8
1505}
\ No newline at end of file
corpus/page-model/candidate/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-model/candidate/notebook/Open Notebook.onetoc2 differ
corpus/page-model/candidate/notebook/synthetic.one created
Binary files /dev/null and b/corpus/page-model/candidate/notebook/synthetic.one differ
corpus/page-model/cold/commands.jsonl created+3
......@@ -0,0 +1,3 @@
1{"command": "powershell -NoProfile -Command \"Expand-Archive -LiteralPath C:\\one-tests\\transfer.zip -DestinationPath C:\\one-tests\\runs\\capture\\notebook\"", "exit": 0, "stdout": "", "stderr": "", "error": null}
2{"command": "powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File C:\\one-tests\\read-current.ps1 -Root C:\\one-tests\\runs\\capture -CloneHost ONE-M6-A298124B -ExpectedPages 15", "exit": 0, "stdout": "Read 1 sections and 15 pages.\r\n", "stderr": "", "error": null}
3{"command": "powershell -NoProfile -Command \"Compress-Archive -Force -Path C:\\one-tests\\runs\\capture\\* -DestinationPath C:\\one-tests\\captured.zip\"", "exit": 0, "stdout": "", "stderr": "", "error": null}
corpus/page-model/cold/format-differences.json created+1
......@@ -0,0 +1 @@
1[]
\ No newline at end of file
corpus/page-model/cold/geometry-differences.json created+1
......@@ -0,0 +1 @@
1[]
\ No newline at end of file
corpus/page-model/cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-a298124b", "hostname": "ONE-M6-A298124B"}
corpus/page-model/cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-model/cold/notebook/Open Notebook.onetoc2 differ
corpus/page-model/cold/notebook/synthetic.one created
Binary files /dev/null and b/corpus/page-model/cold/notebook/synthetic.one differ
corpus/page-model/cold/pdf-format-checks.json created+1
......@@ -0,0 +1 @@
1[]
\ No newline at end of file
corpus/page-model/cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-A298124B",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-model/cold/read/hierarchy.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Notebook xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" name="notebook" nickname="notebook" ID="{77BD17D3-9907-47E7-AD11-983F447A21E3}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-11T06:27:23.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{015C483F-4222-00EE-0570-18FDF58F312C}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-11T06:27:23.000Z" color="#8AA8E4"><one:Page ID="{2D15BBB9-CBE9-43FF-8217-B06C09B72D33}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1"/><one:Page ID="{FE2BF675-3A73-47D2-988B-0F6518BF86E7}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1"/><one:Page ID="{D28D5287-9D44-4DF1-A1A9-5619BEB87E08}{1}{B0}" name="Move subtree down" dateTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1"/><one:Page ID="{3C358C11-BD6B-4899-96BD-8A2F58897305}{1}{B0}" name="Move subtree up" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1"/><one:Page ID="{2C19E6AE-4298-43D2-8911-C4755CD2D227}{1}{B0}" name="Indent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1"/><one:Page ID="{CA898D71-E51D-403D-9039-B3B3A61A15C4}{1}{B0}" name="Outdent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1"/><one:Page ID="{B685305E-876C-4FA3-BFAE-A6AED07FD1B9}{1}{B0}" name="Collapse subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1"/><one:Page ID="{CC06B1A9-53DA-4B6A-ACA6-8A3A1BAC44A1}{1}{B0}" name="Expand subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1"/><one:Page ID="{7F326518-C111-4466-AB84-7EB491B427D0}{1}{B0}" name="Delete leaf" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1"/><one:Page ID="{C2B75DC2-57B8-4618-BF9F-1CABB964F51F}{1}{B0}" name="Delete subtree" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1"/><one:Page ID="{EDC6BEEF-F38F-45A9-B63A-978733FBFE0D}{1}{B0}" name="Delete only paragraph" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1"/><one:Page ID="{C9E5800E-0251-437B-B73A-1A228EDF5AA8}{1}{B0}" name="Delete outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1"/><one:Page ID="{5F2DFA0D-EC39-43E0-B699-E4C40CB98D91}{1}{B0}" name="Move outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1"/><one:Page ID="{844F816C-F607-4050-BDC0-0D6FBD2A3FA3}{1}{B0}" name="Resize outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1"/><one:Page ID="{BA8E8C22-A4D1-4D64-A14E-93A4D7D3FD1C}{1}{B0}" name="Automatic outline size" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-model/cold/read/page-000.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{2C19E6AE-4298-43D2-8911-C4755CD2D227}{1}{B0}" name="Indent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{1384B643-8DF3-478E-94D9-1EF101FB2616}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Indent subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{1384B643-8DF3-478E-94D9-1EF101FB2616}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{1384B643-8DF3-478E-94D9-1EF101FB2616}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{1384B643-8DF3-478E-94D9-1EF101FB2616}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{1384B643-8DF3-478E-94D9-1EF101FB2616}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{1384B643-8DF3-478E-94D9-1EF101FB2616}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{1384B643-8DF3-478E-94D9-1EF101FB2616}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{1384B643-8DF3-478E-94D9-1EF101FB2616}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{1384B643-8DF3-478E-94D9-1EF101FB2616}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-001.xml created+25
......@@ -0,0 +1,25 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{2D15BBB9-CBE9-43FF-8217-B06C09B72D33}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1" lang="en-US"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{4AD91305-809C-4049-8DE5-3CB7F62BC852}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="40.89204406738281"/><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{4DBCBBF2-73E1-0B43-3DB1-FFBD3D40BAA4}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold;
3text-decoration:underline line-through;vertical-align:sub;font-family:Calibri;
4font-size:11.0pt' lang=en-US>Bol</span><span style='font-weight:bold;
5text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US>d</span><span
6style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span
7style='font-family:Arial;font-size:13.5pt' lang=en-US>&#129408;</span><span
8style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span
9style='font-style:italic;text-decoration:line-through;font-family:Calibri;
10font-size:11.0pt' lang=en-US>italic</span><span style='font-family:Calibri;
11font-size:11.0pt' lang=en-US> </span><span style='vertical-align:super;
12font-family:Calibri;font-size:11.0pt' lang=en-US>é</span><span
13style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span
14style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow;
15mso-highlight:yellow' lang=en-US>color</span><span style='font-family:Calibri;
16font-size:11.0pt' lang=en-US> </span><span style='vertical-align:sub;
17font-family:Calibri;font-size:11.0pt' lang=en-US>東京</span><span
18style='font-family:Calibri;font-size:11.0pt' lang=en-US><br>
19End</span><span
20style='font-weight:bold;font-family:Calibri;font-size:11.0pt;color:#1F4E79'
21lang=en-US>Fictitious: café, </span><span style='font-weight:bold;font-family:
22SimSun;font-size:11.0pt;color:#1F4E79' lang=en-US>東京</span><span
23style='font-weight:bold;font-family:Calibri;font-size:11.0pt;color:#1F4E79'
24lang=en-US>, </span><span style='font-weight:bold;font-family:Arial;font-size:
2511.0pt;color:#1F4E79;direction:rtl;unicode-bidi:embed' lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-002.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{3C358C11-BD6B-4899-96BD-8A2F58897305}{1}{B0}" name="Move subtree up" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{764A83D7-7535-4A7F-A2C0-2B264C8C448F}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move subtree up]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{764A83D7-7535-4A7F-A2C0-2B264C8C448F}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{764A83D7-7535-4A7F-A2C0-2B264C8C448F}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{764A83D7-7535-4A7F-A2C0-2B264C8C448F}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{764A83D7-7535-4A7F-A2C0-2B264C8C448F}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{764A83D7-7535-4A7F-A2C0-2B264C8C448F}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{764A83D7-7535-4A7F-A2C0-2B264C8C448F}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{764A83D7-7535-4A7F-A2C0-2B264C8C448F}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{764A83D7-7535-4A7F-A2C0-2B264C8C448F}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-003.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{5F2DFA0D-EC39-43E0-B699-E4C40CB98D91}{1}{B0}" name="Move outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0F2613D6-790A-4D40-B816-33DF22410DDA}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{0F2613D6-790A-4D40-B816-33DF22410DDA}{39}{B0}"><one:Position x="72.0" y="108.0" z="1"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{0F2613D6-790A-4D40-B816-33DF22410DDA}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor (Rust)]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0F2613D6-790A-4D40-B816-33DF22410DDA}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0F2613D6-790A-4D40-B816-33DF22410DDA}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0F2613D6-790A-4D40-B816-33DF22410DDA}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0F2613D6-790A-4D40-B816-33DF22410DDA}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{0F2613D6-790A-4D40-B816-33DF22410DDA}{70}{B0}"><one:Position x="480.0" y="108.0" z="0"/><one:Size width="128.7545166015625" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{0F2613D6-790A-4D40-B816-33DF22410DDA}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline (Rust)]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-004.xml created+4
......@@ -0,0 +1,4 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{7F326518-C111-4466-AB84-7EB491B427D0}{1}{B0}" name="Delete leaf" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{959AEAA1-48C0-4300-9F81-83D53442924B}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete leaf]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{959AEAA1-48C0-4300-9F81-83D53442924B}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{959AEAA1-48C0-4300-9F81-83D53442924B}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{959AEAA1-48C0-4300-9F81-83D53442924B}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE><one:OE author="Rust page writer" lastModifiedBy="Rust page writer" creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{D3A70991-7F7F-049D-0746-C9194E01A627}{0}{B0}" alignment="left" style="font-family:Calibri;font-size:11.0pt"><one:T><![CDATA[Appended by Rust]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{959AEAA1-48C0-4300-9F81-83D53442924B}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{959AEAA1-48C0-4300-9F81-83D53442924B}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline style="font-family:Calibri;font-size:11.0pt" author="Rust page writer" lastModifiedBy="Rust page writer" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{E0E1DBE3-825C-074D-030D-F540C0CAD45C}{0}{B0}"><one:Position x="300.0" y="399.9999694824219" z="2"/><one:Size width="140.3770904541016" height="26.85542678833008"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{72BFAF62-A2EB-0E39-0C18-3990F31CB4C0}{0}{B0}" alignment="left"><one:T><![CDATA[Rust outline one]]></one:T></one:OE><one:OE creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{1B9225CC-5FCF-0375-38BB-736CF9339195}{0}{B0}" alignment="left"><one:T><![CDATA[Rust outline two]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-005.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{844F816C-F607-4050-BDC0-0D6FBD2A3FA3}{1}{B0}" name="Resize outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4D8EE1B4-56A3-4AA2-8EB2-1EA0CD5692E1}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Resize outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4D8EE1B4-56A3-4AA2-8EB2-1EA0CD5692E1}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4D8EE1B4-56A3-4AA2-8EB2-1EA0CD5692E1}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4D8EE1B4-56A3-4AA2-8EB2-1EA0CD5692E1}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4D8EE1B4-56A3-4AA2-8EB2-1EA0CD5692E1}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4D8EE1B4-56A3-4AA2-8EB2-1EA0CD5692E1}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4D8EE1B4-56A3-4AA2-8EB2-1EA0CD5692E1}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4D8EE1B4-56A3-4AA2-8EB2-1EA0CD5692E1}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4D8EE1B4-56A3-4AA2-8EB2-1EA0CD5692E1}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-006.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{B685305E-876C-4FA3-BFAE-A6AED07FD1B9}{1}{B0}" name="Collapse subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{3A784D9C-AD00-4444-BFC9-31AA49B553DE}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Collapse subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3A784D9C-AD00-4444-BFC9-31AA49B553DE}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{3A784D9C-AD00-4444-BFC9-31AA49B553DE}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{3A784D9C-AD00-4444-BFC9-31AA49B553DE}{39}{B0}"><one:Position x="90.0" y="250.5" z="0"/><one:Size width="300.0" height="40.28313827514648" isSetByUser="true"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{3A784D9C-AD00-4444-BFC9-31AA49B553DE}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" collapsed="1" objectID="{3A784D9C-AD00-4444-BFC9-31AA49B553DE}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{3A784D9C-AD00-4444-BFC9-31AA49B553DE}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{3A784D9C-AD00-4444-BFC9-31AA49B553DE}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{3A784D9C-AD00-4444-BFC9-31AA49B553DE}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-007.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{BA8E8C22-A4D1-4D64-A14E-93A4D7D3FD1C}{1}{B0}" name="Automatic outline size" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{873BDB56-1E86-493F-91EB-1A9CA8CED0C6}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Automatic outline size]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{873BDB56-1E86-493F-91EB-1A9CA8CED0C6}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="180.0" height="67.13858032226562" isSetByUser="true"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{873BDB56-1E86-493F-91EB-1A9CA8CED0C6}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{873BDB56-1E86-493F-91EB-1A9CA8CED0C6}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{873BDB56-1E86-493F-91EB-1A9CA8CED0C6}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{873BDB56-1E86-493F-91EB-1A9CA8CED0C6}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{873BDB56-1E86-493F-91EB-1A9CA8CED0C6}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{873BDB56-1E86-493F-91EB-1A9CA8CED0C6}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{873BDB56-1E86-493F-91EB-1A9CA8CED0C6}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-008.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C2B75DC2-57B8-4618-BF9F-1CABB964F51F}{1}{B0}" name="Delete subtree" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3A95F8E8-45E4-41AB-BFD4-648D0AF590CB}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="Rust page writer" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{3A95F8E8-45E4-41AB-BFD4-648D0AF590CB}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="80.56629943847656"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{3A95F8E8-45E4-41AB-BFD4-648D0AF590CB}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anc]]></one:T></one:OE><one:OE author="Rust page writer" creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{3E491C11-1F31-0C7C-3D34-0A865FA6AA28}{0}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[hor]]></one:T></one:OE><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3A95F8E8-45E4-41AB-BFD4-648D0AF590CB}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3A95F8E8-45E4-41AB-BFD4-648D0AF590CB}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3A95F8E8-45E4-41AB-BFD4-648D0AF590CB}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3A95F8E8-45E4-41AB-BFD4-648D0AF590CB}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3A95F8E8-45E4-41AB-BFD4-648D0AF590CB}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3A95F8E8-45E4-41AB-BFD4-648D0AF590CB}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-009.xml created+8
......@@ -0,0 +1,8 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C9E5800E-0251-437B-B73A-1A228EDF5AA8}{1}{B0}" name="Delete outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3174E8C6-7EC9-4D99-9A2E-1AC01162A113}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{3174E8C6-7EC9-4D99-9A2E-1AC01162A113}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{3174E8C6-7EC9-4D99-9A2E-1AC01162A113}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-family:Calibri'>A</span><span style='text-decoration:underline;
4font-family:Consolas;background:yellow;mso-highlight:yellow'>ncho</span><span
5style='font-family:Calibri'>r</span>]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3174E8C6-7EC9-4D99-9A2E-1AC01162A113}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
6style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
7href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3174E8C6-7EC9-4D99-9A2E-1AC01162A113}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
8style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3174E8C6-7EC9-4D99-9A2E-1AC01162A113}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3174E8C6-7EC9-4D99-9A2E-1AC01162A113}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-010.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{CA898D71-E51D-403D-9039-B3B3A61A15C4}{1}{B0}" name="Outdent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{53800F46-6C9E-4EF1-828E-D78B34C3366D}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Outdent subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{53800F46-6C9E-4EF1-828E-D78B34C3366D}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="169.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{53800F46-6C9E-4EF1-828E-D78B34C3366D}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{53800F46-6C9E-4EF1-828E-D78B34C3366D}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{53800F46-6C9E-4EF1-828E-D78B34C3366D}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{53800F46-6C9E-4EF1-828E-D78B34C3366D}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{53800F46-6C9E-4EF1-828E-D78B34C3366D}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{53800F46-6C9E-4EF1-828E-D78B34C3366D}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{53800F46-6C9E-4EF1-828E-D78B34C3366D}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-011.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{CC06B1A9-53DA-4B6A-ACA6-8A3A1BAC44A1}{1}{B0}" name="Expand subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{F8105273-C7C4-4BAE-B061-27F4F69B8A0D}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Expand subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{F8105273-C7C4-4BAE-B061-27F4F69B8A0D}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{F8105273-C7C4-4BAE-B061-27F4F69B8A0D}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" collapsed="1" objectID="{F8105273-C7C4-4BAE-B061-27F4F69B8A0D}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{F8105273-C7C4-4BAE-B061-27F4F69B8A0D}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{F8105273-C7C4-4BAE-B061-27F4F69B8A0D}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{F8105273-C7C4-4BAE-B061-27F4F69B8A0D}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{F8105273-C7C4-4BAE-B061-27F4F69B8A0D}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{F8105273-C7C4-4BAE-B061-27F4F69B8A0D}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-012.xml created+6
......@@ -0,0 +1,6 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{D28D5287-9D44-4DF1-A1A9-5619BEB87E08}{1}{B0}" name="Move subtree down" dateTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{AE97810F-3A3F-4B87-A128-0ED876E5DDA7}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move subtree down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{AE97810F-3A3F-4B87-A128-0ED876E5DDA7}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="84.22843170166016"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{AE97810F-3A3F-4B87-A128-0ED876E5DDA7}{40}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:14.0pt;color:blue"><one:T><![CDATA[<span
3style='font-style:italic'>Anchor</span>]]></one:T></one:OE><one:OE lastModifiedBy="Rust page writer" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{AE97810F-3A3F-4B87-A128-0ED876E5DDA7}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{AE97810F-3A3F-4B87-A128-0ED876E5DDA7}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
4style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
5href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{AE97810F-3A3F-4B87-A128-0ED876E5DDA7}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
6style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{AE97810F-3A3F-4B87-A128-0ED876E5DDA7}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE><one:OE author="Rust page writer" lastModifiedBy="Rust page writer" creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{9EC01122-7074-0FD9-3093-8CA2F88C5924}{0}{B0}" alignment="left" style="font-family:Calibri;font-size:11.0pt"><one:T><![CDATA[Nested by Rust]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{AE97810F-3A3F-4B87-A128-0ED876E5DDA7}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{AE97810F-3A3F-4B87-A128-0ED876E5DDA7}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-013.xml created+4
......@@ -0,0 +1,4 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{EDC6BEEF-F38F-45A9-B63A-978733FBFE0D}{1}{B0}" name="Delete only paragraph" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:27:14.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{81655879-EB7C-48A8-AE42-74FBCCA6FBD3}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete only paragraph]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{81655879-EB7C-48A8-AE42-74FBCCA6FBD3}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{81655879-EB7C-48A8-AE42-74FBCCA6FBD3}{40}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{81655879-EB7C-48A8-AE42-74FBCCA6FBD3}{49}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{81655879-EB7C-48A8-AE42-74FBCCA6FBD3}{50}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/page-014.xml created+7
......@@ -0,0 +1,7 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{FE2BF675-3A73-47D2-988B-0F6518BF86E7}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-11T06:27:13.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{4A31457B-F526-4D92-9745-5AF74B4DDDB1}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move leaf down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:02.000Z" objectID="{4A31457B-F526-4D92-9745-5AF74B4DDDB1}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:48.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{4A31457B-F526-4D92-9745-5AF74B4DDDB1}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:23:02.000Z" objectID="{4A31457B-F526-4D92-9745-5AF74B4DDDB1}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
5style='font-weight:bold'>Trai</span>ling sibling]]></one:T></one:OE><one:OE lastModifiedBy="Rust page writer" creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:23:02.000Z" objectID="{4A31457B-F526-4D92-9745-5AF74B4DDDB1}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
6lang=en-US>Rust &#129408; é 東京 </span><span style='direction:rtl;unicode-bidi:
7embed' lang=he>שלום</span>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4A31457B-F526-4D92-9745-5AF74B4DDDB1}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{4A31457B-F526-4D92-9745-5AF74B4DDDB1}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-model/cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/tmp/page-model/candidate/notebook",
3 "expected_pages": 15,
4 "author": null,
5 "author_timeout_seconds": 600,
6 "inspect": false,
7 "collect_notebook": true,
8 "base": {
9 "file": "win7-office-base.qcow2",
10 "format": "qcow2",
11 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
12 "virtual_size": 68719476736
13 },
14 "scripts": {
15 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
16 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
17 }
18}
corpus/page-model/cold/scripts/cold.ps1 created+27
......@@ -0,0 +1,27 @@
1param([Parameter(Mandatory=$true)][string]$Root, [string]$CloneHost = '')
2Set-StrictMode -Version Latest
3$ErrorActionPreference = 'Stop'
4$root = [IO.Path]::GetFullPath($Root).TrimEnd('\')
5if ([IO.Path]::GetDirectoryName($root) -ne 'C:\one-tests\runs') {
6 throw 'Choose a run directly below C:\one-tests\runs.'
7}
8if (Get-Process ONENOTE -ErrorAction SilentlyContinue) { throw 'Close OneNote before resetting its test cache.' }
9$key = 'HKCU:\Software\Microsoft\Office\14.0\OneNote'
10if ($CloneHost) {
11 if ($CloneHost -notmatch '^ONE-[A-Z0-9-]+$' -or [Environment]::MachineName -ne $CloneHost) {
12 throw 'The disposable clone hostname does not match this machine.'
13 }
14 New-Item "$key\Options\Paths" -Force | Out-Null
15 New-ItemProperty "$key\Options\Paths" -Name UnfiledNotesSection -PropertyType ExpandString -Value 'C:\one-tests\Loose.one' -Force | Out-Null
16} elseif ((Get-ItemProperty "$key\Options\Paths").UnfiledNotesSection -ne 'C:\one-tests\Loose.one' -or
17 -not (Test-Path 'C:\one-tests\profile-original-cache')) {
18 throw 'Park the personal OneNote profile before resetting the test cache.'
19}
20$cache = Join-Path $env:LOCALAPPDATA 'Microsoft\OneNote\14.0'
21$parked = Join-Path 'C:\one-tests\caches' ([IO.Path]::GetFileName($root))
22if (Test-Path $parked) { throw 'Choose a new run; its parked cache already exists.' }
23New-Item -ItemType Directory -Path 'C:\one-tests\caches' -Force | Out-Null
24if (Test-Path $cache) { Move-Item -LiteralPath $cache -Destination $parked }
25if (Test-Path "$key\OpenNotebooks") { Remove-Item "$key\OpenNotebooks" -Recurse }
26New-Item "$key\OpenNotebooks" | Out-Null
27New-ItemProperty "$key\OpenNotebooks" -Name '1' -PropertyType String -Value "$root\notebook" | Out-Null
corpus/page-model/cold/scripts/read.ps1 created+142
......@@ -0,0 +1,142 @@
1param(
2 [Parameter(Mandatory=$true)][string]$Root,
3 [int]$ExpectedPages = -1,
4 [switch]$UseCurrentCache,
5 [switch]$Pdf,
6 [switch]$KeepOpen,
7 [string]$CloneHost = ''
8)
9Set-StrictMode -Version Latest
10$ErrorActionPreference = 'Stop'
11$root = [IO.Path]::GetFullPath($Root).TrimEnd('\')
12if ([IO.Path]::GetDirectoryName($root) -ne 'C:\one-tests\runs') {
13 throw 'Choose a run directly below C:\one-tests\runs.'
14}
15$notebook = Join-Path $root 'notebook'
16$output = Join-Path $root 'read'
17if (Test-Path $output) { throw 'Choose a new read destination.' }
18if ($UseCurrentCache) {
19 if ((Get-ItemProperty 'HKCU:\Software\Microsoft\Office\14.0\OneNote\Options\Paths').UnfiledNotesSection -ne 'C:\one-tests\Loose.one') {
20 throw 'Park the personal OneNote profile before reading test notebooks.'
21 }
22} else {
23 & "$PSScriptRoot\cold-current.ps1" -Root $root -CloneHost $CloneHost
24}
25New-Item -ItemType Directory -Path $output | Out-Null
26$app = New-Object -ComObject OneNote.Application
27$notebookId = ''
28$failure = $null
29try {
30 $app.OpenHierarchy($notebook, '', [ref]$notebookId, 0)
31 $process = Get-Process ONENOTE
32 @{ hostname = [Environment]::MachineName; onenote = $process.MainModule.FileVersionInfo.FileVersion;
33 powershell = $PSVersionTable.PSVersion.ToString(); schema = 'xs2010'; cold = (-not $UseCurrentCache.IsPresent) } |
34 ConvertTo-Json | Set-Content (Join-Path $output 'environment.json') -Encoding UTF8
35 $sections = @()
36 foreach ($file in @(Get-ChildItem $notebook -Recurse | Where-Object { $_.Extension -eq '.one' })) {
37 $id = ''
38 $app.OpenHierarchy($file.FullName, '', [ref]$id, 0)
39 $sections += $id
40 }
41 $deadline = [DateTime]::UtcNow.AddSeconds(300)
42 $previous = ''
43 $lastChange = ''
44 $stableSince = [DateTime]::UtcNow
45 $settled = $false
46 do {
47 $pages = @{}
48 foreach ($section in $sections) {
49 $hierarchy = ''
50 $app.GetHierarchy($section, 4, [ref]$hierarchy, 1)
51 [xml]$xml = $hierarchy
52 foreach ($node in $xml.SelectNodes('//*[@path]')) {
53 if (-not $node.GetAttribute('path').StartsWith("$notebook\", [StringComparison]::OrdinalIgnoreCase)) {
54 throw 'OneNote opened a section outside the copied notebook.'
55 }
56 }
57 foreach ($node in $xml.SelectNodes('//*[local-name()="Page"]')) {
58 $id = $node.GetAttribute('ID')
59 $content = ''
60 $app.GetPageContent($id, [ref]$content, 1, 1)
61 $pages[$id] = $content
62 }
63 }
64 $signature = [String]::Join('|', @($pages.Keys | Sort-Object | ForEach-Object { $_ + $pages[$_] }))
65 if ($signature -ne $previous) {
66 $lastChange = $previous
67 $previous = $signature
68 $stableSince = [DateTime]::UtcNow
69 }
70 if ((($ExpectedPages -ge 0 -and $pages.Count -eq $ExpectedPages) -or
71 ($ExpectedPages -lt 0 -and $pages.Count -gt 0)) -and
72 ([DateTime]::UtcNow - $stableSince).TotalSeconds -ge 2) { $settled = $true; break }
73 Start-Sleep -Milliseconds 250
74 } while ([DateTime]::UtcNow -lt $deadline)
75 if (-not $settled -or ($ExpectedPages -ge 0 -and $pages.Count -ne $ExpectedPages) -or ($ExpectedPages -lt 0 -and $pages.Count -eq 0)) {
76 [IO.File]::WriteAllText((Join-Path $output 'previous-signature.txt'), $lastChange, [Text.Encoding]::UTF8)
77 $index = 0
78 foreach ($id in @($pages.Keys | Sort-Object)) {
79 [IO.File]::WriteAllText((Join-Path $output ('unsettled-{0:d3}.xml' -f $index)), $pages[$id], [Text.Encoding]::UTF8)
80 $index++
81 }
82 $hierarchy = ''
83 $app.GetHierarchy($notebookId, 4, [ref]$hierarchy, 1)
84 [IO.File]::WriteAllText((Join-Path $output 'unsettled-hierarchy.xml'), $hierarchy, [Text.Encoding]::UTF8)
85 throw "Expected $ExpectedPages stable pages; OneNote returned $($pages.Count), settled=$settled."
86 }
87 $index = 0
88 $payloads = @()
89 foreach ($id in @($pages.Keys | Sort-Object)) {
90 [IO.File]::WriteAllText((Join-Path $output ('page-{0:d3}.xml' -f $index)), $pages[$id], [Text.Encoding]::UTF8)
91 if ($Pdf) {
92 $pdfPath = Join-Path $output ('page-{0:d3}.pdf' -f $index)
93 $app.NavigateTo($id, '', $false)
94 $app.Publish($id, $pdfPath, 3, '')
95 if (-not (Test-Path $pdfPath) -or (Get-Item $pdfPath).Length -eq 0) { throw 'OneNote did not publish the page PDF.' }
96 }
97 [xml]$page = $pages[$id]
98 foreach ($file in $page.SelectNodes('//*[local-name()="InsertedFile" or local-name()="MediaFile"]')) {
99 $bytes = [IO.File]::ReadAllBytes($file.GetAttribute('pathCache'))
100 $hash = [BitConverter]::ToString([Security.Cryptography.SHA256]::Create().ComputeHash($bytes)).Replace('-', '').ToLowerInvariant()
101 [IO.File]::WriteAllBytes((Join-Path $output ($hash + '.attachment')), $bytes)
102 $payloads += @{ page = $id; object = $file.ParentNode.GetAttribute('objectID');
103 kind = $file.LocalName; name = $file.GetAttribute('preferredName');
104 sha256 = $hash; bytes = $bytes.Length }
105 }
106 $index++
107 }
108 [IO.File]::WriteAllText((Join-Path $output 'payloads.json'), (ConvertTo-Json -InputObject $payloads -Depth 4), [Text.Encoding]::UTF8)
109 $all = ''
110 $app.GetHierarchy($notebookId, 4, [ref]$all, 1)
111 [xml]$finalTree = $all
112 $finalIds = @($finalTree.SelectNodes('//*[local-name()="Page"]') | ForEach-Object { $_.GetAttribute('ID') } | Sort-Object -Unique)
113 if ($finalIds.Count -ne $pages.Count -or @($finalIds | Where-Object { -not $pages.ContainsKey($_) }).Count -ne 0) {
114 throw 'The notebook hierarchy changed while collecting page evidence; repeat the cold read.'
115 }
116 [IO.File]::WriteAllText((Join-Path $output 'hierarchy.xml'), $all, [Text.Encoding]::UTF8)
117 Write-Output "Read $($sections.Count) sections and $($pages.Count) pages."
118} catch {
119 $failure = $_
120 [IO.File]::WriteAllText((Join-Path $output 'failure.txt'), ($_ | Out-String), [Text.Encoding]::UTF8)
121 throw
122} finally {
123 try {
124 try {
125 if ($notebookId -and $CloneHost) { $app.SyncHierarchy($notebookId) }
126 if ($notebookId -and -not $KeepOpen -and (-not $UseCurrentCache -or $CloneHost)) {
127 $app.CloseNotebook($notebookId, $false)
128 }
129 } catch {
130 if ($null -eq $failure) { throw }
131 [IO.File]::WriteAllText((Join-Path $output 'cleanup-failure.txt'), ($_ | Out-String), [Text.Encoding]::UTF8)
132 }
133 } finally {
134 [void][Runtime.InteropServices.Marshal]::FinalReleaseComObject($app)
135 }
136 $app = $null
137 [GC]::Collect()
138 [GC]::WaitForPendingFinalizers()
139 if (-not $UseCurrentCache -and -not $CloneHost) {
140 Get-Process ONENOTE -ErrorAction SilentlyContinue | Wait-Process -Timeout 10
141 }
142}
corpus/page-model/cold/source.json created+14
......@@ -0,0 +1,14 @@
1[
2 {
3 "path": "Open Notebook.onetoc2",
4 "bytes": 4800,
5 "sha256": "341894b32b0433a1e8b647431f71e372d344c74e0f87699e45c9235964082551",
6 "mtime_ns": 1788890614579474155
7 },
8 {
9 "path": "synthetic.one",
10 "bytes": 119720,
11 "sha256": "a5ca37027575ea012fce7fd4131ffb7c184b65bc32836a3f33556ee5162cdbc3",
12 "mtime_ns": 1789107784789511093
13 }
14]
corpus/page-model/cold/table-autofit.json created+1
......@@ -0,0 +1 @@
1[]
\ No newline at end of file
corpus/page-model/cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-model/followup-cold/commands.jsonl created+3
......@@ -0,0 +1,3 @@
1{"command": "powershell -NoProfile -Command \"Expand-Archive -LiteralPath C:\\one-tests\\transfer.zip -DestinationPath C:\\one-tests\\runs\\capture\\notebook\"", "exit": 0, "stdout": "", "stderr": "", "error": null}
2{"command": "powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File C:\\one-tests\\read-current.ps1 -Root C:\\one-tests\\runs\\capture -CloneHost ONE-M6-3CAF6D8E -ExpectedPages 15", "exit": 0, "stdout": "Read 1 sections and 15 pages.\r\n", "stderr": "", "error": null}
3{"command": "powershell -NoProfile -Command \"Compress-Archive -Force -Path C:\\one-tests\\runs\\capture\\* -DestinationPath C:\\one-tests\\captured.zip\"", "exit": 0, "stdout": "", "stderr": "", "error": null}
corpus/page-model/followup-cold/format-differences.json created+1
......@@ -0,0 +1 @@
1[]
\ No newline at end of file
corpus/page-model/followup-cold/geometry-differences.json created+1
......@@ -0,0 +1 @@
1[]
\ No newline at end of file
corpus/page-model/followup-cold/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-3caf6d8e", "hostname": "ONE-M6-3CAF6D8E"}
corpus/page-model/followup-cold/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-model/followup-cold/notebook/Open Notebook.onetoc2 differ
corpus/page-model/followup-cold/notebook/synthetic.one created
Binary files /dev/null and b/corpus/page-model/followup-cold/notebook/synthetic.one differ
corpus/page-model/followup-cold/pdf-format-checks.json created+1
......@@ -0,0 +1 @@
1[]
\ No newline at end of file
corpus/page-model/followup-cold/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-3CAF6D8E",
5 "cold": true,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-model/followup-cold/read/hierarchy.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Notebook xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" name="notebook" nickname="notebook" ID="{034CC87C-BBBB-46A3-9A16-81918D815F07}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-11T06:45:47.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{3DAD065B-B23A-0E5A-20D2-E8A473EDA5A7}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-11T06:45:47.000Z" color="#8AA8E4"><one:Page ID="{11E4F5DD-3BF1-4D4B-A7B5-40358FD5B9B8}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1"/><one:Page ID="{C2DAB811-CA6B-4966-BD29-FF3C9EDD126C}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1"/><one:Page ID="{EE7C1CE3-6D5C-4345-840B-A64038DAEA83}{1}{B0}" name="Move subtree down" dateTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1"/><one:Page ID="{00C4C275-4D73-462D-B31F-7A76DEEBE78E}{1}{B0}" name="Move subtree up" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1"/><one:Page ID="{10E8A8CA-B280-4D66-ACB3-342CDAB046AC}{1}{B0}" name="Indent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1"/><one:Page ID="{F678C315-1505-4E89-B59B-43EA2078814F}{1}{B0}" name="Outdent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1"/><one:Page ID="{8A747E3A-7774-4117-9A0C-56F7561D4532}{1}{B0}" name="Collapse subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1"/><one:Page ID="{F0F7FFCD-A3C2-45DE-8904-7A639DCED02A}{1}{B0}" name="Expand subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1"/><one:Page ID="{43C32B7C-3109-4AD2-8E26-8EED17D6B35B}{1}{B0}" name="Delete leaf" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1"/><one:Page ID="{FE4613A6-A7A0-48AC-9A3D-ECF23F066194}{1}{B0}" name="Delete subtree" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1"/><one:Page ID="{D137F08B-0397-4B1D-9398-67DEB5996A86}{1}{B0}" name="Delete only paragraph" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1"/><one:Page ID="{F514CE6A-F249-4DCF-9298-EA7B08BDCE23}{1}{B0}" name="Delete outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1"/><one:Page ID="{63DCB469-1C21-4D54-933B-149D8ADB191A}{1}{B0}" name="Move outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1"/><one:Page ID="{B8BECF08-061F-4EE4-9862-FD363B48AB28}{1}{B0}" name="Resize outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1"/><one:Page ID="{867FC246-54C9-43D0-84EC-63FD51B16997}{1}{B0}" name="Automatic outline size" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-model/followup-cold/read/page-000.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{00C4C275-4D73-462D-B31F-7A76DEEBE78E}{1}{B0}" name="Move subtree up" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{4ABBCDB3-852D-44CB-8762-DB7FCAEED004}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move subtree up]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4ABBCDB3-852D-44CB-8762-DB7FCAEED004}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{4ABBCDB3-852D-44CB-8762-DB7FCAEED004}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{4ABBCDB3-852D-44CB-8762-DB7FCAEED004}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{4ABBCDB3-852D-44CB-8762-DB7FCAEED004}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{4ABBCDB3-852D-44CB-8762-DB7FCAEED004}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{4ABBCDB3-852D-44CB-8762-DB7FCAEED004}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4ABBCDB3-852D-44CB-8762-DB7FCAEED004}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{4ABBCDB3-852D-44CB-8762-DB7FCAEED004}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-001.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{10E8A8CA-B280-4D66-ACB3-342CDAB046AC}{1}{B0}" name="Indent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{2F75F827-7DEB-493A-B17B-EEA88799B29D}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Indent subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{2F75F827-7DEB-493A-B17B-EEA88799B29D}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{2F75F827-7DEB-493A-B17B-EEA88799B29D}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{2F75F827-7DEB-493A-B17B-EEA88799B29D}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{2F75F827-7DEB-493A-B17B-EEA88799B29D}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{2F75F827-7DEB-493A-B17B-EEA88799B29D}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{2F75F827-7DEB-493A-B17B-EEA88799B29D}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{2F75F827-7DEB-493A-B17B-EEA88799B29D}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{2F75F827-7DEB-493A-B17B-EEA88799B29D}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-002.xml created+25
......@@ -0,0 +1,25 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{11E4F5DD-3BF1-4D4B-A7B5-40358FD5B9B8}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1" lang="en-US"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{76285D61-7084-4EFD-A847-CCEE70495CD9}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="40.89204406738281"/><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{714DF596-83F9-05F7-1813-0FE4BB222E2F}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold;
3text-decoration:underline line-through;vertical-align:sub;font-family:Calibri;
4font-size:11.0pt' lang=en-US>Bol</span><span style='font-weight:bold;
5text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US>d</span><span
6style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span
7style='font-family:Arial;font-size:13.5pt' lang=en-US>&#129408;</span><span
8style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span
9style='font-style:italic;text-decoration:line-through;font-family:Calibri;
10font-size:11.0pt' lang=en-US>italic</span><span style='font-family:Calibri;
11font-size:11.0pt' lang=en-US> </span><span style='vertical-align:super;
12font-family:Calibri;font-size:11.0pt' lang=en-US>é</span><span
13style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span
14style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow;
15mso-highlight:yellow' lang=en-US>color</span><span style='font-family:Calibri;
16font-size:11.0pt' lang=en-US> </span><span style='vertical-align:sub;
17font-family:Calibri;font-size:11.0pt' lang=en-US>東京</span><span
18style='font-family:Calibri;font-size:11.0pt' lang=en-US><br>
19End</span><span
20style='font-weight:bold;font-family:Calibri;font-size:11.0pt;color:#1F4E79'
21lang=en-US>Fictitious: café, </span><span style='font-weight:bold;font-family:
22SimSun;font-size:11.0pt;color:#1F4E79' lang=en-US>東京</span><span
23style='font-weight:bold;font-family:Calibri;font-size:11.0pt;color:#1F4E79'
24lang=en-US>, </span><span style='font-weight:bold;font-family:Arial;font-size:
2511.0pt;color:#1F4E79;direction:rtl;unicode-bidi:embed' lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-003.xml created+4
......@@ -0,0 +1,4 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{43C32B7C-3109-4AD2-8E26-8EED17D6B35B}{1}{B0}" name="Delete leaf" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A96BA4C5-B8D8-4DB4-BA23-738CB22006C0}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete leaf]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{A96BA4C5-B8D8-4DB4-BA23-738CB22006C0}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A96BA4C5-B8D8-4DB4-BA23-738CB22006C0}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A96BA4C5-B8D8-4DB4-BA23-738CB22006C0}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE><one:OE author="Rust page writer" lastModifiedBy="Rust page writer" creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{EF5647F5-8F67-0A29-22E4-3940C86332AC}{0}{B0}" alignment="left" style="font-family:Calibri;font-size:11.0pt"><one:T><![CDATA[Appended by Rust]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A96BA4C5-B8D8-4DB4-BA23-738CB22006C0}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{A96BA4C5-B8D8-4DB4-BA23-738CB22006C0}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline style="font-family:Calibri;font-size:11.0pt" author="Rust page writer" lastModifiedBy="Rust page writer" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{DC109587-7244-09F9-26AF-051946A840D7}{0}{B0}"><one:Position x="300.0" y="399.9999694824219" z="2"/><one:Size width="140.3770904541016" height="26.85542678833008"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{4E4EE106-52F3-008D-29BA-C9C9757E204B}{0}{B0}" alignment="left"><one:T><![CDATA[Rust outline one]]></one:T></one:OE><one:OE creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{27636BA8-AFD7-0DC1-1D19-83357F51051E}{0}{B0}" alignment="left"><one:T><![CDATA[Rust outline two]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-004.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{63DCB469-1C21-4D54-933B-149D8ADB191A}{1}{B0}" name="Move outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{33D75DB2-8912-43F4-9DB4-C386A4239951}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{33D75DB2-8912-43F4-9DB4-C386A4239951}{39}{B0}"><one:Position x="72.0" y="108.0" z="1"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{33D75DB2-8912-43F4-9DB4-C386A4239951}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor (Rust)]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{33D75DB2-8912-43F4-9DB4-C386A4239951}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{33D75DB2-8912-43F4-9DB4-C386A4239951}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{33D75DB2-8912-43F4-9DB4-C386A4239951}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{33D75DB2-8912-43F4-9DB4-C386A4239951}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{33D75DB2-8912-43F4-9DB4-C386A4239951}{70}{B0}"><one:Position x="480.0" y="108.0" z="0"/><one:Size width="128.7545166015625" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{33D75DB2-8912-43F4-9DB4-C386A4239951}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline (Rust)]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-005.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{867FC246-54C9-43D0-84EC-63FD51B16997}{1}{B0}" name="Automatic outline size" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BBCA9532-EE9E-478B-B449-EAC52EAC444D}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Automatic outline size]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BBCA9532-EE9E-478B-B449-EAC52EAC444D}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="180.0" height="67.13858032226562" isSetByUser="true"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BBCA9532-EE9E-478B-B449-EAC52EAC444D}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BBCA9532-EE9E-478B-B449-EAC52EAC444D}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BBCA9532-EE9E-478B-B449-EAC52EAC444D}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BBCA9532-EE9E-478B-B449-EAC52EAC444D}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BBCA9532-EE9E-478B-B449-EAC52EAC444D}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BBCA9532-EE9E-478B-B449-EAC52EAC444D}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BBCA9532-EE9E-478B-B449-EAC52EAC444D}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-006.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{8A747E3A-7774-4117-9A0C-56F7561D4532}{1}{B0}" name="Collapse subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{068903F8-5D18-4AF0-9A6B-C1F3CFD7C755}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Collapse subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{068903F8-5D18-4AF0-9A6B-C1F3CFD7C755}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{068903F8-5D18-4AF0-9A6B-C1F3CFD7C755}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{068903F8-5D18-4AF0-9A6B-C1F3CFD7C755}{39}{B0}"><one:Position x="90.0" y="250.5" z="0"/><one:Size width="300.0" height="40.28313827514648" isSetByUser="true"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{068903F8-5D18-4AF0-9A6B-C1F3CFD7C755}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" collapsed="1" objectID="{068903F8-5D18-4AF0-9A6B-C1F3CFD7C755}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{068903F8-5D18-4AF0-9A6B-C1F3CFD7C755}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{068903F8-5D18-4AF0-9A6B-C1F3CFD7C755}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{068903F8-5D18-4AF0-9A6B-C1F3CFD7C755}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-007.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{B8BECF08-061F-4EE4-9862-FD363B48AB28}{1}{B0}" name="Resize outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{717FAFD0-A6BB-4416-AB10-EEF94B34066A}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Resize outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{717FAFD0-A6BB-4416-AB10-EEF94B34066A}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{717FAFD0-A6BB-4416-AB10-EEF94B34066A}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{717FAFD0-A6BB-4416-AB10-EEF94B34066A}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{717FAFD0-A6BB-4416-AB10-EEF94B34066A}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{717FAFD0-A6BB-4416-AB10-EEF94B34066A}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{717FAFD0-A6BB-4416-AB10-EEF94B34066A}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{717FAFD0-A6BB-4416-AB10-EEF94B34066A}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{717FAFD0-A6BB-4416-AB10-EEF94B34066A}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-008.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C2DAB811-CA6B-4966-BD29-FF3C9EDD126C}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-11T06:41:49.000Z" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{76C00B1F-053E-4326-B2E7-AAAECD2F493A}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move leaf down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{76C00B1F-053E-4326-B2E7-AAAECD2F493A}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="131.1232299804687" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:48.000Z" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{76C00B1F-053E-4326-B2E7-AAAECD2F493A}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE><one:OE creationTime="2026-09-11T06:41:49.000Z" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{76C00B1F-053E-4326-B2E7-AAAECD2F493A}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
5style='font-weight:bold'>Trai</span>ling sibling]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{76C00B1F-053E-4326-B2E7-AAAECD2F493A}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Native after Rust &#129419; é]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{76C00B1F-053E-4326-B2E7-AAAECD2F493A}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-11T06:41:49.000Z" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{76C00B1F-053E-4326-B2E7-AAAECD2F493A}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-009.xml created+4
......@@ -0,0 +1,4 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{D137F08B-0397-4B1D-9398-67DEB5996A86}{1}{B0}" name="Delete only paragraph" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BD94161D-1B64-461C-8BE0-84A24AC46F58}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete only paragraph]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BD94161D-1B64-461C-8BE0-84A24AC46F58}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BD94161D-1B64-461C-8BE0-84A24AC46F58}{40}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BD94161D-1B64-461C-8BE0-84A24AC46F58}{49}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{BD94161D-1B64-461C-8BE0-84A24AC46F58}{50}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-010.xml created+6
......@@ -0,0 +1,6 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{EE7C1CE3-6D5C-4345-840B-A64038DAEA83}{1}{B0}" name="Move subtree down" dateTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9266CF6B-CA27-4533-848A-FE81F087492C}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move subtree down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{9266CF6B-CA27-4533-848A-FE81F087492C}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="84.22843170166016"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{9266CF6B-CA27-4533-848A-FE81F087492C}{40}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:14.0pt;color:blue"><one:T><![CDATA[<span
3style='font-style:italic'>Anchor</span>]]></one:T></one:OE><one:OE lastModifiedBy="Rust page writer" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{9266CF6B-CA27-4533-848A-FE81F087492C}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{9266CF6B-CA27-4533-848A-FE81F087492C}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
4style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
5href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9266CF6B-CA27-4533-848A-FE81F087492C}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
6style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9266CF6B-CA27-4533-848A-FE81F087492C}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE><one:OE author="Rust page writer" lastModifiedBy="Rust page writer" creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{A2315F46-806C-016D-1531-7CFB7EEECDAF}{0}{B0}" alignment="left" style="font-family:Calibri;font-size:11.0pt"><one:T><![CDATA[Nested by Rust]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{9266CF6B-CA27-4533-848A-FE81F087492C}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{9266CF6B-CA27-4533-848A-FE81F087492C}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-011.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{F0F7FFCD-A3C2-45DE-8904-7A639DCED02A}{1}{B0}" name="Expand subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{C4E11C17-37DC-451A-95C3-D7AD70F91E86}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Expand subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{C4E11C17-37DC-451A-95C3-D7AD70F91E86}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{C4E11C17-37DC-451A-95C3-D7AD70F91E86}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" collapsed="1" objectID="{C4E11C17-37DC-451A-95C3-D7AD70F91E86}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{C4E11C17-37DC-451A-95C3-D7AD70F91E86}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{C4E11C17-37DC-451A-95C3-D7AD70F91E86}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{C4E11C17-37DC-451A-95C3-D7AD70F91E86}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{C4E11C17-37DC-451A-95C3-D7AD70F91E86}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{C4E11C17-37DC-451A-95C3-D7AD70F91E86}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-012.xml created+8
......@@ -0,0 +1,8 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{F514CE6A-F249-4DCF-9298-EA7B08BDCE23}{1}{B0}" name="Delete outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0D85A6A2-8ED1-432D-BF8C-EA9997003598}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{0D85A6A2-8ED1-432D-BF8C-EA9997003598}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{0D85A6A2-8ED1-432D-BF8C-EA9997003598}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-family:Calibri'>A</span><span style='text-decoration:underline;
4font-family:Consolas;background:yellow;mso-highlight:yellow'>ncho</span><span
5style='font-family:Calibri'>r</span>]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0D85A6A2-8ED1-432D-BF8C-EA9997003598}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
6style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
7href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0D85A6A2-8ED1-432D-BF8C-EA9997003598}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
8style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0D85A6A2-8ED1-432D-BF8C-EA9997003598}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0D85A6A2-8ED1-432D-BF8C-EA9997003598}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-013.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{F678C315-1505-4E89-B59B-43EA2078814F}{1}{B0}" name="Outdent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:45:46.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{6F714122-9C86-4045-A72C-27D2B2A1A2E6}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Outdent subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{6F714122-9C86-4045-A72C-27D2B2A1A2E6}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="169.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{6F714122-9C86-4045-A72C-27D2B2A1A2E6}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{6F714122-9C86-4045-A72C-27D2B2A1A2E6}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{6F714122-9C86-4045-A72C-27D2B2A1A2E6}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{6F714122-9C86-4045-A72C-27D2B2A1A2E6}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{6F714122-9C86-4045-A72C-27D2B2A1A2E6}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{6F714122-9C86-4045-A72C-27D2B2A1A2E6}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{6F714122-9C86-4045-A72C-27D2B2A1A2E6}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/page-014.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{FE4613A6-A7A0-48AC-9A3D-ECF23F066194}{1}{B0}" name="Delete subtree" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:45:47.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0664B68C-B5FC-4F1F-9A76-94D48C970440}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="Rust page writer" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{0664B68C-B5FC-4F1F-9A76-94D48C970440}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="80.56629943847656"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{0664B68C-B5FC-4F1F-9A76-94D48C970440}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anc]]></one:T></one:OE><one:OE author="Rust page writer" creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{02B85275-EF29-02C8-1896-FADFD9C43EA3}{0}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[hor]]></one:T></one:OE><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0664B68C-B5FC-4F1F-9A76-94D48C970440}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0664B68C-B5FC-4F1F-9A76-94D48C970440}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0664B68C-B5FC-4F1F-9A76-94D48C970440}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0664B68C-B5FC-4F1F-9A76-94D48C970440}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0664B68C-B5FC-4F1F-9A76-94D48C970440}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0664B68C-B5FC-4F1F-9A76-94D48C970440}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup-cold/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-model/followup-cold/run.json created+18
......@@ -0,0 +1,18 @@
1{
2 "notebook": "/private/tmp/page-model/followup/notebook",
3 "expected_pages": 15,
4 "author": null,
5 "author_timeout_seconds": 600,
6 "inspect": false,
7 "collect_notebook": true,
8 "base": {
9 "file": "win7-office-base.qcow2",
10 "format": "qcow2",
11 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
12 "virtual_size": 68719476736
13 },
14 "scripts": {
15 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
16 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
17 }
18}
corpus/page-model/followup-cold/scripts/cold.ps1 created+27
......@@ -0,0 +1,27 @@
1param([Parameter(Mandatory=$true)][string]$Root, [string]$CloneHost = '')
2Set-StrictMode -Version Latest
3$ErrorActionPreference = 'Stop'
4$root = [IO.Path]::GetFullPath($Root).TrimEnd('\')
5if ([IO.Path]::GetDirectoryName($root) -ne 'C:\one-tests\runs') {
6 throw 'Choose a run directly below C:\one-tests\runs.'
7}
8if (Get-Process ONENOTE -ErrorAction SilentlyContinue) { throw 'Close OneNote before resetting its test cache.' }
9$key = 'HKCU:\Software\Microsoft\Office\14.0\OneNote'
10if ($CloneHost) {
11 if ($CloneHost -notmatch '^ONE-[A-Z0-9-]+$' -or [Environment]::MachineName -ne $CloneHost) {
12 throw 'The disposable clone hostname does not match this machine.'
13 }
14 New-Item "$key\Options\Paths" -Force | Out-Null
15 New-ItemProperty "$key\Options\Paths" -Name UnfiledNotesSection -PropertyType ExpandString -Value 'C:\one-tests\Loose.one' -Force | Out-Null
16} elseif ((Get-ItemProperty "$key\Options\Paths").UnfiledNotesSection -ne 'C:\one-tests\Loose.one' -or
17 -not (Test-Path 'C:\one-tests\profile-original-cache')) {
18 throw 'Park the personal OneNote profile before resetting the test cache.'
19}
20$cache = Join-Path $env:LOCALAPPDATA 'Microsoft\OneNote\14.0'
21$parked = Join-Path 'C:\one-tests\caches' ([IO.Path]::GetFileName($root))
22if (Test-Path $parked) { throw 'Choose a new run; its parked cache already exists.' }
23New-Item -ItemType Directory -Path 'C:\one-tests\caches' -Force | Out-Null
24if (Test-Path $cache) { Move-Item -LiteralPath $cache -Destination $parked }
25if (Test-Path "$key\OpenNotebooks") { Remove-Item "$key\OpenNotebooks" -Recurse }
26New-Item "$key\OpenNotebooks" | Out-Null
27New-ItemProperty "$key\OpenNotebooks" -Name '1' -PropertyType String -Value "$root\notebook" | Out-Null
corpus/page-model/followup-cold/scripts/read.ps1 created+142
......@@ -0,0 +1,142 @@
1param(
2 [Parameter(Mandatory=$true)][string]$Root,
3 [int]$ExpectedPages = -1,
4 [switch]$UseCurrentCache,
5 [switch]$Pdf,
6 [switch]$KeepOpen,
7 [string]$CloneHost = ''
8)
9Set-StrictMode -Version Latest
10$ErrorActionPreference = 'Stop'
11$root = [IO.Path]::GetFullPath($Root).TrimEnd('\')
12if ([IO.Path]::GetDirectoryName($root) -ne 'C:\one-tests\runs') {
13 throw 'Choose a run directly below C:\one-tests\runs.'
14}
15$notebook = Join-Path $root 'notebook'
16$output = Join-Path $root 'read'
17if (Test-Path $output) { throw 'Choose a new read destination.' }
18if ($UseCurrentCache) {
19 if ((Get-ItemProperty 'HKCU:\Software\Microsoft\Office\14.0\OneNote\Options\Paths').UnfiledNotesSection -ne 'C:\one-tests\Loose.one') {
20 throw 'Park the personal OneNote profile before reading test notebooks.'
21 }
22} else {
23 & "$PSScriptRoot\cold-current.ps1" -Root $root -CloneHost $CloneHost
24}
25New-Item -ItemType Directory -Path $output | Out-Null
26$app = New-Object -ComObject OneNote.Application
27$notebookId = ''
28$failure = $null
29try {
30 $app.OpenHierarchy($notebook, '', [ref]$notebookId, 0)
31 $process = Get-Process ONENOTE
32 @{ hostname = [Environment]::MachineName; onenote = $process.MainModule.FileVersionInfo.FileVersion;
33 powershell = $PSVersionTable.PSVersion.ToString(); schema = 'xs2010'; cold = (-not $UseCurrentCache.IsPresent) } |
34 ConvertTo-Json | Set-Content (Join-Path $output 'environment.json') -Encoding UTF8
35 $sections = @()
36 foreach ($file in @(Get-ChildItem $notebook -Recurse | Where-Object { $_.Extension -eq '.one' })) {
37 $id = ''
38 $app.OpenHierarchy($file.FullName, '', [ref]$id, 0)
39 $sections += $id
40 }
41 $deadline = [DateTime]::UtcNow.AddSeconds(300)
42 $previous = ''
43 $lastChange = ''
44 $stableSince = [DateTime]::UtcNow
45 $settled = $false
46 do {
47 $pages = @{}
48 foreach ($section in $sections) {
49 $hierarchy = ''
50 $app.GetHierarchy($section, 4, [ref]$hierarchy, 1)
51 [xml]$xml = $hierarchy
52 foreach ($node in $xml.SelectNodes('//*[@path]')) {
53 if (-not $node.GetAttribute('path').StartsWith("$notebook\", [StringComparison]::OrdinalIgnoreCase)) {
54 throw 'OneNote opened a section outside the copied notebook.'
55 }
56 }
57 foreach ($node in $xml.SelectNodes('//*[local-name()="Page"]')) {
58 $id = $node.GetAttribute('ID')
59 $content = ''
60 $app.GetPageContent($id, [ref]$content, 1, 1)
61 $pages[$id] = $content
62 }
63 }
64 $signature = [String]::Join('|', @($pages.Keys | Sort-Object | ForEach-Object { $_ + $pages[$_] }))
65 if ($signature -ne $previous) {
66 $lastChange = $previous
67 $previous = $signature
68 $stableSince = [DateTime]::UtcNow
69 }
70 if ((($ExpectedPages -ge 0 -and $pages.Count -eq $ExpectedPages) -or
71 ($ExpectedPages -lt 0 -and $pages.Count -gt 0)) -and
72 ([DateTime]::UtcNow - $stableSince).TotalSeconds -ge 2) { $settled = $true; break }
73 Start-Sleep -Milliseconds 250
74 } while ([DateTime]::UtcNow -lt $deadline)
75 if (-not $settled -or ($ExpectedPages -ge 0 -and $pages.Count -ne $ExpectedPages) -or ($ExpectedPages -lt 0 -and $pages.Count -eq 0)) {
76 [IO.File]::WriteAllText((Join-Path $output 'previous-signature.txt'), $lastChange, [Text.Encoding]::UTF8)
77 $index = 0
78 foreach ($id in @($pages.Keys | Sort-Object)) {
79 [IO.File]::WriteAllText((Join-Path $output ('unsettled-{0:d3}.xml' -f $index)), $pages[$id], [Text.Encoding]::UTF8)
80 $index++
81 }
82 $hierarchy = ''
83 $app.GetHierarchy($notebookId, 4, [ref]$hierarchy, 1)
84 [IO.File]::WriteAllText((Join-Path $output 'unsettled-hierarchy.xml'), $hierarchy, [Text.Encoding]::UTF8)
85 throw "Expected $ExpectedPages stable pages; OneNote returned $($pages.Count), settled=$settled."
86 }
87 $index = 0
88 $payloads = @()
89 foreach ($id in @($pages.Keys | Sort-Object)) {
90 [IO.File]::WriteAllText((Join-Path $output ('page-{0:d3}.xml' -f $index)), $pages[$id], [Text.Encoding]::UTF8)
91 if ($Pdf) {
92 $pdfPath = Join-Path $output ('page-{0:d3}.pdf' -f $index)
93 $app.NavigateTo($id, '', $false)
94 $app.Publish($id, $pdfPath, 3, '')
95 if (-not (Test-Path $pdfPath) -or (Get-Item $pdfPath).Length -eq 0) { throw 'OneNote did not publish the page PDF.' }
96 }
97 [xml]$page = $pages[$id]
98 foreach ($file in $page.SelectNodes('//*[local-name()="InsertedFile" or local-name()="MediaFile"]')) {
99 $bytes = [IO.File]::ReadAllBytes($file.GetAttribute('pathCache'))
100 $hash = [BitConverter]::ToString([Security.Cryptography.SHA256]::Create().ComputeHash($bytes)).Replace('-', '').ToLowerInvariant()
101 [IO.File]::WriteAllBytes((Join-Path $output ($hash + '.attachment')), $bytes)
102 $payloads += @{ page = $id; object = $file.ParentNode.GetAttribute('objectID');
103 kind = $file.LocalName; name = $file.GetAttribute('preferredName');
104 sha256 = $hash; bytes = $bytes.Length }
105 }
106 $index++
107 }
108 [IO.File]::WriteAllText((Join-Path $output 'payloads.json'), (ConvertTo-Json -InputObject $payloads -Depth 4), [Text.Encoding]::UTF8)
109 $all = ''
110 $app.GetHierarchy($notebookId, 4, [ref]$all, 1)
111 [xml]$finalTree = $all
112 $finalIds = @($finalTree.SelectNodes('//*[local-name()="Page"]') | ForEach-Object { $_.GetAttribute('ID') } | Sort-Object -Unique)
113 if ($finalIds.Count -ne $pages.Count -or @($finalIds | Where-Object { -not $pages.ContainsKey($_) }).Count -ne 0) {
114 throw 'The notebook hierarchy changed while collecting page evidence; repeat the cold read.'
115 }
116 [IO.File]::WriteAllText((Join-Path $output 'hierarchy.xml'), $all, [Text.Encoding]::UTF8)
117 Write-Output "Read $($sections.Count) sections and $($pages.Count) pages."
118} catch {
119 $failure = $_
120 [IO.File]::WriteAllText((Join-Path $output 'failure.txt'), ($_ | Out-String), [Text.Encoding]::UTF8)
121 throw
122} finally {
123 try {
124 try {
125 if ($notebookId -and $CloneHost) { $app.SyncHierarchy($notebookId) }
126 if ($notebookId -and -not $KeepOpen -and (-not $UseCurrentCache -or $CloneHost)) {
127 $app.CloseNotebook($notebookId, $false)
128 }
129 } catch {
130 if ($null -eq $failure) { throw }
131 [IO.File]::WriteAllText((Join-Path $output 'cleanup-failure.txt'), ($_ | Out-String), [Text.Encoding]::UTF8)
132 }
133 } finally {
134 [void][Runtime.InteropServices.Marshal]::FinalReleaseComObject($app)
135 }
136 $app = $null
137 [GC]::Collect()
138 [GC]::WaitForPendingFinalizers()
139 if (-not $UseCurrentCache -and -not $CloneHost) {
140 Get-Process ONENOTE -ErrorAction SilentlyContinue | Wait-Process -Timeout 10
141 }
142}
corpus/page-model/followup-cold/source.json created+14
......@@ -0,0 +1,14 @@
1[
2 {
3 "path": "Open Notebook.onetoc2",
4 "bytes": 4800,
5 "sha256": "341894b32b0433a1e8b647431f71e372d344c74e0f87699e45c9235964082551",
6 "mtime_ns": 1789109003103685572
7 },
8 {
9 "path": "synthetic.one",
10 "bytes": 127664,
11 "sha256": "d3f67a59581e9314cc476ea6f9cdef12bfcbce131335da591c68ae35886cace2",
12 "mtime_ns": 1789109003103953701
13 }
14]
corpus/page-model/followup-cold/table-autofit.json created+1
......@@ -0,0 +1 @@
1[]
\ No newline at end of file
corpus/page-model/followup-cold/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-model/followup/before.xml created+7
......@@ -0,0 +1,7 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{57398660-775F-4FA3-8FB3-9B179A1563CA}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-11T06:41:37.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{E323356E-B80A-45E3-807D-CE85C9E7389C}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move leaf down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:02.000Z" objectID="{E323356E-B80A-45E3-807D-CE85C9E7389C}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:48.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{E323356E-B80A-45E3-807D-CE85C9E7389C}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:23:02.000Z" objectID="{E323356E-B80A-45E3-807D-CE85C9E7389C}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
5style='font-weight:bold'>Trai</span>ling sibling]]></one:T></one:OE><one:OE lastModifiedBy="Rust page writer" creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:23:02.000Z" objectID="{E323356E-B80A-45E3-807D-CE85C9E7389C}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
6lang=en-US>Rust &#129408; é 東京 </span><span style='direction:rtl;unicode-bidi:
7embed' lang=he>שלום</span>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{E323356E-B80A-45E3-807D-CE85C9E7389C}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-08T18:00:49.000Z" objectID="{E323356E-B80A-45E3-807D-CE85C9E7389C}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/commands.jsonl created+4
......@@ -0,0 +1,4 @@
1{"command": "powershell -NoProfile -Command \"Expand-Archive -LiteralPath C:\\one-tests\\transfer.zip -DestinationPath C:\\one-tests\\runs\\capture\\notebook\"", "exit": 0, "stdout": "", "stderr": "", "error": null}
2{"command": "powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File C:\\one-tests\\author.ps1 -Root C:\\one-tests\\runs\\capture -CloneHost ONE-M6-A302D412", "exit": 0, "stdout": "", "stderr": "", "error": null}
3{"command": "powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File C:\\one-tests\\read-current.ps1 -Root C:\\one-tests\\runs\\capture -CloneHost ONE-M6-A302D412 -ExpectedPages 15 -UseCurrentCache", "exit": 0, "stdout": "Read 1 sections and 15 pages.\r\n", "stderr": "", "error": null}
4{"command": "powershell -NoProfile -Command \"Compress-Archive -Force -Path C:\\one-tests\\runs\\capture\\* -DestinationPath C:\\one-tests\\captured.zip\"", "exit": 0, "stdout": "", "stderr": "", "error": null}
corpus/page-model/followup/machine.json created+1
......@@ -0,0 +1 @@
1{"name": "m6-a302d412", "hostname": "ONE-M6-A302D412"}
corpus/page-model/followup/native-text.txt created+1
......@@ -0,0 +1 @@
1Native after Rust 🦋 é
\ No newline at end of file
corpus/page-model/followup/notebook/Open Notebook.onetoc2 created
Binary files /dev/null and b/corpus/page-model/followup/notebook/Open Notebook.onetoc2 differ
corpus/page-model/followup/notebook/synthetic.one created
Binary files /dev/null and b/corpus/page-model/followup/notebook/synthetic.one differ
corpus/page-model/followup/read/environment.json created+7
......@@ -0,0 +1,7 @@
1{
2 "powershell": "5.1.14409.1005",
3 "schema": "xs2010",
4 "hostname": "ONE-M6-A302D412",
5 "cold": false,
6 "onenote": "14.0.4763.1000"
7}
corpus/page-model/followup/read/hierarchy.xml created+2
......@@ -0,0 +1,2 @@
1<?xml version="1.0"?>
2<one:Notebook xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" name="notebook" nickname="notebook" ID="{42A6DCCF-A29E-4FCE-8C89-576B57861BC0}{1}{B0}" path="C:\one-tests\runs\capture\notebook" lastModifiedTime="2026-09-11T06:42:56.000Z" color="#B49EDE"><one:Section name="synthetic" ID="{03A178DB-17AA-07C4-12B4-8CD03720AEAA}{1}{B0}" path="C:\one-tests\runs\capture\notebook\synthetic.one" lastModifiedTime="2026-09-11T06:42:56.000Z" color="#8AA8E4"><one:Page ID="{2FE88B5D-9E61-44D5-95D3-2441CB18B2B5}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{FCD6C691-6FFB-40F8-8F4F-9B48DA101961}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{D0706263-C8CC-4ADB-B66D-C2347C17E18E}{1}{B0}" name="Move subtree down" dateTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{3EC8BCF5-E8E3-4FB3-8179-1E029A26EC83}{1}{B0}" name="Move subtree up" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{2EE4D64A-1710-44F8-9ED5-50589E7D4DA1}{1}{B0}" name="Indent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{C874BD95-B095-4717-87FD-279E64B58A42}{1}{B0}" name="Outdent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{B47800BA-D2E4-4889-A86A-328312D04E3F}{1}{B0}" name="Collapse subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{CEFB814D-0652-4C40-BB62-1E17D903DB27}{1}{B0}" name="Expand subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{7DCF55FC-9499-434C-BC40-EA99531BB856}{1}{B0}" name="Delete leaf" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{C04A6D26-0230-4132-A85B-88867BCB6A99}{1}{B0}" name="Delete subtree" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{EF3B8E0B-A607-4283-A1FE-03AAF154618B}{1}{B0}" name="Delete only paragraph" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{CB18B0EA-57D9-4451-A0FE-8E0F4C70C52E}{1}{B0}" name="Delete outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{5DD0CAE9-B9B1-44CA-A15D-70E9CE161217}{1}{B0}" name="Move outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{86B2B188-A38F-477A-AA04-99427F85A025}{1}{B0}" name="Resize outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/><one:Page ID="{B873BCC6-F159-4A4E-B68A-0789157C629A}{1}{B0}" name="Automatic outline size" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1"/></one:Section></one:Notebook>
corpus/page-model/followup/read/page-000.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{2EE4D64A-1710-44F8-9ED5-50589E7D4DA1}{1}{B0}" name="Indent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{117986A7-D87B-40A4-831D-8ADCC354B990}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Indent subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{117986A7-D87B-40A4-831D-8ADCC354B990}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{117986A7-D87B-40A4-831D-8ADCC354B990}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{117986A7-D87B-40A4-831D-8ADCC354B990}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{117986A7-D87B-40A4-831D-8ADCC354B990}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{117986A7-D87B-40A4-831D-8ADCC354B990}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{117986A7-D87B-40A4-831D-8ADCC354B990}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{117986A7-D87B-40A4-831D-8ADCC354B990}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{117986A7-D87B-40A4-831D-8ADCC354B990}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-001.xml created+25
......@@ -0,0 +1,25 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{2FE88B5D-9E61-44D5-95D3-2441CB18B2B5}{1}{B0}" name="Bold 🦀 italic é color 東京" dateTime="2026-09-05T05:06:54.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Outline author="Rich author" lastModifiedBy="Rich author" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{482423E1-D514-4763-9A21-A89A348457D4}{10}{B0}"><one:Position x="36.0" y="14.40000057220459" z="0"/><one:Size width="127.5136947631836" height="40.89204406738281"/><one:OEChildren><one:OE creationTime="2026-09-08T04:47:24.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{4F418B16-2669-0C69-2A75-6B90FFEF2522}{1}{B0}" alignment="left"><one:T><![CDATA[<span style='font-weight:bold;
3text-decoration:underline line-through;vertical-align:sub;font-family:Calibri;
4font-size:11.0pt' lang=en-US>Bol</span><span style='font-weight:bold;
5text-decoration:underline;font-family:Calibri;font-size:11.0pt' lang=en-US>d</span><span
6style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span
7style='font-family:Arial;font-size:13.5pt' lang=en-US>&#129408;</span><span
8style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span
9style='font-style:italic;text-decoration:line-through;font-family:Calibri;
10font-size:11.0pt' lang=en-US>italic</span><span style='font-family:Calibri;
11font-size:11.0pt' lang=en-US> </span><span style='vertical-align:super;
12font-family:Calibri;font-size:11.0pt' lang=en-US>é</span><span
13style='font-family:Calibri;font-size:11.0pt' lang=en-US> </span><span
14style='font-family:Calibri;font-size:11.0pt;color:#0C2238;background:yellow;
15mso-highlight:yellow' lang=en-US>color</span><span style='font-family:Calibri;
16font-size:11.0pt' lang=en-US> </span><span style='vertical-align:sub;
17font-family:Calibri;font-size:11.0pt' lang=en-US>東京</span><span
18style='font-family:Calibri;font-size:11.0pt' lang=en-US><br>
19End</span><span
20style='font-weight:bold;font-family:Calibri;font-size:11.0pt;color:#1F4E79'
21lang=en-US>Fictitious: café, </span><span style='font-weight:bold;font-family:
22SimSun;font-size:11.0pt;color:#1F4E79' lang=en-US>東京</span><span
23style='font-weight:bold;font-family:Calibri;font-size:11.0pt;color:#1F4E79'
24lang=en-US>, </span><span style='font-weight:bold;font-family:Arial;font-size:
2511.0pt;color:#1F4E79;direction:rtl;unicode-bidi:embed' lang=ar-SA>مرحبا</span>]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-002.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{3EC8BCF5-E8E3-4FB3-8179-1E029A26EC83}{1}{B0}" name="Move subtree up" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{74B7B333-20BD-4D55-B504-BF0B8E23DB09}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move subtree up]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{74B7B333-20BD-4D55-B504-BF0B8E23DB09}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{74B7B333-20BD-4D55-B504-BF0B8E23DB09}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{74B7B333-20BD-4D55-B504-BF0B8E23DB09}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{74B7B333-20BD-4D55-B504-BF0B8E23DB09}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{74B7B333-20BD-4D55-B504-BF0B8E23DB09}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{74B7B333-20BD-4D55-B504-BF0B8E23DB09}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{74B7B333-20BD-4D55-B504-BF0B8E23DB09}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{74B7B333-20BD-4D55-B504-BF0B8E23DB09}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-003.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{5DD0CAE9-B9B1-44CA-A15D-70E9CE161217}{1}{B0}" name="Move outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0DDB2332-2C82-4A6A-AFD2-A7F2E0EE925C}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{0DDB2332-2C82-4A6A-AFD2-A7F2E0EE925C}{39}{B0}"><one:Position x="72.0" y="108.0" z="1"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{0DDB2332-2C82-4A6A-AFD2-A7F2E0EE925C}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor (Rust)]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0DDB2332-2C82-4A6A-AFD2-A7F2E0EE925C}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0DDB2332-2C82-4A6A-AFD2-A7F2E0EE925C}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0DDB2332-2C82-4A6A-AFD2-A7F2E0EE925C}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{0DDB2332-2C82-4A6A-AFD2-A7F2E0EE925C}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{0DDB2332-2C82-4A6A-AFD2-A7F2E0EE925C}{70}{B0}"><one:Position x="480.0" y="108.0" z="0"/><one:Size width="128.7545166015625" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{0DDB2332-2C82-4A6A-AFD2-A7F2E0EE925C}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline (Rust)]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-004.xml created+4
......@@ -0,0 +1,4 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{7DCF55FC-9499-434C-BC40-EA99531BB856}{1}{B0}" name="Delete leaf" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{9767DA45-1D48-442A-8845-17F8F6ED0DCD}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete leaf]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{9767DA45-1D48-442A-8845-17F8F6ED0DCD}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{9767DA45-1D48-442A-8845-17F8F6ED0DCD}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{9767DA45-1D48-442A-8845-17F8F6ED0DCD}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE><one:OE author="Rust page writer" lastModifiedBy="Rust page writer" creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{D15A3975-2AF7-03B7-1082-5D348CAE39A1}{0}{B0}" alignment="left" style="font-family:Calibri;font-size:11.0pt"><one:T><![CDATA[Appended by Rust]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{9767DA45-1D48-442A-8845-17F8F6ED0DCD}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{9767DA45-1D48-442A-8845-17F8F6ED0DCD}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline style="font-family:Calibri;font-size:11.0pt" author="Rust page writer" lastModifiedBy="Rust page writer" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{E21CEB07-D7D4-0067-14C9-616D02654BDA}{0}{B0}"><one:Position x="300.0" y="399.9999694824219" z="2"/><one:Size width="140.3770904541016" height="26.85542678833008"/><one:Indents><one:Indent level="0" indent="0.0"/></one:Indents><one:OEChildren><one:OE creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{70429F86-F763-0913-1BDC-ADBD31B32B46}{0}{B0}" alignment="left"><one:T><![CDATA[Rust outline one]]></one:T></one:OE><one:OE creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{196F1528-0A47-045F-2F7F-E7413B9C0E13}{0}{B0}" alignment="left"><one:T><![CDATA[Rust outline two]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-005.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{86B2B188-A38F-477A-AA04-99427F85A025}{1}{B0}" name="Resize outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4F73D150-032B-4D88-9976-8A8D0FF90D67}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Resize outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4F73D150-032B-4D88-9976-8A8D0FF90D67}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4F73D150-032B-4D88-9976-8A8D0FF90D67}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4F73D150-032B-4D88-9976-8A8D0FF90D67}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4F73D150-032B-4D88-9976-8A8D0FF90D67}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4F73D150-032B-4D88-9976-8A8D0FF90D67}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4F73D150-032B-4D88-9976-8A8D0FF90D67}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4F73D150-032B-4D88-9976-8A8D0FF90D67}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{4F73D150-032B-4D88-9976-8A8D0FF90D67}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-006.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{B47800BA-D2E4-4889-A86A-328312D04E3F}{1}{B0}" name="Collapse subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{38857D78-F888-436E-A80D-A5878B1ACC58}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Collapse subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{38857D78-F888-436E-A80D-A5878B1ACC58}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{38857D78-F888-436E-A80D-A5878B1ACC58}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{38857D78-F888-436E-A80D-A5878B1ACC58}{39}{B0}"><one:Position x="90.0" y="250.5" z="0"/><one:Size width="300.0" height="40.28313827514648" isSetByUser="true"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{38857D78-F888-436E-A80D-A5878B1ACC58}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" collapsed="1" objectID="{38857D78-F888-436E-A80D-A5878B1ACC58}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{38857D78-F888-436E-A80D-A5878B1ACC58}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{38857D78-F888-436E-A80D-A5878B1ACC58}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{38857D78-F888-436E-A80D-A5878B1ACC58}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-007.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{B873BCC6-F159-4A4E-B68A-0789157C629A}{1}{B0}" name="Automatic outline size" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{85C6EBB2-4B0E-4E15-862F-8EB16A614F40}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Automatic outline size]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{85C6EBB2-4B0E-4E15-862F-8EB16A614F40}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="180.0" height="67.13858032226562" isSetByUser="true"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{85C6EBB2-4B0E-4E15-862F-8EB16A614F40}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{85C6EBB2-4B0E-4E15-862F-8EB16A614F40}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{85C6EBB2-4B0E-4E15-862F-8EB16A614F40}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{85C6EBB2-4B0E-4E15-862F-8EB16A614F40}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{85C6EBB2-4B0E-4E15-862F-8EB16A614F40}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{85C6EBB2-4B0E-4E15-862F-8EB16A614F40}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{85C6EBB2-4B0E-4E15-862F-8EB16A614F40}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-008.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C04A6D26-0230-4132-A85B-88867BCB6A99}{1}{B0}" name="Delete subtree" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3868C80C-106C-4681-A810-F0A0C85A0F4D}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="Rust page writer" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{3868C80C-106C-4681-A810-F0A0C85A0F4D}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="80.56629943847656"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{3868C80C-106C-4681-A810-F0A0C85A0F4D}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anc]]></one:T></one:OE><one:OE author="Rust page writer" creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{3CB42CF5-4AB9-0B56-2AF0-9EAB9D0935AE}{0}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[hor]]></one:T></one:OE><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3868C80C-106C-4681-A810-F0A0C85A0F4D}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3868C80C-106C-4681-A810-F0A0C85A0F4D}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3868C80C-106C-4681-A810-F0A0C85A0F4D}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3868C80C-106C-4681-A810-F0A0C85A0F4D}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3868C80C-106C-4681-A810-F0A0C85A0F4D}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3868C80C-106C-4681-A810-F0A0C85A0F4D}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-009.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{C874BD95-B095-4717-87FD-279E64B58A42}{1}{B0}" name="Outdent subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{517D3FA2-3916-49DB-954A-43A6F66CA9EB}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Outdent subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{517D3FA2-3916-49DB-954A-43A6F66CA9EB}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="169.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{517D3FA2-3916-49DB-954A-43A6F66CA9EB}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{517D3FA2-3916-49DB-954A-43A6F66CA9EB}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{517D3FA2-3916-49DB-954A-43A6F66CA9EB}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{517D3FA2-3916-49DB-954A-43A6F66CA9EB}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{517D3FA2-3916-49DB-954A-43A6F66CA9EB}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{517D3FA2-3916-49DB-954A-43A6F66CA9EB}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{517D3FA2-3916-49DB-954A-43A6F66CA9EB}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-010.xml created+8
......@@ -0,0 +1,8 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{CB18B0EA-57D9-4451-A0FE-8E0F4C70C52E}{1}{B0}" name="Delete outline" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3389D822-2B41-4AB3-8DEA-8EEDD3CD3E95}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete outline]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{3389D822-2B41-4AB3-8DEA-8EEDD3CD3E95}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="67.13858032226562"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:23:04.000Z" objectID="{3389D822-2B41-4AB3-8DEA-8EEDD3CD3E95}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
3style='font-family:Calibri'>A</span><span style='text-decoration:underline;
4font-family:Consolas;background:yellow;mso-highlight:yellow'>ncho</span><span
5style='font-family:Calibri'>r</span>]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3389D822-2B41-4AB3-8DEA-8EEDD3CD3E95}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
6style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
7href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3389D822-2B41-4AB3-8DEA-8EEDD3CD3E95}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
8style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3389D822-2B41-4AB3-8DEA-8EEDD3CD3E95}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{3389D822-2B41-4AB3-8DEA-8EEDD3CD3E95}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-011.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{CEFB814D-0652-4C40-BB62-1E17D903DB27}{1}{B0}" name="Expand subtree" dateTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FAED6297-924C-4C84-A7A5-B3D93434158B}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Expand subtree]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{FAED6297-924C-4C84-A7A5-B3D93434158B}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FAED6297-924C-4C84-A7A5-B3D93434158B}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Anchor]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" collapsed="1" objectID="{FAED6297-924C-4C84-A7A5-B3D93434158B}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FAED6297-924C-4C84-A7A5-B3D93434158B}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
5style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FAED6297-924C-4C84-A7A5-B3D93434158B}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:OE><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FAED6297-924C-4C84-A7A5-B3D93434158B}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{FAED6297-924C-4C84-A7A5-B3D93434158B}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{FAED6297-924C-4C84-A7A5-B3D93434158B}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-012.xml created+6
......@@ -0,0 +1,6 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{D0706263-C8CC-4ADB-B66D-C2347C17E18E}{1}{B0}" name="Move subtree down" dateTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{AC6AB1EB-6FB7-4CAD-B6EC-9AF5B44A4221}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move subtree down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{AC6AB1EB-6FB7-4CAD-B6EC-9AF5B44A4221}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="142.6107788085937" height="84.22843170166016"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{AC6AB1EB-6FB7-4CAD-B6EC-9AF5B44A4221}{40}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:14.0pt;color:blue"><one:T><![CDATA[<span
3style='font-style:italic'>Anchor</span>]]></one:T></one:OE><one:OE lastModifiedBy="Rust page writer" creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{AC6AB1EB-6FB7-4CAD-B6EC-9AF5B44A4221}{65}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Trailing sibling]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{AC6AB1EB-6FB7-4CAD-B6EC-9AF5B44A4221}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
4style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
5href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{AC6AB1EB-6FB7-4CAD-B6EC-9AF5B44A4221}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T style="font-family:Calibri;font-size:11.0pt"><![CDATA[<span
6style='font-style:italic'>Child</span>]]></one:T><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{AC6AB1EB-6FB7-4CAD-B6EC-9AF5B44A4221}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Grandchild]]></one:T></one:OE></one:OEChildren></one:OE><one:OE author="Rust page writer" lastModifiedBy="Rust page writer" creationTime="2026-09-11T06:23:03.000Z" lastModifiedTime="2026-09-11T06:23:03.000Z" objectID="{9C3D21C6-25FC-08F3-2757-188F3A23C6A2}{0}{B0}" alignment="left" style="font-family:Calibri;font-size:11.0pt"><one:T><![CDATA[Nested by Rust]]></one:T></one:OE></one:OEChildren></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{AC6AB1EB-6FB7-4CAD-B6EC-9AF5B44A4221}{70}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:50.000Z" lastModifiedTime="2026-09-08T18:00:50.000Z" objectID="{AC6AB1EB-6FB7-4CAD-B6EC-9AF5B44A4221}{71}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-013.xml created+4
......@@ -0,0 +1,4 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{EF3B8E0B-A607-4283-A1FE-03AAF154618B}{1}{B0}" name="Delete only paragraph" dateTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{8398689D-BEF4-4F82-B986-E0D60E096455}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Delete only paragraph]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{8398689D-BEF4-4F82-B986-E0D60E096455}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="129.6621246337891" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{8398689D-BEF4-4F82-B986-E0D60E096455}{40}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{8398689D-BEF4-4F82-B986-E0D60E096455}{49}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:51.000Z" lastModifiedTime="2026-09-08T18:00:51.000Z" objectID="{8398689D-BEF4-4F82-B986-E0D60E096455}{50}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/page-014.xml created+5
......@@ -0,0 +1,5 @@
1<?xml version="1.0"?>
2<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/2010/onenote" ID="{FCD6C691-6FFB-40F8-8F4F-9B48DA101961}{1}{B0}" name="Move leaf down" dateTime="2026-09-08T18:00:47.000Z" lastModifiedTime="2026-09-11T06:42:56.000Z" pageLevel="1" lang="en-US"><one:TagDef index="0" type="0" symbol="3" fontColor="automatic" highlightColor="none" name="Preserved task"/><one:QuickStyleDef index="0" name="p" fontColor="automatic" highlightColor="automatic" font="Calibri" fontSize="11.0" spaceBefore="0.0" spaceAfter="0.0"/><one:PageSettings RTL="false" color="automatic"><one:PageSize><one:Automatic/></one:PageSize><one:RuleLines visible="false"/></one:PageSettings><one:Title lang="en-US"><one:OE author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" creationTime="2026-09-11T06:41:49.000Z" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{48CC759F-A0AE-4AB8-8081-CEDA89E24237}{33}{B0}" alignment="left" quickStyleIndex="0" style="font-family:Calibri;font-size:17.0pt"><one:T><![CDATA[Move leaf down]]></one:T></one:OE></one:Title><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{48CC759F-A0AE-4AB8-8081-CEDA89E24237}{39}{B0}"><one:Position x="72.0" y="108.0" z="0"/><one:Size width="131.1232299804687" height="40.28315734863281"/><one:OEChildren><one:OE creationTime="2026-09-08T18:00:48.000Z" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{48CC759F-A0AE-4AB8-8081-CEDA89E24237}{45}{B0}" alignment="left" quickStyleIndex="0"><one:Tag index="0" completed="true" disabled="false" creationDate="2020-01-02T03:04:05.000Z" completionDate="2020-01-02T04:05:06.000Z"/><one:T><![CDATA[<span
3style='font-weight:bold' lang=en-US>Target &#129408; é</span><span lang=en-US> </span><a
4href="https://example.invalid/outline"><span lang=x-none>Link label</span></a>]]></one:T></one:OE><one:OE creationTime="2026-09-11T06:41:49.000Z" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{48CC759F-A0AE-4AB8-8081-CEDA89E24237}{54}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[<span
5style='font-weight:bold'>Trai</span>ling sibling]]></one:T></one:OE><one:OE creationTime="2026-09-08T18:00:49.000Z" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{48CC759F-A0AE-4AB8-8081-CEDA89E24237}{40}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Native after Rust &#129419; é]]></one:T></one:OE></one:OEChildren></one:Outline><one:Outline author="virtual" authorInitials="V" lastModifiedBy="virtual" lastModifiedByInitials="V" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{48CC759F-A0AE-4AB8-8081-CEDA89E24237}{59}{B0}"><one:Position x="480.0" y="108.0" z="1"/><one:Size width="99.85792541503906" height="13.42771339416504"/><one:OEChildren><one:OE creationTime="2026-09-11T06:41:49.000Z" lastModifiedTime="2026-09-11T06:41:49.000Z" objectID="{48CC759F-A0AE-4AB8-8081-CEDA89E24237}{60}{B0}" alignment="left" quickStyleIndex="0"><one:T><![CDATA[Other outline]]></one:T></one:OE></one:OEChildren></one:Outline></one:Page>
corpus/page-model/followup/read/payloads.json created+3
......@@ -0,0 +1,3 @@
1[
2
3]
\ No newline at end of file
corpus/page-model/followup/run.json created+19
......@@ -0,0 +1,19 @@
1{
2 "notebook": "/private/tmp/page-model/cold/notebook",
3 "expected_pages": 15,
4 "author": "tools/native/page-model-followup.ps1",
5 "author_timeout_seconds": 600,
6 "inspect": false,
7 "collect_notebook": true,
8 "base": {
9 "file": "win7-office-base.qcow2",
10 "format": "qcow2",
11 "sha256": "a1a4f8fab782ee14885ff801ca2f6347c208fdcfc3513637096f314315c89346",
12 "virtual_size": 68719476736
13 },
14 "scripts": {
15 "author.ps1": "60d2c5b969cafc4e6f066aec2be18323779ea8dceb9bd72473094332895d1219",
16 "cold.ps1": "c177fc72ae6c2634d186f5671a880de20b09f9716532c37c69cb13aa15c7e331",
17 "read.ps1": "04013bfcccee40a17e2a225f9b9e96f40a3a8daad9e350609654f8eda3ccbb41"
18 }
19}
corpus/page-model/followup/scripts/author.ps1 created+43
......@@ -0,0 +1,43 @@
1param([Parameter(Mandatory=$true)][string]$Root, [Parameter(Mandatory=$true)][string]$CloneHost)
2Set-StrictMode -Version Latest
3$ErrorActionPreference = 'Stop'
4& "$PSScriptRoot\cold-current.ps1" -Root $Root -CloneHost $CloneHost
5$app = New-Object -ComObject OneNote.Application
6$notebook = ''
7try {
8 $app.OpenHierarchy((Join-Path $Root 'notebook'), '', [ref]$notebook, 0)
9 $section = ''
10 $app.OpenHierarchy('synthetic.one', $notebook, [ref]$section, 0)
11 $deadline = [DateTime]::UtcNow.AddSeconds(60)
12 $matches = @()
13 $content = ''
14 do {
15 $hierarchy = ''
16 $app.GetHierarchy($section, 4, [ref]$hierarchy, 1)
17 [xml]$tree = $hierarchy
18 $pages = @($tree.SelectNodes('//*[local-name()="Page"]') | Where-Object { $_.GetAttribute('name') -eq 'Move leaf down' })
19 if ($pages.Count -eq 1) {
20 $app.GetPageContent($pages[0].GetAttribute('ID'), [ref]$content, 3, 1)
21 [xml]$page = $content
22 $matches = @($page.SelectNodes('//*[local-name()="T"]') | Where-Object { $_.InnerText -like '*>Rust *' -or $_.InnerText -like 'Rust *' })
23 if ($matches.Count -eq 1) { break }
24 }
25 Start-Sleep -Milliseconds 250
26 } while ([DateTime]::UtcNow -lt $deadline)
27 if ($matches.Count -ne 1) { throw 'Expected exactly one Rust-written paragraph on the Move leaf down page.' }
28 [IO.File]::WriteAllText("$Root\before.xml", $content, [Text.Encoding]::UTF8)
29 $text = 'Native after Rust ' + [char]::ConvertFromUtf32(0x1F98B) + ' e' + [char]0x0301
30 $matches[0].InnerText = [Security.SecurityElement]::Escape($text)
31 $app.UpdatePageContent($page.OuterXml, [DateTime]::MinValue, 1, $false)
32 $app.SyncHierarchy($notebook)
33 [IO.File]::WriteAllText("$Root\native-text.txt", $text, [Text.Encoding]::UTF8)
34} finally {
35 try { if ($notebook) { $app.CloseNotebook($notebook, $false) } }
36 finally {
37 [void][Runtime.InteropServices.Marshal]::FinalReleaseComObject($app)
38 $app = $null
39 [GC]::Collect()
40 [GC]::WaitForPendingFinalizers()
41 Get-Process ONENOTE -ErrorAction SilentlyContinue | Wait-Process -Timeout 120 -ErrorAction SilentlyContinue
42 }
43}
corpus/page-model/followup/scripts/cold.ps1 created+27
......@@ -0,0 +1,27 @@
1param([Parameter(Mandatory=$true)][string]$Root, [string]$CloneHost = '')
2Set-StrictMode -Version Latest
3$ErrorActionPreference = 'Stop'
4$root = [IO.Path]::GetFullPath($Root).TrimEnd('\')
5if ([IO.Path]::GetDirectoryName($root) -ne 'C:\one-tests\runs') {
6 throw 'Choose a run directly below C:\one-tests\runs.'
7}
8if (Get-Process ONENOTE -ErrorAction SilentlyContinue) { throw 'Close OneNote before resetting its test cache.' }
9$key = 'HKCU:\Software\Microsoft\Office\14.0\OneNote'
10if ($CloneHost) {
11 if ($CloneHost -notmatch '^ONE-[A-Z0-9-]+$' -or [Environment]::MachineName -ne $CloneHost) {
12 throw 'The disposable clone hostname does not match this machine.'
13 }
14 New-Item "$key\Options\Paths" -Force | Out-Null
15 New-ItemProperty "$key\Options\Paths" -Name UnfiledNotesSection -PropertyType ExpandString -Value 'C:\one-tests\Loose.one' -Force | Out-Null
16} elseif ((Get-ItemProperty "$key\Options\Paths").UnfiledNotesSection -ne 'C:\one-tests\Loose.one' -or
17 -not (Test-Path 'C:\one-tests\profile-original-cache')) {
18 throw 'Park the personal OneNote profile before resetting the test cache.'
19}
20$cache = Join-Path $env:LOCALAPPDATA 'Microsoft\OneNote\14.0'
21$parked = Join-Path 'C:\one-tests\caches' ([IO.Path]::GetFileName($root))
22if (Test-Path $parked) { throw 'Choose a new run; its parked cache already exists.' }
23New-Item -ItemType Directory -Path 'C:\one-tests\caches' -Force | Out-Null
24if (Test-Path $cache) { Move-Item -LiteralPath $cache -Destination $parked }
25if (Test-Path "$key\OpenNotebooks") { Remove-Item "$key\OpenNotebooks" -Recurse }
26New-Item "$key\OpenNotebooks" | Out-Null
27New-ItemProperty "$key\OpenNotebooks" -Name '1' -PropertyType String -Value "$root\notebook" | Out-Null
corpus/page-model/followup/scripts/read.ps1 created+142
......@@ -0,0 +1,142 @@
1param(
2 [Parameter(Mandatory=$true)][string]$Root,
3 [int]$ExpectedPages = -1,
4 [switch]$UseCurrentCache,
5 [switch]$Pdf,
6 [switch]$KeepOpen,
7 [string]$CloneHost = ''
8)
9Set-StrictMode -Version Latest
10$ErrorActionPreference = 'Stop'
11$root = [IO.Path]::GetFullPath($Root).TrimEnd('\')
12if ([IO.Path]::GetDirectoryName($root) -ne 'C:\one-tests\runs') {
13 throw 'Choose a run directly below C:\one-tests\runs.'
14}
15$notebook = Join-Path $root 'notebook'
16$output = Join-Path $root 'read'
17if (Test-Path $output) { throw 'Choose a new read destination.' }
18if ($UseCurrentCache) {
19 if ((Get-ItemProperty 'HKCU:\Software\Microsoft\Office\14.0\OneNote\Options\Paths').UnfiledNotesSection -ne 'C:\one-tests\Loose.one') {
20 throw 'Park the personal OneNote profile before reading test notebooks.'
21 }
22} else {
23 & "$PSScriptRoot\cold-current.ps1" -Root $root -CloneHost $CloneHost
24}
25New-Item -ItemType Directory -Path $output | Out-Null
26$app = New-Object -ComObject OneNote.Application
27$notebookId = ''
28$failure = $null
29try {
30 $app.OpenHierarchy($notebook, '', [ref]$notebookId, 0)
31 $process = Get-Process ONENOTE
32 @{ hostname = [Environment]::MachineName; onenote = $process.MainModule.FileVersionInfo.FileVersion;
33 powershell = $PSVersionTable.PSVersion.ToString(); schema = 'xs2010'; cold = (-not $UseCurrentCache.IsPresent) } |
34 ConvertTo-Json | Set-Content (Join-Path $output 'environment.json') -Encoding UTF8
35 $sections = @()
36 foreach ($file in @(Get-ChildItem $notebook -Recurse | Where-Object { $_.Extension -eq '.one' })) {
37 $id = ''
38 $app.OpenHierarchy($file.FullName, '', [ref]$id, 0)
39 $sections += $id
40 }
41 $deadline = [DateTime]::UtcNow.AddSeconds(300)
42 $previous = ''
43 $lastChange = ''
44 $stableSince = [DateTime]::UtcNow
45 $settled = $false
46 do {
47 $pages = @{}
48 foreach ($section in $sections) {
49 $hierarchy = ''
50 $app.GetHierarchy($section, 4, [ref]$hierarchy, 1)
51 [xml]$xml = $hierarchy
52 foreach ($node in $xml.SelectNodes('//*[@path]')) {
53 if (-not $node.GetAttribute('path').StartsWith("$notebook\", [StringComparison]::OrdinalIgnoreCase)) {
54 throw 'OneNote opened a section outside the copied notebook.'
55 }
56 }
57 foreach ($node in $xml.SelectNodes('//*[local-name()="Page"]')) {
58 $id = $node.GetAttribute('ID')
59 $content = ''
60 $app.GetPageContent($id, [ref]$content, 1, 1)
61 $pages[$id] = $content
62 }
63 }
64 $signature = [String]::Join('|', @($pages.Keys | Sort-Object | ForEach-Object { $_ + $pages[$_] }))
65 if ($signature -ne $previous) {
66 $lastChange = $previous
67 $previous = $signature
68 $stableSince = [DateTime]::UtcNow
69 }
70 if ((($ExpectedPages -ge 0 -and $pages.Count -eq $ExpectedPages) -or
71 ($ExpectedPages -lt 0 -and $pages.Count -gt 0)) -and
72 ([DateTime]::UtcNow - $stableSince).TotalSeconds -ge 2) { $settled = $true; break }
73 Start-Sleep -Milliseconds 250
74 } while ([DateTime]::UtcNow -lt $deadline)
75 if (-not $settled -or ($ExpectedPages -ge 0 -and $pages.Count -ne $ExpectedPages) -or ($ExpectedPages -lt 0 -and $pages.Count -eq 0)) {
76 [IO.File]::WriteAllText((Join-Path $output 'previous-signature.txt'), $lastChange, [Text.Encoding]::UTF8)
77 $index = 0
78 foreach ($id in @($pages.Keys | Sort-Object)) {
79 [IO.File]::WriteAllText((Join-Path $output ('unsettled-{0:d3}.xml' -f $index)), $pages[$id], [Text.Encoding]::UTF8)
80 $index++
81 }
82 $hierarchy = ''
83 $app.GetHierarchy($notebookId, 4, [ref]$hierarchy, 1)
84 [IO.File]::WriteAllText((Join-Path $output 'unsettled-hierarchy.xml'), $hierarchy, [Text.Encoding]::UTF8)
85 throw "Expected $ExpectedPages stable pages; OneNote returned $($pages.Count), settled=$settled."
86 }
87 $index = 0
88 $payloads = @()
89 foreach ($id in @($pages.Keys | Sort-Object)) {
90 [IO.File]::WriteAllText((Join-Path $output ('page-{0:d3}.xml' -f $index)), $pages[$id], [Text.Encoding]::UTF8)
91 if ($Pdf) {
92 $pdfPath = Join-Path $output ('page-{0:d3}.pdf' -f $index)
93 $app.NavigateTo($id, '', $false)
94 $app.Publish($id, $pdfPath, 3, '')
95 if (-not (Test-Path $pdfPath) -or (Get-Item $pdfPath).Length -eq 0) { throw 'OneNote did not publish the page PDF.' }
96 }
97 [xml]$page = $pages[$id]
98 foreach ($file in $page.SelectNodes('//*[local-name()="InsertedFile" or local-name()="MediaFile"]')) {
99 $bytes = [IO.File]::ReadAllBytes($file.GetAttribute('pathCache'))
100 $hash = [BitConverter]::ToString([Security.Cryptography.SHA256]::Create().ComputeHash($bytes)).Replace('-', '').ToLowerInvariant()
101 [IO.File]::WriteAllBytes((Join-Path $output ($hash + '.attachment')), $bytes)
102 $payloads += @{ page = $id; object = $file.ParentNode.GetAttribute('objectID');
103 kind = $file.LocalName; name = $file.GetAttribute('preferredName');
104 sha256 = $hash; bytes = $bytes.Length }
105 }
106 $index++
107 }
108 [IO.File]::WriteAllText((Join-Path $output 'payloads.json'), (ConvertTo-Json -InputObject $payloads -Depth 4), [Text.Encoding]::UTF8)
109 $all = ''
110 $app.GetHierarchy($notebookId, 4, [ref]$all, 1)
111 [xml]$finalTree = $all
112 $finalIds = @($finalTree.SelectNodes('//*[local-name()="Page"]') | ForEach-Object { $_.GetAttribute('ID') } | Sort-Object -Unique)
113 if ($finalIds.Count -ne $pages.Count -or @($finalIds | Where-Object { -not $pages.ContainsKey($_) }).Count -ne 0) {
114 throw 'The notebook hierarchy changed while collecting page evidence; repeat the cold read.'
115 }
116 [IO.File]::WriteAllText((Join-Path $output 'hierarchy.xml'), $all, [Text.Encoding]::UTF8)
117 Write-Output "Read $($sections.Count) sections and $($pages.Count) pages."
118} catch {
119 $failure = $_
120 [IO.File]::WriteAllText((Join-Path $output 'failure.txt'), ($_ | Out-String), [Text.Encoding]::UTF8)
121 throw
122} finally {
123 try {
124 try {
125 if ($notebookId -and $CloneHost) { $app.SyncHierarchy($notebookId) }
126 if ($notebookId -and -not $KeepOpen -and (-not $UseCurrentCache -or $CloneHost)) {
127 $app.CloseNotebook($notebookId, $false)
128 }
129 } catch {
130 if ($null -eq $failure) { throw }
131 [IO.File]::WriteAllText((Join-Path $output 'cleanup-failure.txt'), ($_ | Out-String), [Text.Encoding]::UTF8)
132 }
133 } finally {
134 [void][Runtime.InteropServices.Marshal]::FinalReleaseComObject($app)
135 }
136 $app = $null
137 [GC]::Collect()
138 [GC]::WaitForPendingFinalizers()
139 if (-not $UseCurrentCache -and -not $CloneHost) {
140 Get-Process ONENOTE -ErrorAction SilentlyContinue | Wait-Process -Timeout 10
141 }
142}
corpus/page-model/followup/source.json created+14
......@@ -0,0 +1,14 @@
1[
2 {
3 "path": "Open Notebook.onetoc2",
4 "bytes": 4800,
5 "sha256": "341894b32b0433a1e8b647431f71e372d344c74e0f87699e45c9235964082551",
6 "mtime_ns": 1789108125813547146
7 },
8 {
9 "path": "synthetic.one",
10 "bytes": 123872,
11 "sha256": "cb246a4fb88a30dd1dad710ebde9b209a150175fd5dfd3d4e3e36d5d4a505cff",
12 "mtime_ns": 1789108125813805311
13 }
14]
corpus/page-model/followup/teardown.json created+1
......@@ -0,0 +1 @@
1{"absent": true}
corpus/page-model/provenance.json created+37
......@@ -0,0 +1,37 @@
1{
2 "source": {
3 "path": "corpus/outline-edit/before/notebook/synthetic.one",
4 "sha256": "924389ae0f4e9fc583fb6de17c0859257994847cbf674bc75b821b3513ca18e2"
5 },
6 "candidate": {
7 "sha256": "a5ca37027575ea012fce7fd4131ffb7c184b65bc32836a3f33556ee5162cdbc3",
8 "generator": "cargo test -p onestore --test page_writer export_native_page_model_candidates -- --ignored",
9 "cases": 8
10 },
11 "captures": {
12 "cold": {
13 "clone": "m6-a298124b",
14 "teardown_absent": true,
15 "notebook_sha256": "cb246a4fb88a30dd1dad710ebde9b209a150175fd5dfd3d4e3e36d5d4a505cff",
16 "pages": 15
17 },
18 "followup": {
19 "clone": "m6-a302d412",
20 "teardown_absent": true,
21 "notebook_sha256": "d3f67a59581e9314cc476ea6f9cdef12bfcbce131335da591c68ae35886cace2",
22 "pages": 15
23 },
24 "followup-cold": {
25 "clone": "m6-3caf6d8e",
26 "teardown_absent": true,
27 "notebook_sha256": "d3f67a59581e9314cc476ea6f9cdef12bfcbce131335da591c68ae35886cace2",
28 "pages": 15
29 }
30 },
31 "author_script": "tools/native/page-model-followup.ps1",
32 "rejected_attempts": [
33 "m6-7b68c992: author script matched no paragraph because native CDATA wraps text in <span>; matcher widened",
34 "m6-4c165dd4: native edit saved, script failed waiting 10 s for OneNote to exit; wait made tolerant"
35 ],
36 "verifier": "PYTHONPATH=tools python3 -m unittest test_page_model"
37}
crates/onestore/tests/page_writer.rs+358
......@@ -627,3 +627,361 @@ fn an_unchanged_model_publishes_nothing() {
627627 let prepared = PreparedEdit::page(OUTLINES, space, &page, AUTHOR).unwrap();
628628 assert_eq!(prepared.as_bytes(), OUTLINES);
629629}
630
631const JOIN_PAGE: &str = "Bold 🦀 italic e\u{301} color 東京";
632
633fn native_candidate_edits() -> Vec<(&'static str, &'static str)> {
634 vec![
635 (
636 "Move leaf down",
637 "Anchor moved last and replaced with Unicode text, bold range on Trailing sibling",
638 ),
639 (
640 "Move subtree down",
641 "Target subtree moved last with a new nested child, italic blue 14 pt range on Anchor",
642 ),
643 (
644 "Delete leaf",
645 "Anchor deleted, paragraph appended, new outline with two paragraphs at (300, 400)",
646 ),
647 ("Delete subtree", "Anchor split in the middle"),
648 (
649 "Collapse subtree",
650 "Target collapsed, outline moved to (90, 250.5) with a fixed 300 pt width",
651 ),
652 (
653 "Move outline",
654 "first body outline moved after the second, first paragraph of each extended",
655 ),
656 (
657 "Delete outline",
658 "second body outline deleted, underline, highlight and Consolas on a range of Anchor",
659 ),
660 (
661 JOIN_PAGE,
662 "the two paragraphs joined, strike and subscript on the first three units",
663 ),
664 ]
665}
666
667fn fresh(template: &onestore::page::PageParagraph, text: &str) -> onestore::page::PageParagraph {
668 let mut paragraph = template.clone();
669 paragraph.id = new_id().unwrap();
670 paragraph.parent = None;
671 paragraph.level = 1;
672 paragraph.lists.clear();
673 paragraph.tags.clear();
674 paragraph.style = None;
675 paragraph.collapsed = false;
676 let format = template.text().unwrap().text.format_at(0).unwrap().clone();
677 paragraph.content = ParagraphContent::Text(onestore::page::TextObject {
678 id: new_id().unwrap(),
679 date_field: None,
680 text: onestore::page::Paragraph::new(text.into(), format),
681 tags: Vec::new(),
682 });
683 paragraph
684}
685
686fn restyle(
687 text: &mut onestore::page::TextObject,
688 range: std::ops::Range<u32>,
689 change: impl Fn(&mut onestore::document::Format),
690) {
691 let slice = text.text.slice(range.clone()).unwrap();
692 let mut runs = Vec::new();
693 let mut from = 0;
694 for span in slice.spans() {
695 let mut format = span.format.clone();
696 change(&mut format);
697 runs.push((slice.text()[from..span.end].to_owned(), format));
698 from = span.end;
699 }
700 text.text
701 .apply(onestore::page::text::Edit {
702 range,
703 replacement: onestore::page::Paragraph::from_runs(runs),
704 })
705 .unwrap();
706}
707
708fn set_text(text: &mut onestore::page::TextObject, replacement: &str) {
709 let end = text.text.utf16_offset(text.text.text().len()).unwrap();
710 let format = text.text.format_at(0).unwrap().clone();
711 text.text
712 .apply(onestore::page::text::Edit {
713 range: 0..end,
714 replacement: onestore::page::Paragraph::new(replacement.into(), format),
715 })
716 .unwrap();
717}
718
719/// Removes a top-level subtree and returns it in order.
720fn take_subtree(
721 outline: &mut onestore::page::Outline,
722 index: usize,
723) -> Vec<onestore::page::PageParagraph> {
724 let mut ids = BTreeSet::from([outline.paragraphs[index].id]);
725 loop {
726 let before = ids.len();
727 let more: Vec<ExGuid> = outline
728 .paragraphs
729 .iter()
730 .filter(|p| p.parent.is_some_and(|q| ids.contains(&q)))
731 .map(|p| p.id)
732 .collect();
733 ids.extend(more);
734 if ids.len() == before {
735 break;
736 }
737 }
738 let (subtree, rest): (Vec<_>, Vec<_>) = outline
739 .paragraphs
740 .drain(..)
741 .partition(|p| ids.contains(&p.id));
742 outline.paragraphs = rest;
743 subtree
744}
745
746fn expectation(page: &Page) -> serde_json::Value {
747 let outlines: Vec<serde_json::Value> = body(page)
748 .iter()
749 .map(|outline| {
750 let index: std::collections::BTreeMap<ExGuid, usize> =
751 outline.paragraphs.iter().enumerate().map(|(i, p)| (p.id, i)).collect();
752 serde_json::json!({
753 "x": outline.layout.x,
754 "y": outline.layout.y,
755 "max_width": outline.layout.max_width,
756 "width_set_by_user": outline.layout.width_set_by_user,
757 "paragraphs": outline.paragraphs.iter().map(|p| serde_json::json!({
758 "text": p.text().map(|t| t.text.text()),
759 "parent": p.parent.map(|q| index[&q]),
760 "collapsed": p.collapsed,
761 "spans": p.text().map(|t| t.text.spans().iter().map(|s| serde_json::json!({
762 "end": t.text.utf16_offset(s.end).unwrap(),
763 "bold": s.format.bold, "italic": s.format.italic, "underline": s.format.underline,
764 "strike": s.format.strike, "subscript": s.format.subscript,
765 "font": s.format.font, "font_size": s.format.font_size,
766 "color": s.format.color, "highlight": s.format.highlight,
767 })).collect::<Vec<_>>()),
768 })).collect::<Vec<_>>(),
769 })
770 })
771 .collect();
772 serde_json::json!({ "title": page.title, "outlines": outlines })
773}
774
775#[test]
776#[ignore = "exports a page-model candidate notebook for cold native validation"]
777fn export_native_page_model_candidates() {
778 let output = std::path::PathBuf::from(std::env::var_os("ONESTORE_PAGE_MODEL_OUTPUT").unwrap());
779 assert!(output.is_absolute());
780 std::fs::create_dir_all(output.join("candidate/notebook")).unwrap();
781 let mut bytes = OUTLINES.to_vec();
782 let mut cases = Vec::new();
783 for (title, description) in native_candidate_edits() {
784 let (space, _) = page_by_title(&bytes, title);
785 let mut after = page_in(&bytes, space);
786 let outlines: Vec<usize> = after
787 .objects
788 .iter()
789 .enumerate()
790 .filter(|(_, o)| matches!(o, PageObject::Outline(_)))
791 .map(|(i, _)| i)
792 .collect();
793 fn body_outline(page: &mut Page, i: usize) -> &mut onestore::page::Outline {
794 match &mut page.objects[i] {
795 PageObject::Outline(outline) => outline,
796 _ => unreachable!(),
797 }
798 }
799 match title {
800 "Move leaf down" => {
801 let outline = body_outline(&mut after, outlines[0]);
802 let subtree = take_subtree(outline, 0);
803 outline.paragraphs.extend(subtree);
804 let last = outline.paragraphs.len() - 1;
805 set_text(
806 outline.paragraphs[last].text_mut().unwrap(),
807 "Rust 🦀 é 東京 שלום",
808 );
809 let trailing = outline
810 .paragraphs
811 .iter()
812 .position(|p| {
813 p.text()
814 .is_some_and(|t| t.text.text() == "Trailing sibling")
815 })
816 .unwrap();
817 restyle(
818 outline.paragraphs[trailing].text_mut().unwrap(),
819 0..4,
820 |f| f.bold = Some(true),
821 );
822 }
823 "Move subtree down" => {
824 let outline = body_outline(&mut after, outlines[0]);
825 let parent_index = outline
826 .paragraphs
827 .iter()
828 .position(|p| outline.paragraphs.iter().any(|q| q.parent == Some(p.id)))
829 .unwrap();
830 let parent_id = outline.paragraphs[parent_index].id;
831 let subtree = take_subtree(outline, parent_index);
832 outline.paragraphs.extend(subtree);
833 let mut child = fresh(&outline.paragraphs[0], "Nested by Rust");
834 child.parent = Some(parent_id);
835 child.level = 2;
836 outline.paragraphs.push(child);
837 restyle(outline.paragraphs[0].text_mut().unwrap(), 0..6, |f| {
838 f.italic = Some(true);
839 f.color = Some(0xff0000);
840 f.font_size = Some(14.0);
841 });
842 }
843 "Delete leaf" => {
844 let template = body(&after)[0].paragraphs[0].clone();
845 let outline = body_outline(&mut after, outlines[0]);
846 take_subtree(outline, 0);
847 outline
848 .paragraphs
849 .push(fresh(&template, "Appended by Rust"));
850 let new_outline = onestore::page::Outline {
851 id: new_id().unwrap(),
852 title: false,
853 min_width: None,
854 layout: onestore::document::Layout {
855 x: Some(300.0),
856 y: Some(400.0),
857 ..Default::default()
858 },
859 indents: Vec::new(),
860 paragraphs: vec![
861 fresh(&template, "Rust outline one"),
862 fresh(&template, "Rust outline two"),
863 ],
864 unsupported: Vec::new(),
865 };
866 let at = after
867 .objects
868 .iter()
869 .position(|o| matches!(o, PageObject::Title(_)))
870 .unwrap_or(after.objects.len());
871 after.objects.insert(at, PageObject::Outline(new_outline));
872 }
873 "Delete subtree" => {
874 let outline = body_outline(&mut after, outlines[0]);
875 let first = outline.paragraphs[0].clone();
876 let text = first.text().unwrap();
877 let end = text.text.utf16_offset(text.text.text().len()).unwrap();
878 let offset = (end / 2..end)
879 .find(|at| text.text.byte_offset(*at).is_ok())
880 .unwrap();
881 let tail = text.text.slice(offset..end).unwrap();
882 let mut right = fresh(&first, "");
883 right.style = first.style;
884 right.text_mut().unwrap().text = tail;
885 let left = outline.paragraphs[0].text_mut().unwrap();
886 left.text = left.text.slice(0..offset).unwrap();
887 outline.paragraphs.insert(1, right);
888 }
889 "Collapse subtree" => {
890 let outline = body_outline(&mut after, outlines[0]);
891 let parent = outline
892 .paragraphs
893 .iter()
894 .position(|p| outline.paragraphs.iter().any(|q| q.parent == Some(p.id)))
895 .unwrap();
896 outline.paragraphs[parent].collapsed = true;
897 outline.layout.x = Some(90.0);
898 outline.layout.y = Some(250.5);
899 outline.layout.max_width = Some(300.0);
900 outline.layout.width_set_by_user = Some(true);
901 }
902 "Move outline" => {
903 assert!(outlines.len() >= 2);
904 let first = after.objects.remove(outlines[0]);
905 after.objects.insert(outlines[1], first);
906 for i in [outlines[0], outlines[1]] {
907 let outline = body_outline(&mut after, i);
908 let text = outline.paragraphs[0].text_mut().unwrap();
909 let end = text.text.utf16_offset(text.text.text().len()).unwrap();
910 let format = text.text.format_at(end).unwrap().clone();
911 text.text
912 .apply(onestore::page::text::Edit {
913 range: end..end,
914 replacement: onestore::page::Paragraph::new(" (Rust)".into(), format),
915 })
916 .unwrap();
917 }
918 }
919 "Delete outline" => {
920 assert!(outlines.len() >= 2);
921 after.objects.remove(outlines[1]);
922 let outline = body_outline(&mut after, outlines[0]);
923 restyle(outline.paragraphs[0].text_mut().unwrap(), 1..5, |f| {
924 f.underline = Some(true);
925 f.highlight = Some(0x00ffff);
926 f.font = Some("Consolas".into());
927 });
928 }
929 _ => {
930 let outline = body_outline(&mut after, outlines[0]);
931 assert_eq!(outline.paragraphs.len(), 2);
932 let right = outline.paragraphs.remove(1);
933 outline.paragraphs[0]
934 .text_mut()
935 .unwrap()
936 .text
937 .append(right.text().unwrap().text.clone())
938 .unwrap();
939 restyle(outline.paragraphs[0].text_mut().unwrap(), 0..3, |f| {
940 f.strike = Some(true);
941 f.subscript = Some(true);
942 });
943 }
944 }
945 let edit = PreparedEdit::page(&bytes, space, &after, "Rust page writer").unwrap();
946 bytes = edit.as_bytes().to_vec();
947 let stored = page_in(&bytes, space);
948 let index = {
949 let store = Store::parse(&bytes).unwrap();
950 let index = RevisionIndex::parse(&store).unwrap();
951 let document = Document::parse(&index).unwrap();
952 document
953 .pages()
954 .unwrap()
955 .iter()
956 .position(|(sid, _)| *sid == space)
957 .unwrap()
958 };
959 cases.push(serde_json::json!({
960 "title": title,
961 "index": index,
962 "description": description,
963 "space": space.to_string(),
964 "expected": expectation(&stored),
965 }));
966 }
967 std::fs::write(output.join("candidate/notebook/synthetic.one"), &bytes).unwrap();
968 std::fs::copy(
969 concat!(
970 env!("CARGO_MANIFEST_DIR"),
971 "/../../corpus/outline-edit/before/notebook/Open Notebook.onetoc2"
972 ),
973 output.join("candidate/notebook/Open Notebook.onetoc2"),
974 )
975 .unwrap();
976 std::fs::write(
977 output.join("candidate/manifest.json"),
978 serde_json::to_string_pretty(&serde_json::json!({
979 "source": "corpus/outline-edit/before/notebook/synthetic.one",
980 "author": "Rust page writer",
981 "transactions_added": cases.len(),
982 "cases": cases,
983 }))
984 .unwrap(),
985 )
986 .unwrap();
987}
tools/native/page-model-followup.ps1 created+43
......@@ -0,0 +1,43 @@
1param([Parameter(Mandatory=$true)][string]$Root, [Parameter(Mandatory=$true)][string]$CloneHost)
2Set-StrictMode -Version Latest
3$ErrorActionPreference = 'Stop'
4& "$PSScriptRoot\cold-current.ps1" -Root $Root -CloneHost $CloneHost
5$app = New-Object -ComObject OneNote.Application
6$notebook = ''
7try {
8 $app.OpenHierarchy((Join-Path $Root 'notebook'), '', [ref]$notebook, 0)
9 $section = ''
10 $app.OpenHierarchy('synthetic.one', $notebook, [ref]$section, 0)
11 $deadline = [DateTime]::UtcNow.AddSeconds(60)
12 $matches = @()
13 $content = ''
14 do {
15 $hierarchy = ''
16 $app.GetHierarchy($section, 4, [ref]$hierarchy, 1)
17 [xml]$tree = $hierarchy
18 $pages = @($tree.SelectNodes('//*[local-name()="Page"]') | Where-Object { $_.GetAttribute('name') -eq 'Move leaf down' })
19 if ($pages.Count -eq 1) {
20 $app.GetPageContent($pages[0].GetAttribute('ID'), [ref]$content, 3, 1)
21 [xml]$page = $content
22 $matches = @($page.SelectNodes('//*[local-name()="T"]') | Where-Object { $_.InnerText -like '*>Rust *' -or $_.InnerText -like 'Rust *' })
23 if ($matches.Count -eq 1) { break }
24 }
25 Start-Sleep -Milliseconds 250
26 } while ([DateTime]::UtcNow -lt $deadline)
27 if ($matches.Count -ne 1) { throw 'Expected exactly one Rust-written paragraph on the Move leaf down page.' }
28 [IO.File]::WriteAllText("$Root\before.xml", $content, [Text.Encoding]::UTF8)
29 $text = 'Native after Rust ' + [char]::ConvertFromUtf32(0x1F98B) + ' e' + [char]0x0301
30 $matches[0].InnerText = [Security.SecurityElement]::Escape($text)
31 $app.UpdatePageContent($page.OuterXml, [DateTime]::MinValue, 1, $false)
32 $app.SyncHierarchy($notebook)
33 [IO.File]::WriteAllText("$Root\native-text.txt", $text, [Text.Encoding]::UTF8)
34} finally {
35 try { if ($notebook) { $app.CloseNotebook($notebook, $false) } }
36 finally {
37 [void][Runtime.InteropServices.Marshal]::FinalReleaseComObject($app)
38 $app = $null
39 [GC]::Collect()
40 [GC]::WaitForPendingFinalizers()
41 Get-Process ONENOTE -ErrorAction SilentlyContinue | Wait-Process -Timeout 120 -ErrorAction SilentlyContinue
42 }
43}
tools/test_page_model.py created+133
......@@ -0,0 +1,133 @@
1"""Rust page-model edits survive a cold native reopen and a native edit on top of them."""
2import json
3from pathlib import Path
4import runpy
5import subprocess
6from tempfile import TemporaryDirectory
7import unittest
8
9from document_model import EXPORTER, ordered_pages, walk
10
11ROOT = Path(__file__).resolve().parent.parent
12FIXTURE = ROOT / 'corpus/page-model'
13compare = runpy.run_path(str(ROOT / 'tools/verify-document.py'))['compare']
14
15
16def projection(space, page_root):
17 """Outlines with their positions and pre-order paragraphs (text, parent index, collapsed)."""
18 page = space['nodes'][page_root]
19 outlines = []
20 for oid in page['children']:
21 node = space['nodes'][oid]
22 if node['kind']['type'] != 'Outline':
23 continue
24 paragraphs = []
25 index = {}
26 pending = [(child, None) for child in reversed(node['children'])]
27 while pending:
28 pid, parent = pending.pop()
29 paragraph = space['nodes'][pid]
30 if paragraph['kind']['type'] == 'OutlineGroup':
31 pending.extend((child, parent) for child in reversed(paragraph['children']))
32 continue
33 assert paragraph['kind']['type'] == 'Paragraph', paragraph['kind']['type']
34 text = None
35 for cid in paragraph['content']:
36 content = space['nodes'][cid]
37 if content['kind']['type'] == 'RichText':
38 text = content['kind']['text']
39 index[pid] = len(paragraphs)
40 paragraphs.append({'text': text, 'parent': index.get(parent), 'collapsed': paragraph['kind'].get('collapse_state') == 1})
41 pending.extend((child, pid) for child in reversed(paragraph['children']))
42 layout = node['layout']
43 outlines.append({'x': points(layout['x']), 'y': points(layout['y']), 'max_width': points(layout['max_width']),
44 'width_set_by_user': layout.get('width_set_by_user'), 'paragraphs': paragraphs})
45 return outlines
46
47
48def points(value):
49 """Single-precision points survive JSON with different digits in Rust and Python."""
50 return None if value is None else round(value, 3)
51
52
53def expected_projection(case):
54 return [{'x': points(o['x']), 'y': points(o['y']), 'max_width': points(o['max_width']), 'width_set_by_user': o['width_set_by_user'],
55 'paragraphs': [{'text': p['text'], 'parent': p['parent'], 'collapsed': p['collapsed']} for p in o['paragraphs']]}
56 for o in case['expected']['outlines']]
57
58
59def model(notebook):
60 with TemporaryDirectory() as temporary:
61 subprocess.run([EXPORTER, notebook / 'synthetic.one', Path(temporary) / 'model'], check=True)
62 return json.loads((Path(temporary) / 'model/document.json').read_text())
63
64
65class PageModelTest(unittest.TestCase):
66 def setUp(self):
67 self.manifest = json.loads((FIXTURE / 'candidate/manifest.json').read_text())
68 self.assertEqual(len(self.manifest['cases']), 8)
69
70 def check_cases(self, notebook, exceptions=()):
71 pages = list(ordered_pages(model(notebook)))
72 self.assertEqual(len(pages), 15)
73 for case in self.manifest['cases']:
74 with self.subTest(case=case['title']):
75 _, _, space, root = pages[case['index']]
76 actual = projection(space, root)
77 expected = expected_projection(case)
78 for index, replacement in exceptions:
79 if index == case['index']:
80 expected = replacement(expected)
81 self.assertEqual(actual, expected)
82
83 def assert_only_navigation_cache_changed(self, candidate, cold):
84 """OneNote adds per-series metadata copies on open (as it does for the untouched
85 outline-edit fixture); every page space must keep its exact active revision."""
86 context = '{00000000-0000-0000-0000-000000000000},0'
87 self.assertEqual(set(candidate['spaces']), set(cold['spaces']))
88 for sid, space in candidate['spaces'].items():
89 if sid == candidate['root']:
90 continue
91 self.assertEqual(space['contexts'][context], cold['spaces'][sid]['contexts'][context], sid)
92 before = candidate['spaces'][candidate['root']]
93 after = cold['spaces'][cold['root']]
94 before = before['revisions'][before['contexts'][context]]['nodes']
95 after = after['revisions'][after['contexts'][context]]['nodes']
96 self.assertTrue(set(before) <= set(after))
97 for oid, node in before.items():
98 other = after[oid]
99 if node['kind']['type'] == 'Metadata':
100 continue
101 if node['kind']['type'] == 'PageSeries':
102 strip = lambda n: {k: v for k, v in n.items() if k != 'extra'}
103 self.assertEqual(strip(node), strip(other), oid)
104 continue
105 self.assertEqual(node, other, oid)
106 for oid in set(after) - set(before):
107 self.assertEqual(after[oid]['kind']['type'], 'Metadata', oid)
108
109 def test_rust_page_model_edits_survive_cold_native_reopen(self):
110 compare(FIXTURE / 'candidate/notebook', FIXTURE / 'cold/read')
111 compare(FIXTURE / 'cold/notebook', FIXTURE / 'cold/read')
112 self.assert_only_navigation_cache_changed(model(FIXTURE / 'candidate/notebook'), model(FIXTURE / 'cold/notebook'))
113 self.check_cases(FIXTURE / 'candidate/notebook')
114 self.check_cases(FIXTURE / 'cold/notebook')
115
116 def test_native_edit_after_rust_page_model_edits(self):
117 compare(FIXTURE / 'followup-cold/notebook', FIXTURE / 'followup-cold/read')
118 native = (FIXTURE / 'followup/native-text.txt').read_text(encoding='utf-8-sig')
119 self.assertTrue(native.startswith('Native after Rust'))
120 moved = next(case for case in self.manifest['cases'] if case['title'] == 'Move leaf down')
121
122 def replace_rust_text(outlines):
123 outlines = json.loads(json.dumps(outlines))
124 hits = [p for o in outlines for p in o['paragraphs'] if p['text'].startswith('Rust ')]
125 assert len(hits) == 1
126 hits[0]['text'] = native
127 return outlines
128
129 self.check_cases(FIXTURE / 'followup-cold/notebook', exceptions=[(moved['index'], replace_rust_text)])
130
131
132if __name__ == '__main__':
133 unittest.main()